403 Forbidden(错误代码:50001):添加角色时缺少访问权限 | discord.py

403 Forbidden (error code: 50001): Missing Access when adding role | discord.py

我正在尝试快速给人们分配不同的角色,让用户觉得他们的名字是彩虹(是的,我知道这违反了服务条款),我开始先给人们添加角色,然后再删除他们。但是,在添加角色时,我在 post 的标题中收到错误。我已经对此进行了调查,并尝试了很多方法来解决它。机器人的角色高于分配的角色。这是我的代码和输出:

import discord
from discord.ext import commands

bot = commands.Bot(command_prefix="$")
role_name = "Rainbow Six Seige"
peopleWithRole = []
guild = discord.Guild 

@bot.event
async def on_ready():
    print("Logged in as")
    print(bot.user.name)
    print("------")
    guild = bot.guilds[0]
    colours = [discord.utils.get(guild.roles, name='red'),
               discord.utils.get(guild.roles, name='green'),
               discord.utils.get(guild.roles, name='blue')
               ]

    role = discord.utils.find(
        lambda r: r.name == role_name, guild.roles)
        
    for user in guild.members:
        if role in user.roles:
            peopleWithRole.append(user)

    for color in colours:
        for user in peopleWithRole:
            await user.add_roles(color)

bot.run("my token")

输出:

Logged in as
test bot
------
Ignoring exception in on_ready
Traceback (most recent call last):
  File "C:\Users\User\AppData\Local\Programs\Python\Python38-32\lib\site-packages\discord\client.py", line 312, in _run_event
    await coro(*args, **kwargs)
  File "C:\Users\User\Desktop\test\test.py", line 29, in on_ready
    await user.add_roles(color)
  File "C:\Users\User\AppData\Local\Programs\Python\Python38-32\lib\site-packages\discord\member.py", line 641, in add_roles
    await req(guild_id, user_id, role.id, reason=reason)
  File "C:\Users\User\AppData\Local\Programs\Python\Python38-32\lib\site-packages\discord\http.py", line 241, in request
    raise Forbidden(r, data)
discord.errors.Forbidden: 403 Forbidden (error code: 50001): Missing Access

确保您已为可以访问 managing roles 的机器人分配角色。此外,当您从开发门户添加机器人时,您可以为其授予所需的权限。

经过验证的机器人的最佳做法是创建一个名为 BOT 的角色并赋予其所有权限并将其分配给您在服务器中拥有的所有机器人

在你的机器人中检查两次,你真的使用正确:

  1. Discord 机器人令牌,
  2. Discord 公会 ID,
  3. Discord 角色 ID/名称,
  4. Discord 用户 ID。

就我而言,我使用的是来自同一服务器上不同机器人的令牌。将令牌更改为正确的令牌后,一切正常。

这个故事的寓意是:总是先检查最愚蠢和最简单的事情!

我只是把这个留给任何其他为此苦苦挣扎的人 b/c 我花了 3 天时间尝试调试 50001 错误,但一无所获,这个线程是 [=16= 上的第一个线程之一].

显然,如果您的 Bot / 集成的 Discord 服务器要求 multi-factor 身份验证,则与您的 Bot 关联的开发者帐户必须启用 MFA。我在我的 discord 开发者帐户上启用了它,50001 错误立即得到解决。