smolkik-code 330e48beaa refactor: full async, rate limit backoff, graceful shutdown, health endpoint
- Switch from requests to httpx.AsyncClient (full async HTTP)
- Add _request() with exponential backoff on 429/401
- Cache followees with 5-min TTL to reduce API calls
- Remove dead code (_get_all_stories, instagram_password, session_file)
- Graceful shutdown via asyncio.Event + SIGTERM/SIGINT handlers
- Add /health command with connection status
- Stream media downloads with httpx + aiofiles
- Track story expiring_at for smart cleanup
- Sanitize .env.example (remove real tokens)
2026-06-17 16:03:47 +07:00

Instagram → Telegram Bot

Telegram-бот для мониторинга Instagram: отслеживает новые посты и сториз у выбранных подписок и присылает их в Telegram.

Как это работает

  1. Авторизуется в Instagram через cookies.txt (без пароля)
  2. Получает список всех подписок
  3. Проверяет новые посты (за последние N часов) и активные сториз
  4. Скачивает медиа и отправляет в Telegram
  5. Цикл повторяется каждые N минут

Требования

  • Python 3.12+
  • Telegram Bot Token (через @BotFather)
  • Cookies Instagram (сессионная кука sessionid)

Установка

Локально

pip install -r requirements.txt

Скопируй .env.example в .env и заполни настройки. Положи cookies.txt (Netscape format) в data/.

python bot.py

Docker

docker compose up -d

Настройка

Telegram

Создай бота через @BotFather, получи токен. Узнай свой chat_id (можно у @userinfobot).

Instagram cookies

Бот использует cookies вместо логина по паролю. Экспортируй sessionid из браузера в формате Netscape:

.instagram.com	TRUE	/	TRUE	0	sessionid	<значение>
.instagram.com	TRUE	/	TRUE	0	ds_user_id	<id>
.instagram.com	TRUE	/	TRUE	0	csrftoken	<токен>

Положи файл в data/cookies.txt.

Переменные окружения (.env)

Переменная По умолчанию Описание
TELEGRAM_BOT_TOKEN Токен бота Telegram
TELEGRAM_CHAT_ID ID чата для отправки
INSTAGRAM_USERNAME Instagram username
CHECK_INTERVAL_MINUTES 15 Интервал проверки
MAX_MEDIA_SIZE_MB 50 Макс. размер медиа
MAX_POST_AGE_HOURS 24 Возраст постов для проверки
CONCURRENT_CHECKS 5 Параллельных запросов
DOWNLOAD_DIR /data/downloads Папка для загрузки

Команды

Команда Описание
/start Информация о боте
/check Проверить обновления сейчас
/status Статистика базы
/health Статус подключений
/stop Остановить мониторинг

API

Бот использует неофициальный Instagram Private API:

  • Посты: i.instagram.com/api/v1/feed/user/{pk}/ — мобильное API
  • Сториз: www.instagram.com/api/v1/feed/user/{pk}/story/ — веб-API (Chrome UA)

Проект

├── bot.py                   # Telegram bot (aiogram)
├── instagram_monitor.py     # Instagram API клиент
├── config.py                # Конфиг из .env
├── requirements.txt
├── Dockerfile
├── docker-compose.yml
└── data/
    ├── cookies.txt           # Сессия Instagram
    └── downloads/            # Скачанные медиа
Description
No description provided
Readme 165 KiB
v1.0.0 Latest
2026-06-17 08:10:43 +00:00
Languages
Python 98.9%
Dockerfile 1.1%