1

我尝试为我的不和谐机器人做一个自动角色系统,我的代码如下所示:

intents = discord.Intents.default()
intents.members = True
client = commands.Bot(command_prefix = "#", intents = intents)
@client.event
async def on_member_join(member):
    server_name = client.get_guild(802985801100165200)
    await member.send(f'Willkommen auf {server_name}!')
    print(1)
    rolle = discord.utils.get(member.guild.roles, name='Member')
    await member.add_roles(rolle)

我认为这是一个错误:

    Ignoring exception in on_member_join
Traceback (most recent call last):
  File "C:\Users\wenze\PycharmProjects\discordbotproject\venv\lib\site-packages\discord\client.py", line 343, in _run_event
    await coro(*args, **kwargs)
  File "C:\Users\wenze\PycharmProjects\discordbotproject\main.py", line 34, in on_member_join
    await member.add_roles(rolle)
  File "C:\Users\wenze\PycharmProjects\discordbotproject\venv\lib\site-packages\discord\member.py", line 777, in add_roles
    await req(guild_id, user_id, role.id, reason=reason)
  File "C:\Users\wenze\PycharmProjects\discordbotproject\venv\lib\site-packages\discord\http.py", line 248, in request
    raise Forbidden(r, data)
discord.errors.Forbidden: 403 Forbidden (error code: 50013): Missing Permissions

4

2 回答 2

1

嘿,我的 node.js 机器人也遇到了这个问题,我无法为服务器的任何成员分配角色。

我将机器人踢出服务器,我进入此页面授予我的机器人所有权限(为简单起见,我标记了每个复选框)。然后我复制了我的机器人客户端 ID 并粘贴在必填字段中。我按下页面底部的链接将其调回我的服务器。这解决了我的问题

于 2021-08-21T07:59:53.677 回答
1

你的问题是

  1. 机器人没有Manage Roles权限
    • 要解决此问题,只需使用正确的权限重新邀请您的机器人。
  2. 机器人试图赋予的角色在层次结构中高于机器人。

您可以使用 try except 块来处理此错误,如下所示:

try:
    Member.add_roles(role)
except discord.Forbidden:
    # This will be triggered when the bot has incorrect permissions.
于 2021-08-21T15:53:57.860 回答