Бот Python discord не подключается к голосовому каналу, но не отправляет ошибку

Месяц назад я сделал музыкального бота для сервера разногласий, используя discord.py. Еще неделю назад это работало хорошо, но теперь, когда я использую команду join, бот не может подключиться к голосовому каналу. Вот код команды:

class MonClient(discord.Client):
      
   async def on_ready(self):
      self.voice = None # contains the <VoiceClient> object created by <chan.connect> in the join command

   async def on_message(self,message):
      if message.author.bot:
         pass
      elif message.content[0] == "!": # the command prefix is "!"
         parts = message.content.split(" ")
         command = parts[0][1:]
         
         if command == "join":
            if message.author.voice != None and self.voice == None:
               chan = message.author.voice.channel
               await message.channel.send("before connecting to voice channel")
               self.voice = await chan.connect()
               await message.channel.send("after connecting to voice channel")
            else:
               await message.channel.send("Bot already connected to voice channel or user not connected to voice channel")

Точнее, бот успешно отправляет «перед подключением к голосовому каналу» в текстовом канале, затем показывается, что он присоединился к голосовому каналу с помощью пользовательского интерфейса Discord (его изображение отображается в списке участников, подключенных к голосовому каналу, есть звук подключения к голосовому каналу). А вот второе сообщение "после подключения к голосовому каналу" никогда не отправляется. Мы по-прежнему можем использовать другие команды бота, но переменная self.voice по-прежнему содержит None, поэтому, очевидно, бот не может воспроизводить музыку.

Я предполагаю, что асинхронный метод connect останавливается на чем-то на неопределенное время, но я не могу понять, что, потому что нет сообщения об ошибке, даже TimeoutError, описанного в документации. С интернет-соединением все в порядке, и, как я уже сказал, бот работал хорошо две или три недели, так что теперь я действительно не знаю, как лучше понять, что блокирует соединение.

В Stackoverflow есть несколько других вопросов по аналогичным проблемам, но предложенные ответы не имели отношения к моей проблеме: в ответе предлагался другой метод получения объекта голосового канала для подключения, но я уже получил хороший объект, поскольку бот по крайней мере показан для подключения к голосовому каналу; и еще один ответ был связан со строками @client.command(), которые я не использую.

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
0
251
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Убедитесь, что ваша библиотека обновлена, недавно Discord внес изменения. Это сработало для меня.

pip install -U discord

Другие вопросы по теме