Skip to content

Latest commit

 

History

History
162 lines (104 loc) · 7.77 KB

File metadata and controls

162 lines (104 loc) · 7.77 KB

🇬🇧 English | 🇰🇿 Қазақша | 🇷🇺 Русский

🚀 Serverless Telegram Bot Starter

Python 3.13+ AWS CDK Dependency Manager Code Style License

Готовый к продакшену шаблон для размещения Telegram ботов на AWS с использованием Serverless архитектуры. Построен на AWS CDK (Python), разработан для специалистов, переходящих с традиционных VPS на Cloud Native.

Почему Этот Шаблон?

Асинхронная Архитектура: Правила Игры Меняются

В отличие от традиционных синхронных Lambda-функций, которые завершаются по таймауту через 15 минут, этот шаблон использует асинхронную, событийно-ориентированную архитектуру:

Telegram → API Gateway → Receiver Lambda → SQS Queue → Worker Lambda → DynamoDB + Telegram API

Ключевые Преимущества:

  • Без Таймаутов: Worker Lambda обрабатывает сообщения асинхронно.
  • Масштабируемость: Автоматически выдерживает пиковые нагрузки (тысячи пользователей).
  • Отказоустойчивость: Dead Letter Queue (DLQ) перехватывает сбойные сообщения.
  • Экономичность: Платите только за то, что используете (скорее всего, БЕСПЛАТНО для большинства ботов).

Хватит Платить за Простаивающий VPS!

Традиционный VPS стоит $5-10/месяц независимо от трафика. С Serverless вы платите только за запросы. Для большинства пет-проектов и стартапов ваш счет AWS составит $0.00 благодаря AWS Free Tier.

🌟 Реальный Пример

Хотите увидеть, как это выглядит в продакшене?

Посмотрите репозиторий Zerde Bot. Это open-source анти-спам бот, полностью созданный на этом шаблоне и обслуживающий IT-сообщество из 900+ участников.

Статус: Работает 24/7 на AWS Free Tier (за $0).

Архитектура

Serverless Bot Architecture

Оценка Стоимости

Дорого ли это? Нет. Скорее всего БЕСПЛАТНО.

Ресурс Лимит Free Tier (Ежемесячно) Примерная Емкость Бота
AWS Lambda 400,000 ГБ-секунд ~3,000,000 сообщений
API Gateway 300 млн запросов (1-й год) Безлимитно для ботов
DynamoDB 25 ГБ Хранилища Миллионы записей
SQS 1 Миллион Запросов ~500,000 сообщений

Вердикт: Для большинства стартапов ваш счет AWS будет $0.00.

🛠️ Супер Быстрый Старт

Предварительные требования (Prerequisites)

  • AWS CLI, настроенный с вашим аккаунтом.
  • Docker (необходим для сборки CDK).
  • uv (современный менеджер пакетов Python).

1. Инициализация Проекта

# Клонировать репозиторий
git clone https://github.com/Bayashat/serverless-tg-bot-starter.git
cd serverless-tg-bot-starter

# Установить зависимости
uv sync

2. Настроить Окружения

# Создать .env и сгенерировать токены
echo "TELEGRAM_BOT_TOKEN=ваш_токен" > .env
echo "TELEGRAM_WEBHOOK_SECRET_TOKEN=$(openssl rand -hex 32)" >> .env

3. Развернуть(Локальное)

# Переходим в папку инфраструктуры
cd infra

# Подготовка CDK (нужно только один раз)
uv run cdk bootstrap

# Развертывание в среду Dev
uv run cdk deploy -c env=dev

4. Подключение Webhook

Скопируйте WebhookApiUrl из вывода терминала и зарегистрируйте его:

# Замените YOUR_API_URL на ссылку из вывода и используйте TELEGRAM_WEBHOOK_SECRET_TOKEN
curl -X POST "[https://api.telegram.org/bot](https://api.telegram.org/bot)<YOUR_BOT_TOKEN>/setWebhook" \
  -H "Content-Type: application/json" \
  -d '{"url": "YOUR_API_URL/webhook", "secret_token": "YOUR_SECRET_TOKEN"}'

👨‍💻 Профессиональный Рабочий Процесс

Это не просто шаблон, это полноценная инженерная среда.

Качество Кода (Pre-commit)

Мы используем pre-commit для обеспечения единого стиля кода (Black, Flake8).

# Установить git hooks
uv run pre-commit install

# (Опционально) Запустить вручную
uv run pre-commit run --all-files

CI/CD Пайплайн (GitHub Actions)

Проект включает автоматизированный пайплайн (.github/workflows/deploy.yml), который деплоит в dev при пуше и в prod при ручном запуске.

Безопасность: Ключи Доступа Не Нужны!

Мы используем AWS OIDC (OpenID Connect) для безопасных деплоев без паролей.

Запустите скрипт настройки:

# Сделать скрипт исполняемым
chmod +x scripts/setup_oidc.sh

# Использование: ./scripts/setup_oidc.sh <github_user>/<repo_name>
./scripts/setup_oidc.sh yourname/serverless-tg-bot-starter

Добавьте секреты в GitHub: Скопируйте AWS_ROLE_ARN из вывода скрипта и добавьте его в секреты репозитория вместе с токенами бота.

📚 Документация

🤝 Вклад в Проект

Вклад приветствуется! Пожалуйста, запустите pre-commit перед отправкой Pull Request.

Лицензия

MIT License — используйте этот шаблон для своих проектов!


Сделано с ❤️ для разработчиков из Центральной Азии, переходящих на Serverless