Libertatis
@Libertatis
Начинающий программист

Как сделать так, чтобы команда бота дискорд работала только при условии, что человек в голосовом чате (python)?

Здравствуйте, я пишу музыкального бота для дискорда и сейчас пишу ему основные команды. Я хочу сделать так, чтобы бот исполнял команды подобную нижеприведенной только если пользователь находится в одном голосовом чате с ним. Вопрос: как это реализовать? Я пытался сделать это ниже, но в итоге потом заметил, то что команда работает если пользователь будет в ЛЮБОМ войс чате. Вопрос: как это исправить и сделать так, чтобы бот реагировал только на команды человека, который с ним в одном войсе? Заранее спасибо

Вот мой нынешний код:
@bot.command()
async def skip(ctx):
    """Пропускает песню и начинает играть следующую в очереди"""
    voice = discord.utils.get(bot.voice_clients, guild=server)
    if not ctx.author.voice is None:
        if voice.is_playing():
            voice.stop()
        else:
            await ctx.channel.send(f'{ctx.author.mention}, ничего не воспроизводится')
    else:
        await ctx.channel.send(f'{ctx.author.mention}, Вы должны находиться в голосовом канале, чтобы использовать эту команду')
  • Вопрос задан
  • 72 просмотра
Решения вопроса 1
Vindicar
@Vindicar
Как всегда, читаем документацию.
Member.voice может содержать либо None, либо объект VoiceState. А VoiceState, в свою очередь, имеет поле channel.
Дальше догадаешься?
Если нет, один подход - проверить поле members у полученного объекта VoiceChannel. Но можно и по-другому.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы