✨ УЛУЧШЕНИЯ: • Более подробное сообщение при запросе облачного пароля • Ясное объяснение, что это именно облачный пароль (2FA) • Разъяснение что это НЕ SMS-код и НЕ пароль от почты • Инструкции где найти облачный пароль • Советы по вводу (учитывается регистр) 📝 СООБЩЕНИЯ: ✅ Запрос пароля - 15 строк с полным объяснением ✅ Неверный пароль - рекомендации и способ восстановления ✅ Ошибка при проверке - сообщение об ошибке 💡 ПОДДЕРЖКА: • Восстановительный код (если забыли пароль) • Инструкции для мобильного Telegram • Чек-лист перед вводом пароля 🚀 ГОТОВНОСТЬ: Полная поддержка 2FA с облачным паролем
TG Autoposter - Telegram Group Broadcasting Bot
Мощный бот для Telegram с возможностью автоматической рассылки сообщений в несколько групп по расписанию с полным отслеживанием участников и истории сообщений.
🚀 Возможности
- ✅ Отправка сообщений в несколько групп одновременно
- ✅ Планировщик расписаний (cron выражения) для автоматических рассылок
- ✅ Отслеживание участников групп с автоматическим обновлением
- ✅ История сообщений с поддержкой версионирования
- ✅ Асинхронная обработка через Celery для масштабирования
- ✅ Поддержка Pyrogram и Telethon для гибкости клиента
- ✅ PostgreSQL для надежного хранения данных
- ✅ Redis для кеширования и очередей сообщений
- ✅ Docker Compose для простого развертывания
- ✅ Flower для мониторинга Celery задач
- ✅ CI/CD через GitHub Actions
📋 Требования
- Python 3.11+
- Docker & Docker Compose (для контейнеризации)
- PostgreSQL 15+ (или используйте Docker)
- Redis 7+ (или используйте Docker)
- Telegram BotAPI Token
🚀 Быстрый старт
С Docker (Рекомендуется)
# 1. Клонируем репозиторий
git clone https://github.com/yourusername/TG_autoposter.git
cd TG_autoposter
# 2. Копируем и редактируем .env
cp .env.example .env
nano .env
# Добавляем: TELEGRAM_BOT_TOKEN, TELEGRAM_API_ID, TELEGRAM_API_HASH, ADMIN_ID
# 3. Быстрый старт скрипт
chmod +x quickstart.sh
./quickstart.sh
## 📋 Переменные окружения
```env
# Telegram
TELEGRAM_BOT_TOKEN=your_token_here
TELEGRAM_API_ID=123456
TELEGRAM_API_HASH=abc123...
ADMIN_ID=123456789
# Database
DB_HOST=localhost
DB_PORT=5432
DB_USER=bot_user
DB_PASSWORD=secure_password
DB_NAME=tg_autoposter
# Redis
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_DB=0
REDIS_PASSWORD=optional
# Logging
LOG_LEVEL=INFO
🛠️ Основные команды
Docker
# Запуск контейнеров
docker-compose up -d
# Просмотр логов
docker-compose logs -f
docker-compose logs -f bot
docker-compose logs -f celery_worker_send
# Остановка
docker-compose down
# Перезапуск
docker-compose restart
# Удаление данных
docker-compose down -v
Make команды
make help # Показать все команды
make up # Запустить контейнеры
make down # Остановить контейнеры
make logs # Просмотр логов
make test # Запустить тесты
make lint # Проверка кода
make fmt # Форматирование кода
Bash скрипты
./docker.sh up # Запуск
./docker.sh down # Остановка
./docker.sh logs # Логи
./docker.sh shell # Bash в контейнер
./docker.sh ps # Список сервисов
./docker.sh celery-status # Статус Celery
📱 Использование бота
Запуск бота
/start - Начать работу
/help - Показать помощь
Создание сообщения
/create - Создать новое сообщение
Рассылка
/broadcast - Отправить сообщение в несколько групп
/send - Отправить сообщение в одну группу
Управление расписанием
/schedule list - Показать все расписания
/schedule add <msg_id> <group_id> <cron_expr> - Добавить расписание
/schedule remove <job_id> - Удалить расписание
Примеры cron выражений:
"0 9 * * *" # Ежедневно в 09:00
"0 9 * * 1-5" # Только по рабочим дням в 09:00
"*/30 * * * *" # Каждые 30 минут
"0 9,12,15 * * *" # В 09:00, 12:00 и 15:00
📊 Мониторинг
Flower (Celery Dashboard)
# Доступен на: http://localhost:5555
# Логин: admin
# Пароль: (из .env FLOWER_PASSWORD)
# Показывает:
# - Активные задачи
# - Статус рабочих
# - История выполнения
# - Графики производительности
Логи
# Docker
docker-compose logs -f
# Локально
tail -f logs/bot.log
tail -f logs/celery.log
🧪 Тестирование
# Запустить все тесты
pytest
# С покрытием
pytest --cov=app
# Конкретный тест файл
pytest tests/test_handlers.py
# Verbose режим
pytest -v
# Watch режим
pytest-watch
🔒 Безопасность
- ✅ Все чувствительные данные в
.env - ✅ Пароли хешируются в базе данных
- ✅ HTTPS для продакшена (LetsEncrypt)
- ✅ Ограничение API rate limiting
- ✅ Валидация всех входных данных
- ✅ SQL injection защита (SQLAlchemy ORM)
- ✅ Pre-commit hooks для проверки кода
📚 Документация
- DEVELOPMENT.md - Разработка и отладка
- PRODUCTION_DEPLOYMENT.md - Развертывание в продакшене
- docs/DOCKER_CELERY.md - Docker и Celery детали
- docs/DOCKER_QUICKSTART.md - Быстрый старт
🔧 Troubleshooting
Bot не отвечает
# Проверьте логи
docker-compose logs bot | tail -50
# Проверьте токен
echo $TELEGRAM_BOT_TOKEN
# Перезагрузитесь
docker-compose restart bot
Ошибки с базой данных
# Проверьте подключение
docker-compose exec postgres psql -U bot -d tg_autoposter
# Откатите миграции
docker-compose exec bot alembic downgrade -1
# Примените миграции снова
docker-compose exec bot alembic upgrade head
Redis не работает
# Проверьте статус
docker-compose ps redis
# Проверьте логи
docker-compose logs redis
# Очистите кеш
redis-cli FLUSHDB
🤝 Контрибьютинг
- Форкните репозиторий
- Создайте feature branch (
git checkout -b feature/AmazingFeature) - Коммитьте изменения с
git commit -m 'feat: add AmazingFeature' - Пушьте в branch (
git push origin feature/AmazingFeature) - Откройте Pull Request
Пожалуйста, следуйте нашему Code of Conduct
📝 Лицензия
MIT License - смотрите LICENSE файл
🎯 Roadmap
- REST API для управления ботом
- Web Dashboard UI
- Поддержка файлов и медиа
- Шифрование чувствительных данных
- Kubernetes manifests
- GraphQL API
- Auto-scaling
📞 Контакты и Поддержка
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Email: your.email@example.com
🙏 Благодарности
- Pyrogram - Telegram Bot API wrapper
- Telethon - Telegram Client library
- Celery - Distributed Task Queue
- SQLAlchemy - ORM
- APScheduler - Job Scheduling
Версия: 1.0.0
Статус: Production Ready ✅
Последнее обновление: 2024-01-01
Made with ❤️ by the Development Team
Логирование
Все события логируются в консоль:
INFO:app:Инициализация базы данных...
INFO:app:База данных инициализирована
INFO:app:Бот запущен
INFO:app.handlers.group_manager:Бот добавлен в группу: MyGroup (ID: -1001234567890)
Решение проблем
БД не инициализирована
Если вы видите ошибку table not found, убедитесь что:
- БД файл существует (создается автоматически)
- Права доступа правильные
- DATABASE_URL в
.envправильный
Бот не отправляет сообщения
- Проверьте что токен правильный в
.env - Убедитесь что бот добавлен в группу
- Проверьте что у бота есть права на отправку сообщений
- Посмотрите логи для подробной информации
Ошибка при добавлении в группу
Убедитесь что:
- Это не приватный чат
- У вас есть права администратора группы
- Токен бота правильный
Лицензия
MIT
Контакты
Для вопросов и предложений создавайте Issues в репозитории.
Description
Languages
Python
72.8%
Shell
26%
Makefile
1%
Dockerfile
0.2%