discord.py 忽略机器人(client.command)

时间:2021-05-04 21:43:45

标签: python discord discord.py

我想使用我称为 p!roleall <role> 的命令来分配我服务器中的每个人的角色,但这并没有忽略机器人,我需要帮助。没有提供任何错误。谢谢。

@client.command()
async def roleall(ctx, role: discord.Role):
  for i in ctx.guild.members:
    if i == i.bot:
        ctx.send('e')
    try:
      await i.add_roles(role)
    except discord.errors.Forbidden:
      await ctx.send(f'`i do not have permissions to role {i.name}`')
      pass

2 个答案:

答案 0 :(得分:4)

您的代码存在一些问题。首先,每个 ctx.send() 都需要等待。关于 i.bot,这将返回一个布尔值,因此无需比较它。 它不忽略机器人的问题源于您没有指示程序跳过其余代码。 continue 语句将为您做到这一点。

@client.command()
async def roleall(ctx, role: discord.Role):
  for i in ctx.guild.members:
    if i.bot:
        await ctx.send('e')
        continue
    try:
      await i.add_roles(role)
    except discord.errors.Forbidden:
      await ctx.send(f'`i do not have permissions to role {i.name}`')
      pass

答案 1 :(得分:1)

试着放一个

else:

在尝试之前。

另外,将 ctx.send('e') 改为 await ctx.send('e')