Captain Ezio
Progress
51e1c40
raw
history blame
1.84 kB
from threading import RLock
from Powers import LOGGER
from Powers.database import MongoDB
INSERTION_LOCK = RLock()
class AFK(MongoDB):
"""Class to store afk users"""
db_name = "afk"
def __init__(self) -> None:
super().__init__(self.db_name)
def insert_afk(self, chat_id, user_id, time, reason, media_type, media=None):
with INSERTION_LOCK:
curr = self.check_afk(chat_id=chat_id, user_id=user_id)
if curr:
if reason:
self.update({"chat_id": chat_id, "user_id": user_id}, {
"reason": reason, "time": time})
if media:
self.update({"chat_id": chat_id, "user_id": user_id}, {
'media': media, 'media_type': media_type, "time": time})
return True
else:
self.insert_one(
{
"chat_id": chat_id,
"user_id": user_id,
"reason": reason,
"time": time,
"media": media,
"media_type": media_type
}
)
return True
def check_afk(self, chat_id, user_id):
curr = self.find_one({"chat_id": chat_id, "user_id": user_id})
if curr:
return True
return False
def get_afk(self, chat_id, user_id):
curr = self.find_one({"chat_id": chat_id, "user_id": user_id})
if curr:
return curr
return
def delete_afk(self, chat_id, user_id):
with INSERTION_LOCK:
curr = self.check_afk(chat_id, user_id)
if curr:
self.delete_one({"chat_id": chat_id, "user_id": user_id})
return