Spaces:
Runtime error
Runtime error
| import logging | |
| from aiogram import Router, types, F | |
| from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton | |
| from database import db | |
| from handlers.commands import get_main_menu | |
| logger = logging.getLogger(__name__) | |
| router = Router() | |
| async def cb_regenerate(callback: types.CallbackQuery) -> None: | |
| """Помечает последнее сообщение пользователя для регенерации.""" | |
| await callback.answer("🔄 Регенерация...") | |
| # Удаляем последний ответ ассистента, чтобы chat handler перегенерировал | |
| user_id = callback.from_user.id | |
| # Получаем последнее сообщение пользователя | |
| history = await db.get_messages(user_id, limit=2) | |
| if len(history) >= 1 and history[-1]["role"] == "user": | |
| await callback.message.answer( | |
| "🔄 <b>Регенерирую ответ...</b>", | |
| parse_mode="HTML", | |
| ) | |
| else: | |
| await callback.message.answer( | |
| "❌ Нет сообщения для регенерации.", | |
| parse_mode="HTML", | |
| ) | |
| async def cb_clear_memory(callback: types.CallbackQuery) -> None: | |
| user_id = callback.from_user.id | |
| count = await db.clear_history(user_id) | |
| await callback.answer("🗑 Память очищена!") | |
| await callback.message.answer( | |
| f"🗑 <b>Память очищена.</b>\nУдалено сообщений: <code>{count}</code>.", | |
| parse_mode="HTML", | |
| reply_markup=get_main_menu(), | |
| ) | |
| async def cb_show_stats(callback: types.CallbackQuery) -> None: | |
| stats = await db.get_stats(callback.from_user.id) | |
| await callback.answer() | |
| await callback.message.answer( | |
| f"📊 <b>Статистика:</b>\n\n" | |
| f"💬 Ваших сообщений: <code>{stats['user_messages']}</code>\n" | |
| f"📝 Суммаризировано: <code>{stats['summarized_messages']}</code>\n" | |
| f"🔢 Токенов: <code>{stats['total_tokens_used']}</code>\n" | |
| f"⏱ Средняя задержка: <code>{stats['avg_latency_ms']} мс</code>", | |
| parse_mode="HTML", | |
| ) | |
| async def cb_show_settings(callback: types.CallbackQuery) -> None: | |
| from config import config | |
| await callback.answer() | |
| kb = InlineKeyboardMarkup(inline_keyboard=[ | |
| [InlineKeyboardButton(text="🌡 Temperature", callback_data="set_temp")], | |
| [InlineKeyboardButton(text="📏 Max Tokens", callback_data="set_max_tokens")], | |
| [InlineKeyboardButton(text="🔙 Назад", callback_data="back_to_menu")], | |
| ]) | |
| await callback.message.answer( | |
| "⚙️ <b>Настройки:</b>\n\n" | |
| f"🌡 Temperature: <code>{config.GLM_TEMPERATURE}</code>\n" | |
| f"📏 Max Tokens: <code>{config.GLM_MAX_TOKENS}</code>\n" | |
| f"🔄 Streaming: <code>{'ON' if config.STREAMING_ENABLED else 'OFF'}</code>", | |
| parse_mode="HTML", | |
| reply_markup=kb, | |
| ) | |
| async def cb_back_to_menu(callback: types.CallbackQuery) -> None: | |
| await callback.answer() | |
| await callback.message.answer( | |
| "👋 Главное меню:", | |
| reply_markup=get_main_menu(), | |
| ) | |