Проблема в том, что vc.disconnect
является сопрограммой. Вы должны обращаться с этим по-другому, так как вызов after
не ожидает сопрограммы, так как голосовой плеер просто Thread
.
Согласно документам , вот как это должно быть обработано:
def my_after():
coro = vc.disconnect()
fut = asyncio.run_coroutine_threadsafe(coro, client.loop)
try:
fut.result()
except:
pass
player = await voice.create_ytdl_player(url, after=my_after)
player.start()
Также, как отмечено в документах , следующее предупреждение:
Внимание
Эта функция является частью 3.5.1+ и 3.4.4+. Если вы не используете
эти версии Python затем используют
discord.compat.
.
Это означает, что если вы используете Python 3.4.0-3.4.3 или 3.5.0, ваш my_after
должен быть изменен на следующее:
def my_after():
from discord.compat import run_coroutine_threadsafe
coro = vc.disconnect()
fut = run_coroutine_threadsafe(coro, client.loop)
try:
fut.result()
except:
pass