Skip to content

Telegram-юзербот для автоматических AI-комментариев и ответов в каналах на базе Google Gemini или любой другой приятной вам нейронке.

License

Notifications You must be signed in to change notification settings

tdrkn/tg_userbot

Repository files navigation

AI-автоответчик в каналах

Deploy to Server

Однажды меня спросили: "Даня, почему ты не читаешь каналы". Я устал оправдываться, что у меня мало времени, и решил создать данного бота.

AI-автоответчик — это Telegram-userbot, автоматически публикующий комментарии к новым постам в каналах и отвечающий на ответы пользователей с помощью модели Google Gemini.


Возможности

  • Поддержка нескольких каналов: указывайте публичные юзернеймы и инвайт-ссылки через запятую.
  • Публичные и приватные: автоматически присоединяется к приватным чатам по инвайт-ссылкам.
  • AI‑ответы: генерация текста через Google Gemini с настраиваемыми промптами.
  • Асинхронность: Telethon + asyncio для неблокирующей работы.
  • Отказоустойчивость: fallback-ответ при недоступности AI-сервиса.
  • Логирование: подробный вывод действий и ошибок.

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

git clone https://github.com/tdrkn/tg_userbot.git
cd tg_userbot
cp .env.example .env
# Отредактируйте .env, заполните ключи и список каналов
docker compose up -d --build

Локальное тестирование

Для быстрой проверки работы AI-генерации ответов без необходимости деплоить бота в Telegram, вы можете запустить локальное GUI-приложение.

  1. Установите зависимости:

    pip install -r requirements.txt
  2. Запустите тестовое приложение:

    python test_app.py
  3. Откроется окно, где можно ввести текст поста, прикрепить изображение и получить ответ от Gemini.


Конфигурация через .env

# Telegram API
TG_API_ID=1234567
TG_API_HASH=abcdef1234567890abcdef1234567890
TG_SESSION="YOUR_STRING_SESSION"

# Google Gemini
GEMINI_KEY="AIzaSy…"
GEMINI_MODEL="gemini-2.0-flash"
# Промпт для комментария к посту: {text} → текст поста
GEMINI_PROMPT="Комментарий к посту: «{text}»"

# Заглушка, если AI-сервис недоступен
TG_REPLY_TEXT="🤖 …"

Формат файла channels.csv

Вместо переменной TG_TARGETS бот теперь использует файл channels.csv, расположенный в корне проекта. В этом файле каждый канал или инвайт-ссылка записывается с новой строки. Пример:

@public_channel1
@public_channel2
https://t.me/joinchat/AAAAA...

Бот автоматически считывает этот файл при запуске и обновляет список каналов каждые 5 минут. Не нужно перезапускать контейнер. Просто отредактируйте channels.csv — бот сам подхватит изменения.


⚠️ Заметка о неправомерном использовании

Использование этого бота в злонамеренных целях строго запрещено, особенно массовая рассылка и спам в каналах Telegram. Такое поведение противоречит правилам Telegram (Terms of Service: “Use our service to send spam or scam users”) и может привести к блокировке аккаунта или юридической ответственности.


Зависимости

  • Python ≥ 3.10
  • telethon ≥ 1.27
  • google-genai ≥ 0.2
  • Docker & Docker Compose

Project structure

  • tg_userbot/
    • config.py — environment config (.env)
    • logging_setup.py — logging configuration
    • ai.py — Gemini client init, prompts, smart_reply
    • telegram_utils.py — helpers: join channels, image extract, CSV, delays
    • main.py — bot runner (async run())
  • auto_reply_userbot.py — thin wrapper calling tg_userbot.main.run()
  • Dockerfile, docker-compose.yml — containerization
  • channels.csv — channels to track (mounted in docker-compose)

Entry point remains the same in Docker: the wrapper script runs the modular bot.


Лицензия

MIT License © 2024 [Danil Rastyapin]


About

Telegram-юзербот для автоматических AI-комментариев и ответов в каналах на базе Google Gemini или любой другой приятной вам нейронке.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published