Spaces:
Sleeping
Sleeping
File size: 3,737 Bytes
51c8b2f 9015bc5 51c8b2f 9015bc5 51c8b2f 9015bc5 51c8b2f 9015bc5 51c8b2f 9015bc5 51c8b2f 9015bc5 51c8b2f 9015bc5 51c8b2f 9015bc5 51c8b2f 9015bc5 51c8b2f 9015bc5 51c8b2f 9015bc5 51c8b2f 9015bc5 51c8b2f 9015bc5 51c8b2f 9015bc5 51c8b2f |
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 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 |
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 GIVEAWAY(MongoDB):
"""Class to store giveaway info of the chat"""
db_name = "giveaway"
def __init__(self):
super().__init__(self.db_name)
def save_give(
self,
chat_id:int, # Chat id for in which user want to do giveaway
group_id:int, # entries chat id
user_id: int, # User id of the person who have started the giveaway
is_new:int=0, # Can old user vote? 0 for yes 1 for no
entries:int=1, # Entries are allowed? 0 for no 1 for yes
give:int = 1, # Giveaway is on or not? 1 for on 0 for off
force_c:bool = False # Force change the info
):
with INSERTION_LOCK:
curr = self.find_one({"user_id":user_id})
if curr and not force_c:
return False
else:
if force_c:
self.delete_one({"user_id":user_id,})
self.insert_one(
{
"chat_id":chat_id,
"where":group_id,
"user_id":user_id,
"is_new":is_new,
"entries":entries,
"is_give":give
}
)
return True
def give_info(self,group_id = 0, u_id = 0):
with INSERTION_LOCK:
if u_id and group_id:
curr = self.find_one({"where":group_id, "user_id":u_id})
if curr:
return curr
else:
curr = self.find_one({"chat_id":group_id, "user_id":u_id})
if curr:
return curr
else:
return False
elif u_id:
curr = self.find_one({"user_id":u_id})
if curr:
return curr
elif group_id:
curr = self.find_one({"where":group_id})
if curr:
return curr
else:
curr = self.find_one({"chat_id":group_id})
if curr:
return curr
else:
return False
def is_vote(self, group_id):
with INSERTION_LOCK:
curr = self.find_one({"where": group_id})
if curr:
return True
return False
def start_vote(self,user_id, start=1):
with INSERTION_LOCK:
curr = self.find_one({"user_id":user_id})
if curr:
self.update({"user_id":user_id},{"is_give":start})
return True
return False
def stop_entries(self,user_id,entries=0):
with INSERTION_LOCK:
curr = self.find_one({"user_id":user_id})
if curr:
self.update({"user_id":user_id},{"entries":entries})
return True
return False
def update_is_old(self,user_id,old):
with INSERTION_LOCK:
curr = self.find_one({"user_id":user_id})
if curr:
self.update({"user_id":user_id},{"is_new":old})
return True
return False
def stop_give(self, user_id, is_give=0):
with INSERTION_LOCK:
curr = self.find_one({"user_id":user_id})
if curr:
self.update({"user_id":user_id},{"is_give":is_give})
return True
return True |