禁止和取消禁止命令可在所有服务器上使用

时间:2019-04-12 10:12:23

标签: discord.py

我一直在为不和谐的bot编程,这里的ban命令是我使用的代码:

@client.command(aliases=['Ban'])
async def ban(ctx, member: discord.Member, days: int = 1):
    if get(ctx.author.roles, id=548841535223889923):
        await member.ban(delete_message_days=days)
        await ctx.send("Banned {}".format(ctx.author))
    else:
        await ctx.send(ctx.author.mention + " you don't have permission to use this command.".format(ctx.author))

但是,如果我尝试在其他服务器上使用它,它只是告诉我我没有所需的角色。 那么,如何获得机器人自动加入的新服务器的角色ID,或者还有其他方法可以使它工作呢?

2 个答案:

答案 0 :(得分:0)

您可以使用check for permissions来代替特定的角色ID

<div id="main" class="main"></div>

答案 1 :(得分:0)

您可以使用has_permission,如下所示:

@client.command(aliases=["Ban"])
@commands.has_permission(administrator=True)
async def ban(ctx, member: discord.Member, days: int = 1):
    await member.ban(delete_message_days=days)
    await ctx.send("Banned {}".format(ctx.author))

然后您可以添加缺少的权限错误处理程序:

@client.event
async def on_command_error(ctx, error):
  if isinstance(error, commands.MissingPermissions):
    await ctx.send("You do not have the permissions required for this command.")
    return

  raise error