ТГ помощник на Python, который нельзя обмануть
На самом деле можно) Но обо всем по порядку.
В новогодние праздники подумалось, что пора начать пилить пет проект. Сам работаю продактом и уже пора бы.
Ну, а т.к. сейчас все про ИИ на каждом шагу – решил сделать с его помощью, поскольку разбираюсь в разработке, но кодить не умею.
Пишу ему, а давай ка запилим петпроект мне. И он как выдал идеи на основе моих к нему прежних обращений. Это уже было перебор. Подкрутив запрос, я получил оптимальный вариант – тг бот.
Ну и главный вопрос – чтобы что? этот бот будет. А у меня сразу появилась проблема личная, которую нужно решать – дисциплина. Не жесткое выполнение задач, а хотя бы не сливать какие-то рутинные задачи. Вот и началась формулировка идеи.
Бот, который помогает не сливать некоторые задачи. Любые. И всего один фокус для пользователя. Без фанатизма. И с игровой и мотивирующей составляющей для легкого ведения прогресса.
Пилил по несколько часов в день. Общий итог – месяц. Это включая выбор площадки хостинга, переезд на другую площадку и параллельно обвешивание фичами.
В итоге сам сейчас пользуюсь – помогает, ну и забавная штука в итоге вышла. В целом доволен.
Вот собственно сам бот: https://t.me/focuscompanion_bot.
По функционалу, что умеет:
Утром напоминает о главном фокусе на день.
Вечером просит отметить результат: сделано, частично, не сделано.
Ведёт недельную статистику и показывает, сколько дней подряд держишься по текущей цели.
Даёт ачивки за серии выполненных дней и прогресс по уровням.
Позволяет сменить фокус и время уведомлений командами меню.
В итоге вышел хороший локальный помощник.
Структура проекта локально:
Рабочий цикл разработки:
Пишу/меняю код локально.
Тестирую бота у себя: онбординг, /time, /week, /streak, /achievements, /feedback, работу утренних и вечерних уведомлений.
Коммичу и пушу: за всё время набралось 39 коммитов — от мелких правок текста до переделки логики ачивок и расписания.
Стек и архитектура
Python 3.12
aiogram 3 (асинхронный Telegram‑фреймворк)
SQLite в качестве хранилища
APScheduler для периодических задач (утренние и вечерние уведомления по часовым поясам)
systemd‑service для запуска на сервере
Код полностью на async/await, онбординг и настройки сделаны через FSM aiogram.
Часовые пояса сейчас заточены под РФ: пользователь выбирает зону, дальше уведомления приходят по его локальному времени.
APScheduler раз в минуту проверяет, кому пора прислать утренний фокус, а кому — вечерний чек‑ин.Деплой на Timeweb (до этого был другой хостинг именно для ботов, но его потестировал и в итоге перешел на более профессиональный)
Когда локальная версия устаканилась, развернул бота на VDS в Timeweb Cloud.
Процесс деплоя (долго привыкал, но в итоге настроил под себя):
Код лежит в приватном репозитории на GitHub.
Локально делаю изменения → git commit → git push.
На сервере в каталоге проекта — git pull, обновление pip install -r requirements.txt при необходимости и миграция схемы через models.sql.
Бот крутится как discipline-bot.service под systemd, так что достаточно перезапустить сервис или запустить скрипт деплоя.
Что дальше
Сейчас сам бот уже помогает не срывать свои мини‑цели пользователям. В планах с десяток фичей, которые отприоретизировал пока по своим ощущениям.
Дальше хочу:
переехать с SQLite на PostgreSQL;
добавить более подробную статистику по неделям и месяцам;
доработать систему ачивок и уровней сложности;
возможно, сделать экспорт данных или веб‑панель.
В итоге получился более-менее рабочий продукт, который уже и не стыдно показать) Буду и дальше его развивать, т.к. почти бесплатно, да и, как оказалось, интересно.
И да, напомню, весь код я писал вместе с ии, как и, собственно, проектировал архитектуру, логику и выбирал решение.
Самое сложно было это завезти бота онлайн, чтобы он работал не с локальной машины, а с сервера. А самая сложная фича – это выбор пользователем его часового пояса.
Если вы пользуетесь Telegram и хотите более‑менее регулярно делать то, что сами себе обещаете (или просто протестировать прикольный бот со сложной механикой)— буду рад, если попробуете бота и напишете фидбек через /feedback
Бот: https://t.me/focuscompanion_bot
ПС Кстати, пользуясь им можно понять, как все-таки его обмануть.
Всем спасибо - всем добра!


Программирование на python
1K постов12K подписчиков
Правила сообщества
Публиковать могут пользователи с любым рейтингом. Однако!
Приветствуется:
• уважение к читателям и авторам
• конструктивность комментариев
• простота и информативность повествования
• тег python2 или python3, если актуально
• код публиковать в виде цитаты, либо ссылкой на специализированный сайт
Не рекомендуется:
• допускать оскорбления и провокации
• распространять вредоносное ПО
• просить решить вашу полноценную задачу за вас
• нарушать правила Пикабу