From 909eb356b0bfabc2074d8e48463b595e5e98a670 Mon Sep 17 00:00:00 2001 From: Alex Date: Wed, 1 Nov 2023 11:46:44 +0700 Subject: [PATCH] edit achievements --- db/models.py | 16 ++++++++++++++++ db/requests.py | 16 ++++++++++++++++ routes/rewards.py | 32 +++++++++++++++++++++++++++----- 3 files changed, 59 insertions(+), 5 deletions(-) diff --git a/db/models.py b/db/models.py index c24f639..befa269 100644 --- a/db/models.py +++ b/db/models.py @@ -13,3 +13,19 @@ class UsersTokens(Base): primary_key=True) vkid = Column("vkid", BigInteger, nullable=False, unique=True) token = Column("token", Text, nullable=False) + + +class UsersProfile(Base): + __tablename__ = "users_profile" + + # TODO: think about foreign_id + id = Column("id", BigInteger, Identity(start=1, increment=1, minvalue=1, cycle=False, cache=1), nullable=False, + primary_key=True) + vkid = Column("vkid", BigInteger, nullable=False, unique=True) + # TODO: fill items below + achievements = Column() + trusted_ids = Column() + prefix = Column() + prefix_d = Column() + prefix_delete = Column() + last_login = Column() diff --git a/db/requests.py b/db/requests.py index d6308c1..586f107 100644 --- a/db/requests.py +++ b/db/requests.py @@ -36,3 +36,19 @@ async def get_user_token(user_id: int) -> Optional[db.models.UsersTokens]: except Exception as e: logger.exception(e) return None + + +async def get_user_profile(user_id: int) -> Optional[db.models.UsersProfile]: + """ + Получает профиль пользователя + :param user_id: VKID + """ + + try: + async with db.config.async_session() as session: + result = await session.execute(select(db.models.UsersProfile).where(db.models.UsersProfile.vkid == user_id)) + return result.scalars().one_or_none() + + except Exception as e: + logger.exception(e) + return None diff --git a/routes/rewards.py b/routes/rewards.py index 00e1557..529500a 100644 --- a/routes/rewards.py +++ b/routes/rewards.py @@ -1,14 +1,36 @@ from vkbottle.user import Message, UserLabeler +import db +import utils from config import edit_message, prefix_bot from custom_rules.permission import Permission -import utils - bl = UserLabeler() @bl.message(Permission(), text=[prefix_bot + " достижения"]) -async def rewards_cmd(message: Message): - await edit_message(message, - f"Вот список всех достижений 🏆:\n{utils.next_line_symbol.join(utils.rewards)}") +async def rewards_cmd(ctx: Message): + text = "Список всех достижений:\n\n" + have_ = "" + dont_have = "" + info = await db.requests.get_user_profile(user_id=ctx.from_id) + + # TODO: CHECK BEFORE DEPLOY!! + # TODO: create table in db + # TODO: fill items in models.py + + for item in info.achievements: + if item in utils.rewards.keys(): + have_ += f"{utils.rewards[item]}\n" + else: + dont_have += f"{utils.rewards[item]}\n" + + if have_ != "": + text += "Открытые:\n" + text += have_ + + if dont_have != "": + text += "Неоткрытые:\n" + text += dont_have + + await edit_message(ctx, text)