Spaces:
Sleeping
Sleeping
File size: 2,067 Bytes
9d5781e 51e1c40 9d5781e f100e6b 9d5781e f100e6b 9d5781e 6cef7ec 9d5781e 89ad488 f100e6b 51e1c40 f100e6b 51e1c40 f100e6b 89ad488 6cef7ec 89ad488 51e1c40 9d5781e 89ad488 9d5781e 51e1c40 1476bad 9d5781e 89ad488 1476bad 9d5781e 51e1c40 1476bad 9d5781e 89ad488 51e1c40 9d5781e |
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
|