На главную

Side project

Гипоаллергенный кот, который поможет облегчить быт

Telegram-бот для ежедневных бытовых задач: присылает план уборки, запускает 15-минутный таймер, считает streak и разговаривает с пользователем от лица кота.

Срок Один вечер
Стек Python · python-telegram-bot
Тип Личный проект
Статус Работает
Cat Cleaning Bot
онлайн · демо
3дня подряд
кот · 10:00
🐾 Доброе утро. Сегодня — кухня.
  • Покормить кота
  • Почистить лоток
  • Помыть посуду
  • Запустить робот-пылесос
  • Заправить увлажнитель
Начни с раковины. Всё остальное сразу выглядит чище. Я проверял методом наблюдения.

Problem

Домашняя рутина редко сложная — она просто незаметно накапливается.

Стандартный таск-менеджер с чек-листом на 30 пунктов давит и работает плохо: список «должна сделать» отталкивает, а не мотивирует. Задачи откладываются, накапливаются, и через неделю кухня уже требует не 20 минут, а вечера.

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

Solution

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

  1. 01
    Зона дня — одна из семи в ротации: кухня, санузел, все комнаты, день воздуха, прихожая, текстиль, холодильник. Не весь дом сразу — только сегодняшняя зона. «Сегодня я выбираю кухню. Не спорь.»
  2. 02
    Ежедневные задачи — постоянный короткий чек-лист поверх зоны дня: покормить кота, почистить лоток, помыть посуду, запустить робот-пылесос, заправить увлажнитель. «Лоток сам себя не почистит. Я проверял.»
  3. 03
    15-минутный спринт — одна кнопка запускает таймер. Не «убери всё», а «работай 15 минут и выдыши». Убирает барьер входа. «15 минут. Не геройствуй. Я слежу.»
  4. 04
    Streak — счётчик последовательных дней выполнения. Растёт за ежедневное выполнение, прощает один пропущенный день — не наказывает за форс-мажор, но не даёт расслабиться на двух подряд.
  5. 05
    Недельный план — просмотр расписания на 7 дней вперёд без отдельного приложения. Понятно, что ждёт в четверг, можно спланировать неделю.
  6. 06
    Swap дней — перестановка зон местами, если день «выпал»: гости, болезнь, командировка. Расписание подстраивается, а не ломается. «Так и быть, поменяем санузел и текстиль.»

UX-фишка

Не уведомления, а котокоманды

«Должна убраться» в напоминалке создаёт сопротивление. Кот-персонаж снимает обязательство — это уже не задание сверху, а команда от существа, которому всё равно, выполнена ли она, но почему-то хочется его не подвести.

Ключевые приёмы: эмодзи-маркер 🐾, сдержанная похвала вместо восторга, ирония вместо угроз. «Я почти горжусь» работает сильнее, чем «Молодец!!!» — потому что в нём есть личность.

«От кота: 15 минут. Не геройствуй. Я слежу.»
«Лоток сам себя не почистит. Я проверял.»
«Ты нажала "Готово". Я почти горжусь.»
«Сегодня день воздуха. Я открыл бы окно сам, но у меня нет рук.»

Логика streak

Вчера выполнено → +1. Сегодня уже выполнено → без изменений. Пропуск двух дней подряд → сброс до 1. Простая механика, которая не наказывает за один пропущенный день, но не даёт расслабиться на двух подряд.

Tech stack

Инструменты выбраны под задачу, а не ради стека.

Bot framework

Python 3 + python-telegram-bot 22.7 со встроенной job-queue для ежедневной рассылки в 10:00. Минимальный overhead, нет лишних зависимостей.

Хранилище

Плоский JSON-файл — пользователи, streak, дата последнего выполнения. Перечитывается при каждом запросе. На текущей нагрузке нет смысла в базе данных.

Деплой

Procfile под worker dyno — деплоится на любой PaaS без дополнительной конфигурации.

Ограничения

Хранилище в JSON выбрано осознанно: три пользователя, простая структура, база данных была бы избыточна.

Если масштабировать на публику — вот что поменялось бы:

  • PostgreSQL для пользователей и streak — вместо JSON-файла, который не выдержит конкурентную запись.
  • Timezone-настройки на пользователя — сейчас рассылка в локальном времени процесса. Для аудитории в разных зонах это нужно вынести в профиль.
  • Админка для редактирования текстов задач и лайфхаков — без необходимости деплоить новую версию ради правки одной фразы.