"按用户清除"命令不会按用户清除所有消息



我试图制作一个命令来清除特定用户指定数量的消息,我是不协调的新手。py,我的问题是,如果任何其他用户发送了指定用户的消息/中断的消息,该命令不会清除消息。例如:

User 1: A
User 2: B
User 1: A
User 1: A

我试图清除用户1的3条消息,但它只清除最后2条,而不是用户2发送消息之前的那条。这是我的代码:

@bot.slash_command(description='Clears messages by a specified user.')
async def user_clear(ctx,amount:int, member:discord.Member):
def check(message):
return message.author==member
await ctx.channel.purge(check=check,limit=amount)
await ctx.respond(f"Cleared {amount} messages by {member}!")

如果有任何帮助,我将不胜感激!

这里有一个有效的方法:

@bot.command()
async def user_clear(ctx: commands.Context, amount: int, member: discord.Member = None):
counter = 0
async for message in ctx.channel.history(limit=100, before=ctx.message):
if counter < amount and message.author == member:
await message.delete()
counter += 1
await ctx.channel.send(f"Cleared {amount} messages by {member}!")

最新更新