有人可以帮助我在 Python 中为 Discord 机器人创建 /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个回答
0
投票

您可以循环遍历 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")
© www.soinside.com 2019 - 2024. All rights reserved.