【问题标题】:Python Discord Bot hosted on Heroku doesn't play audioHeroku 上托管的 Python Discord Bot 不播放音频
【发布时间】:2020-11-26 22:00:57
【问题描述】:

我正在构建类似音乐机器人的东西,我决定将它托管在 heroku 上。不幸的是,它不能正常工作。一切正常,机器人连接到语音通道,但我听不到机器人播放的任何音频。昨天我收到一个错误(来自 heroku 的日志):

2020-08-06T15:13:45.003027+00:00 app[worker.1]: Ignoring exception in on_ready
2020-08-06T15:13:45.004547+00:00 app[worker.1]: Traceback (most recent call last):
2020-08-06T15:13:45.004619+00:00 app[worker.1]:   File "/app/.heroku/python/lib/python3.8/site-packages/discord/client.py", line 312, in _run_event
2020-08-06T15:13:45.004620+00:00 app[worker.1]:     await coro(*args, **kwargs)
2020-08-06T15:13:45.004623+00:00 app[worker.1]:   File "papaj.py", line 58, in on_ready
2020-08-06T15:13:45.004624+00:00 app[worker.1]:     voice_client.play(discord.FFmpegPCMAudio(path), after=lambda x: endSong(guild, path))
2020-08-06T15:13:45.004641+00:00 app[worker.1]:   File "/app/.heroku/python/lib/python3.8/site-packages/discord/voice_client.py", line 411, in play
2020-08-06T15:13:45.004642+00:00 app[worker.1]:     self.encoder = opus.Encoder()
2020-08-06T15:13:45.004644+00:00 app[worker.1]:   File "/app/.heroku/python/lib/python3.8/site-packages/discord/opus.py", line 231, in __init__
2020-08-06T15:13:45.004644+00:00 app[worker.1]:     raise OpusNotLoaded()
2020-08-06T15:13:45.004672+00:00 app[worker.1]: discord.opus.OpusNotLoaded

但是今天我以某种方式修复了它,我没有收到任何错误消息,但仍然无法从机器人播放音频。看起来像这样:

2020-08-06T15:27:50.232782+00:00 app[worker.1]: [youtube] 1dOt_VcbgyA: Downloading webpage
2020-08-06T15:27:50.736856+00:00 app[worker.1]: [download] Destination: Wykop - Barka (Electro Version)-1dOt_VcbgyA.webm
2020-08-06T15:27:50.875706+00:00 app[worker.1]: [ffmpeg] Destination: Wykop - Barka (Electro Version)-1dOt_VcbgyA.mp3
2020-08-06T15:27:57.656852+00:00 app[worker.1]: Deleting original file Wykop - Barka (Electro Version)-1dOt_VcbgyA.webm (pass -k to keep)

之后它就停止了。 (当我在计算机上运行它时一切正常。)

【问题讨论】:

    标签: python python-3.x heroku bots discord.py


    【解决方案1】:

    我就是这样解决的 (当我尝试在我的计算机上运行它时出现错误,但在 Heroku 上它运行良好)。

    我将此添加到我的脚本中:

    import ctypes
    import ctypes.util
     
    print("ctypes - Find opus:")
    a = ctypes.util.find_library('opus')
    print(a)
     
    print("Discord - Load Opus:")
    b = discord.opus.load_opus(a)
    print(b)
     
    print("Discord - Is loaded:")
    c = discord.opus.is_loaded()
    print(c)
    

    请记住将其放在任何与音频相关的内容之前(最好的选择是将其粘贴在开头)。
    Source

    【讨论】:

      【解决方案2】:

      https://stackoverflow.com/a/55920177/14058810

      “根据 discord.py 文档,您不应该在 Windows 环境中使用它,这可能就是为什么它可以在您的本地机器上运行而不是在 heroku(基于 unix)上运行的原因。”

      【讨论】:

        猜你喜欢
        • 2021-11-18
        • 2018-05-17
        • 2020-12-23
        • 2021-11-26
        • 1970-01-01
        • 2021-10-29
        • 2017-03-05
        • 2021-11-07
        • 2022-08-20
        相关资源
        最近更新 更多