Умный ИИ-ассистент для Telegram-канала и группы обсуждений. Бот читает посты, учитывает контекст треда, анализирует ссылки, отвечает на вопросы подписчиков и может оставлять первый комментарий под новым постом.
По умолчанию проект настроен на облачную модель Gemini. OpenAI и локальная Ollama-модель остаются поддерживаемыми альтернативами.
- Cloud-first LLM: рекомендуемый режим через Gemini API, без локальной установки модели.
- OpenAI-compatible режим: можно переключиться на OpenAI API или совместимый endpoint.
- Локальный режим: Ollama сохранена как optional/legacy-вариант для запуска на своем железе.
- Контекст постов: бот кэширует новые посты канала и отвечает с учетом содержания публикации.
- Чтение ссылок: если в посте или вопросе есть URL, бот загружает страницу и использует ее текст в ответе.
- Режим первого комментария: бот может автоматически оставлять короткий комментарий под новым постом.
- Команды владельца:
/status,/usage,/on,/off,/chatid. - Фокус и антиспам: отвечает только на вопросы, обращения и полезные запросы, игнорируя шум.
Нужен Node.js 22+.
npm installСоздайте локальный конфиг:
cp .env.example .envЗаполните обязательные значения:
TELEGRAM_BOT_TOKEN=your_telegram_bot_token
BOT_USERNAME=your_bot_username
ALLOWED_CHAT_IDS=-1001234567890
ALLOW_ALL_CHATS=false
OWNER_USER_IDS=123456789
LLM_PROVIDER=gemini
GEMINI_API_KEY=your_gemini_api_key
GEMINI_MODEL=gemini-2.5-flashГде:
TELEGRAM_BOT_TOKEN- токен от @BotFather.BOT_USERNAME- username бота без@.ALLOWED_CHAT_IDS- ID разрешенных групп или каналов, через запятую.ALLOW_ALL_CHATS- открытый режим для всех чатов. По умолчанию выключен.OWNER_USER_IDS- Telegram ID владельцев, через запятую.LLM_PROVIDER- один изgemini,openai,ollama.
- В
@BotFatherоткройтеBot Settings->Group Privacyи выключите privacy mode. - Добавьте бота в группу обсуждений канала.
- Дайте боту права, нужные для чтения сообщений и отправки ответов.
- Запустите:
npm startLLM_PROVIDER=gemini
GEMINI_API_KEY=your_gemini_api_key
GEMINI_MODEL=gemini-2.5-flash
GEMINI_BASE_URL=https://generativelanguage.googleapis.com/v1beta
LLM_TIMEOUT_MS=30000Этот режим подходит для обычного запуска: не требует GPU, быстрее стартует и проще разворачивается на сервере.
LLM_PROVIDER=openai
OPENAI_API_KEY=your_openai_api_key
OPENAI_MODEL=gpt-4o-mini
OPENAI_BASE_URL=https://api.openai.com/v1
LLM_TIMEOUT_MS=30000Используйте этот режим, если хотите OpenAI API или совместимый /chat/completions endpoint.
Локальный режим сохранен для тех, кому важны приватность и запуск без внешнего LLM API.
ollama pull qwen2.5:3b-instructLLM_PROVIDER=ollama
OLLAMA_MODEL=qwen2.5:3b-instruct
OLLAMA_BASE_URL=http://127.0.0.1:11434
OLLAMA_NUM_CTX=4096
OLLAMA_NUM_PREDICT=200
LLM_TIMEOUT_MS=120000Для Ollama нужен установленный локальный сервер Ollama. Качество и скорость зависят от модели и железа.
- В
.envзаменитеLLM_PROVIDER=ollamaнаLLM_PROVIDER=gemini. - Добавьте
GEMINI_API_KEY. - Установите
GEMINI_MODEL=gemini-2.5-flash. - Уменьшите
LLM_TIMEOUT_MSдо30000, если раньше стояло120000. - Перезапустите бота.
Ollama-переменные можно оставить в .env: они не используются, пока LLM_PROVIDER не равен ollama.
/chatid- показать ID текущего чата и треда./status- показать активный режим, модель и статистику./usage- показать счетчики запросов и токенов./on- включить автоответы./off- выключить автоответы.
Команды выполняются только для пользователей из OWNER_USER_IDS.
Основной промпт лежит в prompts/assistant.md. Через него можно изменить тон, стиль и правила ответа без правки кода.
Дополнительные параметры:
CHANNEL_ABOUT- краткое описание канала для контекста.AUTO_REPLY_ENABLED- включение автоответов при старте.MAX_REPLY_CHARS- максимальная длина ответа.THREAD_COOLDOWN_MS- пауза между ответами в одном треде.RECENT_MESSAGES_LIMIT- сколько последних сообщений учитывать.URL_FETCH_TIMEOUT_MS- таймаут загрузки страниц по ссылкам.LOG_LEVEL- уровень логов:error,warn,info,debug.
npm run checkДля сайта:
cd website
npm run build