如何使用 discord.py 创建颜色角色
Posted
技术标签:
【中文标题】如何使用 discord.py 创建颜色角色【英文标题】:How to create color role with discord.py 【发布时间】:2021-05-05 11:44:56 【问题描述】:我正在尝试创建一个命令,通过在消息中键入它来创建一个具有其颜色的角色,但是我不断收到此错误
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')
【问题讨论】:
【参考方案1】:我同意@KELO 的回答,但错误是当我们使用 # 添加颜色时它永远不会起作用,因为 discord.py 将其作为通道。所以你应该从 DMS 获得所需的参数
【讨论】:
【参考方案2】:几件事:
-
您没有名称为颜色的变量。
颜色是一个类
“color (Union[Colour, int]) – 角色的颜色。默认为 Colour.default()。这也被称为颜色。”
例如,你可以看到这个
discord.Colour(0xa45141)
创建颜色
【讨论】:
【参考方案3】:函数参数中的星号 *
导致了您遇到的问题。
星号告诉函数,以下参数应被视为放入单个参数中的一定数量的变量。因此它假定您使用!role Gordon Freeman Blue
键入的所有内容都被视为名称参数。所以当你print(name)
它会输出Gordon Freeman Blue
。
一个简单的解决方法是移动参数位置,因为颜色通常只是一个词。
async def role(self, ctx, color, *, name):
顺便说一句,由于您在 color=colors
上添加了一个额外的 s
,因此这行会导致错误
await guild.create_role(name=name, color=colors)
【讨论】:
在这样做之后它显示了这个错误 discord.ext.commands.errors.CommandInvokeError: Command raise an exception: AttributeError: 'str' object has no attribute 'value' 这是由这一行引起的:await guild。 create_role(name=name, color=colors) 颜色必须是 discord.Colour 对象。我不认为你可以只说“蓝色”?您也可以使用十六进制代码。 ***.com/questions/63768372/color-codes-for-discord-py 我知道,我尝试了十六进制代码和颜色对象,但它们都不起作用 你能发布你尝试的代码吗?也许是名称变量,尝试将其切换为测试字符串 这是我的代码:imgur.com/a/zZE5ng4这是我不断收到的错误:imgur.com/a/07DfBx2以上是关于如何使用 discord.py 创建颜色角色的主要内容,如果未能解决你的问题,请参考以下文章
Discord.py:我怎样才能获得机器人角色并改变他的颜色?
如何将 discord.py remove_roles 用于多个角色? (作为参数的对象列表)
如何在 discord.py 中创建 discord.Permissions 对象?
我怎样才能允许人们使用 discord.py 只踢低于其角色的成员?