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 | |