Ins*_*age 2 python python-3.x discord discord.py
我正在尝试快速为人们分配不同的角色,以便给用户留下他们的名字是 Rainbow 的印象(是的,我知道这违反了 TOS),并且我首先在删除角色之前为人们添加角色。但是,在添加角色时,我在这篇文章的标题中收到错误。我已经研究过这个问题并尝试了很多方法来解决它。机器人的角色比分配的角色更高。这是我的代码和输出:
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")
Run Code Online (Sandbox Code Playgroud)
输出:
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
Run Code Online (Sandbox Code Playgroud)
小智 9
我只是把这个留给其他在这个问题上苦苦挣扎的人,我花了 3 天尝试调试 50001 错误,但什么也没发现,这个线程作为谷歌上的第一个线程出现。
显然,如果 Discord 服务器您的机器人/集成要求多重身份验证,则与您的机器人关联的开发者帐户必须启用 MFA。我在我的 Discord 开发者帐户上启用了它,50001 错误立即得到解决。
确保您拥有一个可以访问managing roles
. 此外,当您从开发门户添加机器人时,您可以为其授予所需的权限。
经过验证的机器人的最佳实践是创建一个具有BOT
所有权限的角色,并将其提供给服务器中的所有机器人