A discórdia.ext.comandos.erros.CommandInvokeError: Comando levantada uma exceção: ClientException: Não conectado a voz. de erro quando conectado a voz

0

Pergunta

Eu odeio parecer estúpido sobre isso (provavelmente para alguns) eu estou realmente tentando o meu melhor. Eu tenho tido problemas com d.py voz. Eu tenho um bot com música bot funcionalidade, e quando eu tento executar o comando k!play (song name) Ele falha dizendo que não é ligado a voz, quando ele é ligado no lado do cliente e o código do lado. Eu não entendo o que está acontecendo. Aqui está o código para o comando inteiro, e todo o log de erro em que:

@client.command(aliases=['p'])
async def play(ctx, *, query: t.Optional[str]):
    song_there = os.path.isfile("song.mp3")
    try:
        if song_there:
            os.remove("song.mp3")

    except PermissionError:
        return


    voice = discord.utils.get(client.voice_clients, guild=ctx.guild)
    if voice is None:
        voiceChannel = ctx.message.author.voice.channel
        await voiceChannel.connect()
        print("Connected to voice")
        voice = discord.utils.get(client.voice_clients, guild=ctx.guild)

    spotify_regex1 = r"https://open.spotify.com/track/(......................)"
    spotify_regex2 = r"https://open.spotify.com/track/(.......................)(si=)(................)"

    match = re.match(spotify_regex1, query)
    is_match1 = bool(match)
    match = re.match(spotify_regex2, query)
    is_match2 = bool(match)

    if is_match1 or is_match2 is True:
        print("Trying With Spotify")
        os.system(f"spotdl '{query}'")
        await ctx.send(f"`Now Playing:`  {query}")


    ydl_opts = {
        'format': 'bestaudio',
        'restrictfilenames': False,
        'noplaylist': True,
        'nocheckcertificate': True,
        'no_warnings': True,
        'default_search': 'auto',
        'source_address': '0.0.0.0',
    }

    try:
        with youtube_dl.YoutubeDL(ydl_opts) as ydl:
            ydl.download([query])
            query_id = os.popen(f'youtube-dl --get-id "ytsearch:{query}"').read()
            title = os.popen(f'youtube-dl --get-title "ytsearch:{query_id}"').read()
            thumbnail_embed = os.popen(f'youtube-dl --get-thumbnail "ytsearch:{query_id}"').read()
            duration_embed = os.popen(f'youtube-dl --get-duration "ytsearch:{query_id}"').read()
            embed = discord.Embed(title="Now Playing", color=0xa00000)
            embed.set_thumbnail(url=thumbnail_embed)
            embed.add_field(name=title, value=f"`0:00 / {duration_embed}`", inline=True)
            embed.set_footer(text=f"Requested by {ctx.message.author}")
            await ctx.send(embed=embed)

    except:
        return

    for file in os.listdir("./"):
        if file.endswith(".mp3"):
            os.rename(file, "song.mp3")
            print("Changed mp3 to mp3")

    for file in os.listdir("./"):
        if file.endswith(".m4a"):
            os.rename(file, "song.mp3")
            print("Changed m4a to mp3")

    for file in os.listdir("./"):
        if file.endswith(".webm"):
            os.rename(file, "song.mp3")
            print("Changed webm to mp3")

    if song_there is False:
        time.sleep(5)
        await ctx.send("Song not found!")

    print("Playing File (or trying to)")

    voice.play(discord.FFmpegPCMAudio("song.mp3"))
    voice.source = discord.PCMVolumeTransformer(voice.source)
    voice.source.volume = 0.80

