如何为特定用户创建 /purge 命令

问题描述 投票:0回答:1

我很难弄清楚如何对我的 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”参数对其进行编码。

discord discord.py pycord
1个回答
1
投票

TextChannel.purge() 方法还有一个

check
参数,您可以通过该参数配置一个函数来过滤将要删除的消息。例如:

#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):

  # deleting several messages may take more than 3 seconds
  # it is recommended to defer the interaction to respond later
  await interaction.response.defer(ephemeral=True)

  if member:
    deleted = await ctx.channel.purge(limit=number, check=lambda m: m.author == member)
  else:
    deleted = await ctx.channel.purge(limit=number)

  await interaction.followup.send(f"Purged {len(deleted)} messages")
© www.soinside.com 2019 - 2024. All rights reserved.