我试图让我的 Discord 机器人删除文本频道中的所有消息,但我不知道该怎么做。这是我试过的:
@CLIENT.command()
async def Clear(message):
return await CLIENT.delete_message(message)
我尝试了其他方法并查看了其他帖子,但我只发现机器人会删除我每次输入的消息(不是我要找的)。
原文由 Tyrell 发布,翻译遵循 CC BY-SA 4.0 许可协议
我试图让我的 Discord 机器人删除文本频道中的所有消息,但我不知道该怎么做。这是我试过的:
@CLIENT.command()
async def Clear(message):
return await CLIENT.delete_message(message)
我尝试了其他方法并查看了其他帖子,但我只发现机器人会删除我每次输入的消息(不是我要找的)。
原文由 Tyrell 发布,翻译遵循 CC BY-SA 4.0 许可协议
client = commands.Bot(command_prefix='-')
@client.command(name='clear', help='this command will clear msgs')
async def clear(ctx, amount = 5):
await ctx.channel.purge(limit=amount)
如果未提及要删除的消息数,默认情况下它将删除 4 条消息,即 (amount-1)
使用命令 -clear
或 -clear [number]
删除消息。写’clear’后不要在上一行中使用括号
原文由 Souvik Guria 发布,翻译遵循 CC BY-SA 4.0 许可协议
4 回答4.4k 阅读✓ 已解决
4 回答3.8k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
1 回答4.5k 阅读✓ 已解决
1 回答3.8k 阅读✓ 已解决
1 回答2.8k 阅读✓ 已解决
2 回答1.9k 阅读✓ 已解决
如果您想批量删除消息(即一次删除多条消息,请使用
await Client.delete_messages(list_of_messages)
。这是一个示例注意: 这样做仅适用于 14 天及 以下 的消息,并且您不能一次删除超过 100 条消息,这意味着键入此
!clear 120
会引发错误。然而,这并非不可能。如果您确实愿意,可以在其中添加一个while
循环,但这可能会产生意想不到的结果。现在,如果您有 超过 14 天的消息怎么办?您不能使用
Client.delete_messages(list_of_messages)
。相反,您可以使用Client.delete_message(Message)
这一次只会删除一条消息。是的,我知道很慢,但就目前而言,这就是我们所拥有的。因此,您可以修改原始代码,使其每次在logs_from()
循环时删除。是这样的: