Бот сканирует публичные Telegram-каналы с помощью Telethon UserBot и находит сообщения, содержащие заданные ключевые слова. Найденные сообщения пересылаются в Telegram-профили пользователей, указанных в базе данных. Все параметры конфигурации берутся из .env.
bot/— Telegram-бот на Aiogrammonitor/— Telethon UserBot для сканирования каналовmonitor/session/— папка для сессии пользователя Telethonapi/— Flask REST API для управления даннымиdb/— скрипт инициализации SQLite базыdata/— содержитbotdata.db.env— переменные окружения (API ID, HASH, BOT TOKEN)run.py— параллельный запуск бота и сканераrequirements.txt— список зависимостей
Создай файл .env в корне проекта:
TELEGRAM_API_ID=ваш_api_id
TELEGRAM_API_HASH=ваш_api_hash
TELEGRAM_API_TOKEN=токен_бота_от_BotFather- Установи Python и pip:
sudo apt update && sudo apt install python3-pip -y- Установи зависимости:
pip3 install -r requirements.txt- Создай
.envфайл:
nano .env
# вставь TELEGRAM_API_ID, TELEGRAM_API_HASH и TELEGRAM_API_TOKEN- Инициализируй базу данных:
python3 db/init_db.py- Запусти Flask API:
python3 api/app.py- Добавь ключевые слова, каналы и пользователей через CURL или Postman:
curl -X POST http://localhost:5000/add/keyword -H "Content-Type: application/json" -d '{"word":"вакансия"}'
curl -X POST http://localhost:5000/add/channel -H "Content-Type: application/json" -d '{"link":"https://t.me/examplechannel"}'
curl -X POST http://localhost:5000/add/user -H "Content-Type: application/json" -d '{"user_id":123456789}'- Первый запуск
watcher.py— пройти авторизацию:
python3 monitor/watcher.py
# Введите номер, Telegram пришлёт код- Запусти всё вместе:
python3 run.py| Метод | URL | JSON-параметры |
|---|---|---|
| POST | /add/keyword |
{ "word": "вакансия" } |
| POST | /add/channel |
{ "link": "https://..." } |
| POST | /add/user |
{ "user_id": 123456789 } |
| GET | /get/all |
— |
- Используется абсолютный путь к
user.session→ меньше ошибок на VPS - Все настройки загружаются через
.env - Хранение данных — SQLite
- Не публикуй
.envи.sessionфайлы - При потере контроля над session-файлом — удали
user.sessionи авторизуйся заново
Добавим запуск через systemd, supervisor, Docker-контейнер или HTTPS через nginx по твоему запросу.