from aiogram import Router, types from aiogram.filters import Command, StateFilter from aiogram.fsm.context import FSMContext from app.config import ANALYSIS_PROMPT, ANSWER_PROMPT from app.models.settings import Settings prompt_router = Router() @prompt_router.message(Command("cancel")) async def cancel_cmd(message: types.Message, state: FSMContext) -> None: await message.answer("Отменено") await state.clear() @prompt_router.message(Command("show_prompt")) async def show_prompt(message: types.Message) -> None: settings = await Settings.get_from_context( message_thread_id=message.message_thread_id ) await message.reply( f""" Промпт для анализа отзыва:
{settings.analysis_prompt}
/change_prompt - изменить промпт /reset_prompt - сбросить промпт """, parse_mode="HTML", ) await message.reply( f""" Промпт для ответов:
{settings.answer_prompt}
/change_answer_prompt - изменить промпт /reset_answer_prompt - сбросить промпт """, parse_mode="HTML", ) @prompt_router.message(Command("change_prompt")) async def change_prompt_cmd(message: types.Message, state: FSMContext) -> None: await message.reply("Введите новый промпт для анализа отзыва. /cancel для отмены") await state.set_state("change_prompt") @prompt_router.message(StateFilter("change_prompt")) async def change_prompt(message: types.Message, state: FSMContext) -> None: settings = await Settings.get_from_context( message_thread_id=message.message_thread_id ) settings.analysis_prompt = message.text await settings.save() await message.reply("Промпт обновлен") await state.clear() @prompt_router.message(Command("reset_prompt")) async def reset_prompt(message: types.Message, state: FSMContext) -> None: settings = await Settings.get_from_context( message_thread_id=message.message_thread_id ) settings.analysis_prompt = ANALYSIS_PROMPT await settings.save() await message.reply("Промпт для анализа отзыва сброшен к значению по умолчанию.") await state.clear() @prompt_router.message(Command("change_answer_prompt")) async def change_answer_prompt_cmd(message: types.Message, state: FSMContext) -> None: await message.reply("Введите новый промпт для ответов. /cancel для отмены") await state.set_state("change_answer_prompt") @prompt_router.message(StateFilter("change_answer_prompt")) async def change_answer_prompt(message: types.Message, state: FSMContext) -> None: settings = await Settings.get_from_context( message_thread_id=message.message_thread_id ) settings.answer_prompt = message.text await settings.save() await message.reply("Промпт для ответов обновлен") await state.clear() @prompt_router.message(Command("reset_answer_prompt")) async def reset_answer_prompt(message: types.Message, state: FSMContext) -> None: settings = await Settings.get_from_context( message_thread_id=message.message_thread_id ) settings.answer_prompt = ANSWER_PROMPT await settings.save() await message.reply("Промпт для ответов сброшен к значению по умолчанию.") await state.clear()