# 🤖 Команды бота Полное описание всех команд Telegram бота. ## 📋 Список команд | Команда | Описание | Доступность | |---------|----------|-------------| | `/start` | Начать работу с ботом | Все пользователи | | `/help` | Показать справку | Все пользователи | | `/clear` | Очистить историю диалога | Все пользователи | | `/settings` | Показать текущие настройки | Все пользователи | | `/status` | Проверить статус бота | Все пользователи | ## 🔧 Детальное описание ### /start **Описание:** Инициализация бота и приветствие пользователя. **Использование:** ``` /start ``` **Ответ:** ``` 👋 Привет! Я готов к общению. Просто напиши мне что-нибудь, и я отвечу. Используй /help для списка команд. ``` **Что происходит:** 1. Создается новая сессия (если не существует) 2. Загружается системный промпт 3. Отправляется приветственное сообщение **Реализация:** ```csharp public class StartCommand : TelegramCommandBase { public override string Command => "start"; public override string Description => "Начать работу с ботом"; public override async Task ExecuteAsync(TelegramCommandContext context) { // Логика команды } } ``` --- ### /help **Описание:** Показать список всех доступных команд. **Использование:** ``` /help ``` **Ответ:** ``` 📖 Доступные команды: /start - Начать работу с ботом /help - Показать эту справку /clear - Очистить историю диалога /settings - Показать текущие настройки /status - Проверить статус бота 💬 Просто напиши мне сообщение, и я отвечу! ``` **Динамическая генерация:** Список команд генерируется автоматически через `CommandRegistry`: ```csharp var commands = _commandRegistry.GetAllCommands(); foreach (var cmd in commands) { message += $"/{cmd.Command} - {cmd.Description}\n"; } ``` --- ### /clear **Описание:** Очистить историю диалога с сохранением сессии. **Использование:** ``` /clear ``` **Ответ:** ``` 🧹 История диалога очищена! Можешь начать новый разговор. ``` **Что происходит:** 1. Вызывается `ChatService.ClearHistoryAsync(chatId)` 2. Удаляются все сообщения из истории 3. Сохраняется системный промпт 4. Обновляется `LastUpdatedAt` **Важно:** - Сессия не удаляется - Настройки модели сохраняются - История в БД обновляется **Код:** ```csharp public override async Task ExecuteAsync(TelegramCommandContext context) { await _chatService.ClearHistoryAsync(context.ChatId); return new ReplyInfo { Text = "🧹 История диалога очищена!" }; } ``` --- ### /settings **Описание:** Показать текущие настройки сессии. **Использование:** ``` /settings ``` **Ответ:** ``` ⚙️ Текущие настройки: 🤖 Модель: gemma2:2b 🌡️ Temperature: 0.9 📝 Сообщений в истории: 5/30 🗜️ Сжатие истории: Включено 📊 Порог сжатия: 20 сообщений 🎯 Цель сжатия: 10 сообщений ``` **Информация:** - Используемая AI модель - Температура генерации - Количество сообщений в истории - Статус сжатия истории - Пороги компрессии **Код:** ```csharp var session = _chatService.GetSession(context.ChatId); if (session == null) return new ReplyInfo { Text = "Сессия не найдена" }; var info = $@"⚙️ Текущие настройки: 🤖 Модель: {session.Model} 📝 Сообщений: {session.GetMessageCount()}/{session.MaxHistoryLength}"; return new ReplyInfo { Text = info }; ``` --- ### /status **Описание:** Проверить статус бота и подключенных сервисов. **Использование:** ``` /status ``` **Ответ (все ОК):** ``` ✅ Статус системы: 🤖 Telegram Bot: ✅ Работает 🧠 Ollama AI: ✅ Подключен 💾 База данных: ✅ Доступна 📊 Активных сессий: 5 🕐 Время работы: 2ч 15м ``` **Ответ (есть проблемы):** ``` ⚠️ Статус системы: 🤖 Telegram Bot: ✅ Работает 🧠 Ollama AI: ❌ Недоступен 💾 База данных: ✅ Доступна Обнаружены проблемы с подключением к Ollama. ``` **Проверки:** 1. **Telegram Bot** - Проверка `TelegramBotHealthCheck` 2. **Ollama AI** - Проверка доступности API 3. **Database** - Проверка подключения к PostgreSQL 4. **Active Sessions** - Количество активных чатов 5. **Uptime** - Время работы бота **Health Checks:** ```csharp var healthCheckService = _serviceProvider.GetRequiredService(); var result = await healthCheckService.CheckHealthAsync(); foreach (var entry in result.Entries) { var status = entry.Value.Status == HealthStatus.Healthy ? "✅" : "❌"; message += $"{entry.Key}: {status}\n"; } ``` --- ## 🎨 Формат ответов ### ReplyInfo Все команды возвращают `ReplyInfo`: ```csharp public class ReplyInfo { public string Text { get; set; } // Текст ответа public bool DisableNotification { get; set; } = false; public bool DisableWebPagePreview { get; set; } = false; } ``` ### Markdown форматирование Поддерживаемые форматы: - `**bold**` - **жирный** - `*italic*` - *курсив* - `` `code` `` - `код` - Emoji - 🚀 ✅ ❌ ⚙️ ## 🔄 Command Processing Flow ``` User sends command ↓ TelegramBotService receives update ↓ TelegramMessageHandler validates ↓ TelegramCommandProcessor checks if command ↓ CommandRegistry finds handler ↓ Command.ExecuteAsync() ↓ Return ReplyInfo ↓ TelegramMessageSender sends response ``` ## 🛠️ Добавление новой команды ### 1. Создать класс команды ```csharp public class MyCommand : TelegramCommandBase { public override string Command => "mycommand"; public override string Description => "Описание команды"; public override async Task ExecuteAsync(TelegramCommandContext context) { // Ваша логика return new ReplyInfo { Text = "Ответ команды" }; } } ``` ### 2. Зарегистрировать в DI В `Program.cs`: ```csharp builder.Services.AddScoped(); ``` ### 3. Добавить в BotFather (опционально) ``` /setcommands start - Начать работу help - Справка mycommand - Описание ``` ## 🧪 Тестирование команд ```csharp [Fact] public async Task StartCommand_ShouldReturnWelcomeMessage() { // Arrange var command = new StartCommand(); var context = new TelegramCommandContext { ChatId = 123, UserId = 456 }; // Act var result = await command.ExecuteAsync(context); // Assert result.Text.Should().Contain("Привет"); } ``` ## 📊 Статистика использования Логирование команд: ```csharp _logger.LogInformation( "Command executed: {Command} by user {UserId} in chat {ChatId}", Command, context.UserId, context.ChatId ); ``` ## 🔐 Безопасность ### Валидация контекста ```csharp if (context.ChatId <= 0) throw new ArgumentException("Invalid chat ID"); ``` ### Rate Limiting (будущее) Планируется добавить ограничение частоты команд. ## 📚 См. также - [Telegram Integration](../development/telegram-integration.md) - [Сервисы](../development/services.md) - [Тестирование](../testing/unit-tests.md)