100 lines
3.6 KiB
Python
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()
|