我很难弄清楚如何编写我的 Discord 机器人来清除指定用户(例如 /purge [user] [num])的消息 我已经能够让它清除一般消息,但仍然遇到问题并指定用户。我是编码新手,因此非常感谢任何帮助。
谢谢!
#Purge command
@commands.has_permissions(administrator=True)
@bot.slash_command(
name="purge", description="Purge messages from channel",
guild_ids=[1222114873962663967]
)
async def purge(ctx, number: int):
await ctx.channel.purge(limit=number+1)
await ctx.respond(f"Purged {number} messages")
此代码可以很好地清除消息,但我不知道如何使用可选的“user”参数对其进行编码。
您可以循环遍历 channel.history 并检查
message.author
是否是您使用 member
指定的 discord.Member 类型。
如果提供了会员,则只会删除该会员的消息,否则删除所有消息。
#Purge command
@commands.has_permissions(administrator=True)
@bot.slash_command(
name="purge", description="Purge messages from channel",
guild_ids=[1222114873962663967]
)
async def purge(ctx, number: int, member: discord.Member=None):
if member is not None:
async for message in ctx.channel.history(limit=number):
if message.author == member:
await message.delete()
return
await ctx.channel.purge(limit=number+1)
await ctx.respond(f"Purged {number} messages")