Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 当用户加入服务器时,我如何将角色授予用户?_Python_Discord_Discord.py - Fatal编程技术网

Python 当用户加入服务器时,我如何将角色授予用户?

Python 当用户加入服务器时,我如何将角色授予用户?,python,discord,discord.py,Python,Discord,Discord.py,这是我不工作的代码,请记住我的bot位于多个服务器中 @bot.event 成员加入时的异步定义(成员:discord.member): 角色=成员.公会.获取角色(746380043344937081) 等待成员。添加角色(角色,原因=无) 此代码不起作用,我已启用了正确的意图。您的设置没有问题,但错误如下: 无法通过ID定义所需的角色。在每台服务器上,角色的ID都不同 如果bot位于多台服务器上,则必须进行名称搜索,并且具有名称的角色必须存在于服务器上或加入后要授予该角色的每台服务器上 这

这是我不工作的代码,请记住我的bot位于多个服务器中

@bot.event
成员加入时的异步定义(成员:discord.member):
角色=成员.公会.获取角色(746380043344937081)
等待成员。添加角色(角色,原因=无)

此代码不起作用,我已启用了正确的意图。

您的设置没有问题,但错误如下:

无法通过ID定义所需的角色。在每台服务器上,角色的ID都不同

如果bot位于多台服务器上,则必须进行名称搜索,并且具有名称的角色必须存在于服务器上或加入后要授予该角色的每台服务器上

这里有一个例子:

从discord.utils导入获取
intents=discord.intents.default()
intents.members=True
@机器人事件
成员加入时的异步定义(成员):
role=discord.utils.get(member.guild.roles,name=“Test”)
等待成员。添加_角色(角色)
打印(f“已将{role}分配给{member}!”)
记住还要将意图导入到代码中,而不仅仅是激活它们。如果你这样做了,你会没事的

我们所做的:

  • 通过名称而不是ID获取角色
  • 已导入
    discord.utils.get
    以按名称获取角色
  • 把结果打印出来看看是否有效

您遇到了什么错误,是否启用了正确的意图?更多信息将更容易回答您还应该在bot初始化中传递
intents=intents