如何为加入 Discord 公会的新成员自动分配角色?

How to autoassign roles to new members joining Discord guild?

我正在编写一个 Discord 机器人,当新用户加入我的 Discord 公会时,它会为他们分配一个角色。假设这个角色叫做“朋友”。

该机器人用 Python 编写并使用 Discord.py 库。

我正在覆盖 on_member_join() 函数。

@bot.event 异步定义 on_member_join(成员):

我看到成员 class 有一个 add_roles() 函数,但在这种情况下它不起作用,因为新成员没有管理角色的权限。出于安全考虑,默认的@everyone 角色不应该具有管理角色的能力,并且能够分配它想要的任何角色。

Discord Bot 具有管理角色的权限。

有没有办法让机器人自动将新成员分配给好友角色?

谢谢。

试试这个:

@bot.event
async def on_member_join(member):
    role = discord.utils.get(member.server.roles, id="<role ID>")
    await bot.add_roles(member, role)

已解决!感谢 Bagle 的帮助。

这是有效的方法:

@bot.event
async def on_member_join(member):
        default_role = discord.utils.get(member.guild.roles, id=DEFAULT_ROLE_ID)
        await member.add_roles(default_role)

DEFAULT_ROLE_ID 是我要分配的角色 ID 的整数。

确保您的机器人具有“管理角色”权限集,并且高于您在公会角色层次结构中尝试设置的角色。

例如,如果您的 bot 具有 Bot 角色,而您尝试自动分配的角色是 Friend,请确保 Bot 在“角色”选项卡中位于 Friend 之上。如果 Bot 不在 Friend 之上,你会遇到错误。