I Built 9 Production-Ready Telegram Bots in Python
TL;DR: I just open-sourced 9 different Telegram bots — AI assistant, booking bot, crypto alerts, job vacancy channel, price monitor, restaurant bot, tutor bot, survey bot, and auto-content channel. All free to use.
Why I Built These
After dozens of freelance Telegram bot projects, I noticed I was rebuilding the same patterns over and over. Instead of starting from scratch each time, I created a library of production-ready templates.
The Bots
1. AI Assistant Pro (Claude/ChatGPT)
Full subscription model — free tier (20 msg/day) + paid unlimited. Includes admin dashboard.
@dp.message(F.text)
async def handle_message(message: Message):
if not db.is_premium(user_id) and db.get_msg_count_today(user_id) >= FREE_DAILY_LIMIT:
await message.answer("Limit reached. Upgrade to Premium!")
return
response = client.messages.create(model="claude-haiku-4-5-20251001", ...)
2. Appointment Booking Bot
For barbershops, doctors, tutors. Clients pick slots directly in Telegram. No double-booking.
3. Crypto Price Alert Bot
Set a price target → get notified when BTC/ETH/SOL hits it. Uses free CoinGecko API.
4. Job Vacancy Channel
Auto-pulls from HH.ru API every 2 hours, posts new jobs to your Telegram channel.
5. Avito Price Monitor
Alerts when new listings appear or prices drop. No Avito account needed.
6. Restaurant Bot
Menu + table reservations + specials. Admin gets Telegram alert for each booking.
7. English Tutor Bot
Word of the day, quizzes, grammar tips. Zero AI API cost needed.
8. Survey Bot → Excel
Multi-step surveys with ratings, choices, text. Auto-exports to .xlsx.
9. Auto-Content Channel
Posts crypto prices + educational tips on schedule with APScheduler.
Tech Stack
- Python 3.12 + aiogram 3.7 (FSM, inline keyboards)
- SQLite for persistence (survives restarts, zero cost)
- Anthropic Claude API — Haiku model (~$0.001/1000 messages)
- CoinGecko API (free, no key needed)
- HH.ru API (free, Russian job board)
- openpyxl for Excel export
Key Patterns Used
Watchdog for 24/7 uptime
while True:
if proc.poll() is not None:
proc = subprocess.Popen(BOT_CMD, cwd=BOT_DIR)
restarts += 1
time.sleep(10)
FSM for multi-step flows
class BookingState(StatesGroup):
choosing_service = State()
choosing_date = State()
choosing_time = State()
entering_phone = State()
Get the Code
GitHub: https://github.com/Castanderness/telegram-bots-portfolio
All 9 bots with .env.example, requirements.txt, and setup docs.
Available for Custom Development
Need a custom bot for your business? I'm open for freelance projects.
Portfolio: https://castanderness.github.io/telegram-bots-portfolio/portfolio/
Starting from $49 | Delivery 2-5 days | 7-day support included
Top comments (0)