Spaces:
Running
Running
File size: 2,067 Bytes
dee310b 058dd88 dee310b ebf51e7 dee310b ebf51e7 dee310b 4056428 dee310b 3c9449b ebf51e7 058dd88 ebf51e7 058dd88 ebf51e7 3c9449b 4056428 3c9449b 058dd88 dee310b 3c9449b dee310b 058dd88 e64dc9b dee310b 3c9449b e64dc9b dee310b 058dd88 e64dc9b dee310b 3c9449b 058dd88 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 Powers.database import MongoDB
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:
if not (curr := self.find_one({"chat_id": chat_id})):
return self.insert_one(
{
"chat_id": chat_id,
"limit": limit,
"within": within,
"action": action
},
)
if (
limit != int(curr['limit'])
or within != int(curr['within'])
or action != str(curr['action'])
):
return self.update(
{
"chat_id": chat_id
},
{
"limit": limit,
"within": within,
"action": action,
}
)
else:
return
def is_chat(self, chat_id: int):
with INSERTION_LOCK:
if curr := self.find_one({"chat_id": chat_id}):
return [
str(curr['limit']),
str(curr['within']),
str(curr['action']),
]
return False
def get_action(self, chat_id: int):
with INSERTION_LOCK:
if curr := self.find_one({"chat_id": chat_id}):
return curr['action']
return "Flood haven't set"
def rm_flood(self, chat_id: int):
with INSERTION_LOCK:
if curr := self.find_one({"chat_id": chat_id}):
self.delete_one({"chat_id": chat_id})
return True
return False
|