为啥我的 discord.py 机器人在 Heroku 上托管时没有声音?

Posted

技术标签:

【中文标题】为啥我的 discord.py 机器人在 Heroku 上托管时没有声音?【英文标题】:Why is my discord.py bot not having voice while being hosted on Heroku?为什么我的 discord.py 机器人在 Heroku 上托管时没有声音? 【发布时间】:2020-11-14 02:01:52 【问题描述】:

我的机器人已全部设置并运行,一切正常,除了语音:他加入了频道,但不播放音频。我听到了许多不同的说法,原因是什么(没有使用 ffmpeg.exe 的权限、缺少 buildpack、缺少依赖项、Heroku 在免费用户上阻止 UDP ......) - 但我希望这里的人真正知道问题是什么,因为我在网上找不到任何明确的原因。

这是机器人的代码:https://github.com/FlyingThunder/DiscordBot/blob/master/main.py 在我的机器上一切正常。 这是 Heroku 日志给我的唯一错误: 2020-07-24T06:28:30.329937+00:00 app[worker.1]: PermissionError: [Errno 13] Permission denied: 'res/ffmpeg.exe'

我已经尝试将https://github.com/jonathanong/heroku-buildpack-ffmpeg-latest.git 添加到我的构建包中,并将cffi==1.14.0 添加到我的requirements.txt - 这两种解决方案都应该解决这个确切的问题。

【问题讨论】:

您不能只复制ffmpeg.exe 并提交它。 .exe 通常是 Windows 二进制文件而不是 Linux。 是的,我知道,这就是我为 ffmpeg 添加 buildpack 的原因,但遗憾的是它也没有用 【参考方案1】:

要在 heroku 上托管音乐机器人,您需要:

Opus 和 FFmpeg 构建包(当然还有 python):
https://github.com/kitcast/buildpack-ffmpeg.git
https://github.com/xrisk/heroku-opus.git
requirements.txt 中的以下包:
PyNaCl
wheel
ffmpeg

如果安装这些包和构建包后您的问题没有解决,请分享您代码的音乐部分。

【讨论】:

现在我想一想 - 当我使用 FFmpeg buildpack / python lib 时,我将如何在代码中导入它?目前我只是这样做:vc.play(discord.FFmpegPCMAudio(executable=ffmpegpath, source='res/alle.mp3')) 其中ffmpegpath"res/ffmpeg.exe" 但我不知道使用buildpack 时该怎么做编辑:现在似乎唯一缺少的是指定代码从哪里获取FFMPEG exe,机器人我认为比以前做得更远了 使用buildpacks,不需要executable=ffmpegpath,ffmpeg会被添加到path中,discord.py就可以使用了。 所以它应该在不添加它的情况下工作?如果它在路径中,我认为我必须将它作为 env 变量加载 - 在没有可执行文件 = ffmpegpath 的情况下重试 编辑:天哪,它可以工作!很简单,非常感谢!

以上是关于为啥我的 discord.py 机器人在 Heroku 上托管时没有声音?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的嵌入看起来像 Discord.py 上的代码?

我无法使用 discord.py 向我的 discord 机器人添加命令

是否可以使用我的机器人在 discord.py 中附加大于 150Mb 的文件

如何在 Heroku 上安装 discord.py-rewrite 依赖项以进行 Discord 机器人托管?

Discord 机器人帮助命令 [discord.py]

如何让我的 discord.py 机器人在语音频道中播放 mp3?