discord.py如何获取embed颜色 颜色判定无报错不触发消息如何解决
Discord机器人未按预期触发响应的排查方案
- 确认
channelid变量配置正确
首先检查该变量是否为整数类型的目标频道ID,不要赋值为字符串格式,同时确认触发消息的实际频道ID与该值完全匹配。 - 修正embed颜色匹配逻辑
discord.py库中embed.color返回的是Colour类对象,而非直接的十六进制整数,这是最常见的匹配失败原因,你可以将判断条件修改为:
你也可以在循环中添加if embed.color.value == 0x088AFB:print(embed.color.value)打印实际获取到的颜色值,确认目标embed的颜色是否符合预期。 - 检查事件监听逻辑
确认上述代码是写在on_message事件回调中,如果你在事件开头添加了if message.author.bot: return这类过滤机器人消息的逻辑,需要确认发送带embed消息的不是机器人账号,否则会被直接过滤不会进入后续判断。 - 校验机器人权限
确认机器人在目标频道拥有「发送消息」权限,没有被频道权限设置、角色限制、频道慢模式等规则拦截消息发送。 - 增加日志定位问题
你可以在各判断分支前添加打印代码,比如print(message.channel.id, channelid)、print(len(message.embeds)),确认代码执行到了哪一步,快速定位是哪一层条件没有触发。
内容的提问来源于stack exchange,提问作者Python_Bot
相关产品推荐
相关产品推荐