Connected to voice
[download] Downloading playlist: fuwa fuwa time
[youtube:search] query "fuwa fuwa time": Downloading page 1
[youtube:search] playlist fuwa fuwa time: Downloading 1 videos
[download] Downloading video 1 of 1
[youtube] jL8p9vteR5g: Downloading webpage
[youtube] Downloading just video jL8p9vteR5g because of --no-playlist
[youtube] jL8p9vteR5g: Downloading player f1ca6900
[download] Destination: K-ON! Fuwa Fuwa Time Yui and Mio Duet HD-jL8p9vteR5g.m4a
[download] 100% of 3.71MiB in 01:05                 
[ffmpeg] Correcting container in "K-ON! Fuwa Fuwa Time Yui and Mio Duet HD-jL8p9vteR5g.m4a"
[download] Finished downloading playlist: fuwa fuwa time
Changed m4a to mp3
Playing File (or trying to)
Ignoring exception in command play:
Traceback (most recent call last):
  File "C:\Users\..\PycharmProjects\kyoko test\venv\lib\site-packages\discord\ext\commands\core.py", line 85, in wrapped
    ret = await coro(*args, **kwargs)
  File "C:\Users..\PycharmProjects\kyoko test\main.py", line 850, in play
    voice.play(discord.FFmpegPCMAudio("song.mp3"))
  File "C:\Users\..\PycharmProjects\kyoko test\venv\lib\site-packages\discord\voice_client.py", line 555, in play
    raise ClientException('Not connected to voice.')
discord.errors.ClientException: Not connected to voice.

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "C:\Users\..\PycharmProjects\kyoko test\venv\lib\site-packages\discord\ext\commands\bot.py", line 940, in invoke
    await ctx.command.invoke(ctx)
  File "C:\Users\..\PycharmProjects\kyoko test\venv\lib\site-packages\discord\ext\commands\core.py", line 863, in invoke
    await injected(*ctx.args, **ctx.kwargs)
  File "C:\Users\..\PycharmProjects\kyoko test\venv\lib\site-packages\discord\ext\commands\core.py", line 94, in wrapped
    raise CommandInvokeError(exc) from exc
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: ClientException: Not connected to voice.

Que isso é o log de erro

discord discord.py python
2021-11-23 14:15:32
1

Melhor resposta

0

Esta linha de código poderia ser o problema:

voice = discord.utils.get(client.voice_clients,guild=ctx.guild)

Tente isto para obter a voz do cliente:

voice = ctx.message.guild.voice_client

Eu não sou inteiramente certo se for esse o problema, mas tomara que funcione. Ah, também certifique-se de que você está em um canal de voz ao executar o comando.

2021-11-23 20:52:38

Você pode me dizer qual parte do código deve ser substituído? esta função é definida muitas vezes em diferentes parâmetros, o seu também alterando-a para ser chamado voice_channel o que é confuso. @Roopesh-J
Jacob Shankman

Ah me desculpe a alterar o nome da variável, vou editar. Bem, primeiro certifique-se de que você está tentando executar o play comando enquanto estiver também no canal de voz. Não substitua o código, mas apenas adicione a linha que eu sugeri em sua linha que mencionei. Basicamente, ele é apenas uma maneira diferente de obter a voz do cliente, então eu pensei que talvez desta forma ele iria trabalhar.
Roopesh-J

Eu fiz isso e ele ainda me deu o erro, e sim, eu estou em um vc, eu testei ele e Se eu não me daria um "Usuário não está em vc de erro".
Jacob Shankman

Dang, que é realmente estranho. Eu não sei o que mais poderia ser o problema. Eu recomendaria talvez criar outro comando que apenas liga o bot para o canal de voz, pois você pode apenas verificar visualmente se o bot está no canal ou não.
Roopesh-J

Este é o código que eu usei de um antigo bot: voiceChannel = discord.utils.get(ctx.guild.voice_channels, name='General'). await voiceChannel.connect(). Eu só usei ele no meu canal em geral, então eu apenas em linha reta até codificado o nome. Talvez ele irá ajudá embora.
Roopesh-J

Eu costumava usar esse código exato, mas eu mudei para ser qualquer vc apenas para acessibilidade, vou tentar para ver se funciona. (Update: ainda dosent! Eu não entendo o que está acontecendo, como eu nunca tive esse erro).
Jacob Shankman

Em outros idiomas

Esta página está em outros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................