jarvis-tasks/jarvis_tasks/tasks/warning.py
2022-03-10 17:22:24 -07:00

28 lines
808 B
Python

"""JARVIS warnings tasks."""
import asyncio
from datetime import datetime, timedelta
from logging import Logger
from dis_snek import Snake
from jarvis_core.db import q
from jarvis_core.db.models import Warning
async def unwarn(bot: Snake, logger: Logger) -> None:
"""
Deactivate warnings when they expire.
Args:
bot: Snake instance
logger: Global logger
"""
while True:
warns = Warning.find(q(active=True))
async for warn in warns:
if warn.created_at + timedelta(hours=warn.duration) < datetime.utcnow():
logger.debug(f"Deactivating warning {warn.id}")
warn.update(q(active=False))
await warn.commit()
# Check every hour
await asyncio.sleep(3600)