我正在制作一个不和谐的机器人,它根据反应给出角色。我不断收到缺少权限的错误

时间:2021-06-18 17:00:53

标签: python python-3.x discord discord.py

@client.event
async def on_raw_reaction_add(payload):
    message_id = payload.message_id
    if message_id == 855128466072272937:
        guild_id = payload.guild_id
        guild = discord.utils.find(lambda g: g.id == guild_id, client.guilds)

        if payload.emoji.name == '✅':
            role = discord.utils.get(guild.roles, name='Attending')
        elif payload.emoji.name == '❌ ':
            role = discord.utils.get(guild.roles, name='Not Attending')
        else:
            pass

        if role is not None:
            member = payload.member
            if member is not None:
                print('almost there')
                await member.add_roles(role, reason=None, atomic=True)
                print('done')

这一直给我错误“discord.errors.Forbidden: 403 Forbidden (error code: 50013): Missing Permissions”。该机器人目前具有管理员权限,我已尝试将其删除并将其重新添加到服务器,但似乎并没有解决问题。

我在 bot 中创建了一个新函数,它可以完美地处理事件,并且不会给我任何错误。

@client.event
async def on_message(message):

    if message.content == "give me admin":
        member = message.author
        role = get(member.guild.roles, name='No')
        await member.add_roles(role)

当我尝试这个时没有出现错误,它给了我这个角色。

2 个答案:

答案 0 :(得分:0)

我认为您需要授予机器人管理角色或管理员的权限。

答案 1 :(得分:0)

正如错误所暗示的那样,机器人似乎缺少权限。您应该确保它具有管理角色权限。一般来说,如果我的机器人在我自己的一台服务器上,我只会给它管理员。

您还应该确保机器人的角色高于它将授予/删除的任何角色,否则它将无权分配这些角色。