Телеграм бот для обліку пального

Яка суперсила програмістів? Правильно, можливість створювати власні інструменти! Дуже люблю за це нашу роботу.

В нас є задача вести облік пального: скільки видали, скільки куди та хто витратив. Спеціальної людини для цього немає, а каністри зберігаються на імпровізованому складі, до якого мають доступ водії. Потрібно знати скільки ще лишилося.

Раніше це вирішувалось такою-сякою комунікацією в чатах, але одного дня я втомився на це дивитися і вирішив все ускладнити автоматизувати.

Нашвидкуруч зробив бота, який має дві кнопки «+ пальне» та «- пальне». Людина викликала бота, тапала скільки треба й все. Дані зберігалися в базі у вільному вигляді (jsonb). Подивився на це і переписав збереження в гуглотаблицю — простий список транзакцій (додав/забрав), а суму брав з окремої комірки.

Виклав — відразу отримав фіча реквести. Показувати хто саме зробив транзакцію. Вказувати авто, яке заправили. Постити в чат саму транзакцію, щоб відразу це було видно.

Мав трохи вільного часу, та сів до роботи. В телеграмі є можливість додавати кнопки до повідомлення, то я все зробив на тих кнопках. Також є можливість редагувати повідомлення, тобто можна робити такий собі TUI. Людина тапає «мінус пальне», наступним повідомленням відображається список автівок, можна вказати потрібну. Дані синхронізуються з гуглотаблицею, список авто береться теж з таблиці.

Буквально тут же колега натапав не те що треба, замість мінус пальне наробив плюсів. Додав кнопку «Скасувати», щоб можна було видалити хибну транзакцію. Додав посилання на таблицю, щоб швидко внести великий об'єм якщо ми отримуємо пальне. Зробив все так щоб повідомлення апдейтились інлайн, тобто щоб бот не смітив зайвим у чат.

Все дуже просто (насправді не дуже, бо через відсутність стану та бази доводиться багато контексту записувати в самі кнопки, і потім діставати їх звідти) та зручно.

Шкода що решта месенджерів не мають такого ж розвиненого API для ботів, як телеграм. Я б залюбки програмував все під Signal. А телеграм виступає надзвичайно зручним інтерфейсом для розробки таких штук. Додатки ставити складно, на сайти заходити — незручно, хоча якби в Google Sheets можна б було програмувати кнопки, то я б зробив це там.

Дуже люблю робити собі такі маленькі проєкти-автоматизатори рутинних дій. Здається, справжній програміст має відрізнятися від несправжнього тим, що змінює оточення під себе, розроблює та дороблює інструменти. Також такі проєкти тримають мою зозулю на плаву та запобігають попайці.

Діліться своїми такими проєктами в коментарях👇


Сподобалось? Долучайтеся до мого телеграм каналу: https://t.me/full_of_hatred