我正在尝试创建一个命令,通过在消息中输入它的颜色来创建一个角色,但是我一直收到这个错误
<块引用>discord.ext.commands.errors.CommandInvokeError:命令引发异常:TypeError:role() 缺少 1 个必需的仅关键字参数:'color'
@commands.command(aliases=['make_role'])
@commands.has_permissions(manage_roles=True)
async def role(self, ctx, *, name,color):
guild=ctx.guild
await guild.create_role(name=name, color=colors)
await ctx.send(f'Role `{name}` has been created, color is {colors}')
答案 0 :(得分:0)
函数参数中的星号 *
导致了您遇到的问题。
星号告诉函数应该将以下参数视为放入单个参数中的一定数量的变量。因此,它假定您使用 !role Gordon Freeman Blue
键入的所有内容都被视为 name 参数。所以当你 print(name)
时,它会输出 Gordon Freeman Blue
。
一个简单的解决方法是移动参数位置,因为颜色通常只是一个词。
async def role(self, ctx, color, *, name):
顺便说一句,这一行会导致错误,因为您在 s
上添加了额外的 color=colors
await guild.create_role(name=name, color=colors)
答案 1 :(得分:0)
一些事情:
discord.Colour(0xa45141)
创建颜色