为啥我的 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 机器人添加命令
是否可以使用我的机器人在 discord.py 中附加大于 150Mb 的文件