[英]StreamPlayer “after” function isn't being called
問題是vc.disconnect
是協程。 您需要以不同的方式處理它,因為語音播放器只是一個Thread
,因此after
調用不會等待協程。
根據docs ,這是應該如何處理的:
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()
同樣如docs所述,以下警告:
警告
此功能只是3.5.1+和3.4.4+的一部分。 如果您沒有使用這些Python版本,請使用
discord.compat.
。
這意味着,如果您正在運行Python 3.4.0-3.4.3或3.5.0, my_after
需要將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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.