当用户加入服务器时,我如何为其赋予角色?

时间:2021-03-10 12:47:17

标签: python discord discord.py

这是我的代码不起作用,请记住我的机器人在多个服务器

<?xml version="1.0" encoding="utf-8"?>
<shape android:shape="rectangle"
xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="25dp"/>
<stroke android:color="@color/baseThemeColor" android:width="1dp"/>
<solid android:color="#00000000"/>
</shape>

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

1 个答案:

答案 0 :(得分:1)

您的设置没有任何问题,但有一个错误:

不能通过 ID 定义您想要的角色。在每台服务器上,角色的 ID 都不同。

如果机器人在多台服务器上,您必须通过名称搜索,并且该名称的角色必须存在于该服务器上或您希望加入后授予该角色的每台服务器上。

这是一个例子:

from discord.utils import get

intents = discord.Intents.default()
intents.members = True

@bot.event
async def on_member_join(member):
    role = discord.utils.get(member.guild.roles, name="Test")
    await member.add_roles(role)
    print(f"Assigned {role} to {member}!")

记住还要将意图导入到您的代码中,而不仅仅是激活它们。如果你这样做了,你会没事的。

我们做了什么:

  • 通过名称而不是 ID 获取角色。
  • 导入 discord.utils.get 以便能够通过名称获取角色。
  • 打印结果看是否有效。