PromoBot is a modular Telegram bot built with aiogram, designed to help sellers create and manage product promotions, while offering buyers a simple and interactive shopping experience via Telegram. Admins can oversee platform activity and manage users.
- Role-based behavior: Admin, Seller, Buyer
- Sellers can create, manage, and activate promotions
- Inline keyboard navigation with callback handlers
- FSM (Finite State Machine) for multi-step input flows
- Media upload support via AWS S3
- DynamoDB for data persistence
src/
├── database/ # DynamoDB setup & repository layer
├── handlers/ # Message & callback handlers grouped by role
├── keyboards/ # Inline and reply keyboard generation
├── messages/ # Predefined texts and message templates
├── services/ # AWS S3 and other external integrations
├── states/ # FSM state definitions per role
├── utils/
├── config.py # Global configuration & constants
├── main.py
└── middleware.py
- Python 3.13
- A Telegram bot token
- AWS credentials (for S3)
- DynamoDB (hosted or local)
- Seller gets activated by an admin
- Seller registers via the bot (FSM-guided)
- Promo details (title, image, price) are submitted
- Media is uploaded to AWS S3
- Inline buttons allow promo management and sharing
- Tap on inline buttons to see more info
- Initiate order
- Approve or deactivate sellers
- Manage sellers and view promos
- aiogram – Telegram bot framework
- boto3 – AWS SDK for Python
- Terraform for infrastructure
- DynamoDB – NoSQL database
- S3 for promo images