личный проект · telegram
балла — плановый максимум обычной недели

Бот, который превращает быт в семидневную игру за очки

Личный телеграм-помощник. Не трекер для галочек и не строгий надзиратель — напоминает, принимает отчёт обычным языком, честно считает баллы и не требует идеального дня.

01 — идея

Начать — сложнее, чем сделать

Проблема была не в силе воли вообще, а в том, чтобы просто стартовать: выйти на прогулку, дойти до бассейна, сесть за домашние дела. Одно и то же напоминание в календаре игнорируется за неделю.

Поэтому вместо чек-листа — игра. Каждый день даёт столько баллов, сколько получилось набрать: частичный результат лучше нулевого, и один слабый день не обнуляет неделю.

В основе — принцип PINCH, пять способов помочь себе включиться в действие:

Pигра и удовольствие
Iличный интерес
Nновизна каждую неделю
Cвызов себе прошлому
Hмягкая срочность
02 — как это устроено

Ритм недели

11:00

Утренний план

Шаги, рабочие и домашние задачи, ведение дневника, что осталось из недельных целей вроде бассейна. Подтвердить — любым ответом, хоть «+». Без ответа — ещё пара мягких напоминаний, максимум три сообщения.

21:00

Вечерний отчёт

Один опрос, без повторов. Отвечаю обычным текстом в свободном порядке — бот сам разбирает сообщение и уточняет только то, чего действительно не хватает.

до 05:00

Окно исправлений

Всё, что написано до утра, ещё считается отчётом за прошедший день. Не указано — не значит забыто: можно дописать и исправить позже.

чт 11:00

Новый раунд

Отчёт за прошедшую неделю — баллы по дням и активностям, средние шаги, бассейн — и следом обычный план уже нового семидневного раунда с новой игровой обёрткой.

03 — баллы

Как считаются очки

Всё, что можно измерить — измеряется по диапазонам. Никаких «на глаз»: формулы фиксированы и не зависят от формулировки отчёта.

Категория
Диапазон
Баллы
Сон
Ночь
< 7 ч
−1
Ночь
7–8 ч
1
Ночь
≥ 8 ч
2
Питание
Калории
< 1800
−2
Калории
2000–2200
4
Калории
≥ 3000
−2
Шаги
За день
< 2000
0
За день
4000–4999
3
За день
≥ 5000
4
Бассейн — план 3 раза в неделю
За заплыв
< 1000 м
0
За заплыв
1400–1599 м
3
За заплыв
≥ 1600 м
4
Рабочие / домашние задачи
Рабочие, план 6/день
6 и больше
4
Домашние, план 3/день
3 и больше
2
Аудиокниги — план 3 дня в неделю
За день слушания
6 ч и больше
4

Заплывы и дни аудиокниг сверх плана не увеличивают максимум, но дают бонусные баллы — это осознанно разрешённое «читерство»: сильный день может подстраховать слабый.

04 — техническая часть

Модель — не калькулятор

Разбор свободного текста в структурированные данные делает LLM. Всё остальное — баллы, состояние, история — считает обычный код. Модель не хранит данные, не начисляет очки и не может отрицать то, что уже сохранено: в обычном разговоре ей передаётся точный контекст из базы, и она обязана с ним сверяться.

Обработка Telegram-обновлений идемпотентна, отчёты применяются частичным апдейтом без стирания уже известного, а запись в закрытую неделю просто отклоняется.

Python Telegram Bot API · polling SQLite OpenAI Responses API Docker Compose Pydantic