discord.py bot 没有提供成员加入时提供的角色

时间:2021-07-25 06:15:43

标签: python python-3.x discord.py

我尝试设置此机器人事件,它将为加入的成员提供角色。出于某种原因,它没有给出角色,但也没有给出任何错误输出。

@client.event
def on_member_join(member):
  role = discord.utils.get(member.server.roles, id="868708006504833034")
  await client.add_roles(member, role)

3 个答案:

答案 0 :(得分:2)

@client.event
def on_member_join(member):
  role = discord.utils.get(member.server.roles, id="868708006504833034")
  await client.add_roles(member, role)

您的代码存在一些问题

  • 在第 2 行中,该函数不是异步的,discord.py 事件需要是异步的,因此将 def 替换为 async def
  • 在第 3 行中,id 始终是整数,因此您可以将其设为整数,但您甚至不应该使用 discord.utils.get,因为您可以只执行 member.guild.get_role(id)。注意:id 必须是 int
  • 在第 4 行中,client.add_roles 已过时,it was replaced by member.add_roles。因此,您必须将 client.add_roles(member, role) 更改为 member.add_roles(role)

所以完整的更新代码是

@client.event
async def on_member_join(member):
  role = member.guild.get_role(868708006504833034)
  await member.add_roles(role)

答案 1 :(得分:0)

使用这个:

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

我认为它可以正常工作

答案 2 :(得分:0)

ID 是一个整数:

  role = discord.utils.get(member.server.roles, id=868708006504833034)

试试吧。