discord.py自定义embed命令运行无响应 问题排查及修复求助
问题排查与修复方案
核心错误点及修复步骤
- 实例调用错误
最初代码中使用client.wait_for()调用了全局的client实例,但在cog类的命令方法内,需要使用类绑定的实例对象。如果你初始化cog时传入的bot实例绑定到了self.bot,就改为await self.bot.wait_for();如果绑定的是self.client就用await self.client.wait_for(),否则wait_for方法无法正常接收消息事件,导致输入后无响应。 - 列表索引越界错误
Python列表从0开始索引,收集的3个答案对应的索引范围是0-2,最初的代码使用answers[1]、answers[2]、answers[3]会触发IndexError直接终止命令执行,需要改为:title = answers[0] desc = answers[1] colour = answers[2] - 颜色参数解析错误
discord.Embed的color参数接收整数类型的十六进制色值,用户输入的通常是十六进制字符串(如ffffff、#ffffff),直接使用int(colour)会按十进制解析报错,需要改为按十六进制解析:# 兼容带#和不带#的色值输入 color = int(colour.lstrip('#'), 16)
可选优化
可以增加颜色输入合法性校验,避免用户输入非法字符串时程序报错:
try: color = int(colour.lstrip('#'), 16) except ValueError: await ctx.send("输入的颜色格式无效,请输入正确的十六进制色值(如ffffff)") return
内容的提问来源于stack exchange,提问作者Miko Tatsu
相关产品推荐
相关产品推荐

