diff --git a/jarvis_tasks/tasks/warning.py b/jarvis_tasks/tasks/warning.py new file mode 100644 index 0000000..e76dcbb --- /dev/null +++ b/jarvis_tasks/tasks/warning.py @@ -0,0 +1,23 @@ +"""JARVIS warnings tasks.""" +import asyncio +from datetime import datetime, timedelta + +from dis_snek import Snake +from jarvis_core.db import q +from jarvis_core.db.models import Warning + + +async def unwarn(bot: Snake) -> None: + """ + Deactivate warnings when they expire. + + Args: + bot: Snake instance + """ + while True: + asyncio.sleep(3600) + warns = Warning.find(q(active=True)) + async for warn in warns: + if warn.created_at + timedelta(hours=warn.duration) < datetime.utcnow(): + warn.update(q(active=False)) + await warn.commit()