如何授予不和谐机器人所有者的权限?

时间:2021-01-15 21:12:42

标签: python discord discord.py

我正在开发一个 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 那么我想删除授予权限的“上帝”角色。

答案: 将角色列表中应该拥有更多权限的角色移动到比应该被“支配”的角色更高的位置!

1 个答案:

答案 0 :(得分:3)

discord.errors.Forbidden: 403 Forbidden (error code: 50013): Missing Permissions 表示由于 bot 的 权限,bot 无法执行某些操作。这与机器人所有者是分开的,机器人所有者是另一个具有独立权限的用户。

您需要授予机器人执行您正在执行的任何操作的权限。这是在您的服务器/公会配置中完成的。

如果您正在编写只有机器人所有者才能执行的命令,Discord.py 中有一个名为 is_owner 的装饰器