discord.VoiceChannel.connect() 不返回任何内容

问题描述 投票:0回答:1

我正在制作一个连接到呼叫者当前所在的语音通道的不和谐机器人。我正在使用 connect() 库调用来连接机器人。 根据 Discord API 文档connect() 必须返回一个 VoiceProtocol。然而,调用挂起并且从未真正返回任何东西。

有一个2021年的旧帖,问同样的问题,没有任何具体的解决方案。

例如:

caller = ctx.author.voice
        if caller is None:
            await ctx.send("You are not connected to a voice channel")
            return 
        else:
            await caller.connect(timeout=.5, reconnect=False, self_mute=False, self_deaf=True)
            await ctx.send("This line never executes")

即使调用没有返回任何内容,它仍然将机器人连接到语音通道而不会引发任何异常。

我想知道以前是否有人遇到过这个问题。

编辑: is_connected() 库调用也返回 False。所以,虽然机器人确实连接到语音通道,但它认为它没有连接。

@commands.command()
async def isconnected(self, ctx):
    voice = discord.utils.get(ctx.bot.voice_clients, guild=ctx.guild)
    print("is_connected(): ", voice.is_connected())

    _id = voice.channel.id
    print("bot is connected to channel: " + str(ctx.bot.get_channel(_id)))

    voice2 = discord.utils.get(self.client.voice_clients, guild=ctx.guild)
    print("is_connected(): ",  voice2.is_connected())

    _id2 = voice2.channel.id
    print("bot is connected to channel: ", str(ctx.bot.get_channel(_id2)))

@commands.command()
async def join(self, ctx):
    caller = ctx.message.author.voice
    if caller is None:
        await ctx.send("You are not connected to a voice channel")
        return
    await caller.channel.connect(timeout=5, reconnect=False, self_mute=False, self_deaf=True)
    print("Never executes")

终端输出:

python discord coroutine
1个回答
0
投票

我在 discord-py 2.1.0 中也遇到了这个问题。升级到最新版本为我解决了这个问题。这是我用 pip 升级时运行的命令:

pip install -U --upgrade-strategy eager discord-py

我进一步调查了为什么会发生这种情况,但无法确定根本原因。 2.1.02.2.2 中 VoiceChannel 的实现都实现了 Connectable 协议,这两个版本之间似乎没有变化。如果其他人能找出根本原因,我会洗耳恭听。

© www.soinside.com 2019 - 2024. All rights reserved.