Найти тему
SoftSAR

Телеграм бот заполнения документов

В данной статье мы напишем полезного телеграм бота, который будет заполнять шаблонные документы и отправлять их к нам в чат.

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

Используемые инструменты: Python, aiogram, docxtpl.

Устанавливаем необходимые библиотеки через командную строку:

pip install aiogram
pip install docxtpl

Для начала нам необходимо зарегистрировать нашего бота.

Переходим в телеграм находим @BotFather.
Пишем команду new bot и придумываем имя для бота, затем создаем ссылку для бота. После чего получаем токен для нашего бота.

Импортируем необходимые библиотеки для работы. Модуль docxtpl предназначен для работы с файлами Word, пакеты из библиотеки aiogram - предназначен для работы с API телеграм, в файле Telegram_token.py создаем переменную token в которую записываем токен. Для защиты токена, его необходимо хранить в виде хеша более подробно о том, как хешировать пароли и логины, ключи читайте в статье.

Импортируем необходимые модули и библиотеки.

Создаем структуру проекта. Структура состоит из функции отслеживающей команды и функций отслеживающих введенные сообщения, функции заполнения шаблонного документа. Класса формы, содержащей названия полей заполняемого документа. Инициализируем объекты бота и диспетчера:

Команда, с которой начинается общение пользователя с ботом - /start. Поэтому научим нашего бота реагировать на эту команду. Создаем message_handler и объявляем там функцию ответа.

Мы воспользовались методом send_message и передали в него два обязательных параметра - ID чата, куда отправляем, и сам текст сообщения. Их мы взяли из объекта message, который является представителем класса Message.

Запишем ответы пользователя и запросим следующие поля документа. Методом send_message отправляем пользователю сообщения, а методом message.text получаем от пользователя сообщение и записываем его в словарь. По очереди запрашиваем и записываем все необходимые от пользователя данные. После выводим в виде сообщения все полученные от пользователя данные.

Создаем функцию create_doc(), которая принимает в качестве параметра словарь с полями документа и возвращает путь к заполненному шаблонному документу. Заполняем шаблонный документ данными переданными пользователем. Методом DocxTemplate открываем шаблонный документ, создаем словарь context в качестве ключей выступают названия заполняемых полей документа, методом render() осуществляем заполнение полей шаблонного документа. Методом save() сохраняем заполненный документ и возвращаем путь к сохраненному документу.

Весь код проекта. Вначале мы импортируем необходимы библиотеки. Приветствуем пользователя в нашем телеграмм боте и запрашиваем у него необходимые данные для заполнения шаблонного документа. После вызываем функцию заполнения шаблонных документов. Открываем шаблон, создаем словарь context в качестве ключей выступают названия заполняемых полей документа, открываем шаблон, заменяем переменные в файле шаблона данными из словаря. Сохраняем заполненный шаблонный документ. Отправляем документ пользователю и удаляем его.

На выходе при исполнении программы мы сможем с помощью телеграмма заполнять шаблонные документы и получать их в наш чат. Более подробно о подготовке шаблонного документа читайте в нашей статье Автозаполнение документов в word с помощью Python. Телеграмм бот готов к использованию. Бот можно запускать на компьютере, или для обеспечения его автономной работы загрузить на сервер. В следующих статьях, мы рассмотрим выбор сервера и его настройку и запуск бота на сервере.

С уважением, Карян Армен.
Занимаюсь профессиональной разработкой прикладных программ на Python.
email SoftSAR@yandex.ru
Telegram @SoftSar_am