jarvis-bot/jarvis/tasks/unlock.py

24 lines
840 B
Python

from datetime import datetime
from datetime import timedelta
from discord.ext.tasks import loop
import jarvis
from jarvis.db.models import Lock
@loop(minutes=1)
async def unlock():
locks = Lock.objects(active=True)
for lock in locks:
if lock.created_at + timedelta(minutes=lock.duration) < datetime.utcnow():
guild = await jarvis.jarvis.fetch_guild(lock.guild)
channel = await jarvis.jarvis.fetch_channel(lock.channel)
if channel:
roles = await guild.fetch_roles()
for role in roles:
overrides = channel.overwrites_for(role)
overrides.send_messages = None
await channel.set_permissions(role, overwrite=overrides, reason="Lock expired")
lock.active = False
lock.save()