[英]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.