如何为加入 Discord 公会的新成员自动分配角色?
Posted
技术标签:
【中文标题】如何为加入 Discord 公会的新成员自动分配角色?【英文标题】:How to autoassign roles to new members joining Discord guild? 【发布时间】: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确实有权管理角色。
有没有办法让机器人自动将新成员分配给朋友角色?
谢谢。
【问题讨论】:
这能回答你的问题吗? How do I make my Python discord bot give roles on join? 很遗憾没有。我收到此错误:“'成员'对象没有属性'服务器'”。此外“'Bot'对象没有属性'add_roles'” 这里看看这个:AttributeError: 'Bot' object has no attribute 'add_roles' 太棒了!谢谢! 【参考方案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 之上,你会遇到错误。
【讨论】:
以上是关于如何为加入 Discord 公会的新成员自动分配角色?的主要内容,如果未能解决你的问题,请参考以下文章
Discord Py - 如何使用文本命令向公会的所有成员添加多个角色