Discord.py中输入十六进制颜色码设置Embed颜色遇TypeError问题咨询
问题解决:Discord Embed颜色设置错误修正
错误原因
你遇到的TypeError是因为:
- 输入的
hexc是字符串类型,但hex()函数要求传入整数,直接传字符串会触发类型错误 discord.Embed的color参数需要的是十进制整数形式的颜色值,而非hex()返回的十六进制字符串
修正步骤
- 处理输入的十六进制字符串:移除可能带有的
#前缀(用户可能输入#FFFFFF或FFFFFF两种格式) - 使用
int(hexc_cleaned, 16)将十六进制字符串转换为十进制整数,这才是color参数需要的格式 - 修复原代码的语法错误(
discord.Embed定义末尾缺少右括号)
修正后的代码
async def parameter(self, interaction: Interaction, hexc: str) -> None: # 移除可能的#前缀 hexc_cleaned = hexc.lstrip('#') try: # 将十六进制字符串转为十进制整数 color_int = int(hexc_cleaned, 16) embed = discord.Embed(title="TEST", description="Test2", color=color_int) await interaction.response.send_message(embed=embed) except ValueError: # 处理无效的十六进制输入 await interaction.response.send_message("请输入有效的十六进制颜色码,例如:FFFFFF 或 #FF0000")
额外说明
- 十六进制颜色码的有效格式:6位字符(0-9, A-F/a-f),可带或不带
#前缀 - 异常处理能避免用户输入无效内容时命令崩溃
内容的提问来源于stack exchange,提问作者Render
相关产品推荐
相关产品推荐

