Всем привет! Я - практикующий исследователь данных, и на этом канале делюсь тем, что реально работает в IT. Никакой сухой теории, только личный опыт, рабочие инструменты и грабли, на которые я уже наступил за вас. Рад, что вы здесь!🧸
Как-то писал уже (тут ссылка) про то, чем пользуюсь для задач и прочего. Кстати я этот пост уже начал писать два месяца назад и вот только сегодня решил всё таки его дописать и переписать. Изначально хотел описать бота который заменил мне уже привычный календарь от apple с напоминаниями, приоритетами и прочим. Но что ж мелочиться, давайте я расскажу про мой топ ботов которые я сделал для работы (конечно несколько узконаправленных с метриками ботов я тут описывать не буду, так как "как не крути" там информация и архитектура конфиденциальная. 🕵🏽♂️
**кстати, пишите в комментариях вопросы или пожелания, все мои боты со временем модернизируются и я их не бросаю🧸, если кому нужны репозитории то могу поделиться, как "разпривачу репозитории".
Бот-планировщик. Почему календарь iPhone и MacBook меня не устраивал
Работаю с данными, дедлайны, встречи, задачи — всё это нужно где-то фиксировать. Долгое время использовал стандартный календарь на iPhone и MacBook. Но со временем стало неудобно:
- Синхронизация — да, работает, но не всегда идеально между устройствами, вечно проблемы с icloud (возможно только у меня так захламлено там, но всё таки)
- Скорость — чтобы создать напоминание, нужно открыть приложение, выбрать дату, время, ввести текст, приоритет если надо, url, напоминать заранее или нет и тд
- Естественный язык — нельзя просто написать "напомни завтра купить хлеб" и получить результат, да блин, даже если написать/сказать Сири напомни послезавтра купить корм для кота - он не поймет и не запишет дату, всё равно придется заполнять вручную, особенно если нужно время напоминания
- Гибкость — сложно работать с повторяющимися событиями, тегами, приоритетами
При всём при этом я пользовался каждый день, просто эти косяки копились бесконечно. И я подумал: а что если сделать бота, который понимает, как я говорю? Просто пишешь ему текстом, а он сам разбирается, что и когда нужно сделать... 🎻
Итак бот-RemindMe_pro_bot
Решил сделать Telegram-бота на Python, который:
- Понимает естественный язык
- Работает везде, где есть Telegram
- Быстро создает напоминания
- Поддерживает теги, приоритеты, повторяющиеся события
- Показывает календарь и ясно когда у меня свободные дни например
Технологический стек
Выбрал проверенные инструменты:
- Python 3.10+ — основной язык
- python-telegram-bot — фреймворк для работы с Telegram API
- SQLAlchemy + PostgreSQL — для надежного хранения данных
- dateparser — для парсинга дат из естественного языка
- APScheduler — для фоновой отправки уведомлений
Особенности RemindMe_pro_bot
Парсинг естественного языка (NLP)
Самая сложная и интересная часть — научить бота понимать, что я имею в виду, когда пишу:
- "Напомни завтра купить хлеб"
- "25 декабря в 17:00 отложить на кредит и ипотеку"
- "Каждый день напоминай мне делать зарядку в 08:45"
- "Через 20 минут выключить суп"
Можно было просто присоединить ЛЛМ скажете?🙃 А нет у меня таких ресурсов на сервере чтобы тяжеловесные боты там коллекционировать, будем оркестровать регулярными выражениями и мини библиотечками около-NLP-шными.
**ещё много чего можно по нему написать: как я тестировал бота, граничные условия, доработка (кстати она дорабатывается постоянно, ну как время у меня появляется и я нахожу баги) и так далее, но думаю пока, того что написал достаточно, перейду к следующему боту.
Бот-терминал линукс
О, это мой любимый бот, потому-что в терминале моего рабочего сервера вся моя работа (айрфлоу, кликхаус, постгрес, боты, скрипты, сценарии, ssh-ки, и многое другое), а каждый раз подключаться к удаленному компу для того чтобы там запустить терминал и посмотреть что стряслось - ну такая себе история, особенно если ты в дороге или компа под рукой нет, а телефон под рукой всегда.
Даже не знаю, что про этого бота расписать, просто скажу что через него я могу делать всё то что делаю с терминала напрямую, терминал на сервере Дебиан. К боту есть доступ только у меня, настроена админка, указан мой телеграм айди, при желании я могу добавить коллегу в бота, если он захочет его запустить - мне придет уведомление "Разрешить / Запретить".
Иногда приходится прям править некоторые вещи, поэтому пришлось настроить NOPASSWD в sudoers (что развязывает руки, но нужно быть предельно осторожным, собственно поэтому я никому доступ до сих пор и не дал).
Поехали дальше... 🎻
Бот-доставщик бизнес метрик
К сожалению скриншот я не могу вставить, ибо придется замазывать практически всё, но всё таки вкратце опишу, так как многим может быть полезно.
Бот дергает данные с кликхауса, уже готовые views с метриками. Что нужно делает (разделяет, объединяет в пачку + пишет описание если нужно), далее отправляет заранее оговоренному пользователю (у меня это топ менеджеры, их всего человек 10, каждый отвечает за свои метрики, соответственно каждому бот отправляет ежедневно, кому-то через каждые 3 часа) необходимые метрики, графики, список менеджеров и т.д.
Очень удобно, так как всё таки топы заходят на дашборды только перед месячным или недельным отчетом. А так, все данные всегда под рукой и можно вовремя скорректировать курс.
Бонус. Бот-кешбек котролёр
Сразу скажу, этого бота я сделал для личных целей и он работает только внутри моей семьи по юзер айди, таким же способом можно его настроить и под себя или свою семью (пишите кому интересно, сделаю админку).
Проблема
Я с моей супругой люди азартные, с опортунистическими выходками, и следовательно мы не проходим мимо такого блага общества как кешбеки 🔬.
У каждого из нас по 4-5 карт разных банков (на самом деле больше, но в некоторых нет категорий кешбека, например в картах зарубежных банков, но не суть). По каждой карте, каждый месяц новые категории и проценты, и тяжело за ними уследить, да, мы перед покупкой сначала смотрели в личном кабинете по каждой карте категории кешбеков, далее уже приноровились делать табличку, но её хватило на один раз.
И я подумал, а что если сделать бота, которому просто отправляешь скриншот со страницы категорий кешбека и бот сам записывает как надо в список, и при надобности он просто выдает общую таблицу семьи по каждой карте и по каждой категории.
Опенсорсные библиотеки пайтон бывают тупят с русским языком при распознавании картинок, поэтому предусмотрел и редактирование распознанного списка категорий.
В целом бота уже протестировали на наших банках и активно пользуемся, в планах его сделать открытым и настраиваемым, чтобы человек мог добавить члена семьи если надо и у них была общая база данных, собственно как у меня сейчас.
Это еще не конец. Но пока итог
Надеюсь руки в скором времени дойдут и для описания других моих ботов, возможно кому-то будет полезно, интересно... Пишите в комментариях идеи для автоматизации повседневной рутины, или возможно кому-то нужна помощь, или если по вашему мнению помощь нужна мне 😄 тоже пишите, будет полезно. Спасибо что дочитали.
Я не претендую на последнюю инстанцию, я пишу о своём пути и опыте. Спасибо что дочитали до конца. Подпишитесь👇👇👇, ставьте лайки 👍🏽👍🏽👍🏽 впереди много интересных статей про навыки, инструменты, обучение, лайфхаки и пути аналитика.