Python - Discord Py - Heroku でホストされたボット上の音楽コマンド

okwaves2024-01-25  8

私は Discord ボットをオンラインで永続的にホストしようとしています。すべての音声チャンネル (Musik コマンド) が機能しなくなりましたが、大きな変化はありません。

requirements.txt ファイルには次のものが含まれています。 不和 、youtube_dl ,ffmpeg

ビルド ログでは、問題なくインストールされており、ボットはログ上ですぐにオンラインになります。 参考までに: 私は Github を使用してコードを Heroku にプッシュしています (Github に接続されています)。

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

上記は単なるコード例であり、私の音楽コマンドの 1 つがどのように見えるかを示しています。

ローカル PC で動作させるためにインポートしたものはすべてここにあります

import discord
import random
import asyncio
import youtube_dl
import os
import shutil
from discord import FFmpegPCMAudio
from discord.ext import commands
from discord.ext.commands import has_permissions, MissingPermissions
from discord.ext.commands import Bot as BotBase
from discord.utils import get

youtube_dl と ffmpegPCMAudio が (コードにあるように) オーディオ ファイルをダウンロードして Queue フォルダーに保存することを認識しています。しかし、それを Heroku に転送して実行可能にするには、どうすればよいでしょうか?



------------------------

ビルドパック

まず、すべてが動作することを確認するには、Heraku に 4 つのビルドパックが必要です ([アプリ] > [設定] > [ビルドパック])。

ヘロク/パイソン https://github.com/heroku/heroku-buildpack-apt.git https://github.com/jonathanong/heroku-buildpack-ffmpeg-latest.git https://github.com/xrisk/heroku-opus.git

そして、requirements.txt にこれらがすべて含まれているかどうかを確認してください。

ピップ youtube_dl discord.py[音声] ffmpeg ピナクロ あなたのコード

これをコードに追加します。

import ctypes
import ctypes.util

find_opus = ctypes.util.find_library('opus')
discord.opus.load_opus(find_opus)
それでもうまくいかない場合は...

すべてを試した場合は、次のことを試してみてください:

Aptfile という名前の新しいファイルを作成します (あなたが怒ったのと同じ方法)ファイル Procfile なので、CMD では、echo>Aptfile となります。次に、これを中に貼り付けます。

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

2

すごいですね、ビルドパックと要件に沿って本当にうまくいきました - どうもありがとう!補足: github.com/heroku/heroku-buildpack-apt.git ビルドパックは動作するために必要ありません (ビルドパックを入手して削除し、再度プッシュすると失敗しました)

– 傑作

2020 年 9 月 7 日 20:26

スキップ コマンドがあるのに、「discord.ext.commands.errors.CommandInvokeError: コマンドで例外が発生しました: ClientException: すでにオーディオを再生しています」と表示されます。

– 傑作

2020 年 9 月 7 日 20:54



------------------------

Heraku の設定タブで、次のビルドパックを追加します。

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 https://github.com/guilherme-otran/heroku-buildpack-ffprobe.git その後、次のようになります。

ボットを再デプロイし、動作することを確認します

3

残念ながら、そうではありませんでした。いくつかのコンポーネントがインストールされましたが、変化はありませんでした。リンクが 2 回貼り付けられていることに気づきました。写真からリンクを入力する必要がありますが、問題ありません。 ffmpeg をrequirements.txt から削除する必要がありますか?

– 傑作

2020 年 9 月 4 日 17:13

はい、requirements.txt に ffmpeg を含める必要はありません。リンクを 2 回貼り付けたことに気づきませんでした。2 つのリンクのうち 1 つは異なるものであるはずです。今それを編集し、もう一方を https://github.com/alevfalse/heroku-buildpack-ffmpeg.git に置き換えました。同じことを行ってから再デプロイし、今度は機能するかどうかを確認します。

– エックス ディー

2020 年 9 月 4 日 17:53

いいえ。 ffmpeg がrequirements.txt から削除され、すべてのビルド パックが含まれます。うまくいきませんでした

– 傑作

2020 年 9 月 4 日 18:17

総合生活情報サイト - OKWAVES
総合生活情報サイト - OKWAVES
生活総合情報サイトokwaves(オールアバウト)。その道のプロ(専門家)が、日常生活をより豊かに快適にするノウハウから業界の最新動向、読み物コラムまで、多彩なコンテンツを発信。