You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

discord.py体育提醒Cog交互失败问题求助

排查「This interaction failed」错误的关键点
  • 必须给组件写回调函数
    每个按钮、下拉菜单都得有对应的callback方法,比如做按钮子类的时候,要写async def callback(self, interaction: discord.Interaction):,方法名必须是callback,不能拼错。没写这个方法的话,Discord不知道点了按钮该干啥,直接报错。

  • 3秒内必须回应交互
    用户点按钮后,你的代码得在3秒内给Discord一个回应,要么直接发消息await interaction.response.send_message("内容");如果处理时间长(比如查数据),先调用await interaction.response.defer(),之后再用await interaction.followup.send("后续内容")。完全不回应的话就会触发交互失败。

  • 组件要正确加到View里再发送
    不能只创建按钮就完事,要把按钮放到discord.ui.View()实例里,比如:

    view = discord.ui.View()
    view.add_item(你的按钮实例)
    await ctx.send("选择项目", view=view)
    

    没把组件加到View里,或者发送消息时没传view参数,点击后Discord找不到对应逻辑。

  • 注意View的超时时间
    默认View180秒后就失效,超时后点按钮会报错。如果需要长期能用,创建View时设timeout=None;要是想重启机器人后还能用,得加persistent=True,同时机器人启动时要注册这些持久化组件。

  • 检查机器人权限
    确保机器人在服务器里有「发送消息」「嵌入链接」这些权限,要是回调里要发消息或者嵌入内容,权限不够的话,交互会失败但PyCharm不会显示错误(Discord不会把权限问题抛到本地日志)。

  • 确认discord.py版本是2.0+
    discord.ui是discord.py 2.0才正式支持的,旧版本根本用不了。打开终端输pip install -U discord.py更新到最新版。

  • 别混用ctx和interaction
    在回调函数里,别用ctx.send(),得用interaction相关的方法,比如interaction.response.send_message()或者interaction.followup.send(),用错了会导致逻辑失效。

内容的提问来源于stack exchange,提问作者ar.jorge91

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 17:53:21