Discord验证按钮重启后失效问题求助及代码排查
Discord工单脚本重启后Verify按钮失效问题修复
问题现象
- 首次启动机器人时,通用帮助工单(Ticket按钮)和验证工单(Verify按钮)功能均正常
- 机器人重启后,仅Ticket按钮能正常触发工单创建,Verify按钮点击无响应,必须删除旧的Verify消息并重新发送才能恢复功能
问题原因
机器人启动时的setup_hook方法中,仅注册了ticket_launcher和main两个View,遗漏了verify_launcher的注册。Discord的持久化View(设置了timeout=None)需要在机器人启动时通过add_view注册,否则重启后无法识别对应按钮的交互事件。
修复方案
修改aclient类的setup_hook方法,添加verify_launcher的注册:
class aclient(discord.Client): def __init__(self): intents = discord.Intents.default() intents.message_content = True super().__init__(intents = intents) self.synced = False # 避免重复同步命令 self.ticket_mod = role_id async def setup_hook(self): self.add_view(ticket_launcher()) self.add_view(verify_launcher()) # 新增这行,注册Verify按钮的View self.add_view(main())
额外注意事项
- 所有使用了
timeout=None的持久化View(比如confirm、call),如果对应的按钮会在旧消息中存在,也需要在setup_hook中注册,避免后续出现类似失效问题 - 确保所有按钮的
custom_id唯一,避免不同View的按钮ID冲突导致交互处理异常
内容的提问来源于stack exchange,提问作者GFT
相关产品推荐
相关产品推荐

