Починена обработка личных сообщений.

This commit is contained in:
Kirill Kirilenko 2026-01-24 02:26:08 +03:00
parent 555b4bc0b5
commit 66fdbc3360
2 changed files with 23 additions and 15 deletions

View file

@ -1,12 +1,13 @@
from functools import partial from functools import partial
from aiogram import Router, F from aiogram import Router, F
from aiogram.enums import ChatType from aiogram.enums import ChatType, ContentType
from aiogram.filters import Command, CommandObject, CommandStart from aiogram.filters import Command, CommandObject, CommandStart
from aiogram.types import Message from aiogram.types import Message
import ai_agent import ai_agent
import utils import utils
from messages import *
import tg.tg_database as database import tg.tg_database as database
from .default import ACCEPTED_CONTENT_TYPES from .default import ACCEPTED_CONTENT_TYPES
@ -43,11 +44,16 @@ async def reset_context_handler(message: Message):
@router.message(F.content_type.in_(ACCEPTED_CONTENT_TYPES), F.chat.type == ChatType.PRIVATE) @router.message(F.content_type.in_(ACCEPTED_CONTENT_TYPES), F.chat.type == ChatType.PRIVATE)
async def any_message_handler(message: Message): async def any_message_handler(message: Message):
chat_id = message.chat.id chat_id = message.chat.id
chat = database.DB.create_chat_if_not_exists(chat_id)
chat_prompt = chat['ai_prompt']
await message.answer( if message.content_type != ContentType.TEXT:
await utils.run_with_progress( await message.answer(MESSAGE_NOT_TEXT)
partial(ai_agent.agent.get_private_chat_reply, chat_id, chat_prompt, message.text), return
partial(message.bot.send_chat_action, chat_id, 'typing'),
interval=4)) answer, success = await utils.run_with_progress(
partial(ai_agent.agent.get_private_chat_reply, chat_id, message.text, message.message_id),
partial(message.bot.send_chat_action, chat_id, 'typing'),
interval=4)
answer_id = (await message.answer(answer)).message_id
if success:
ai_agent.agent.set_last_response_id(chat_id, answer_id)

View file

@ -6,6 +6,7 @@ from vkbottle.framework.labeler import BotLabeler
import ai_agent import ai_agent
import utils import utils
from messages import *
import vk.vk_database as database import vk.vk_database as database
@ -41,15 +42,16 @@ async def reset_context_handler(message: Message):
@labeler.private_message() @labeler.private_message()
async def any_message_handler(message: Message): async def any_message_handler(message: Message):
chat_id = message.peer_id chat_id = message.peer_id
chat = database.DB.create_chat_if_not_exists(chat_id)
if len(message.text) == 0: if len(message.text) == 0:
await message.answer(MESSAGE_NOT_TEXT)
return return
chat_prompt = chat['ai_prompt'] answer, success = await utils.run_with_progress(
partial(ai_agent.agent.get_private_chat_reply, chat_id, message.text, message.message_id),
partial(message.ctx_api.messages.set_activity, peer_id=chat_id, type='typing'),
interval=4)
await message.answer( answer_id = (await message.answer(answer)).message_id
await utils.run_with_progress( if success:
partial(ai_agent.agent.get_private_chat_reply, chat_id, chat_prompt, message.text), ai_agent.agent.set_last_response_id(chat_id, answer_id)
partial(message.ctx_api.messages.set_activity, peer_id=chat_id, type='typing'),
interval=4))