У меня небольшая проблема с проверкой моего бота, если он уже находится на канале, к которому его просят присоединиться.
В качестве примера приведен фрагмент кода:
async def _sound(self, ctx:commands.Context):
voice_channel = None
if ctx.author.voice != None:
voice_channel = ctx.author.voice.channel
if voice_channel != None:
vc = await voice_channel.connect()
vc.play(discord.FFmpegPCMAudio('sound.mp3'))
await asyncio.sleep(5)
await vc.disconnect()
Проблема, с которой я сталкиваюсь, заключается в том, что если я использую команду> звук, когда бот все еще находится в голосе канал, я получаю сообщение о том, что бот уже находится в канале. Я попытался сравнить клиентский канал и пользовательский канал и, если они одинаковые, отключить, а затем повторно подключиться, чтобы избежать ошибки, но я не могу сделать это правильно. Вот что я пытался, но не получилось:
voice_client = ctx.voice_client
if voice_client.channel.id == voice_channel.id:
await voice_channel.disconnect
vc = await voice_channel.connect()
vc.play(discord.FFmpegPCMAudio('sound.mp3'))
asyncio.sleep(4)
await vc.disconnect()