Added database and /language
This commit is contained in:
40
classes/pyroclient.py
Normal file
40
classes/pyroclient.py
Normal 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
23
classes/pyrouser.py
Normal 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}})
|
Reference in New Issue
Block a user