【发布时间】:2017-03-05 10:56:34
【问题描述】:
我正在使用 Python 开发 Discord 机器人,它可以将来自 YouTube 的音乐排入队列,我正在做一些事情以在播放器停止时自动排列歌曲,而所有代码都运行良好,唯一的问题是我没有能够每 15 秒检查玩家是否在玩游戏
async def cmd_autoqueue(self,message, player,channel,author, permissions, leftover_args):
print("autoq ran")
if started == True:
if player.is_stopped:
await self.cmd_autoqadd(player, channel, author, permissions,leftover_args,song_url=last_url)
threading.Timer(15.0,await self.cmd_autoqueue(message, player,channel,author, permissions, leftover_args)).start()
我确实意识到了
threading.Timer(15.0,await self.cmd_autoqueue(message, player,channel,author, permissions, leftover_args)).start()
调用函数,如果我想将它作为稍后调用的东西传递,我会使用 lambda: 但是,异步 lambda?
也开始布尔值由其他东西管理得很好,为了“如果”,在这个问题中
解决方案:
async def cmd_autoqueue(self,message, player,channel,author, permissions, leftover_args):
global started
print("loop")
if started == True:
await asyncio.sleep(15)
if player.is_stopped:
await self.cmd_autoqadd(player, channel, author, permissions,leftover_args,song_url=last_url)
await self.cmd_autoqueue(message, player,channel,author, permissions, leftover_args)
【问题讨论】:
标签: python multithreading lambda python-asyncio