Телеграмм-бот для нужд департамента предприятия.
Данный бот создавался для закрытого круга пользователей для запросов по телефонному справочнику, напоминаниям о днях рождения зарегистрированных сотрудников, поиска данных по отпускам на текущий год, мини-репозитория со служебной документацией и утилитами и полным функционалом параметрирования и управления БД с телефона.
Внешний вид приложения
Внешний вид приложения
Помимо защиты от DDOS-атак от провайдера услуг и самого сервиса Телеграмм, связь с ботом выполнена с использованием сертификатов TLS и https. Аутентификация пользователей по уникальному ID.
Полный доступ к управлению ботом и БД со смартфона администратора. Возможность изменения любого атрибута пользователя. Доступ к серверу через ssh с телефона. Обновление данных справочника и ДР простой заменой Excel файла.
Состав программы - бинарный файл, файл конфигурации. Файлы справочника и отпусков, а так же БД SQLite загружаются отдельно.
Служба бота стоит в режиме автозапуска. При остановке и последующем запуске отправляется e-mail админу о рестарте бота. Так же из меню админа можно запросить статистику по работе бота с информацией о памяти, времени работы, числом запросов за сутки.
Полное логирование с ротацией и доступом к логам со смартфона.
Бот развёрнут на базе Debian10 в облаке (20Гб/1Гб) в виде демона с автозапуском, паникой в лог и отправкой письма админу при перезапуске бота. Первая версия бота была написана на C# и там реализовался механизм ведения табеля сотрудников по объектам (командировки). Табель вёлся самостоятельно каждым сотрудником, а руководитель мог посмотреть/отредактировать/выгрузить табель по отделу в виде Excel файла за любой месяц, однако практика показала неактуальность этой опции и, в версии Golang, она была опущена. В качестве основы БД выбран SQLite3 т.к. такая база легко редактируется/просматривается на любом устройстве. БД телефонов и отпусков загружены в in-memory таблицу, из которой максимально быстро формируется выборка по запросам. При загрузке на сервер новых файлов xls in-memory таблицы перезагружаются новыми данными. Для формирования телефонного справочника xls используется отдельно написанный парсер-конвертер, который формирует файл xls на основе HTML-страницы с телефонами с сайта предприятия. Напоминания о днях рождения (для начальников) сделаны путём проверки всех ДР с текущей датой в 7 утра ежедневно по встроенному планировщику-горутине. Репозиторий файлов и ссылок доступен по атрибутам (просмотр, добавление) у пользователя (загрузка файлов до 20Мб-ограничено Телеграмм, свыше - ссылкой на облачные диски). Так же был реализован обмен сообщениями админа с клиентом на основе его ID.