Spaces:
Paused
Paused
| # | |
| # Copyright (C) 2021-2022 by TeamYukki@Github, < https://github.com/TeamYukki >. | |
| # | |
| # This file is part of < https://github.com/TeamYukki/YukkiMusicBot > project, | |
| # and is released under the "GNU v3.0 License Agreement". | |
| # Please see < https://github.com/TeamYukki/YukkiMusicBot/blob/master/LICENSE > | |
| # | |
| # All rights reserved. | |
| from typing import Dict, List, Union | |
| from YukkiMusic.core.mongo import mongodb | |
| queriesdb = mongodb.queries | |
| userdb = mongodb.userstats | |
| chattopdb = mongodb.chatstats | |
| authuserdb = mongodb.authuser | |
| gbansdb = mongodb.gban | |
| sudoersdb = mongodb.sudoers | |
| chatsdb = mongodb.chats | |
| blacklist_chatdb = mongodb.blacklistChat | |
| usersdb = mongodb.tgusersdb | |
| playlistdb = mongodb.playlist | |
| blockeddb = mongodb.blockedusers | |
| privatedb = mongodb.privatechats | |
| # Playlist | |
| async def _get_playlists(chat_id: int) -> Dict[str, int]: | |
| _notes = await playlistdb.find_one({"chat_id": chat_id}) | |
| if not _notes: | |
| return {} | |
| return _notes["notes"] | |
| async def get_playlist_names(chat_id: int) -> List[str]: | |
| _notes = [] | |
| for note in await _get_playlists(chat_id): | |
| _notes.append(note) | |
| return _notes | |
| async def get_playlist(chat_id: int, name: str) -> Union[bool, dict]: | |
| name = name | |
| _notes = await _get_playlists(chat_id) | |
| if name in _notes: | |
| return _notes[name] | |
| else: | |
| return False | |
| async def save_playlist(chat_id: int, name: str, note: dict): | |
| name = name | |
| _notes = await _get_playlists(chat_id) | |
| _notes[name] = note | |
| await playlistdb.update_one( | |
| {"chat_id": chat_id}, {"$set": {"notes": _notes}}, upsert=True | |
| ) | |
| async def delete_playlist(chat_id: int, name: str) -> bool: | |
| notesd = await _get_playlists(chat_id) | |
| name = name | |
| if name in notesd: | |
| del notesd[name] | |
| await playlistdb.update_one( | |
| {"chat_id": chat_id}, | |
| {"$set": {"notes": notesd}}, | |
| upsert=True, | |
| ) | |
| return True | |
| return False | |
| # Users | |
| async def is_served_user(user_id: int) -> bool: | |
| user = await usersdb.find_one({"user_id": user_id}) | |
| if not user: | |
| return False | |
| return True | |
| async def get_served_users() -> list: | |
| users_list = [] | |
| async for user in usersdb.find({"user_id": {"$gt": 0}}): | |
| users_list.append(user) | |
| return users_list | |
| async def add_served_user(user_id: int): | |
| is_served = await is_served_user(user_id) | |
| if is_served: | |
| return | |
| return await usersdb.insert_one({"user_id": user_id}) | |
| # Served Chats | |
| async def get_served_chats() -> list: | |
| chats_list = [] | |
| async for chat in chatsdb.find({"chat_id": {"$lt": 0}}): | |
| chats_list.append(chat) | |
| return chats_list | |
| 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 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}) | |
| # Blacklisted Chats | |
| async def blacklisted_chats() -> list: | |
| chats_list = [] | |
| async for chat in blacklist_chatdb.find({"chat_id": {"$lt": 0}}): | |
| chats_list.append(chat["chat_id"]) | |
| return chats_list | |
| async def blacklist_chat(chat_id: int) -> bool: | |
| if not await blacklist_chatdb.find_one({"chat_id": chat_id}): | |
| await blacklist_chatdb.insert_one({"chat_id": chat_id}) | |
| return True | |
| return False | |
| async def whitelist_chat(chat_id: int) -> bool: | |
| if await blacklist_chatdb.find_one({"chat_id": chat_id}): | |
| await blacklist_chatdb.delete_one({"chat_id": chat_id}) | |
| return True | |
| return False | |
| # Private Served Chats | |
| async def get_private_served_chats() -> list: | |
| chats_list = [] | |
| async for chat in privatedb.find({"chat_id": {"$lt": 0}}): | |
| chats_list.append(chat) | |
| return chats_list | |
| async def is_served_private_chat(chat_id: int) -> bool: | |
| chat = await privatedb.find_one({"chat_id": chat_id}) | |
| if not chat: | |
| return False | |
| return True | |
| async def add_private_chat(chat_id: int): | |
| is_served = await is_served_private_chat(chat_id) | |
| if is_served: | |
| return | |
| return await privatedb.insert_one({"chat_id": chat_id}) | |
| async def remove_private_chat(chat_id: int): | |
| is_served = await is_served_private_chat(chat_id) | |
| if not is_served: | |
| return | |
| return await privatedb.delete_one({"chat_id": chat_id}) | |
| # Auth Users DB | |
| async def _get_authusers(chat_id: int) -> Dict[str, int]: | |
| _notes = await authuserdb.find_one({"chat_id": chat_id}) | |
| if not _notes: | |
| return {} | |
| return _notes["notes"] | |
| async def get_authuser_names(chat_id: int) -> List[str]: | |
| _notes = [] | |
| for note in await _get_authusers(chat_id): | |
| _notes.append(note) | |
| return _notes | |
| async def get_authuser(chat_id: int, name: str) -> Union[bool, dict]: | |
| name = name | |
| _notes = await _get_authusers(chat_id) | |
| if name in _notes: | |
| return _notes[name] | |
| else: | |
| return False | |
| async def save_authuser(chat_id: int, name: str, note: dict): | |
| name = name | |
| _notes = await _get_authusers(chat_id) | |
| _notes[name] = note | |
| await authuserdb.update_one( | |
| {"chat_id": chat_id}, {"$set": {"notes": _notes}}, upsert=True | |
| ) | |
| async def delete_authuser(chat_id: int, name: str) -> bool: | |
| notesd = await _get_authusers(chat_id) | |
| name = name | |
| if name in notesd: | |
| del notesd[name] | |
| await authuserdb.update_one( | |
| {"chat_id": chat_id}, | |
| {"$set": {"notes": notesd}}, | |
| upsert=True, | |
| ) | |
| return True | |
| return False | |
| # Blocked Users | |
| async def get_gbanned() -> list: | |
| results = [] | |
| async for user in gbansdb.find({"user_id": {"$gt": 0}}): | |
| user_id = user["user_id"] | |
| results.append(user_id) | |
| return results | |
| 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}) | |
| # Sudoers | |
| async def get_sudoers() -> list: | |
| sudoers = await sudoersdb.find_one({"sudo": "sudo"}) | |
| if not sudoers: | |
| return [] | |
| return sudoers["sudoers"] | |
| async def add_sudo(user_id: int) -> bool: | |
| sudoers = await get_sudoers() | |
| sudoers.append(user_id) | |
| await sudoersdb.update_one( | |
| {"sudo": "sudo"}, {"$set": {"sudoers": sudoers}}, upsert=True | |
| ) | |
| return True | |
| async def remove_sudo(user_id: int) -> bool: | |
| sudoers = await get_sudoers() | |
| sudoers.remove(user_id) | |
| await sudoersdb.update_one( | |
| {"sudo": "sudo"}, {"$set": {"sudoers": sudoers}}, upsert=True | |
| ) | |
| return True | |
| # Total Queries on bot | |
| async def get_queries() -> int: | |
| chat_id = 98324 | |
| mode = await queriesdb.find_one({"chat_id": chat_id}) | |
| if not mode: | |
| return 0 | |
| return mode["mode"] | |
| async def set_queries(mode: int): | |
| chat_id = 98324 | |
| queries = await queriesdb.find_one({"chat_id": chat_id}) | |
| if queries: | |
| mode = queries["mode"] + mode | |
| return await queriesdb.update_one( | |
| {"chat_id": chat_id}, {"$set": {"mode": mode}}, upsert=True | |
| ) | |
| # Top Chats DB | |
| async def get_top_chats() -> dict: | |
| results = {} | |
| async for chat in chattopdb.find({"chat_id": {"$lt": 0}}): | |
| chat_id = chat["chat_id"] | |
| total = 0 | |
| for i in chat["vidid"]: | |
| counts_ = chat["vidid"][i]["spot"] | |
| if counts_ > 0: | |
| total += counts_ | |
| results[chat_id] = total | |
| return results | |
| async def get_global_tops() -> dict: | |
| results = {} | |
| async for chat in chattopdb.find({"chat_id": {"$lt": 0}}): | |
| for i in chat["vidid"]: | |
| counts_ = chat["vidid"][i]["spot"] | |
| title_ = chat["vidid"][i]["title"] | |
| if counts_ > 0: | |
| if i not in results: | |
| results[i] = {} | |
| results[i]["spot"] = counts_ | |
| results[i]["title"] = title_ | |
| else: | |
| spot = results[i]["spot"] | |
| count_ = spot + counts_ | |
| results[i]["spot"] = count_ | |
| return results | |
| async def get_particulars(chat_id: int) -> Dict[str, int]: | |
| ids = await chattopdb.find_one({"chat_id": chat_id}) | |
| if not ids: | |
| return {} | |
| return ids["vidid"] | |
| async def get_particular_top( | |
| chat_id: int, name: str | |
| ) -> Union[bool, dict]: | |
| ids = await get_particulars(chat_id) | |
| if name in ids: | |
| return ids[name] | |
| async def update_particular_top(chat_id: int, name: str, vidid: dict): | |
| ids = await get_particulars(chat_id) | |
| ids[name] = vidid | |
| await chattopdb.update_one( | |
| {"chat_id": chat_id}, {"$set": {"vidid": ids}}, upsert=True | |
| ) | |
| # Top User DB | |
| async def get_userss(chat_id: int) -> Dict[str, int]: | |
| ids = await userdb.find_one({"chat_id": chat_id}) | |
| if not ids: | |
| return {} | |
| return ids["vidid"] | |
| async def get_user_top(chat_id: int, name: str) -> Union[bool, dict]: | |
| ids = await get_userss(chat_id) | |
| if name in ids: | |
| return ids[name] | |
| async def update_user_top(chat_id: int, name: str, vidid: dict): | |
| ids = await get_userss(chat_id) | |
| ids[name] = vidid | |
| await userdb.update_one( | |
| {"chat_id": chat_id}, {"$set": {"vidid": ids}}, upsert=True | |
| ) | |
| async def get_topp_users() -> dict: | |
| results = {} | |
| async for chat in userdb.find({"chat_id": {"$gt": 0}}): | |
| user_id = chat["chat_id"] | |
| total = 0 | |
| for i in chat["vidid"]: | |
| counts_ = chat["vidid"][i]["spot"] | |
| if counts_ > 0: | |
| total += counts_ | |
| results[user_id] = total | |
| return results | |
| # Gban Users | |
| async def get_banned_users() -> list: | |
| results = [] | |
| async for user in blockeddb.find({"user_id": {"$gt": 0}}): | |
| user_id = user["user_id"] | |
| results.append(user_id) | |
| return results | |
| async def get_banned_count() -> int: | |
| users = blockeddb.find({"user_id": {"$gt": 0}}) | |
| users = await users.to_list(length=100000) | |
| return len(users) | |
| async def is_banned_user(user_id: int) -> bool: | |
| user = await blockeddb.find_one({"user_id": user_id}) | |
| if not user: | |
| return False | |
| return True | |
| async def add_banned_user(user_id: int): | |
| is_gbanned = await is_banned_user(user_id) | |
| if is_gbanned: | |
| return | |
| return await blockeddb.insert_one({"user_id": user_id}) | |
| async def remove_banned_user(user_id: int): | |
| is_gbanned = await is_banned_user(user_id) | |
| if not is_gbanned: | |
| return | |
| return await blockeddb.delete_one({"user_id": user_id}) | |