Spaces:
Paused
Paused
| 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 |