diff --git a/tg/handlers/user.py b/tg/handlers/user.py index 3ad1f64..eaf1ab7 100644 --- a/tg/handlers/user.py +++ b/tg/handlers/user.py @@ -44,8 +44,9 @@ async def help_handler(message: Message): return response = Bold('Команды для всех') + '\n' - response += '!я - показать визитку участника\n' - response += '!я* - изменить визитку участника\n' + response += '!я - показать свою визитку\n' + response += '!я* - изменить свою визитку\n' + response += '!кто* - показать визитку участника\n' response += '!правила - вывести правила\n' response += '!сегодня - статистика сообщений за сегодня\n' response += '!месяц - статистика сообщений за месяц\n' @@ -73,23 +74,44 @@ async def about_handler(message: Message): await message.answer(MESSAGE_CHAT_NOT_ACTIVE) return - user_id = message.from_user.id - user = database.DB.create_user_if_not_exists(chat_id, user_id) + target_user = message.from_user + user = database.DB.create_user_if_not_exists(chat_id, target_user.id) if message.reply_to_message is None: if user['about'] is not None: - response = Italic(format(utils.full_name(message.from_user.first_name, message.from_user.last_name))) + '\n' - response += user['about'] + response = Italic(utils.full_name(target_user.first_name, target_user.last_name)) + '\n' + user['about'] await message.answer(**response.as_kwargs()) else: await message.answer('Вы не установили визитку.') else: if message.reply_to_message.content_type == ContentType.TEXT: - database.DB.user_update(chat_id, user_id, about=message.reply_to_message.text) + database.DB.user_update(chat_id, target_user.id, about=message.reply_to_message.text) await message.answer('Визитка изменена.') else: await message.answer('Извините, но я понимаю только текст.') +@router.message(F.text == "!кто") +async def whois_handler(message: Message): + chat_id = message.chat.id + chat = database.DB.create_chat_if_not_exists(chat_id) + if chat['active'] == 0: + await message.answer(MESSAGE_CHAT_NOT_ACTIVE) + return + + if message.reply_to_message is None: + await message.answer(MESSAGE_NEED_REPLY) + return + + target_user = message.reply_to_message.from_user + full_name = utils.full_name(target_user.first_name, target_user.last_name) + user = database.DB.get_user(chat_id, target_user.id) + if user is not None and user['about'] is not None: + response = Italic(full_name) + '\n' + user['about'] + await message.answer(**response.as_kwargs()) + else: + await message.answer(f'У {full_name} нет визитки.') + + @router.message(F.text == "!сегодня") async def stats_today_handler(message: Message, bot: Bot): chat_id = message.chat.id diff --git a/vk/handlers/user.py b/vk/handlers/user.py index 450a645..4ecdeb3 100644 --- a/vk/handlers/user.py +++ b/vk/handlers/user.py @@ -49,8 +49,9 @@ async def rules_handler(message: Message): return response = bold('Команды для всех') + '\n' - response += '!я - показать визитку участника\n' - response += '!я* - изменить визитку участника\n' + response += '!я - показать свою визитку\n' + response += '!я* - изменить свою визитку\n' + response += '!кто* - показать визитку участника\n' response += '!правила - вывести правила\n' response += '!сегодня - статистика сообщений за сегодня\n' response += '!месяц - статистика сообщений за месяц\n' @@ -90,7 +91,7 @@ async def about_handler(message: Message): if user['about'] is not None: await message.answer(italic(f'{info[0].first_name} {info[0].last_name}') + '\n' + user['about']) else: - await message.answer(MESSAGE_DEFAULT_RULES) + await message.answer('Вы не установили визитку.') else: await message.answer('Не могу получить информацию об участнике.') else: @@ -101,6 +102,30 @@ async def about_handler(message: Message): await message.answer('Извините, но я понимаю только текст.') +@labeler.chat_message(text="!кто") +async def whois_handler(message: Message): + chat_id = message.peer_id + chat = database.DB.create_chat_if_not_exists(chat_id) + if chat['active'] == 0: + await message.answer(MESSAGE_CHAT_NOT_ACTIVE) + return + + if message.reply_message is None: + await message.answer(MESSAGE_NEED_REPLY) + return + + target_user_id = message.reply_message.from_id + info = await message.ctx_api.users.get(user_ids=[target_user_id]) + if len(info) == 1: + user = database.DB.get_user(chat_id, target_user_id) + if user is not None and user['about'] is not None: + await message.answer(italic(f'{info[0].first_name} {info[0].last_name}') + '\n' + user['about']) + else: + await message.answer(f'У {info[0].first_name} {info[0].last_name} нет визитки.') + else: + await message.answer('Не могу получить информацию об участнике.') + + @labeler.chat_message(text="!сегодня") async def stats_today_handler(message: Message): chat_id = message.peer_id