Rozbroje.ext.príkazy.chyby.CommandInvokeError: Príkaz nadvihol výnimka: ClientException: Nie je pripojený k hlas. chyba pri pripojení na hlas.

0

Otázka

Neznášam zvuk hlúpy na to (asi urobiť, aby niektoré) som sa skutočne snažil som sa čo najlepšie. Bol som problémy s d.py hlas. Mám topánok s hudbou topánok funkcie, a keď sa pokúsim spustiť príkaz k!play (song name) Nedarí sa hovorí, že to nie je pripojený k hlas, keď je pripojený na strane klienta a kód strane. Nechápem, čo sa deje. Tu je kód pre celý príkaz, a celý denník chýb, za ktoré:

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

Ako to je chyba denník

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

Najlepšiu odpoveď

0

Tento riadok kódu môže byť problém:

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

Skúste to pre získanie hlasového klienta:

voice = ctx.message.guild.voice_client

Ja nie som úplne istý, či tento problém, ale dúfajme, že funguje. Ach tiež sa uistite, že ste v hlasový kanál, zatiaľ čo beží príkaz.

2021-11-23 20:52:38

Môžete mi povedať, v ktorej časti kódexu by mal byť nahradený? táto funkcia je definovaná viackrát v rôznych parametrov vašej tiež jeho zmeny, aby sa nazýva voice_channel čo je mätúce. @Roopesh-J
Jacob Shankman

Ach prepáč, o zmene názvu premennej, lemme editovať. No prvé uistite sa, že ste pokúša spustiť play príkaz, zatiaľ čo vy sa tiež v hlasový kanál. Nechcem nahradiť kód, ale stačí pridať riadok som navrhol, aby v rámci svojho linky, ktoré som už spomenul. Je to v podstate len iný spôsob, ako dostať hlas klienta, tak som si myslel, môže týmto spôsobom to bude fungovať.
Roopesh-J

Urobil som to a stále to mi chyba, a áno, som v vc, testoval som to, a Keď som nebol, to by sa mi "Používateľ nie je v vc" chyba.
Jacob Shankman

Dang, že to naozaj divné. Neviem, čo iného by mohol byť problém. Odporučil by som možno vytvoriť ďalší príkaz, ktorý stačí spája topánok na hlasový kanál, pretože môžete len vizuálne skontrolovať, či topánok je v kanáli, alebo nie.
Roopesh-J

Je to kód, som zvyknutý zo starších topánok: voiceChannel = discord.utils.get(ctx.guild.voice_channels, name='General'). await voiceChannel.connect(). Len som použil ho v mojom všeobecný kanál, tak som len rovno do napevno meno. Možno to pomôže, aj keď.
Roopesh-J

Používal som, že presný kód, ale zmenil som to byť nejaká vc len pre zjednodušenie ovládania, budem sa snažiť, aby ste zistili, či to funguje. (Aktualizácia: stále To účastník nie je! Nechápem, čo sa deje, ako nikdy som dostal túto chybu.)
Jacob Shankman

V iných jazykoch

Táto stránka je v iných jazykoch

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