discord.py зависает при подключении к голосовой героке - PullRequest
0 голосов
/ 27 октября 2019

Итак, я написал бот Discord на Python и добавил голосовую поддержку к нему несколько месяцев назад. В настоящее время я работаю на Heroku, и все заработало, когда я изначально писал бота, используя сборку Opus для Heroku. Однако в настоящее время при запуске бота на Heroku бот подключается к голосовому каналу, и тогда бот будет думать, что он все еще не подключен, даже если он явно визуально подключен в интерфейсе Discord.

Я уже пробовал использоватьразные сборки опуса безрезультатно. В данный момент я использую: https://elements.heroku.com/buildpacks/xrisk/heroku-opus

Я также использую последнюю версию следующих библиотек

discord.py[voice]
beautifulsoup4
bs4
aiohttp
Pillow
aiofiles
imageio
youtube_dl

Это команда для подключения только бота,и есть дубликат этого в коде, используемом для воспроизведения самого аудио. В обоих случаях наблюдается одинаковое поведение.

@commands.command(pass_context=True, aliases=["disconnect"])
    async def join(self, ctx):
        can_send = await check_can_use(ctx, "join")
        if not can_send:
            return

        global voice
        try:
            channel = ctx.message.author.voice.channel
            voice = get(self.bot.voice_clients, guild=ctx.guild)

            # Connect bot to voice channel
            if voice and voice.is_connected():
                await voice.move_to(channel)
            else:
                voice = await channel.connect()
                print(f"Connected to {channel}\n")
            await ctx.send(f"**Connected to {channel}**")
        except Exception as e:
            print(e)
            print("Must be in voice channel")
            await ctx.send("**Must be in voice channel**")

При локальном запуске на моем компьютере бот подключается правильно и отправляет сообщение о подключении к серверу. При запуске на Heroku бот просто останавливается при подключении к голосовому чату.

Строка:

    print(f"Connected to {channel}\n")  

никогда не запускается. Бот зависает после запуска

    voice = await channel.connect()

Я могу напечатать голосовой объект, поэтому я знаю, что

    voice = get(self.bot.voice_clients, guild=ctx.guild)

работает как положено.

Исключение такжене запускается, пока бот не будет прерван. Выход которого можно увидеть здесь https://pastebin.com/y97Ggvr0.

1 Ответ

0 голосов
/ 27 октября 2019

Похоже, что проблема с зависанием была замечена в discord.py 1.2.3 и нескольких версиях между последним обновлением и 1.2.3. Heroku также не устанавливал 1.2.4, но вместо этого устанавливал 1.2.3, вызывая проблему. Принудительное использование 1.2.4 в моем файле require.txt решило проблему.

Если кто-то еще столкнется с этим, убедитесь, что вы используете версию 1.2.4 discord.py [voice]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...