La discordia.ext.i comandi.errori.CommandInvokeError: Comando sollevato un'eccezione: ClientException: Non è connesso a voce. errore quando è collegato a voce

0

Domanda

Odio il suono stupido su questo (io probabilmente fare per alcuni) sto veramente facendo del mio meglio. Ho avuto problemi con la d.py voce. Ho un bot con musica bot funzionalità, e quando cerco di eseguire il comando k!play (song name) Fallisce dicendo che non è collegato con la voce, quando è collegato sul lato client, e il codice di lato. Non capisco cosa sta succedendo. Ecco il codice per l'intero comando, e l'intero log di errore sotto:

@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.

Che questo è il log di errore

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

Migliore risposta

0

Questa riga di codice potrebbe essere il problema:

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

Prova questo per ottenere la voce client:

voice = ctx.message.guild.voice_client

Io non sono del tutto sicuro se questo è il problema, ma speriamo che funziona. Oh anche assicurarsi che siete in un canale vocale durante l'esecuzione del comando.

2021-11-23 20:52:38

Mi puoi dire in che parte del codice deve essere sostituito? questa funzione è definita da diversi parametri, il vostro cambiando anche essere chiamati voice_channel il che è strano. @Roopesh-J
Jacob Shankman

Ah mi dispiace per la modifica del nome della variabile, lemme modifica che. Beh, in primo luogo assicurarsi che si sta tentando di eseguire il play comando mentre siete anche nel canale vocale. Non sostituire il codice, ma basta aggiungere la riga che ho suggerito in linea che ho citato. È in fondo solo un modo diverso di ottenere il voice client, così ho pensato che potrebbe, in questo modo non avrebbe funzionato.
Roopesh-J

L'ho fatto e ancora mi ha dato l'errore, e sì che io sono in un vc, l'ho provato e Se io non mi darebbe un "Utente non è in vc" di errore.
Jacob Shankman

Dang, che è davvero strano. Non so cosa altro potrebbe essere il problema. Vorrei raccomandare forse la creazione di un altro comando che appena si collega il bot per il canale voce, dal momento che si può solo controllare visivamente se il bot è nel canale o non.
Roopesh-J

Questo è il codice che ho usato da un vecchio bot: voiceChannel = discord.utils.get(ctx.guild.voice_channels, name='General'). await voiceChannel.connect(). Ho usato solo nel mio canale generalista, quindi ho solo dritto fino inserito il nome. Forse aiuterà comunque.
Roopesh-J

Ho usato per usare quel codice esatto, ma l'ho cambiato da qualsiasi vc solo per l'accessibilità, proverò a vedere se funziona. (Aggiornamento: È ancora dosent! Non capisco cosa sta succedendo, come non ho mai ricevuto questo errore).
Jacob Shankman

Roopesh-J

In altre lingue

Questa pagina è in altre lingue

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