Простой таймер на проверку действия в определенное кол-во времени

тут такая проблема, я хотел сделать систему - если игрок не выстрелит в течении 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 для идентификации запусков функции, и сравнивал, соответсвует ли идентификатор выполнения последнему посланному.

→ Ссылка