我一直在为不和谐的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,或者还有其他方法可以使它工作呢?
答案 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