BinaryONe
Refresh Update
2f67506
#
# 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})