Inline Telegram-бот для разделения расходов между друзьями
Пишешь @YourBotName 3000 за ужин в любом чате — бот создаёт карточку с суммой и реквизитами. Участники нажимают «Я должен» — бот пересчитывает доли. После перевода отмечают «Я отдал» — карточка обновляется.
- Inline-режим — работает в любом чате без добавления бота
- Автоматический split — сумма делится поровну между участниками
- Динамические доли — каждый новый участник пересчитывает суммы
- Карточка расхода — PNG с суммой, реквизитами и списком должников
- Статусы оплаты — ○ должен / ✓ отдал, обновляются в реальном времени
- Онбординг — /start → ввод телефона → выбор банка → готов
1. Напишите /start боту в личные сообщения
2. Пройдите онбординг: укажите телефон и банк
3. В любом чате наберите: @YourBotName 3000 за ужин
4. Выберите результат — карточка появится в чате
5. Участники нажимают «Я должен 💰» — доли пересчитываются
6. После перевода нажимают «Я отдал ✓» — статус обновляется
git clone https://github.com/sanyasamineva0x/SplitPay.git
cd SplitPay
cp .env.example .env # заполнить BOT_TOKEN
pip install -e .
python -m botgit clone https://github.com/sanyasamineva0x/SplitPay.git
cd SplitPay
cp .env.example .env # заполнить BOT_TOKEN
docker-compose up -dДобавьте переменную окружения BOT_TOKEN в настройках Railway.
Для стабильной работы inline-карточек создайте служебный канал:
- Создайте приватный канал в Telegram
- Добавьте бота как администратора
- Перешлите любое сообщение из канала боту @userinfobot
- Скопируйте ID (начинается с
-100) - Добавьте в
.env:UPLOAD_CHAT_ID=-100...
Без канала карточки отправляются в ЛС создателю долга — работает, но создатель может получить уведомления.
Python 3.12 · aiogram 3 · SQLAlchemy 2.0 · Pillow · aiosqlite · pydantic-settings
bot/routers/ → bot/services/ → bot/db/repositories.py → SQLite
private.py card_renderer.py UserRepo
inline.py expense_service.py ExpenseRepo
callbacks.py
Layered monolith: чистые слои, один Docker-контейнер. Роутеры не обращаются к БД напрямую — вся логика в сервисах.
pip install -e ".[dev]" # установка с dev-зависимостями
pytest tests/ -v # тесты
ruff check bot/ tests/ # линт
ruff format bot/ tests/ # форматирование
docker-compose up -d # запуск через Docker
python -m bot # запуск (нужен .env с BOT_TOKEN)Проект спроектирован, реализован и отревьюирован мультиагентным пайплайном Claude Code. Весь процесс — в docs/plans/.
MIT
