diff --git a/tg/handlers/default.py b/tg/handlers/default.py index 518926d..471261d 100644 --- a/tg/handlers/default.py +++ b/tg/handlers/default.py @@ -60,24 +60,28 @@ async def any_message_handler(message: Message): ai_message = ai_agent.Message() ai_fwd_messages: list[ai_agent.Message] = [] - # Ответ на сообщение бота - if message.reply_to_message and message.reply_to_message.from_user.id == bot_user.id: - ai_message.text = message.text - else: + bot_username_mention = '@' + bot_user.username + if message.content_type == ContentType.TEXT and message.text.find(bot_username_mention) != -1: # Сообщение содержит @bot_username - bot_username_mention = '@' + bot_user.username - if message.content_type == ContentType.TEXT and message.text.find(bot_username_mention) != -1: - ai_message.text = message.text.replace(bot_username_mention, bot_user.first_name) + ai_message.text = message.text.replace(bot_username_mention, bot_user.first_name) + + if message.reply_to_message: + # Сообщение является ответом + if message.reply_to_message.content_type == ContentType.TEXT: + ai_fwd_messages = [ + ai_agent.Message(user_name=await get_user_name_for_ai(message.reply_to_message.from_user), + text=message.reply_to_message.text)] + else: + await message.reply(MESSAGE_NOT_TEXT) + return + elif message.reply_to_message and message.reply_to_message.from_user.id == bot_user.id: + # Ответ на сообщение бота + if message.content_type == ContentType.TEXT: + ai_message.text = message.text else: + await message.reply(MESSAGE_NOT_TEXT) return - - if message.reply_to_message and message.reply_to_message.content_type == ContentType.TEXT: - ai_fwd_messages = [ - ai_agent.Message(user_name=await get_user_name_for_ai(message.reply_to_message.from_user), - text=message.reply_to_message.text)] - - if ai_message.text is None: - await message.reply(MESSAGE_NOT_TEXT) + else: return ai_message.user_name = await get_user_name_for_ai(message.from_user) diff --git a/vk/handlers/default.py b/vk/handlers/default.py index 690ec50..7f9a524 100644 --- a/vk/handlers/default.py +++ b/vk/handlers/default.py @@ -46,36 +46,45 @@ async def any_message_handler(message: Message): ai_message = ai_agent.Message() ai_fwd_messages: list[ai_agent.Message] = [] - # Ответ на сообщение бота - if message.reply_message and message.reply_message.from_id == -bot_user.id: - ai_message.text = message.text - else: + bot_username_mention = '@' + bot_user.screen_name + pattern = r"\[club" + str(bot_user.id) + r"\|(.+)]" + bot_mentioned = False + if len(message.text) > 0 and message.text.find(bot_username_mention) != -1: # Сообщение содержит @bot_username - bot_username_mention = '@' + bot_user.screen_name - if message.text is not None and message.text.find(bot_username_mention) != -1: - ai_message.text = message.text.replace(bot_username_mention, bot_user.name) + ai_message.text = message.text.replace(bot_username_mention, bot_user.name) + bot_mentioned = True + elif len(message.text) > 0 and re.search(pattern, message.text) is not None: + # Сообщение содержит [club|] + ai_message.text = re.sub(pattern, r'\1', message.text) + bot_mentioned = True + elif message.reply_message and message.reply_message.from_id == -bot_user.id: + # Ответ на сообщение бота + if len(message.text) > 0: + ai_message.text = message.text else: - # Сообщение содержит [club|] - pattern = r"\[club" + str(bot_user.id) + r"\|(.+)]" - if message.text is not None and re.search(pattern, message.text) is not None: - ai_message.text = re.sub(pattern, r'\1', message.text) - else: - return + await message.reply(MESSAGE_NOT_TEXT) + return + else: + return - if message.reply_message and len(message.reply_message.text) > 0: - ai_fwd_messages.append( - ai_agent.Message(user_name=await get_user_name_for_ai(message.ctx_api, message.reply_message.from_id), - text=message.reply_message.text)) + if bot_mentioned: + if message.reply_message: + if len(message.reply_message.text) > 0: + ai_fwd_messages.append( + ai_agent.Message(user_name=await get_user_name_for_ai(message.ctx_api, message.reply_message.from_id), + text=message.reply_message.text)) + else: + await message.reply(MESSAGE_NOT_TEXT) + return else: for fwd_message in message.fwd_messages: if len(fwd_message.text) > 0: ai_fwd_messages.append( ai_agent.Message(user_name=await get_user_name_for_ai(message.ctx_api, fwd_message.from_id), text=fwd_message.text)) - - if len(ai_message.text) == 0: - await message.reply(MESSAGE_NOT_TEXT) - return + else: + await message.reply(MESSAGE_NOT_TEXT) + return ai_message.user_name = await get_user_name_for_ai(message.ctx_api, message.from_id) chat_prompt = chat['ai_prompt']