Discord Py-由Heroku托管的Bot上的音乐命令

时间:2020-09-03 21:30:42

标签: python heroku discord discord.py discord.py-rewrite

我一直在尝试永久地在线托管我的Discord Bot。尽管所有的语音通道(Musik命令)都不再起作用,但它并没有太大变化。

我的requirements.txt文件包括: 不和谐 ,youtube_dl ,ffmpeg

在Build日志上,它确实安装了它们,没有任何问题,Bot很快就在日志上上线了。 为了您的兴趣:我使用Github将我的代码推送到Heroku(它已连接到Github)。

TELESCOPE_ENABLED=true

上面只是一个示例代码,我的一个音乐命令看起来像这样。

在这里我所有的导入内容都可以在我的本地PC上运行

global voice
    channel = ctx.message.author.voice.channel
    voice = get(client.voice_clients, guild=ctx.guild)

    if voice and voice.is_connected():
        await voice.move_to(channel)

    else:
        voice = await channel.connect()


    song_there = os.path.isfile("song.mp3")
    try:
        if song_there:
            os.remove("song.mp3")
            queues.clear()
    except PermissionError:
        return

    ydl_opts = {
        'format': 'bestaudio/best',
        'quiet': True,
        'postprocessors': [{
            'key': 'FFmpegExtractAudio',
            'preferredcodec': 'mp3',
            'preferredquality': '192',
        }],
    }

    with youtube_dl.YoutubeDL(ydl_opts) as ydl:
        ydl.download([url])

    for file in os.listdir("./"):
        if file.endswith(".mp3"):
            name = file
            os.rename(file, "song.mp3")

    def my_after(error):
        coro = voice.disconnect()
        for file in os.listdir("./"):
            if file.endswith(".mp3"):
                os.remove("song.mp3")
        fut = asyncio.run_coroutine_threadsafe(coro, client.loop)
        try:
            fut.result()
        except:
            pass

    voice.play(discord.FFmpegPCMAudio('song.mp3'), after=my_after)
    voice.source = discord.PCMVolumeTransformer(voice.source)
    voice.source.volume = 0.10

我知道youtube_dl和ffmpegPCMAudio下载并将音频文件(如代码中所示)保存在Queue文件夹中。但是我如何实现/将其转移到Heroku以使其可执行?

2 个答案:

答案 0 :(得分:1)

Buildpacks

首先,您需要在Heroku上拥有4个buildpack,以确保一切正常(您的APP>设置> buildpacks )。

然后检查您的 requirements.txt 中是否包含所有这些内容:

  • youtube_dl
  • discord.py [语音]〜= 1.4.0
  • ffmpeg
  • colorlog
  • PyNaCl

您的代码

将此添加到您的代码中。

import ctypes
import ctypes.util

如果仍然无法使用...

如果您尝试了所有操作,请在错误消息中注释此答案,我会尽力帮助您,但请首先尝试。

制作一个名为 Aptfile 的新文件(与制作文件 Procfile 的方法相同,因此在CMD中: echo> Aptfile 。然后将其粘贴内部:

libopus0
git
libopus-dev
libssl-dev
libffi-dev
libsodium-dev
:repo:ppa:mc3man/xerus-media -y 

答案 1 :(得分:0)

在Heroku的“设置”标签下,添加以下构建包

  • library(forecast) library(hts) htsqpass.ts <- ts(rnorm(100), start=2015, frequency=12) quar<-rep(c("1", "2", "3", "4"), each = 12) mth<-rep(c("April","August","December","February","January","July","June","March","May","November","September","October"), each=4) rownames(mth) <- c("Quarter", "Month") x <- gts(abc, groups = gc) x
  • https://github.com/jonathanong/heroku-buildpack-ffmpeg-latest.git
  • https://github.com/kitcast/buildpack-ffmpeg.git
  • https://github.com/alevfalse/heroku-buildpack-ffmpeg.git
  • https://github.com/Crazycatz00/heroku-buildpack-libopus.git

之后,它应该看起来像这样

enter image description here

重新部署您的机器人,然后查看它是否有效