diff --git a/tg/handlers/user.py b/tg/handlers/user.py index c0de2b6..3ad1f64 100644 --- a/tg/handlers/user.py +++ b/tg/handlers/user.py @@ -44,6 +44,8 @@ async def help_handler(message: Message): return response = Bold('Команды для всех') + '\n' + response += '!я - показать визитку участника\n' + response += '!я* - изменить визитку участника\n' response += '!правила - вывести правила\n' response += '!сегодня - статистика сообщений за сегодня\n' response += '!месяц - статистика сообщений за месяц\n' @@ -63,6 +65,31 @@ async def help_handler(message: Message): await message.answer(**response.as_kwargs()) +@router.message(F.text == "!я") +async def about_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 + + user_id = message.from_user.id + user = database.DB.create_user_if_not_exists(chat_id, 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'] + 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) + await message.answer('Визитка изменена.') + else: + await message.answer('Извините, но я понимаю только текст.') + + @router.message(F.text == "!сегодня") async def stats_today_handler(message: Message, bot: Bot): chat_id = message.chat.id diff --git a/tg/tg_database.py b/tg/tg_database.py index 155c42f..f8924da 100644 --- a/tg/tg_database.py +++ b/tg/tg_database.py @@ -23,6 +23,7 @@ class TgDatabase(database.BasicDatabase): "messages_today" INTEGER NOT NULL DEFAULT 0, "messages_month" INTEGER NOT NULL DEFAULT 0, "warnings" INTEGER NOT NULL DEFAULT 0, + "about" TEXT, PRIMARY KEY("chat_id","user_id")) """) diff --git a/vk/handlers/user.py b/vk/handlers/user.py index 35ce0ef..450a645 100644 --- a/vk/handlers/user.py +++ b/vk/handlers/user.py @@ -49,6 +49,8 @@ async def rules_handler(message: Message): return response = bold('Команды для всех') + '\n' + response += '!я - показать визитку участника\n' + response += '!я* - изменить визитку участника\n' response += '!правила - вывести правила\n' response += '!сегодня - статистика сообщений за сегодня\n' response += '!месяц - статистика сообщений за месяц\n' @@ -72,6 +74,33 @@ async def rules_handler(message: Message): await message.answer(response) +@labeler.chat_message(text="!я") +async def about_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 + + user_id = message.from_id + user = database.DB.create_user_if_not_exists(chat_id, user_id) + if message.reply_message is None: + info = await message.ctx_api.users.get(user_ids=[user_id]) + if len(info) == 1: + 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) + else: + await message.answer('Не могу получить информацию об участнике.') + else: + if len(message.reply_message.text) > 0: + database.DB.user_update(chat_id, user_id, about=message.reply_message.text) + await message.answer('Визитка изменена.') + else: + await message.answer('Извините, но я понимаю только текст.') + + @labeler.chat_message(text="!сегодня") async def stats_today_handler(message: Message): chat_id = message.peer_id diff --git a/vk/vk_database.py b/vk/vk_database.py index cf6ac85..3d50ecb 100644 --- a/vk/vk_database.py +++ b/vk/vk_database.py @@ -26,6 +26,7 @@ class VkDatabase(database.BasicDatabase): "messages_month" INTEGER NOT NULL DEFAULT 0, "warnings" INTEGER NOT NULL DEFAULT 0, "happy_birthday" INTEGER NOT NULL DEFAULT 1, + "about" TEXT, PRIMARY KEY("chat_id","user_id")) """)