如何使用 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 只踢低于其角色的成员?

Discord Py - 如何使用文本命令向公会的所有成员添加多个角色

Discord.py如何删除服务器中的所有角色