37 lines
1.1 KiB
Python
37 lines
1.1 KiB
Python
"""J.A.R.V.I.S. unban background task handler."""
|
|
from datetime import datetime, timedelta
|
|
|
|
from discord.ext.tasks import loop
|
|
|
|
import jarvis
|
|
from jarvis.config import get_config
|
|
from jarvis.db.models import Ban, Unban
|
|
|
|
jarvis_id = get_config().client_id
|
|
|
|
|
|
@loop(minutes=10)
|
|
async def unban() -> None:
|
|
"""J.A.R.V.I.S. unban background task."""
|
|
bans = Ban.objects(type="temp", active=True)
|
|
unbans = []
|
|
for ban in bans:
|
|
if ban.created_at + timedelta(hours=ban.duration) < datetime.utcnow() + timedelta(minutes=10):
|
|
guild = await jarvis.jarvis.fetch_guild(ban.guild)
|
|
user = await jarvis.jarvis.fetch_user(ban.user)
|
|
if user:
|
|
guild.unban(user)
|
|
ban.active = False
|
|
ban.save()
|
|
unbans.append(
|
|
Unban(
|
|
user=user.id,
|
|
guild=guild.id,
|
|
username=user.name,
|
|
discrim=user.discriminator,
|
|
admin=jarvis_id,
|
|
reason="Ban expired",
|
|
)
|
|
)
|
|
if unbans:
|
|
Ban.objects().insert(unbans)
|