| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398 |
- from wbb import db
- from typing import Dict, List, Union
- notesdb = db.notes
- filtersdb = db.filters
- warnsdb = db.warns
- karmadb = db.karma
- chatsdb = db.chats
- gbansdb = db.gban
- """ Notes functions """
- async def get_notes_count() -> dict:
- chats = notesdb.find({"chat_id": {"$lt": 0}})
- if not chats:
- return {}
- chats_count = 0
- notes_count = 0
- for chat in await chats.to_list(length=1000000000):
- notes_name = await get_note_names(chat['chat_id'])
- notes_count += len(notes_name)
- chats_count += 1
- return {
- "chats_count": chats_count,
- "notes_count": notes_count
- }
- async def _get_notes(chat_id: int) -> Dict[str, int]:
- _notes = await notesdb.find_one({"chat_id": chat_id})
- if _notes:
- _notes = _notes["notes"]
- else:
- _notes = {}
- return _notes
- async def get_note_names(chat_id: int) -> List[str]:
- _notes = []
- for note in await _get_notes(chat_id):
- _notes.append(note)
- return _notes
- async def get_note(chat_id: int, name: str) -> Union[bool, dict]:
- name = name.lower().strip()
- _notes = await _get_notes(chat_id)
- if name in _notes:
- return _notes[name]
- else:
- return False
- async def save_note(chat_id: int, name: str, note: dict):
- name = name.lower().strip()
- _notes = await _get_notes(chat_id)
- _notes[name] = note
- await notesdb.update_one(
- {"chat_id": chat_id},
- {
- "$set": {
- "notes": _notes
- }
- },
- upsert=True
- )
- async def delete_note(chat_id: int, name: str) -> bool:
- notesd = await _get_notes(chat_id)
- name = name.lower().strip()
- if name in notesd:
- del notesd[name]
- await notesdb.update_one(
- {"chat_id": chat_id},
- {
- "$set": {
- "notes": notesd
- }
- },
- upsert=True
- )
- return True
- return False
- """ Filters funcions """
- async def get_filters_count() -> dict:
- chats = filtersdb.find({"chat_id": {"$lt": 0}})
- if not chats:
- return {}
- chats_count = 0
- filters_count = 0
- for chat in await chats.to_list(length=1000000000):
- filters_name = await get_filters_names(chat['chat_id'])
- filters_count += len(filters_name)
- chats_count += 1
- return {
- "chats_count": chats_count,
- "filters_count": filters_count
- }
- async def _get_filters(chat_id: int) -> Dict[str, int]:
- _filters = await filtersdb.find_one({"chat_id": chat_id})
- if _filters:
- _filters = _filters['filters']
- else:
- _filters = {}
- return _filters
- async def get_filters_names(chat_id: int) -> List[str]:
- _filters = []
- for _filter in await _get_filters(chat_id):
- _filters.append(_filter)
- return _filters
- async def get_filter(chat_id: int, name: str) -> Union[bool, dict]:
- name = name.lower().strip()
- _filters = await _get_filters(chat_id)
- if name in _filters:
- return _filters[name]
- else:
- return False
- async def save_filter(chat_id: int, name: str, _filter: dict):
- name = name.lower().strip()
- _filters = await _get_filters(chat_id)
- _filters[name] = _filter
- await filtersdb.update_one(
- {"chat_id": chat_id},
- {
- "$set": {
- "filters": _filters
- }
- },
- upsert=True
- )
- async def delete_filter(chat_id: int, name: str) -> bool:
- filtersd = await _get_filters(chat_id)
- name = name.lower().strip()
- if name in filtersd:
- del filtersd[name]
- await filtersdb.update_one(
- {"chat_id": chat_id},
- {
- "$set": {
- "filters": filtersd
- }
- },
- upsert=True
- )
- return True
- return False
- """ Warn functions """
- async def int_to_alpha(user_id: int) -> str:
- alphabet = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j"]
- text = ""
- user_id = str(user_id)
- for i in user_id:
- text += alphabet[int(i)]
- return text
- async def alpha_to_int(user_id_alphabet: str) -> int:
- alphabet = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j"]
- user_id = ""
- for i in user_id_alphabet:
- index = alphabet.index(i)
- user_id += str(index)
- user_id = int(user_id)
- return user_id
- async def get_warns_count() -> dict:
- chats = warnsdb.find({"chat_id": {"$lt": 0}})
- if not chats:
- return {}
- chats_count = 0
- warns_count = 0
- for chat in await chats.to_list(length=100000000):
- for user in chat['warns']:
- warns_count += chat['warns'][user]['warns']
- chats_count += 1
- return {
- "chats_count": chats_count,
- "warns_count": warns_count
- }
- async def get_warns(chat_id: int) -> Dict[str, int]:
- warns = await warnsdb.find_one({"chat_id": chat_id})
- if warns:
- warns = warns['warns']
- else:
- warns = {}
- return warns
- async def get_warn(chat_id: int, name: str) -> Union[bool, dict]:
- name = name.lower().strip()
- warns = await get_warns(chat_id)
- if name in warns:
- return warns[name]
- async def add_warn(chat_id: int, name: str, warn: dict):
- name = name.lower().strip()
- warns = await get_warns(chat_id)
- warns[name] = warn
- await warnsdb.update_one(
- {"chat_id": chat_id},
- {
- "$set": {
- "warns": warns
- }
- },
- upsert=True
- )
- async def remove_warns(chat_id: int, name: str) -> bool:
- warnsd = await get_warns(chat_id)
- name = name.lower().strip()
- if name in warnsd:
- del warnsd[name]
- await warnsdb.update_one(
- {"chat_id": chat_id},
- {
- "$set": {
- "warns": warnsd
- }
- },
- upsert=True
- )
- return True
- return False
- """ Karma functions """
- async def get_karmas_count() -> dict:
- chats = karmadb.find({"chat_id": {"$lt": 0}})
- if not chats:
- return {}
- chats_count = 0
- karmas_count = 0
- for chat in await chats.to_list(length=1000000):
- for i in chat['karma']:
- karmas_count += chat['karma'][i]['karma']
- chats_count += 1
- return {
- "chats_count": chats_count,
- "karmas_count": karmas_count
- }
- async def get_karmas(chat_id: int) -> Dict[str, int]:
- karma = await karmadb.find_one({"chat_id": chat_id})
- if karma:
- karma = karma['karma']
- else:
- karma = {}
- return karma
- async def get_karma(chat_id: int, name: str) -> Union[bool, dict]:
- name = name.lower().strip()
- karmas = await get_karmas(chat_id)
- if name in karmas:
- return karmas[name]
- async def update_karma(chat_id: int, name: str, karma: dict):
- name = name.lower().strip()
- karmas = await get_karmas(chat_id)
- karmas[name] = karma
- await karmadb.update_one(
- {"chat_id": chat_id},
- {
- "$set": {
- "karma": karmas
- }
- },
- upsert=True
- )
- """ Chats log functions """
- async def is_served_chat(chat_id: int) -> bool:
- chat = await chatsdb.find_one({"chat_id": chat_id})
- if not chat:
- return False
- return True
- async def get_served_chats() -> list:
- chats = chatsdb.find({"chat_id": {'$lt': 0}})
- if not chats:
- return []
- chats_list = []
- for chat in await chats.to_list(length=1000000000):
- chats_list.append(chat)
- return chats_list
- async def add_served_chat(chat_id: int):
- is_served = await is_served_chat(chat_id)
- if is_served:
- return
- return await chatsdb.insert_one({"chat_id": chat_id})
- async def remove_served_chat(chat_id: int):
- is_served = await is_served_chat(chat_id)
- if not is_served:
- return
- return await chatsdb.delete_one({"chat_id": chat_id})
- """ Gban functions """
- async def get_gbans_count() -> int:
- users = gbansdb.find({"user_id": {"$gt": 0}})
- users = await users.to_list(length=100000)
- return len(users)
- async def is_gbanned_user(user_id: int) -> bool:
- user = await gbansdb.find_one({"user_id": user_id})
- if not user:
- return False
- return True
- async def add_gban_user(user_id: int):
- is_gbanned = await is_gbanned_user(user_id)
- if is_gbanned:
- return
- return await gbansdb.insert_one({"user_id": user_id})
- async def remove_gban_user(user_id: int):
- is_gbanned = await is_gbanned_user(user_id)
- if not is_gbanned:
- return
- return await gbansdb.delete_one({"user_id": user_id})
- # Couple Chooser
- async def _get_lovers(chat_id: int):
- lovers = await coupledb.find_one({"chat_id": chat_id})
- if lovers:
- lovers = lovers["couple"]
- else:
- lovers = {}
- return lovers
- async def get_couple(chat_id: int, date: str):
- lovers = await _get_lovers(chat_id)
- if date in lovers:
- return lovers[date]
- else:
- return False
- async def save_couple(chat_id: int, date: str, couple: dict):
- lovers = await _get_lovers(chat_id)
- lovers[date] = couple
- await coupledb.update_one(
- {"chat_id": chat_id},
- {
- "$set": {
- "couple": lovers
- }
- },
- upsert=True
- )
|