前提・実現したいこと
前提
・Discord.pyを使って開発しています。
・OS:CentOS8
※必要なライブラリ等は入っています。
やりたいこと
・ボイスチャンネルに接続して指定の音声を再生したい。
できること
・ボイスチャンネルに接続して、音声を再生すること
できないこと(実現したいこと)
・ボイスチャンネルにBotが接続しているときに
そのBotが接続している別のチャンネルに移動して音声を再生するコマンドを送信し
Botが自分のチャンネルに来て音声を再生する。
※それ以外の機能は正常に動作しています。
・おそらくチャンネルを移動するメソッド等も用意されていると思います。
もしそれもご存知の方がいればご教授いただければ幸いです。
発生している問題・エラーメッセージ
Ignoring exception in on_message Traceback (most recent call last): File "/usr/local/lib/python3.8/site-packages/discord/client.py", line 343, in _run_event await coro(*args, **kwargs) File "main.py", line 33, in on_message elif message.author.voice_channel.is_connected() == True: AttributeError: 'Member' object has no attribute 'voice_channel'
該当のソースコード
import discord TOKEN = "~~" fastHunt = "!" client = discord.Client() @client.event async def on_ready(): ~~ @client.event async def on_message(message: discord.Message): ~~ if message.content == fastHunt + "join": if message.author.voice is None: await message.channel.send("あなたはボイスチャンネルに接続していません。") return if message.guild.voice_client is None: await discord.VoiceChannel.connect(message.author.voice.channel) elif message.author.voice_channel.is_connected() == True: await message.channel.send("切断しました。") await discord.VoiceChannel.connect(message.author.voice.channel) message.guild.voice_client.play(discord.FFmpegPCMAudio("voice/1.mp3")) elif message.content == fastHunt + "!leave": if message.guild.voice_client is None: await message.channel.send("接続していません。") return ~~
試したこと
elif message.author.is_connected() == True:
のように、該当の個所をわかる範囲で書き換えたりしました。
補足情報(FW/ツールのバージョンなど)
elif message.author.voice_channel.is_connected() == True: await message.channel.send("切断しました。") await discord.VoiceChannel.connect(message.author.voice.channel)
を削除すると正常と思われる
ClientException -- You are already connected to a voice channel.
が出ます。
よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/21 23:48
2021/01/22 07:06
2021/01/22 22:06 編集
2021/01/22 22:05 編集