首页 文章

discord.py(python)中的ffmpeg播放器自动离开

提问于
浏览
0

我创建了一个不和谐机器人,在某些消息上发回消息或播放声音(如音板)

关键的代码行是:

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'语句的代码时,bot加入并收到错误消息:

TypeError: disconnect() takes 1 positional argument but 2 were given

我知道你可以使用 soundboard_player.is_done() 来检查僵尸程序的状态,但我无法找到一种方法来检查状态而不会在循环中捕获代码

通过在循环中捕获代码,我无法执行STOP命令以阻止它在中途播放歌曲(soundbite) .

有关ffmpeg播放器的 after=voice_client.disconnect() 命令的任何帮助,还是一种定期检查状态而不会陷入循环的创造性方法?

1 回答

  • 0

    运行threadafe .

    我建议:

    loop = voice_client.loop

    after=lambda: asyncio.run_coroutine_threadsafe(voice_client.disconnect(), loop) 你应该把它写在同步功能里面 . 祝好运 .

相关问题