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

Discord.js音乐Bot在OVH Ubuntu VPS执行/play后自动跳歌问题

Discord.js音乐Bot在OVH Ubuntu VPS上自动跳歌问题排查方案

问题描述

我用Discord.js + DisTube开发的音乐Bot在Windows本地运行完全正常,但部署到OVH的Ubuntu VPS后,执行/play命令会自动跳过歌曲,直接显示队列已结束,且无任何报错信息。已尝试重新安装依赖、移除Bot实例、重启VPS,问题仍未解决。

当前依赖版本:

"dependencies": {
  "cli-color": "^2.0.3",
  "discord-html-transcripts": "^3.1.4",
  "discord.js": "^14.10.2",
  "fivem": "^2.1.8",
  "distube": "^4.0.4",
  "@distube/spotify": "^1.5.1",
  "ffmpeg-static": "^4.4.1",
  "tweetnacl": "^1.0.3"
}

排查与解决步骤

1. 检查VPS网络出站限制

  • OVH VPS可能默认限制流媒体相关域名/端口,在终端用curl测试音频源可用性,比如:
    curl -I https://www.youtube.com/watch?v=示例视频ID
    
    确认返回状态码为200系列(正常访问)。
  • 查看UFW防火墙规则,确保允许出站流量:
    sudo ufw status
    
    若有拦截,执行sudo ufw allow out 443/tcp开启HTTPS出站权限,或直接允许所有出站。

2. 验证FFmpeg可用性

  • 终端执行ffmpeg -version,若提示缺失依赖,直接安装系统版FFmpeg:
    sudo apt update && sudo apt install ffmpeg
    
  • 修改DisTube配置,指定系统FFmpeg路径(通常为/usr/bin/ffmpeg),替代ffmpeg-static包:
    const distube = new DisTube(client, {
      ffmpeg: "/usr/bin/ffmpeg",
      // 其他原有配置
    });
    

3. 开启DisTube调试日志

  • 初始化DisTube时设置日志级别为debug,捕捉详细错误信息:
    const { DisTube } = require('distube');
    const distube = new DisTube(client, {
      logLevel: "debug",
      // 其他配置
    });
    
  • 运行Bot后查看终端输出,重点关注歌曲加载阶段的日志,定位跳歌原因(如音频源加载失败)。

4. 统一Node.js版本

  • 确认VPS与本地Node.js版本一致(Discord.js v14要求Node.js ≥16.9.0),终端执行node -v查看版本。
  • 若版本过低,升级到LTS版本(如18.x):
    curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
    sudo apt-get install -y nodejs
    

5. 测试无区域限制的音频源

  • 部分流媒体服务(如Spotify)会根据IP区域限制访问,尝试播放YouTube公共视频测试,若正常则说明是区域版权问题,可更换音频源或使用代理。

6. 彻底清理依赖缓存

  • 删除旧依赖文件后重新安装:
    rm -rf node_modules package-lock.json
    npm install
    

内容的提问来源于stack exchange,提问作者Kacper

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 11:37:52