EduPlannerBotAI is a Telegram bot built with aiogram 3.x
and powered by OpenAI GPT. It generates personalized study plans, exports them to PDF/TXT, and schedules reminders. All data is stored using TinyDB.
- 📚 Generate personalized study plans (LLM/OpenAI)
- 📝 Export study plans to PDF/TXT
- ⏰ Schedule reminders (async simulation)
- 🗄️ Store data using TinyDB
- 📊 Multiple Python version support (3.10-3.13)
git clone https://github.com/AlexTkDev/EduPlannerBotAI.git
cd EduPlannerBotAI
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txt
Create a .env
file in the root directory or rename .env.example
to .env
and fill in your tokens:
BOT_TOKEN=your_telegram_bot_token
OPENAI_API_KEY=your_openai_api_key
python bot.py
EduPlannerBotAI/
├── bot.py # Bot entry point
├── config.py # Load tokens from .env
├── handlers/ # Command and message handlers
│ ├── __init__.py
│ ├── start.py # /start and greeting
│ └── planner.py # Study plan generation flow
├── services/ # Core logic and helper functions
│ ├── llm.py # OpenAI integration
│ ├── pdf.py # PDF export
│ ├── txt.py # TXT export
│ ├── reminders.py # Reminder simulation
│ └── db.py # TinyDB database
├── .env # Environment variables
├── requirements.txt # Dependencies list
└── README.md # Project documentation
Component | Purpose |
---|---|
Python 3.10+ | Programming language |
aiogram 3.x | Telegram Bot Framework |
OpenAI API | LLM for text generation |
fpdf | PDF file generation |
TinyDB | Lightweight NoSQL database |
python-dotenv | Environment variable management |
- GitHub Actions workflow for Pylint analysis
- Python version compatibility: 3.10, 3.11, 3.12, 3.13
- Custom
.pylintrc
configuration
If you're experiencing too many 429 Too Many Requests
errors, consider the following:
- ⏱ Increase
BASE_RETRY_DELAY
- 🔁 Increase
MAX_RETRIES
- 🧠 Use a lighter OpenAI model (e.g.,
gpt-3.5-turbo
instead ofgpt-4
) - 💳 Upgrade your OpenAI plan to one with a higher request quota
We welcome contributions! If you'd like to improve this bot:
- Fork the repository
- Create a feature branch (
git checkout -b feature-name
) - Commit your changes
- Push to your fork
- Submit a pull request
Created with ❤️. Feedback and collaboration: @Aleksandr_Tk
MIT License