Discord.py последняя VoiceChannel.disconnect () не работает - PullRequest
0 голосов
/ 01 апреля 2020

Я пытался написать бот-диск, используя discord.py. VoiceChannel.connect() работает так же, как указано в документах, однако VoiceChannel.disconnect() не работает, даже если это указано в документах. Мне нужно использовать, чтобы бот покинул голосовой канал. Ниже приведен код.

    elif message.content == ("/bind"):
        channel = message.author.voice.channel
        vc = await channel.connect()


    elif message.content == ("/unbind"):
        channel = message.author.voice.channel
        vc = await channel.disconnect()

Ошибка, которую я получаю:

AttributeError: у объекта 'VoiceChannel' нет атрибута 'connect'

также я использую @ client.event вместо @ client.command

1 Ответ

0 голосов
/ 01 апреля 2020

Ошибка довольно очевидна, VoiceChannel не имеет disconnect.

Что вы ищете: VoiceClient.disconnect().

Ваш код работает с исходным channel.connect(), объект VoiceClient создается и присваивается переменной vc. Вы можете использовать await vc.disconnect() для отключения от голосового канала.

Другой вариант - проверить, подключен ли бот к голосовому каналу на сервере / гильдии, используя Client.voice_client, и если так, отсоедините его от него.

import discord

client = discord.Client()


@client.event
async def on_message(message):
    if message.content == "/bind":
        channel = message.author.voice.channel
        vc = await channel.connect()

    elif message.content == "/unbind":
        for vc in client.voice_clients:
            if vc.guild == message.guild:
                await vc.disconnect()


client.run('token')
...