【问题标题】:How to create color role with discord.py如何使用 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}')

【问题讨论】:

    标签: discord discord.py discord.py-rewrite


    【解决方案1】:

    我同意@KELO 的回答,但错误是当我们使用 # 添加颜色时它永远不会起作用,因为 discord.py 将其作为通道。所以你应该从 DMS 获得所需的参数

    【讨论】:

      【解决方案2】:

      几件事:

      1. 您没有名称为颜色的变量。
      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 对象。我不认为你可以只说“蓝色”?您也可以使用十六进制代码。 stackoverflow.com/questions/63768372/color-codes-for-discord-py
        • 我知道,我尝试了十六进制代码和颜色对象,但它们都不起作用
        • 你能发布你尝试的代码吗?也许是名称变量,尝试将其切换为测试字符串
        • 这是我的代码:imgur.com/a/zZE5ng4这是我不断收到的错误:imgur.com/a/07DfBx2
        猜你喜欢
        • 1970-01-01
        • 2021-06-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多