首页 > 解决方案 > 如何使用指定的消息数量创建消息清除命令

问题描述

async def delete(ctx, number):
    numbers = int(number)
    await ctx.send("Deleting messages......")
    await discord.Message.delete(numbers)
   

我是 Discord.py 的新手,我正在制作一个可以执行基本审核命令的机器人。我试图做出一个明确的命令来删除指定数量的消息,例如:del 10将删除 10 条消息(不包括命令,所以总共 11 条)。但是我一直收到discord.ext.commands.errors.CommandInvokeError: Command raised an exception: AttributeError: 'int' object has no attribute '_state'错误消息。我不知道如何解决这个问题并尝试了谷歌,有人可以帮忙吗?起初我在 之后有一个while循环await ctx.send("Deleting messages....."),它就像:

async def delete(ctx, number):
    numbers = int(number)
    max_number == 0 
    await ctx.send("Deleting messages......")
    while max_number <= numbers:
           await discord.Message.delete(numbers)

然而,这也引发了同样的错误,我不确定是否需要一个 while 循环,因为要删除的消息数量是用numbers变量指定的。

标签: python-3.xdiscord.py

解决方案


我认为您应该使用它来代替ctx.channel.purge它执行的通道中的特定数量的消息。

async def clear(ctx, amount: int):
    await ctx.channel.purge(limit= amount+1)

推荐阅读