不和谐机器人蟒蛇删除作者的消息



我做了一个小的不和谐机器人来找点乐子:

我希望在作者运行此命令时删除作者的消息。但这行不通。

if message.content.startswith('Delete me.'):
async for msg in client.logs_from(message.channel, message.author):
await client.delete_message(msg)

查看他们的文档,logs_from需要一个频道,以及其他参数,允许您 筛选要检索的邮件。

因此,如果您只想删除所有消息,则可以执行以下操作

async def on_message(message):
NONSENSE_LIMIT = 999999999999
if message.content.startswith('!delete'):
async for log in client.logs_from(message.channel, limit=NONSENSE_LIMIT):            
if log.author == message.author:
await client.delete_message(log)

这将删除在该命令中键入的用户的所有消息。机器人必须具有该通道的manage messages权限。

请注意,返回的消息数量是有限的,在这里我只是写下一些任意的废话限制。如果你想准确,你必须以某种方式弄清楚频道中有多少条消息,然后以此作为限制。

我只是在最后 5 分钟内查找了不和谐的 API,所以我不知道是否有更有效的方法。

您的问题出在client.logs_from(message.channel, message.author)语句中。logs_from接受以下参数:logs_from(channel, limit=100, *, before=None, after=None, around=None, reverse=False).请参阅 API 参考。因此,您有两个通道参数,其中logs_from只接受 1。也许你打算client.logs_from(message.author)

最新更新