File size: 2,169 Bytes
9d5781e
9a4f289
9d5781e
9a4f289
9d5781e
 
 
 
 
 
 
f100e6b
9d5781e
f100e6b
 
9d5781e
 
 
 
 
 
 
 
 
f100e6b
9d5781e
1476bad
9d5781e
 
1476bad
 
 
9d5781e
 
 
 
 
f100e6b
 
 
 
 
 
 
 
 
 
 
9d5781e
 
 
1476bad
9d5781e
 
 
 
 
1476bad
9d5781e
1476bad
9d5781e
1476bad
9d5781e
 
1476bad
9d5781e
1476bad
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 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(curr)
                return True
            return False