我正在开发一个 discord.py bot,没问题,我的代码运行良好,但我想知道如何授予 bot 所有者的权限,他应该删除一个授予所有高权限的角色,(所有权限在服务器>服务器设置>角色>角色名称中),所以他应该删除他的角色,但他给出了这个错误:
discord.errors.Forbidden: 403 Forbidden (error code: 50013): Missing Permissions
@bot.command(name="godRemove")
async def godremover(ctx, persona, numerogod):
channel = bot.get_channel(id=786285288469037197)
numerogod=int(numerogod)
if not numerogod>1:
numerogod=1
#hasadded=False
#hasgod=False
rolenumber=0
try:
guild=ctx.guild
if ctx.author.name in canAddGod:
for i in guild.members:
if str(i)[:-5].lower().strip()==persona.lower().strip():
for role in i.roles:
#if str(role)=="God":
#hasgod=True
if representsint(str(role)):
rolename=str(int(str(role))-numerogod).strip().lower()
rolenumber=int(rolename)
if rolenumber>1:
if discord.utils.get(ctx.guild.roles, name=rolename)!=None:
togiverole=discord.utils.get(guild.roles, name=rolename)
await i.add_roles(togiverole)
await i.remove_roles(role)
#hasadded=True
await channel.send(removedliteral)
return
else:
togiverole=await ctx.guild.create_role(name=str(int(str(role))+numerogod), colour=discord.Colour(0xFFFFFF))
await i.add_roles(togiverole)
await i.remove_roles(role)
#hasadded=True
await channel.send(removedliteral)
return
elif rolenumber==0:
await i.remove_roles(discord.utils.get(ctx.guild.roles, name="God"))
else:
await i.remove_roles(discord.utils.get(ctx.guild.roles, name="God"))
await i.remove_roles(role)
except Exception:
traceback.print_exc()
await channel.send(errorliteral)
代码有点乱,但是我已经有一段时间没有用python编写代码了,所以这里有一点解释(ps,这是我想添加到我的服务器中的一个有点有趣的东西,例如,每个人都是上帝,如果他们做了一些有趣的事情,我会添加诸神,如果没有,我会删除诸神,所以如果他们没有足够的神 (<0),我将删除真正的上帝角色,谁授予权限): 我得到了应该发送消息的频道 我得到了要移除的神的数量 我将角色编号设置为 0,然后 我得到了公会,如果名字在可以做到这一点的人民中,我会为每个成员寻找角色,谁是从众神中移除的成员 然后,如果角色是 int 表示我找到了我要修改的角色,如果他的神的数量大于 1,我将删除神,如果是 27,我删除 20,它可能会创建一个新的角色或给一个已经创建的角色,如果是 0 它将删除数字角色,如果是 <0 那么我想删除授予权限的“上帝”角色。
答案: 将角色列表中应该拥有更多权限的角色移动到比应该被“支配”的角色更高的位置!
答案 0 :(得分:3)
discord.errors.Forbidden: 403 Forbidden (error code: 50013): Missing Permissions
表示由于 bot 的 权限,bot 无法执行某些操作。这与机器人所有者是分开的,机器人所有者是另一个具有独立权限的用户。
您需要授予机器人执行您正在执行的任何操作的权限。这是在您的服务器/公会配置中完成的。
如果您正在编写只有机器人所有者才能执行的命令,Discord.py 中有一个名为 is_owner
的装饰器