La discordia.ext.los comandos.errores.CommandInvokeError: Comando planteó una excepción: ClientException: No conectado a la voz. de error cuando se conecta a voz

0

Pregunta

Odio sonar estúpido en esto (probablemente para algunos) estoy intentando realmente lo mejor de mi. He estado teniendo problemas con d.py voz. Tengo un bot con música bot funcionalidad, y cuando intento ejecutar el comando k!play (song name) Se produce un error diciendo que no está conectado a la voz, cuando está conectado en el lado del cliente, y el código de lado. No entiendo lo que está pasando. Aquí está el código para el conjunto de comandos, y el conjunto de error de registro en virtud de 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 eso es el registro de errores

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

Mejor respuesta

0

Esta línea de código podría ser el problema:

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

Pruebe esto para obtener la voz del cliente:

voice = ctx.message.guild.voice_client

No estoy del todo seguro de si esto es un problema, pero esperemos que funciona. Oh, también asegúrese de que usted está en un canal de voz mientras se ejecuta el comando.

2021-11-23 20:52:38

¿Me puede decir qué parte del código debe ser reemplazado? esta función se define muchas veces en diferentes parámetros, su cambiarlo también ser llamado voice_channel lo que es confuso. @Roopesh-J
Jacob Shankman

Ah lo siento por el cambio de nombre de la variable, puedes editar. Bueno en primer lugar, asegúrese de que está intentando ejecutar el play comando mientras que usted también está en el canal de voz. No reemplace el código, sino simplemente agregue la línea sugerí bajo la línea de la que he hablado. Básicamente, es sólo una manera diferente de obtener la voz del cliente, así que pensé en mayo de este modo de trabajo.
Roopesh-J

Yo hice eso y todavía me dio el error, y sí, estoy en un vc, lo he comprobado y Si yo no me iba a dar un "Usuario no está en la vc de error".
Jacob Shankman

Dang, eso es muy raro. No sé qué otra cosa podría ser el problema. Yo recomendaría tal vez la creación de otro comando que sólo se conecta el bot para el canal de voz, ya que sólo puede comprobar visualmente si el robot está en el canal o no.
Roopesh-J

Este es el código que he usado desde un viejo robot: voiceChannel = discord.utils.get(ctx.guild.voice_channels, name='General'). await voiceChannel.connect(). Sólo he usado en mi canal general así que sólo hacia arriba codificado el nombre. Tal vez pueda ayudar aunque.
Roopesh-J

Yo solía usar ese código exacto, pero he cambiado para que sea de cualquier vc sólo para la accesibilidad, voy a probar a ver si funciona. (Actualización: todavía ajena! Yo no entiendo lo que pasa, como nunca he tenido este error.)
Jacob Shankman

Roopesh-J

En otros idiomas

Esta página está en otros idiomas

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