所以我试图让我的机器人给不和谐中的每个成员一个特定的角色。有人知道怎么做吗?
这是我的代码:
@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)
答案 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