删除文本频道中的所有消息

新手上路,请多包涵

我试图让我的 Discord 机器人删除文本频道中的所有消息,但我不知道该怎么做。这是我试过的:

 @CLIENT.command()
async def Clear(message):
    return await CLIENT.delete_message(message)

我尝试了其他方法并查看了其他帖子,但我只发现机器人会删除我每次输入的消息(不是我要找的)。

原文由 Tyrell 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.2k
2 个回答

如果您想批量删除消息(即一次删除多条消息,请使用 await Client.delete_messages(list_of_messages) 。这是一个示例

import asyncio
import discord
from discord.ext.commands import Bot

Client = Bot('!')

@Client.command(pass_context = True)
async def clear(ctx, number):
    mgs = [] #Empty list to put all the messages in the log
    number = int(number) #Converting the amount of messages to delete to an integer
    async for x in Client.logs_from(ctx.message.channel, limit = number):
        mgs.append(x)
    await Client.delete_messages(mgs)

Client.run(Token)

注意: 这样做仅适用于 14 天及 以下 的消息,并且您不能一次删除超过 100 条消息,这意味着键入此 !clear 120 会引发错误。然而,这并非不可能。如果您确实愿意,可以在其中添加一个 while 循环,但这可能会产生意想不到的结果。

现在,如果您有 超过 14 天的消息怎么办?您不能使用 Client.delete_messages(list_of_messages) 。相反,您可以使用 Client.delete_message(Message) 这一次只会删除一条消息。是的,我知道很慢,但就目前而言,这就是我们所拥有的。因此,您可以修改原始代码,使其每次在 logs_from() 循环时删除。

是这样的:

 import asyncio
import discord
from discord.ext.commands import Bot

Client = Bot('!')

@Client.command(pass_context = True)
async def clear(ctx, number):
    number = int(number) #Converting the amount of messages to delete to an integer
    counter = 0
    async for x in Client.logs_from(ctx.message.channel, limit = number):
        if counter < number:
            await Client.delete_message(x)
            counter += 1
            await asyncio.sleep(1.2) #1.2 second timer so the deleting process can be even

Client.run(Token)

原文由 Wright 发布,翻译遵循 CC BY-SA 3.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 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题