有没有办法让机器人给每个人一个角色?

时间:2021-06-04 15:52:33

标签: python discord discord.py

所以我试图让我的机器人给不和谐中的每个成员一个特定的角色。有人知道怎么做吗?

这是我的代码:

@commands.command()
@commands.has_role('Administrator')
async def roleall(self, ctx, *, role):
member = member.guild 
for member in m:
  await member.add_roles(role)
  await asyncio.sleep(5)
  self.client.get_channel(850067146880712714)
  embed = discord.Embed(title=f"Roles!", description=f"{ctx.author} gave everyone the {role} role.", color=0xff0000)
  await ctx.channel.send(embed=embed)

1 个答案:

答案 0 :(得分:0)

您必须以不同的方式请求所有 member。由于您不能只以您想要的方式请求 guild,我们必须使用 ctx.guild 并从中获取所有 members

我也不明白为什么您请求频道但不使用它,否则您可能只是使用了 ctx.send。所以我们将 client.get_channel() 定义为 channel,然后在那里发送消息。

此外,为了防止机器人在将角色分配给用户时总是发送嵌入内容,我们在 for 循环结束时发送嵌入内容。

看看下面的代码:

@commands.command()
@commands.has_role('Administrator')
async def roleall(self, ctx, *, role: discord.Role):
    for member in ctx.guild.members: # For loop for all member in the guild
        await member.add_roles(role) # Add the role to all users
    channel = client.get_channel(850067146880712714) # Define a channel
    embed = discord.Embed(title=f"Roles!", description=f"{ctx.author} gave everyone the {role} role.", color=0xff0000)
    await channel.send(embed=embed) # Send it to the defined channel
  • 可以提及角色,您可以插入 ID 或仅输入名称。
  • 另请注意,Python 很容易出现适当的缩进。