Spaces:
Running
Running
File size: 2,184 Bytes
dee310b 1896841 dee310b 1896841 dee310b ebf51e7 dee310b ebf51e7 dee310b ebf51e7 dee310b e64dc9b dee310b e64dc9b dee310b ebf51e7 dee310b e64dc9b dee310b e64dc9b dee310b e64dc9b dee310b e64dc9b dee310b e64dc9b dee310b e64dc9b dee310b d7e1221 dee310b |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
from threading import RLock
from traceback import format_exc
from Powers import LOGGER
from Powers.database import MongoDB
from Powers.utils.msg_types import Types
INSERTION_LOCK = RLock()
class Floods(MongoDB):
"""Class to store flood limit and action of a chat"""
db_name = "flood"
def __init__(self):
super().__init__(self.db_name)
def save_flood(
self,
chat_id: int,
limit: int,
within: int,
action: str,
):
with INSERTION_LOCK:
curr = self.find_one({"chat_id": chat_id})
if curr:
if not(limit == int(curr['limit']) and within == int(curr['within']) and action == str(curr['action'])):
return self.update(
{
"chat_id": chat_id
},
{
"limit": limit,
"within": within,
"action": action,
}
)
else:
return
else:
return self.insert_one(
{
"chat_id" : chat_id,
"limit": limit,
"within": within,
"action" : action
},
)
def is_chat(self, chat_id: int):
with INSERTION_LOCK:
curr = self.find_one({"chat_id": chat_id})
if curr:
action = [str(curr['limit']), str(curr['within']), str(curr['action'])]
return action
return False
def get_action(self, chat_id: int):
with INSERTION_LOCK:
curr = self.find_one({"chat_id": chat_id})
if curr:
return curr['action']
return "Flood haven't set"
def rm_flood(self, chat_id: int):
with INSERTION_LOCK:
curr = self.find_one({"chat_id": chat_id})
if curr:
self.delete_one({"chat_id":chat_id})
return True
return False
|