Files
mp-answer-bot/app/handlers/prompt.py

100 lines
3.6 KiB
Python

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"""
Промпт для анализа отзыва:
<blockquote expandable>{settings.analysis_prompt}</blockquote>
/change_prompt - изменить промпт
/reset_prompt - сбросить промпт
""",
parse_mode="HTML",
)
await message.reply(
f"""
Промпт для ответов:
<blockquote expandable>{settings.answer_prompt}</blockquote>
/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()