Я работаю над ботом Discord на Python, и он ставит музыку с 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()
вызывает функцию, и если бы я хотел передать ее как что-то, что будет вызываться позже, я бы использовал лямбду: но, асинхронную лямбду?
также запущенное логическое значение управляется другими вещами, так что оно там ради «если», здесь, в этом вопросе
Решение:
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)
Подробнее здесь: https://stackoverflow.com/questions/426 ... -functions
Использование потоков. Таймер с асинхронными функциями. ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение