Skip to content

Takurashi/Telegram-Channel-Manager-Bot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pip in stall -r requirements.txt

Telegram Channel Manager Bot

Автоматизация ведения Telegram-каналов: сбор новостей из RSS, обработка текстов генеративным ИИ (рерайт/форматирование) и публикация по расписанию. Поддержка нескольких каналов, гибкие настройки и административная панель.

Python Aiogram APScheduler SQLAlchemy License


Содержание


Возможности

  • Мульти-канальность: неограниченное число каналов с отдельными настройками.
  • Ручное управление источниками: вы сами добавляете/удаляете RSS-ленты на канал.
  • ИИ-обработка: рерайт новостей (GPT-совместимые модели), автоэмодзи и хештеги.
  • Автоформатирование:
    • Заголовок — жирным,
    • ключевая мысль — курсивной цитатой,
    • добавляются релевантные эмодзи и хештеги.
  • Постинг по расписанию: индивидуальные интервалы публикаций для каждого канала.
  • Жёсткая политика изображений: публикуются только новости с картинкой в RSS.
  • Админ-панель: статистика пользователей, каналов и постов.

Технологический стек

  • Python 3.10+
  • Aiogram 3.x — Telegram-бот (async).
  • SQLAlchemy — ORM.
  • APScheduler — планировщик фоновых задач.
  • G4F — доступ к генеративным моделям (коммьюнити-библиотека; при желании можно подключить официальный OpenAI API).
  • Feedparser, aiohttp, BeautifulSoup4, Pillow
  • python-dotenv, markdown2

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

1) Клонирование

git clone <URL_ВАШЕГО_РЕПО>
cd <ПАПКА_ПРОЕКТА>

2) Виртуальное окружение

# Windows
python -m venv .venv
.venv\Scripts\activate

# macOS/Linux
python3 -m venv .venv
source .venv/bin/activate

3) Установка зависимостей

Убедитесь, что requirements.txt содержит:

aiogram
g4f
feedparser
apscheduler
sqlalchemy
aiohttp
beautifulsoup4
Pillow
python-dotenv
markdown2

Затем:

pip install -r requirements.txt

4) Настройка окружения

Создайте файл .env (не коммитьте его в репозиторий):

# Токен бота от @BotFather
BOT_TOKEN=YOUR_TELEGRAM_BOT_TOKEN

# Строка подключения к БД
DATABASE_URL=sqlite:///bot.db

# ID администраторов (через запятую, без пробелов)
ADMIN_IDS=123456789,987654321

# Необязательно: временная зона и уровень логов
TZ=Europe/Kyiv
LOG_LEVEL=INFO

# Необязательно: ключ для официального OpenAI API (если решите использовать)
# OPENAI_API_KEY=sk-...

⚠️ Безопасность: Никогда не публикуйте реальные BOT_TOKEN/ключи в README, коммитах или скриншотах.

5) Запуск

python main.py

Как пользоваться

Старт

  1. Запустите бота и отправьте /start.
  2. Откроется главное меню с опциями «Мои каналы» и «Добавить канал».

Добавление канала

  1. Нажмите «➕ Добавить канал».
  2. Добавьте бота в администраторы нужного канала с правом публикации.
  3. Отправьте:
    • @username канала, или
    • публичную ссылку https://t.me/<channel>, или
    • пересланное сообщение из вашего канала.
  4. Укажите тематику (например, «IT-новости») — это улучшает форматирование постов ИИ.

Управление каналом

  • 📝 Очередь постов — просмотр ожидающих публикаций.
  • 📰 RSS источники — добавление/удаление лент.
  • 🤖 Настройки AI — выбор модели и системного промпта.
  • ⏰ Расписание — интервал между постами.
  • ✍️ Создать пост — разовый поиск/обработка/публикация из RSS.
  • ⏸️ Пауза/Старт — остановка/возобновление автопостинга.
  • 🗑️ Удалить канал — полное удаление данных канала у бота.

Команды (пример)

  • /start — главное меню
  • /my_channels — список ваших каналов
  • /add_channel — добавление канала
  • /admin — админ-панель (для ID из ADMIN_IDS)

Структура проекта

├── admin/                  # Админ-панель
│   ├── auth.py
│   └── panel.py
├── bot/                    # Хендлеры, клавиатуры
│   ├── handlers.py
│   └── keyboards.py
├── config/                 # Конфигурация/настройки
│   └── settings.py
├── core/                   # Бизнес-логика
│   ├── ai_processor.py     # Рерайт/форматирование ИИ
│   ├── publisher.py        # Публикация в Telegram
│   ├── rss_parser.py       # Парсинг RSS
│   └── scheduler.py        # Планировщик задач
├── database/               # Доступ к БД
│   ├── crud.py
│   └── models.py
├── utils/                  # Утилиты/хелперы
│   └── helpers.py
├── main.py                 # Точка входа
├── requirements.txt
└── .env                    # Переменные окружения (локально, в .gitignore)

Политика по изображениям

Бот публикует только те материалы, где в RSS уже присутствует изображение (enclosure/media:content/og:image и т.д.). Посты без картинок игнорируются для единообразия ленты и визуальной целостности канала.


Логи и отладка

  • Рекомендуется настраивать уровень логов через LOG_LEVEL (DEBUG/INFO/WARNING/ERROR).
  • Планировщик (APScheduler) пишет события о старте/пропуске/ошибках задач.
  • Для продакшена можно:
    • запускать бота под systemd/pm2/supervisor;
    • включить ротацию логов (например, logging.handlers.RotatingFileHandler);
    • фиксировать таймзону TZ для единообразия расписания.

Типичные ошибки и решения

  • Бот не публикует в канал

    • Проверьте, добавлен ли бот в администраторы канала с правом публикации.
    • Убедитесь, что выбран правильный канал в меню.
    • Ошибки вида ChatAdminRequired — не хватает прав.
  • Дубли постов / пропуски

    • Убедитесь, что в планировщике не создаются двойные задания для одного и того же канала.
    • Следите за временем выполнения задач: если обработка дольше интервала — увеличьте интервал.
  • Пост без изображения не публикуется

    • Это ожидаемо по политике: берутся только элементы с картинками.
  • Ошибки G4F/провайдеров

    • Попробуйте сменить провайдера/повторить запрос.
    • Рассмотрите официальный OpenAI API (OPENAI_API_KEY) как более стабильную альтернативу.
  • Flood-limit / Too Many Requests

    • Добавьте asyncio.sleep() между публикациями или используйте бэк-офф.

Роадмап

  • Шаблоны форматирования для разных тематик каналов
  • Превью поста перед публикацией
  • Интеграция с OpenAI API как опциональный бэкенд
  • Поддержка UTM-меток/шортлинков
  • Импорт/экспорт настроек каналов и RSS
  • Веб-панель управления (FastAPI + Admin UI)

Примечание по безопасности: не храните реальные токены и ключи в коде/README. Используйте .env и добавьте его в .gitignore.

About

Ведения Telegram-каналов через сбор новостей из RSS

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages