【问题标题】:How to autoassign roles to new members joining Discord guild?如何为加入 Discord 公会的新成员自动分配角色?
【发布时间】:2021-03-17 03:04:52
【问题描述】:

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

机器人是用 Python 编写的,并使用 Discord.py 库。

我正在覆盖 on_member_join() 函数。

@bot.event async def on_member_join(member):

  • 将成员分配给朋友角色

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

Discord Bot确实有权管理角色。

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

谢谢。

【问题讨论】:

标签: discord discord.py discord.py-rewrite


【解决方案1】:

试试这个:

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

【讨论】:

  • 我收到此错误:'Member' 对象没有属性 'server' 此外:“'Bot' 对象没有属性 'add_roles'”
【解决方案2】:

解决了!感谢 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 之上,你会遇到错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-27
    • 2020-12-11
    • 2021-07-18
    • 2021-06-18
    • 2021-11-18
    • 2021-05-10
    • 2021-10-11
    相关资源
    最近更新 更多