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

Posted

技术标签:

【中文标题】discord.py(python)中的ffmpeg播放器自动离开【英文标题】:ffmpeg player in discord.py (python) automatically leave 【发布时间】:2018-06-22 00:07:25 【问题描述】:

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

关键的代码行是:

         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 命令来停止它在中途播放歌曲(声音片段)。

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

【问题讨论】:

【参考方案1】:

以线程安全的方式运行它。

我推荐:

loop = voice_client.loop

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

【讨论】:

以上是关于discord.py(python)中的ffmpeg播放器自动离开的主要内容,如果未能解决你的问题,请参考以下文章

使用 Codeforces API 通过 discord bot (discord.py) 获取有关用户在 CF 问题上的所有 AC 的信息 - python 中的 json 文件处理错误

在通过 Python (discord.py) 输入追加时组织 JSON 文件

Discord.py 中的 Discord.js 的 `user.tag` 和 `user.username`?

Discord.py 我不能在 python 中使用 dict 来保存用户数据

discord.py和discord.py的区别[voice]

在python中同时运行多个协程[Discord.py]