Бот не может подключить голосовой канал - PullRequest
0 голосов
/ 23 октября 2019

Бот не подключается к каналу и не проигрывает музыку, потому что он выдает ошибку .: AttributeError: 'Bot' object has no attribute 'is_voice_connected' Я просмотрел некоторые учебники по discord.py и написал этот код:

import asyncio
from discord.ext import commands
client = commands.Bot(command_prefix='!')
songs = asyncio.Queue()
play_next_song = asyncio.Event()
@client.event
async def on_ready():
    print('client ready')
async def audio_player_task():
    while True:
        play_next_song.clear()
        current = await songs.get()
        current.start()
        await play_next_song.wait()
def toggle_next():
    client.loop.call_soon_threadsafe(play_next_song.set)
@client.command(pass_context=True)
async def play(ctx, url):
    if not client.is_voice_connected(ctx.message.server):
        voice = await client.join_voice_channel(ctx.message.author.voice_channel)
    else:
        voice = client.voice_client_in(ctx.message.server)
    player = await voice.create_ytdl_player(url, after=toggle_next)
    await songs.put(player)
client.loop.create_task(audio_player_task())
client.run('TOKEN')

1 Ответ

0 голосов
/ 23 октября 2019

Я не знаю, используете ли вы перезапись discord.py или какую-либо предыдущую версию, но я вижу, что это не работает, если вы используете неверную версию discord.py. Здесь , где вы можете найти правильную документацию для вашего кода.

Кроме того, проблема с ошибкой проверки, подключен ли ваш бот, клиент не находит ваше голосовое соединение в перезаписи discord.py. Все, что вам нужно, это

from discord.utils import get

@client.command(pass_context=True)
async def play(ctx, url):
    voice_client = get(ctx.bot.voice_clients, guild=ctx.guild)
    if not voice_client.is_connected():
        #Do this
    else:
        #Do that

. Если вам нужно что-то еще проработать, большинство изменений от оригинального discord.py до переписанного находится в документации, которую я предоставил в этом ответе.

...