diff --git a/wtb/db.py b/wtb/db.py index 1d3fda9..5bf9a25 100644 --- a/wtb/db.py +++ b/wtb/db.py @@ -80,18 +80,15 @@ def get_messages_collection() -> pymongo.collection.Collection: return get_mongo_db().messages -def get_user_from_telegram_obj(user) -> models.User | None: - """Get WannaTalkBot user""" - - db_user = get_users_collection().find_one({"user_id": user.id}) - +def get_user(user_id: int) -> models.User | None: + db_user = get_users_collection().find_one({"user_id": user_id}) if db_user: return models.User(**db_user) return None -def get_pair(skip_users, language): +def get_pair(skip_users: list[int], language: str) -> dict | None: pipeline = [ { "$match": { diff --git a/wtb/frontend.py b/wtb/frontend.py index 8b30028..9735750 100644 --- a/wtb/frontend.py +++ b/wtb/frontend.py @@ -69,8 +69,8 @@ def get_actions_keyboard(wtb_user: typing.Optional[models.User]): ) -def get_wtb_user_from_update(update: telegram.Update) -> models.User: - return db.get_user_from_telegram_obj(update.message.from_user) +def get_wtb_user_from_update(update: telegram.Update) -> models.User | None: + return db.get_user(update.message.from_user.id) @botutils.log_message @@ -286,6 +286,7 @@ async def find_pair(update: telegram.Update, context: ContextTypes.DEFAULT_TYPE) break try: + # NOTE: tagging a user could not work depending on user's privacy settings await context.bot.send_message( text=( r"Hey\! Someone needs your help\. Just drop a message to " @@ -294,7 +295,7 @@ async def find_pair(update: telegram.Update, context: ContextTypes.DEFAULT_TYPE) r"long\." ).format( name=get_user_display_name(wtb_user), - user_id=wtb_user["user_id"], + user_id=wtb_user.user_id, language=wtb_user.search_language, ), parse_mode=telegram.constants.ParseMode.MARKDOWN_V2, @@ -328,9 +329,9 @@ async def find_pair(update: telegram.Update, context: ContextTypes.DEFAULT_TYPE) break -def get_user_display_name(wtb_user) -> str: +def get_user_display_name(wtb_user: models.User) -> str: if wtb_user.get("username"): - name = wtb_user["username"] + name = wtb_user.username else: name = " ".join( wtb_user[f] for f in ("first_name", "last_name") if wtb_user.get(f))