我正在创建一个可以播放音乐的不和谐机器人,但是我有点卡住了,因为 机器人完成播放音乐后应离开当前的语音通道。但这并没有发生,尽管我遵循了FAQ page.
上的指示,但根本没有调用我的if (user.emailVerified) {
userPic = user.photoURL;
userId = user.id;
displayName = user.displayName;
var pm = database.ref('chat/' + userId);
// Create a new message and add it to the list.
pm.push({
displayName: displayName,
userId: userId,
pic: userPic,
text: myString.toString(),
timestamp: new Date().getTime(), // unix timestamp in milliseconds
})
}
函数after
vc.disconnect
答案 0 :(得分:2)
问题在于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()
呼叫不会等待协程。
根据docs,这是应该如何处理的:
discord.compat.
另外,docs指出以下警告:
警告
此功能仅是3.5.1+和3.4.4+的一部分。如果您不使用 这些Python版本然后使用
my_after
。
意味着,如果您正在运行Python 3.4.0-3.4.3或3.5.0,则需要将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
更改为此:
$result = array_map( function( $value ) {
return [ 'first_name'=>$value['first_name'], 'last_name'=> $value['last_name'] ];
}, $array );
print_r($result);