Python:不和谐 API
Posted
技术标签:
【中文标题】Python:不和谐 API【英文标题】:Python: Discord API 【发布时间】:2017-03-27 12:55:12 【问题描述】:这是我不理解的文档中的一些内容。
purge_from(channel, *, limit=100, check=None, before=None, after=None, around=None)
这个函数是一个协程。
清除符合由 谓词检查。如果未提供检查,则所有消息都是 毫无歧视地删除。
您必须拥有管理消息权限才能删除消息,即使 他们是你自己的。还需要读取消息历史记录权限 检索消息历史记录。
只能由机器人帐户使用。
参数:channel (Channel) – 要清除的通道。限制 (int) – 要搜索的消息数。这不是 将被删除的消息数,尽管可以。查看 (predicate) – 用于检查消息是否应该是的函数 删除。它必须将 Message 作为其唯一参数。
例子
删除机器人的消息
def is_me(m): return m.author == client.user deleted = await client.purge_from(channel, limit=100, check=is_me) await client.send_message(channel, 'Deleted message(s)'.format(len(deleted)))
我了解这里的所有内容,直到 check 参数。我已经尽可能地使用这个例子,但我不能。我想要实现的是清除每条带有附件的消息。如果没有,Message.Attachments 返回一个空列表。谁能尽可能地解释这个例子,或者提供代码?谢谢。
【问题讨论】:
【参考方案1】:我使用过 discord.py,但我并没有真正使用过purge_from()
。如下:
check
似乎是一个参数,要求使用一个 Message
类型参数的谓词类型函数。当用作该函数的参数时返回 True
的消息将被删除。这也可以用 lambda 重写以获得更紧凑的代码。
client.purge_from(channel, limit=100, check=lambda m: m.author == client.user)
【讨论】:
这对我来说非常有效,谢谢。我在与m.author
和另一个变量与文档中提供的示例进行比较时遇到问题。但是,由于我也是 Python 新手,因此请好好阅读 lambda 以更好地理解您的答案:secnetix.de/olli/Python/lambda_functions.hawk【参考方案2】:
记住:不要直接从 API 文档中复制,因为它很可能不起作用。我之前遇到过这个问题,我的回答是在命令上方使用@bot.command(pass_context=True)
,然后使用
async def clear(ctx, msglimit : int):
deleted = await bot.purge_from(ctx.message.channel, limit=msglimit)
await bot.say("Cleared **** Messages".format(len(deleted)))
在它下面。请记住仔细阅读文档和常见问题解答,并将消息限制设置为可以清除的数量。祝你的机器人编码好运!
【讨论】:
以上是关于Python:不和谐 API的主要内容,如果未能解决你的问题,请参考以下文章