Задать вопрос
no_SNITCH
@no_SNITCH
начинающий программист

Как сделать так, чтобы бот отключался от голосового канала?

Я пишу дискорд бота на питоне. Написал ивент для подключения бота к голосовому каналу(далее - гк), при подключении юзера к гк, для того, чтобы он проигрывал приветственный отрывок из песни. Но проблема в том, что когда бот подключается к каналу и воспроизводит аудио, в последующем, при других подключениях юзеров, он не сможет проигрывать отрывок, так как он уже подключен.Мне необходимо написать код, при котором, после воспроизведения мелодии он отключался от гк.

Вот код:
@bot.event
async def on_voice_state_update(member, before, after):
	if after.channel and after.channel!=before.channel:
		VoiceClient = await after.channel.connect()
		VoiceClient.play(discord.FFmpegPCMAudio(executable = "C:/ffmpeg/bin/ffmpeg.exe" , source = "zvuk-jenskogo-opernogo-peniya-2.mp3"))

Вот ошибка:
discord.errors.ClientException: Already connected to a voice channel.
  • Вопрос задан
  • 597 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Fullstack-разработчик на Python + нейросети
    20 месяцев
    Далее
  • Skillfactory
    Профессия Python-разработчик
    9 месяцев
    Далее
  • SF Education
    Бэкенд-разработчик на Python
    3 месяца
    Далее
Пригласить эксперта
Ответы на вопрос 1
@shadowzxc
я
@bot.event
async def on_voice_state_update(member, before, after):
    if after.channel and after.channel!=before.channel:
        VoiceClient = await after.channel.connect()
        VoiceClient.play(discord.FFmpegPCMAudio(executable = "C:/ffmpeg/bin/ffmpeg.exe" , source = "zvuk-jenskogo-opernogo-peniya-2.mp3"))
while VoiceClient.is_playing():
    await asyncio.sleep(1)
else:
    await asyncio.sleep(15)
    while VoiceClient.is_playing():
        break
    else:
        await VoiceClient.disconnect()
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы