Discord-components库按钮功能正常但提示交互失败,如何消除该报错?
问题原因
所有Discord交互(包括按钮点击)都要求开发者在触发后3秒内返回响应,你当前的代码只完成了编辑原有消息的逻辑,没有对按钮点击事件本身做出响应,因此Discord会判定交互超时失败,弹出对应提示。
解决方法
在按钮点击的处理逻辑中,新增对交互事件的响应即可,如果你不需要弹出额外的提示内容,只需告知Discord交互已处理,使用延迟更新响应类型即可:
- 在编辑消息逻辑前,新增一行
await event.respond(type=6)(参数type=6是Discord定义的交互响应类型,代表「延迟更新消息」,使用该类型不会弹出任何提示,同时允许你后续编辑交互绑定的原消息,正好符合你的使用场景) - 异常分支也需要补充响应逻辑,避免异常场景仍然报错
修改后的核心代码片段如下:
while True: event = await bot.wait_for("button_click", timeout=60.0) if event.channel is not ctx.channel: return if event.channel == ctx.channel: response = buttons.get(event.component.id) # 新增交互响应,告知Discord已收到请求 await event.respond(type=6) if response: await msg.edit(embed=response) else: await event.channel.send("error, try again.")
内容的提问来源于stack exchange,提问作者user16840181
相关产品推荐
相关产品推荐

