没有调用StreamPlayer的“之后”功能

时间:2018-06-30 07:11:17

标签: python discord discord.py

我正在创建一个可以播放音乐的不和谐机器人,但是我有点卡住了,因为 机器人完成播放音乐后应离开当前的语音通道。但这并没有发生,尽管我遵循了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

1 个答案:

答案 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);