Telegram-бот для команды

Что мы настроим

В этом руководстве вы создадите Telegram-бота на базе Hermes Agent, которым сможет пользоваться вся команда. Бот будет помогать с написанием и ревью кода, проведением исследований, администрированием серверов и автоматизацией рутинных задач — прямо в чате Telegram.

Шаг 1: Создайте бота в Telegram

Откройте @BotFather в Telegram и создайте нового бота:

  • Отправьте команду /newbot
  • Задайте имя бота (например, Hermes Team Assistant)
  • Задайте уникальный username (например, myteam_hermes_bot)
  • Скопируйте полученный API-токен — он понадобится на следующем шаге

Шаг 2: Установите и настройте Hermes Agent

Установите Hermes Agent на сервер, если он ещё не установлен:

pip install hermes-agent

Запустите интерактивную настройку гейтвея:

hermes gateway setup --platform telegram

Система запросит токен бота и предложит выбрать способ авторизации участников. Можно также настроить вручную в файле ~/.hermes/config.yaml:

telegram:
bot_token: "ВАШ_ТОКЕН"
auth_mode: pairing

Шаг 3: Запустите гейтвей

Гейтвей — это процесс, который связывает Hermes с Telegram. Управление гейтвеем:

Команда Описание
hermes gateway run Запуск в foreground (для тестирования)
hermes gateway install Установить как системный сервис (для продакшена)
hermes gateway start Запустить сервис
hermes gateway stop Остановить сервис
hermes gateway restart Перезапустить сервис
hermes gateway status Проверить статус

Для тестирования запустите гейтвей в foreground-режиме:

hermes gateway run

Для продакшена установите его как системный сервис:

hermes gateway install
hermes gateway start

Проверить статус можно командой:

hermes gateway status

Совет: если гейтвей падает при закрытии SSH-сессии, включите linger: sudo loginctl enable-linger $USER

Шаг 4: Настройте доступ команды

Вариант A: Статический список разрешений

Добавьте Telegram User ID сотрудников в конфигурацию. Узнать свой ID можно, написав боту @userinfobot.

Вариант B: Привязка через личные сообщения (рекомендуется)

Режим DM Pairing позволяет каждому участнику команды привязать свой аккаунт, написав боту в личные сообщения. Администратор подтверждает привязку — после этого пользователь может работать с ботом в групповых чатах.

Управление привязками из терминала:

Команда Описание
hermes pairing list Показать все привязки (ожидающие и подтверждённые)
hermes pairing approve USER_ID Подтвердить привязку пользователя
hermes pairing revoke USER_ID Отозвать привязку пользователя

Привязки также можно одобрять прямо из Telegram-чата с помощью slash-команд:

  • /approve — одобрить последнюю ожидающую привязку
  • /deny — отклонить привязку

Важно: для командного использования рекомендуется запускать команды бота в Docker-контейнере, чтобы изолировать хост-систему. В ~/.hermes/config.yaml укажите:

terminal:
backend: docker
container_cpu: 1
container_memory: 5120

Шаг 5: Настройте поведение бота

Домашний канал

Задайте канал, куда бот будет отправлять результаты запланированных задач. В чате с ботом выполните:

/sethome

Личность бота

Отредактируйте файл ~/.hermes/SOUL.md, чтобы задать стиль общения бота:

# Soul
Ты — технический ассистент команды. Отвечай кратко и по делу.
Используй блоки кода для примеров. При отладке всегда запрашивай логи ошибок.

Контекст проекта

Создайте файл ~/.hermes/AGENTS.md с описанием вашего стека:

# Контекст команды
- Backend: Python 3.12, FastAPI, SQLAlchemy
- Frontend: React + TypeScript
- CI/CD: GitHub Actions
- Деплой: AWS ECS

Шаг 6: Групповые чаты

Добавление бота в группу

Добавьте бота в групповой чат команды. По умолчанию бот реагирует только на упоминания (@botname). Это поведение настраивается параметром:

telegram:
require_mention: true # бот отвечает только при @упоминании
require_mention: false # бот реагирует на все сообщения

Forum Topics

Для супергрупп с включёнными форумами бот поддерживает работу с топиками (темами). Каждый топик обрабатывается как отдельный контекст беседы.

Одобрение команд

Для безопасности бот может запрашивать подтверждение перед выполнением потенциально опасных команд (удаление файлов, git push и т.д.). Администратор получает запрос и решает:

  • /approve — разрешить выполнение команды
  • /deny — отклонить команду

Шаг 7: Голосовые сообщения

Hermes автоматически расшифровывает голосовые сообщения из Telegram. Участники команды могут отправлять голосовые вместо текста — бот транскрибирует их и отвечает на содержание.

Настройка STT (Speech-to-Text) в config.yaml:

stt:
enabled: true
provider: local # local (faster-whisper), groq, openai, mistral

Провайдеры STT:

Провайдер Ключ Бесплатно?
Local faster-whisper Не нужен Да (по умолчанию)
Groq Whisper GROQ_API_KEY Да (free tier)
OpenAI Whisper VOICE_TOOLS_OPENAI_KEY Платно
Mistral Voxtral MISTRAL_API_KEY Платно

Шаг 8: Отправка медиафайлов

Публикация в каналы

Для публикации сообщений и файлов в Telegram-каналы используйте инструмент send_message. Бот должен быть администратором целевого канала.

Отправка медиа

Чтобы отправить файл или изображение, используйте префикс MEDIA: с путём к файлу:

MEDIA:/path/to/image.png

Бот отправит файл как вложение в Telegram-чат. Поддерживаются изображения, документы, аудио и видео.

Шаг 9: Настройте автоматические задачи

Напишите боту в Telegram, чтобы создать расписание. Примеры:

  • Ежедневный стендап: «Каждый будний день в 9:00 проверяй GitHub-репозиторий на новые PR, issues и падения CI. Отправь краткую сводку.»
  • Мониторинг серверов: «Каждые 6 часов проверяй df -h, free -h и docker ps. Сообщай, если диск занят более 80% или контейнеры перезапускались.»

Управлять задачами можно из Telegram-чата: /cron list для просмотра, /cron remove ID для удаления.

Лимиты Telegram

Параметр Значение
Длина текстового сообщения 4096 символов
Размер вложения до 100 МБ (200 МБ с Premium)
Размер фото до 10 МБ

Если ответ бота превышает 4096 символов, он автоматически разбивается на несколько сообщений. Длинные файлы отправляются как документы.

Полезные советы

  • Обновляйте Hermes командой /update прямо из Telegram
  • Логи гейтвея: journalctl --user -u hermes-gateway -f (Linux) или ~/.hermes/logs/gateway.log (macOS)
  • Контекстные файлы инжектируются в каждый промпт — следите за их размером
  • Один гейтвей может одновременно обслуживать Discord, Slack и WhatsApp
  • Используйте hermes doctor для проверки конфигурации и зависимостей
  • Команда /restart в Telegram-чате перезапускает гейтвей без доступа к серверу