managementbot / Powers /database /giveaway_db.py
Captain Ezio
Update complete `v 2.1.0`
9015bc5
raw
history blame
3.74 kB
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