我想使用我称为 p!roleall <role>
的命令来分配我服务器中的每个人的角色,但这并没有忽略机器人,我需要帮助。没有提供任何错误。谢谢。
@client.command()
async def roleall(ctx, role: discord.Role):
for i in ctx.guild.members:
if i == i.bot:
ctx.send('e')
try:
await i.add_roles(role)
except discord.errors.Forbidden:
await ctx.send(f'`i do not have permissions to role {i.name}`')
pass
答案 0 :(得分:4)
您的代码存在一些问题。首先,每个 ctx.send() 都需要等待。关于 i.bot,这将返回一个布尔值,因此无需比较它。
它不忽略机器人的问题源于您没有指示程序跳过其余代码。 continue
语句将为您做到这一点。
@client.command()
async def roleall(ctx, role: discord.Role):
for i in ctx.guild.members:
if i.bot:
await ctx.send('e')
continue
try:
await i.add_roles(role)
except discord.errors.Forbidden:
await ctx.send(f'`i do not have permissions to role {i.name}`')
pass
答案 1 :(得分:1)
试着放一个
else:
在尝试之前。
另外,将 ctx.send('e')
改为 await ctx.send('e')