当前位置: 首页 > 知识库问答 >
问题:

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

段兴为
2023-03-14

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

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

我正在覆盖on_member_join()函数。

@bot.eventasync defon_member_join(成员):

  • 将成员分配给好友角色

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

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

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

谢谢你。

共有2个答案

单嘉泽
2023-03-14

试试这个:

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

曾云
2023-03-14

解决了!谢谢巴格尔帮忙。

以下是有效的方法

@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)

默认角色ID是我试图分配的角色ID的整数。

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

例如,如果你的机器人有一个角色是机器人,而你试图自动分配的角色是朋友,请确保机器人在“角色”选项卡中位于朋友之上。如果Bot不在Friend之上,你会点击一个错误。

 类似资料:
  • 出于某种原因,我使用Node编写的bot。和不和谐。当成员加入时,js不会将角色分配给他们。有人能帮忙吗? 我试过两种

  • 您可在添加员工是分配角色,具体请详见【如何导入员工】 除此之外,您可在【角色】页面通过“管理成员”进行角色分配。(主管,初始管理员除外) 分配角色 点击角色右侧“管理成员”按钮(主管、初始超管除外) 您可在此添加或移除角色成员。 设置主管 您可在部门或项目模块进行主管设置,具体请详见【通过部门、项目管理员工】 设置初始管理员 初始管理员为默认角色,为企业唯一,若需修改,请详见【如何移交初始管理员】

  • 我对用JavaScript编码非常陌生,我正在尝试为我计划在不和谐服务器中的事件创建一个非常简单的机器人。 基本上,如果所提到的成员在数组中没有角色集,那么它应该做的就是将角色分配给所提到的成员(仅第一个成员)。 虽然代码本身不会抛出任何错误(机器人登录并打印就绪状态),但每当我试图召唤机器人时,它都不会做任何事情。我认为我的技能不够好,不能自己解决这个问题,所以任何帮助都将受到高度赞赏!谢谢!

  • 登录企业管理,企业管理-首页-添加成员 登录企业管理,人员管理-成员-添加成员

  • 人员管理-成员-批量导入-下载模板-上传文件

  • 我想让我的机器人直接向加入我的服务器的人发送消息,并在30秒后给他们角色。我没有收到任何错误,我的机器人没有崩溃,但它什么也不做。 我的代码: 我已经导入了,,我的机器人有权限,成员没有阻止DMs。