Skip to content

ALEVOLDON/Dump-Assistant-Bot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Dump Assistant Bot

Node.js Telegram Gemini OpenAI Ollama

Умный ИИ-ассистент для Telegram-канала и группы обсуждений. Бот читает посты, учитывает контекст треда, анализирует ссылки, отвечает на вопросы подписчиков и может оставлять первый комментарий под новым постом.

По умолчанию проект настроен на облачную модель Gemini. OpenAI и локальная Ollama-модель остаются поддерживаемыми альтернативами.

Возможности

  • Cloud-first LLM: рекомендуемый режим через Gemini API, без локальной установки модели.
  • OpenAI-compatible режим: можно переключиться на OpenAI API или совместимый endpoint.
  • Локальный режим: Ollama сохранена как optional/legacy-вариант для запуска на своем железе.
  • Контекст постов: бот кэширует новые посты канала и отвечает с учетом содержания публикации.
  • Чтение ссылок: если в посте или вопросе есть URL, бот загружает страницу и использует ее текст в ответе.
  • Режим первого комментария: бот может автоматически оставлять короткий комментарий под новым постом.
  • Команды владельца: /status, /usage, /on, /off, /chatid.
  • Фокус и антиспам: отвечает только на вопросы, обращения и полезные запросы, игнорируя шум.

Быстрый старт

1. Установка

Нужен Node.js 22+.

npm install

2. Настройка .env

Создайте локальный конфиг:

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.

3. Подключение Telegram

  1. В @BotFather откройте Bot Settings -> Group Privacy и выключите privacy mode.
  2. Добавьте бота в группу обсуждений канала.
  3. Дайте боту права, нужные для чтения сообщений и отправки ответов.
  4. Запустите:
npm start

Провайдеры LLM

Gemini, рекомендуемый режим

LLM_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, быстрее стартует и проще разворачивается на сервере.

OpenAI или совместимый API

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.

Local / Legacy Ollama

Локальный режим сохранен для тех, кому важны приватность и запуск без внешнего LLM API.

ollama pull qwen2.5:3b-instruct
LLM_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. Качество и скорость зависят от модели и железа.

Миграция с Ollama на облако

  1. В .env замените LLM_PROVIDER=ollama на LLM_PROVIDER=gemini.
  2. Добавьте GEMINI_API_KEY.
  3. Установите GEMINI_MODEL=gemini-2.5-flash.
  4. Уменьшите LLM_TIMEOUT_MS до 30000, если раньше стояло 120000.
  5. Перезапустите бота.

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

About

AI assistant bot for Telegram channels: reads posts, analyzes links, engages community. Supports local LLM via Ollama or OpenAI fallback.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors