La discorde.ext.commandes.erreurs.CommandInvokeError: Commande soulevé une exception: ClientException: Pas connecté à la voix. erreur lorsqu'il est connecté à la voix

0

La question

Je déteste paraître stupide à ce sujet (je ne suis probablement pour certains) je suis vraiment essayé de mon mieux. J'ai eu des problèmes avec d.py voix. J'ai un bot avec de la musique bot fonctionnalité, et lorsque j'essaie d'exécuter la commande k!play (song name) Il omet de dire qu'il n'est pas connecté à la voix, lorsqu'il est connecté sur le côté client, et le code côté. Je ne comprends pas ce qui se passe. Voici le code pour l'ensemble de la commande, et l'ensemble du journal des erreurs de sous 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 c'est le journal des erreurs

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

La meilleure réponse

0

Cette ligne de code pourrait être la question:

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

Essayez ceci pour l'obtention de la voix du client:

voice = ctx.message.guild.voice_client

Je ne suis pas entièrement sûr si la question mais j'espère que les œuvres. Oh assurez-vous également que vous êtes dans un canal de voix lors de l'exécution de la commande.

2021-11-23 20:52:38

Pouvez-vous me dire de quelle partie du code doit être remplacé? cette fonction est définie de nombreuses reprises dans différents paramètres, votre aussi en évolution, qu'elle soit appelée voice_channel ce qui est source de confusion. @Roopesh-J
Jacob Shankman

Ah désolé à propos de l'évolution de la variable nom de lemme de le modifier. Eh bien d'abord, assurez-vous que vous essayez d'exécuter l' play commande pendant que vous êtes aussi dans le canal de voix. Ne remplacez pas le code, mais il suffit d'ajouter la ligne je l'ai suggéré, en vertu de votre ligne que j'ai mentionné. Il est fondamentalement juste un autre moyen d'obtenir la voix du client, alors j'ai pensé que peut de cette manière, il serait de travailler.
Roopesh-J

Je l'ai fait et toujours il m'a donné l'erreur, et oui je suis dans un cr, je l'ai testé et Si je ne voulais pas qu'il me donnerait un "Utilisateur n'est pas au cr d'erreur".
Jacob Shankman

Dang, c'est vraiment bizarre. Je ne sais pas quoi d'autre pourrait être la question. Je recommanderais peut-être la création d'une autre commande qui vient de se connecte le bot pour le canal de voix, puisque vous pouvez simplement vérifier visuellement si le bot est dans le canal ou pas.
Roopesh-J

C'est le code que j'ai utilisé à partir d'une ancienne bot: voiceChannel = discord.utils.get(ctx.guild.voice_channels, name='General'). await voiceChannel.connect(). Je n'ai utilisé dans ma chaîne généraliste j'ai donc tout droit jusqu'à la codé en dur le nom. Peut-être que ça va aider à bien.
Roopesh-J

J'ai l'habitude d'utiliser que le code exact, mais je l'ai changé pour être tout cr juste pour l'accessibilité, je vais essayer de voir si cela fonctionne. (Mise à jour: Il encore dosent! Je ne comprends pas ce qui se passe car je n'ai jamais eu cette erreur.)
Jacob Shankman

Dans d'autres langues

Cette page est dans d'autres langues

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