🚀 Проєкт переїхав на Go.
Активна розробка триває тут: github.com/OlexiyOdarchuk/abit-assistant
| v2.x (цей repo) | v3.0 (новий repo) | |
|---|---|---|
| Мова | Python · Aiogram | Go · telebot/v3 |
| БД | PostgreSQL + SQLAlchemy | SQLite + sqlc (pure-Go, без CGo) |
| Архітектура | моноліт app/ |
Standard Go Layout (cmd / pkg / internal) |
| Як бібліотека | — | go get github.com/OlexiyOdarchuk/abit-assistant/pkg/abit |
| FSM | aiogram, in-memory | Persistent у SQLite (переживає рестарт) |
| Тести | — | 70+ unit-тестів |
| Docker | python:slim ~400MB |
scratch ~30MB |
Telegram-бот той самий — @AbitAssistant_bot. Перехід для користувачів безшовний.
Ідея проєкту росте, і моноліт на Python почав заважати:
- Потрібна модульність — щоб довільний розробник міг підключити ядро (
pkg/abit,pkg/parser) до свого бота / десктоп-додатку / CLI черезgo get - Легший рантайм — scratch-Docker ~30MB замість Python+SQLAlchemy+aiohttp ~400MB
- Конкурентність на горутинах — парсинг конкурсних списків на горутинах у рази швидший за asyncio
- Type-safety end-to-end — sqlc-генеровані запити, типізовані callback-args, доменна модель замість dict-of-anything
Повний план переходу — у AbitAssistant-3.0.md.
- 🟥 Архівований. Нові фічі не приймаються, issues — на новому repo.
- 🟩 Залишається доступним для історії, навчальних цілей і fork'ів. Якщо тобі цікаво пограти з aiogram / parsing на BeautifulSoup — будь ласка.
- 🟨 Bot-сервер вже переключено на v3.0 — старий код тут не запущено на проді.
Якщо ти прийшов сюди по код для свого pet-проекту:
- 🐍 Шукаєш Python → залишайся, форкай, веселись
- 🐹 Шукаєш Go → одразу
abit-assistant
AbitAssistant_Bot — Telegram-бот для абітурієнтів України, який автоматизує відстеження заяв на вступ. Реалізує техніку з цього відео: «реальних» конкурентів видно одразу, без ручного парсингу vstup.osvita.ua в Excel.
- 📥 Парсинг конкурсних списків із vstup.osvita.ua
- 🔍 abit-poisk lookup для конкретного абітурієнта
- 📊 Розрахунок шансу + ваше місце в реальній черзі
- 📈 Гістограми (matplotlib)
- 👤 Профіль з НМТ балами, квотами, регіональним коеф.
- 💾 Збережені списки + share через deep-link
- 📣 Розсилка для адмінів
Усе перенесене (і покращене) в v3.0.
- Python 3 + Aiogram — логіка бота
- aiohttp + BeautifulSoup4 — парсинг
- Pandas + NumPy — обробка
- Matplotlib — графіки
- SQLAlchemy + PostgreSQL — БД
- Docker — контейнеризація
⚠️ Тільки для архівних цілей — для роботи з v3.0 використовуй новий repo.
git clone https://github.com/OlexiyOdarchuk/AbitAssistant_Bot.git
cd AbitAssistant_Bot
cp .env.example .env # заповни TELEGRAM_TOKEN, POSTGRES_* тощо
docker-compose up --build -dgit clone https://github.com/OlexiyOdarchuk/AbitAssistant_Bot.git
cd AbitAssistant_Bot
nix develop
make sync
cp .env.example .env
make docker-up📦 project_root/
├── bot.py — entrypoint
├── config.py — конфіг
├── docker-compose.yml
├── app/
│ ├── database/
│ │ ├── models.py — SQLAlchemy моделі
│ │ └── requests.py
│ ├── handlers/
│ │ ├── admin.py
│ │ ├── common.py
│ │ ├── filtering.py
│ │ ├── profile.py
│ │ ├── support.py
│ │ └── viewing.py
│ ├── services/
│ │ ├── parser.py · decoder.py · filter.py
│ │ ├── parse_abit_poisk.py · generate_link.py
│ │ ├── visualization.py · stats.py
│ │ ├── results_cache.py
│ │ ├── mailing.py · support.py · user_management.py
│ │ └── logger.py
│ ├── keyboards.py · states.py
GPLv3. Та сама залишається у v3.0.
Олексій Одарчук — Telegram @NeShawyha · GitHub · shawyhaf@gmail.com
Сервери, кава, новий ноут — на одній Monobank-банці. Підтримуєш одразу обидва покоління.