MissKatyPyro/database/karma_db.py
sourcery-ai[bot] 6e381c7403
Sourcery refactored master branch (#17)
* 'Refactored by Sourcery'

* reformating: code

Co-authored-by: Sourcery AI <>
Co-authored-by: yasirarism <yasiramunandar@gmail.com>
2023-01-11 08:41:48 +07:00

65 lines
1.9 KiB
Python

from typing import Dict, Union
from database import dbname
from misskaty.helper.functions import int_to_alpha
karmadb = dbname.karma
async def get_karmas_count() -> dict:
chats_count = 0
karmas_count = 0
async for chat in karmadb.find({"chat_id": {"$lt": 0}}):
for i in chat["karma"]:
karma_ = chat["karma"][i]["karma"]
if karma_ > 0:
karmas_count += karma_
chats_count += 1
return {"chats_count": chats_count, "karmas_count": karmas_count}
async def user_global_karma(user_id) -> int:
total_karma = 0
async for chat in karmadb.find({"chat_id": {"$lt": 0}}):
karma = await get_karma(chat["chat_id"], await int_to_alpha(user_id))
if karma and (int(karma["karma"]) > 0):
total_karma += int(karma["karma"])
return total_karma
async def get_karmas(chat_id: int) -> Dict[str, int]:
karma = await karmadb.find_one({"chat_id": chat_id})
return karma["karma"] if karma else {}
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)
async def is_karma_on(chat_id: int) -> bool:
chat = await karmadb.find_one({"chat_id_toggle": chat_id})
return bool(chat)
async def karma_on(chat_id: int):
is_karma = await is_karma_on(chat_id)
if is_karma:
return
return await karmadb.delete_one({"chat_id_toggle": chat_id})
async def karma_off(chat_id: int):
is_karma = await is_karma_on(chat_id)
if not is_karma:
return
return await karmadb.insert_one({"chat_id_toggle": chat_id})