我已经创建了一个不和谐机器人,它可以在某些消息上发回消息或播放声音(就像soundboard)。
关键的代码行是:
soundboard_player = voice_client.create_ffmpeg_player("doh.mp3")
soundboard_player.start()
await client.send_message(message.channel, "Playing DOH...")这绝对行得通,但我一直在尝试添加行after=voice_client.disconnect(),我把它放在("doh.mp3", * I PUT IT HERE *)括号中。我想让机器人在完成后离开。
当我运行包含'after‘语句的代码时,机器人加入并得到错误消息:
TypeError: disconnect() takes 1 positional argument but 2 were given我知道您可以使用soundboard_player.is_done()来检查机器人的状态,但我想不出一种方法来检查状态,而不将代码陷入循环中
通过在循环中捕获代码,我不能执行一个停止命令来在中途停止播放这首歌(声音片段)。
有没有关于ffmpeg播放器的after=voice_client.disconnect()命令的帮助,或者有什么创造性的方法可以定期检查状态,而不会陷入循环?
发布于 2018-03-09 09:14:05
运行threadsafe。
我建议:
loop = voice_client.loop
你应该把它写在一个after=lambda: asyncio.run_coroutine_threadsafe(voice_client.disconnect(), loop)函数里面。祝好运。
https://stackoverflow.com/questions/48227772
复制相似问题