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

标签 python ffmpeg discord discord.py

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

关键的代码行是:

         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()检查机器人的状态,但我想不出一种方法来检查状态而不将代码陷入循环

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

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

最佳答案

运行它线程安全。

我建议:
loop = voice_client.loopafter=lambda: asyncio.run_coroutine_threadsafe(voice_client.disconnect(), loop) 你应该把它写在一个同步函数中。
祝你好运。

关于python - discord.py(python)中的ffmpeg播放器自动离开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48227772/

相关文章:

Python:导入模块麻烦,取决于运行模式

python - Django Rest 框架本地化

python - LSTM 嵌入层形状错误

flutter - 如何使用 Flutter_ffmpeg 在 Flutter 中为视频添加水印

javascript - Discord.js 如何提及消息作者?

java - 在 Python 中获得与 Java 相同的左移

linux - 从 Linux 命令行给视频加水印

nginx - 用于视频流平台的开源 CMS 和服务器

javascript - 多文件夹命令处理程序

discord - 在嵌入字段中发送附件