Added database and /language

This commit is contained in:
2023-08-03 21:29:47 +02:00
parent b1f7e649b9
commit 95dbd9cec8
11 changed files with 152 additions and 5 deletions

40
classes/pyroclient.py Normal file
View File

@@ -0,0 +1,40 @@
from typing import Union
from libbot.pyrogram.classes import PyroClient
from pyrogram.types import User
from classes.pyrouser import PyroUser
from modules.database import col_users
class PyroClient(PyroClient):
async def find_user(self, user: Union[int, User]) -> PyroUser:
"""Find User by it's ID or User object
### Args:
* user (`Union[int, User]`): ID or User object to extract ID from
### Returns:
* `PyroUser`: PyroUser object
"""
if (
col_users.find_one({"id": user.id if isinstance(user, User) else user})
is None
):
col_users.insert_one(
{
"id": user.id if isinstance(user, User) else user,
"locale": user.language_code if isinstance(user, User) else None,
}
)
db_record = col_users.find_one(
{"id": user.id if isinstance(user, User) else user}
)
if db_record is None:
raise TypeError(
f"User with ID {user.id if isinstance(user, User) else user} was not found in the database"
)
return PyroUser(**db_record)

23
classes/pyrouser.py Normal file
View File

@@ -0,0 +1,23 @@
from typing import Union
from attrs import define
from bson import ObjectId
from modules.database import col_users
@define
class PyroUser:
"""Dataclass of DB entry of a user"""
_id: ObjectId
id: int
locale: Union[str, None]
async def update_locale(self, locale: str) -> None:
"""Change user's locale stored in the database
### Args:
* locale (`str`): New locale to be set
"""
col_users.update_one({"_id": self._id}, {"$set": {"locale": locale}})