Как я написал Telegram бота и упростил взаимодействие с Excel-файлом, который являлся калькулятором
После этого проекта я понял, насколько же порой, удобен Telegram бот для таких обыденных ситуаций
Недавно ко мне обратились с простой, но очень живой проблемой: в компании использовали Excel‑файл‑калькулятор, в который сотрудники вручную вносили исходные данные, получали расчёты и отправляли результаты по почте или скрином в чат.
Файл рос, а менеджеры тратили время на ручную агрегацию данных. Задача звучала так: сохранить логику и формулы калькулятора, но сделать так, чтобы расчеты из калькулятора можно было получить через Telegram бота.
Мне нужно было сохранить всю логику вычислений Excel, но сделать так, чтобы получить результат стало быстро, удобно и надёжно - прямо через Telegram-бота. Без лишних движений, без ошибок и с минимальными усилиями.
Между делом, я таким образом для себя написал Telegram бота, который создает Excel шаблон (таблицу) Диаграмма Ганта, и с этой таблицей я могу вести проекты через Telegram бота, а потом под конец дня посмотреть визуально, как обстоят дела с проектами. По сути можно сделать свою Excel-CRM и сделать взаимодействие с через Бота, что позволяет лишний раз не открывать таблицу и вносить данные. Это своего рода экосистема в Телеграм, о которой я писал в своем ТГ канале.
Требования и цели к Боту:
- Сохранить логику расчётов, реализованную в формулах в Excel (все связи, вычисления и зависимости оставались как есть).
- Упростить ввод параметров и получение результата через чат, используя готовые шаблоны таблиц в Excel.
- Сделать возможность редактировать необходимые ячейки и столбцы в Excel через удобный интерфейс.
- Обеспечить минимальный порог вхождения: доступ через Telegram.
Ключевые функциональные требования:
- Ввод входных параметров через чат (формы, кнопки, команды).
- Бот подставляет параметры в шаблон Excel, запускает расчёт и возвращает результат.
- История запросов и возможность выдать прошлые расчёты.
- Поддержка нескольких пользователей и ролей (просмотр/редактирование).
- Валидация входных данных и обработка ошибок.
Технический стек и выбор инструментов
Исходил из желания сделать быстрое и надёжное решение, с минимальными правками в Excel:
- Telegram Bot API с aiogram - управлять ботом, inline‑клавиатуры, FSM (Finite State Machine) для диалогов.
- Python - язык реализации (популярен, много библиотек).
- openpyxl - чтение/запись .xlsx без запуска Excel; копирование шаблона и подстановка значений.
- matplotlib - генерация графиков.
- SymPy - для расчетов формул Excel
Архитектура решения (кратко)
1. Telegram‑бот (aiogram) - интерфейс к пользователям.
2. Сервис на Python - принимает параметры от бота, работает с шаблоном Excel (openpyxl), выполняет расчёты, генерирует отчёты и графики.
3. Хранилище: шаблон(ы) Excel в файловой системе.
Реализация: пошагово
1) Подготовка шаблона Excel
- Сделал копию «рабочего» файла - шаблон, где я заранее пометил (в отдельных ячейках или листе) входные и выходные данные.
- Оформил лист с понятными метками (например, в столбце A ключи параметров, в столбце B - значения).
2) Создание бота
- Зарегистрировал бота у BotFather, получил токен.
- Выбрал aiogram для быстрой реализации команд и inline-клавиатур.
- Реализовал команды: - /start - приветствие и краткая инструкция; - главная панель в виде inline-кнопок для взаимодействия с Excel-файлом через бота
3) Ввод параметров и UX
- Для простых случаев сделал inline‑клавиатуру с набором предустановок.
- Для более гибкого ввода реализовал дополнительную панель, которая отражает вводные данные при расчете стоимости. Нажав на необходимую кнопку, до кнопки "рассчитать" можно выбирать любую кнопку и вносить данные: бот валидирует (число/диапазон/строка).
К примеру, возьмем для расчета стоимости модель002
Можно сверить информацию с Excel-файла, и убедиться что все работает как надо
4) Механизм работы с Excel
- Для файлов использовал openpyxl: копировал шаблон, подставлял значения в нужные ячейки, сохранял и читал значения выходных ячеек.
5) Чтение результатов и отдача пользователю
- краткий текстовый отчёт с ключевыми величинами;
- графики (matplotlib) - если нужно визуализировать распределения или тренды, то бот может отправлять графики в виде SVG или PDF файла.
- Результат отправлялся в чат как сообщение и/или файл.
Результаты:
- Существенно снизилось количество ошибок при ручном редактировании таблицы Excel - теперь пользователи меняют только параметры, а Excel автоматически рассчитывает результат.
- Ускорился процесс получения итогов: вместо долгих пересылок файлов Excel, скриншотов и писем - мгновенный ответ от бота прямо в Telegram.
- Удобство работы: доступно с любых устройств благодаря Telegram, с минимальным обучением и без необходимости скачивать и устанавливать шаблоны Excel или программы.