(Discord.py)我给用户角色的命令不起作用

时间:2020-10-23 12:30:46

标签: python discord.py

我正在尝试对其进行编码,以便某人可以使用.role <@member>命令将角色分配给其他人,因此它看起来像这样:

.role @Daily Cringe

理想情况下,该机器人将为Daily赋予“角色”角色。但是,它不起作用。

这是代码:

@client.command()
async def role(ctx, member: discord.Member = ctx.author, role: discord.Role):
   await ctx.member.add_roles(role)
   await ctx.send(f"The role ''**{role}**'' was just given to you")

我尝试将member的默认值设置为ctx.author,但随后出现问题:

async def role(ctx, member: discord.Member = ctx.author, role: discord.Role):
                   ^
SyntaxError: non-default argument follows default argument

我试图对其进行更改,以使role变量的默认值等于None,但这似乎也不起作用。

有什么想法吗?

我使用Visual Studio Code,Python 3.8.6 64位和MacOS Catalina 10.15.7

1 个答案:

答案 0 :(得分:0)

您的代码有几个错误。首先,您无法执行member: discord.Member = ctx.author,因为尚未定义ctx。您必须将成员的默认值设置为,并在命令中检查该成员是否为

然后,您无法使用ctx.member.add_roles(role)添加角色。您必须执行member.add_roles(role)

@client.command()
async def role(ctx, member: discord.Member = None, role: discord.Role):
    if not member:
        member = ctx.author
    await member.add_roles(role)
    await ctx.send(f"The role ''**{role}**'' was just given to you")