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