текущая версия (рабочая)
This commit is contained in:
@@ -0,0 +1,99 @@
|
||||
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()
|
||||
Reference in New Issue
Block a user