前提・実現したいこと
自作のmusicboで一回目にボイスチャンネルに入ったときは正しく動作するのに、二回目にボイスチャンネルにはいったときは#play コマンドが正しく動作せず、エラーを吐いてしまいます
発生している問題・エラーメッセージ
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: ClientException: Not connected to voice.
該当のソースコード
python
1@bot.command() 2async def join(ctx): 3 voicetrue = ctx.author.voice 4 if voicetrue is None: 5 return await ctx.send("ボイスチャンネルに接続されていません!") 6 await ctx.author.voice.channel.connect() 7 await ctx.send("接続しました!") 8 9@bot.command() 10async def leave(ctx): 11 voicetrue = ctx.author.voice 12 mevoicetrue = ctx.guild.me.voice 13 if voicetrue is None: 14 return await ctx.send("ボイスチャンネルに接続されていません!") 15 if mevoicetrue is None: 16 return await ctx.send("ボイスチャンネルに接続していません!") 17 await ctx.voice_client.disconnect() 18 await ctx.send("切断しました!") 19 20@bot.command() 21async def play(ctx, *, url): 22 player = music.get_player(guild_id=ctx.guild.id) 23 if not player: 24 player = music.create_player(ctx, ffmpeg_error_betterfix=True) 25 if not ctx.voice_client.is_playing(): 26 await player.queue(url, search=True) 27 song = await player.play() 28 await ctx.send(f"`{song.name}`の再生を始めました!") 29 else: 30 song = await player.queue(url, search=True) 31 await ctx.send(f"`{song.name}`をプレイリストに追加しました!") 32 33@bot.command() 34async def queue(ctx): 35 player = music.get_player(guild_id=ctx.guild.id) 36 await ctx.send(f"{','.join([song.name for song in player.current_queue()])}") 37 38@bot.command() 39async def pause(ctx): 40 player = music.get_player(guild_id=ctx.guild.id) 41 song = await player.pause() 42 await ctx.send(f'`{song.name}` の再生を止めました!') 43 44@bot.command() 45async def resume(ctx): 46 player = music.get_player(guild_id=ctx.guild.id) 47 song = await player.resume() 48 await ctx.send(f'`{song.name}` の再生を再開しました!') 49 50@bot.command() 51async def loop (ctx): 52 player = music.get_player(guild_id=ctx.guild.id) 53 song = await player.toggle_song_loop() 54 if song.is_looping: 55 return await ctx.send(f'`{song.name}`をループしました!') 56 else: 57 return await ctx.send(f'`{song.name}`のループを解除しました!') 58 59@bot.command() 60async def nowplaying(ctx): 61 player = music.get_player(guild_id=ctx.guild.id) 62 song = player.now_playing() 63 await ctx.send(song.name) 64 65@bot.command() 66async def remove(ctx, index): 67 player = music.get_player(guild_id=ctx.guild.id) 68 song = await player.remove_from_queue(int(index)) 69 await ctx.send(f'`{song.name}` をプレイリストから外しました!') 70 71@bot.command() 72async def skip(ctx): 73 voice = get(bot.voice_clients, guild=ctx.guild) 74 if voice and voice.is_playing(): 75 print('スキップしました!') 76 voice.stop() 77 await ctx.send("スキップしました!") 78 else: 79 print("次の曲がありません!") 80 await ctx.send("次の曲がありません!")
試したこと
手が付けられんませんでした。
補足情報(FW/ツールのバージョンなど)
VSCode
英語を読みましょう。
`ClientException: Not connected to voice.`
あなたの回答
tips
プレビュー