Предыстория со вступлением
В силу невозможности терпеть постоянные падения от Telegram бота 1С для Документооборота, сотрудники предприятия пришли с просьбой реализовать своего бота, который (изначально) должен был только уведомлять о приходе новых мероприятий, однако в результате получился довольно неплохой инструмент. Итак, демонстрирую:
Как начать пользоваться?
Аутентификация происходит с использованием логина и пароля от 1С ДО, при неверном логине\пароле вернет ошибку, предложит пройти аутентификацию заново:

Первичная настройка + дополнительный функционал пользователей
После успешной аутентификации выпадает главное меню, первое что рекомендуется сделать - указать время прихода утренних уведомлений, а так же время, за которое до начала мероприятия придет уведомление (Пункт "Настройка получения уведомлений"):

Финально, можем проверить корректность установленных данных в пункте "Информация о моем профиле":

Так же дополнительным функционалом является пункт "Сообщить об ошибке", в котором, неожиданно, пользователю предоставляется возможность гневно уведомить администратора о найденной проблеме:

Основная часть
Пункт "Получить информацию о предстоящих мероприятиях" выведет пользователю календарь, с разносом дат по дням недели согласно действующему календарю с возможностью перехода на другие месяцы:

При выборе даты бот постучится в 1С с поиском мероприятий, используя выбранную дату и ФИО пользователя. Заведем пару тестовых мероприятий и убедимся в этом:


Также посмотрим на утреннее уведомление о данных мероприятиях (время в коде поменял на удобное для себя, не удивляйтесь, что они установлены на 07:00, а пришли в 10:19):

Создание, изменение, удаление, редактирование участников
Уведомление о созданном мероприятии придет участникам после нажатия кнопки "Отправка приглашений" и будет выглядеть следующим образом:

Как мы можем наблюдать, снизу отображаются 2 кнопки - "Буду" и "Не буду". При нажатии на одну из них данные улетят обратно в ДО, а пользователя бросит обратно в главное меню:


Если еще раз нажмем кнопки в этом же мероприятии - соответственно данные так же изменятся и в ДО:


(Не редактирую существующий выброс в главное меню, а вывожу повторно, в силу того, что драка с callback-ами в боте это дай бог здоровья каждому).
Теперь отредачим время и название мероприятия:

Получим уведомление от бота об изменении (+ бонусом напоминание за 10 минут):

Теперь удалим себя, после чего добавим, для получения 2 уведомлений:


Соответственно, при удалении мероприятия все пользователи получают уведомление:

Плюшки для админа
Бонусом (реализовывалось для себя) написано несколько удобных функций:
Сообщение конкретному пользователю

Сообщение всем пользователям (поддерживает разные медиа):

Сообщение о блокировке базы (было самым первым, по сути с появлением циркулярной рассылки больше не нужно)

===================================================================
Что лежит внутри архива:
- Файл main.py (весь основной код, 1487 строк, разнос не делал, ибо по непонятной причине рабочий сервер плевал на импорты разных .py файлов, кроме config)
- Файл config.py (внутри основные настроечные данные - api бота, логин + пароль для учетки 1С, с которой будут биться основные запросы в базу, URL базы).
- Файл install.bat (запускается после установки Python, устанавливает все необходимые библиотеки для работы бота)
- Файл run_helper.bat (запускается после install.bat, стартует бота)
- Файл TelegramBotIntegration.cfe (расширение для ДО, в нем вся магия работы с ботом)
Что появится после запуска:
- Файл users.db (БД пользователей, заполняется автоматически после аутентификации в боте)
- Файл events.db (БД мероприятий, заполняется автоматически ботом при приходе мероприятий, изменяется так же, удаляется при удалении мероприятия)
Основные технические моменты:
- Бот работает с 2 БД через SQLite, СУБД не требуется, по сути является встройкой для Python
- Механизм уведомлений работает через планировщик заданий SchedulerAP, ключом является GUID мероприятия + chat_id пользователя, так же добавляется, изменяется и удаляется по условию мероприятий
- Расширение использует WEB-сервис, в нем 4 метода, к ним стучится бот по необходимости
- Бот разворачивает сервер Flask, к нему стучится 1С при действии с мероприятиями, работает в 16 потоков на порте 35525
Что потребуется настроить:
- В файле config.py - API бота, WSDL расширения, Логин\пароль учетки для действий в 1С
- В файле main.py - имя host, если бот будет крутиться не на одном сервере с 1С, а на отдельной машине + chat_id админа бота (строка 1378)
- В расширении - в общем модуле имя host, если бот будет крутиться не на одном сервере с 1С, а на отдельной машине, то же самое в справочнике "Мероприятия" в модуле объекта
- Желательно добавить файл run_helper в системные процессы, чтобы бот автоматически перезапускался при перезапуске системы и не рубался в случае бездействия
Проверено на следующих конфигурациях и релизах:
- Документооборот КОРП, редакция 3.0, релизы 3.0.16.30, 3.0.15.41
Вступайте в нашу телеграмм-группу Инфостарт