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

Discord机器人在线10-15分钟后离线崩溃问题求助

Discord机器人频繁离线崩溃(错误10062: Unknown interaction)解决思路

错误本质分析

discord.errors.NotFound: 404 Not Found (error code: 10062): Unknown interaction 核心问题是机器人尝试响应一个已过期或被Discord服务器判定为无效的交互请求。常见触发场景包括:

  • 交互响应超时(Discord要求交互必须在3秒内响应),超时后机器人仍尝试发送结果
  • 机器人重启后,残留的未处理交互请求被继续执行,导致响应不存在的会话
  • 代码中存在重复响应同一个交互的逻辑

针对性修复方案

1. 处理耗时操作的交互超时

如果breedings.py或bot.py中有数据库查询、外部API调用等耗时操作,必须使用延迟响应避免超时:

# 先发送延迟响应,告知Discord机器人正在处理
await interaction.response.defer()
# 执行耗时操作(比如繁殖逻辑计算、数据库读写)
# ...
# 操作完成后发送最终结果
await interaction.followup.send("繁殖结果已生成!")

2. 清理待处理交互任务

在on_disconnect事件中加入逻辑,清空所有未完成的交互任务,避免重启后响应失效会话:

# 提前在bot实例中维护一个跟踪交互任务的列表
bot.interaction_tasks = []

@bot.event
async def on_disconnect():
    # 取消所有未完成的交互任务
    for task in bot.interaction_tasks:
        if not task.done():
            task.cancel()
    bot.interaction_tasks.clear()

(注:处理交互时,需将耗时任务添加到interaction_tasks列表中)

3. 防止重复响应交互

检查代码中是否存在多次调用交互响应方法的情况,每个交互仅允许一次初始响应,后续只能用跟进消息。可通过标记避免重复:

async def handle_breeding_interaction(interaction):
    # 检查是否已响应过该交互
    if getattr(interaction, '_has_responded', False):
        return
    interaction._has_responded = True
    
    # 执行交互处理逻辑
    # ...

4. 优化重连机制

启用Discord.py内置的自动重连功能,避免手动重启导致的交互残留问题:

# 使用官方推荐的重连参数启动机器人
bot.run(YOUR_BOT_TOKEN, reconnect=True)

5. 确保交互命令同步正确

在机器人启动时强制同步slash命令和交互组件,避免因注册不一致导致的无效交互:

@bot.event
async def on_ready():
    await bot.tree.sync()
    print(f"机器人已登录:{bot.user.name}")

额外排查方向

  • 查看机器人完整日志,确认崩溃前是否存在内存泄漏、数据库连接异常等间接问题
  • 检查Discord开发者面板中机器人的权限配置,确保拥有处理交互、发送消息的完整权限

内容的提问来源于stack exchange,提问作者José Roberto

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 21:43:26