discord.js+Heroku部署机器人播放MP3报错:找不到Opus引擎
解决Heroku上discord.js机器人播放音乐报错"Couldn't find an Opus engine"
这个问题我之前帮朋友排查过,其实就是你的机器人缺少了语音编码和音频处理的必要依赖——Heroku默认环境里没带这些,得咱们手动补上。下面是一步步的解决办法:
先装Opus编码库
discord.js处理语音流必须依赖Opus引擎,你得在本地项目根目录运行这条命令,安装官方推荐的高性能版本:npm install @discordjs/opus装完之后,你的
package.json里会自动加上这个依赖,推送到Heroku的时候它会自动跟着安装。给Heroku加FFmpeg的Buildpack
要播放你本地的MP3文件,还得靠FFmpeg来解码音频。Heroku本身没有这个工具,所以得添加对应的buildpack:- 打开你的Heroku项目控制台,进入「Settings」页面
- 在「Buildpacks」那块点「Add buildpack」
- 输入
https://github.com/jonathanong/heroku-buildpack-ffmpeg-latest.git然后保存就行
代码小优化(可选但推荐)
另外提一句,你现在用的playFile是discord.js v11的写法,如果你的机器人用的是v12及以上版本,换成connection.play()会更稳妥,比如:const dispatcher = connection.play('./BRODYQUEST.mp3');这个不是报错的直接原因,但更新写法能避免后续版本兼容的坑。
把这些都弄完,再把代码和更新后的package.json推送到Heroku,重启一下机器人,再发!play命令应该就能正常播放音乐啦。
内容的提问来源于stack exchange,提问作者ejer
相关产品推荐
相关产品推荐

