Простой таймер на проверку действия в определенное кол-во времени
тут такая проблема, я хотел сделать систему - если игрок не выстрелит в течении 30 секунд, его исключало из комнаты, свою идею я решил реализовать с помощью asyncio sleep и ensure future, все вроде бы хорошо, но когда запускается второй луп, на одного и того же игрока, а у певрого лупа еще время не прошло, либо осталось 2-3 сек он сразу же триггериться, чем можно это поправить?
async def check_shoot(user_id):
await asyncio.sleep(30)
if user[user_id]["wait_shot"] == True:
#Игрок не выстрелил
asyncio.ensure_future(check_shoot(user_id=msg.from_id))
Ответы (1 шт):
Автор решения: Cookie
→ Ссылка
Проблема решилась , я использовал uuid для идентификации запусков функции, и сравнивал, соответсвует ли идентификатор выполнения последнему посланному.