Найти в Дзене
КиберMamedov 💻🔥

Рассылка через телеграм бот прям из гугл-таблицы

Не хочешь покупать хостинг для размещения телеграм бота? Тогда ты по адресу. Читай эту статью и узнай, как экономить на хостинге. Гугл-таблицы помогут нам в решении этой интересной задачи. Любое создание телеграм бота упирается в его развертывании. Запускать на своем компьютере, это удел разработки, но развертывание требует стабильности и доступности. Покупка хостинга, это всегда неудобно. Мало того, что тратишь деньги на бота, который скорее всего не принесёт тебе никакого дохода, а создан просто для развлечения. Так еще затраты на него не единоразовые, а ежемесячные. Конечно же в первую очередь приходит в голову бесплатный хостинг на примере pythonanywhere, но там столько ограничений, что бот может часть своего функционала просто не воспроизводить. А зачем нам такой бот, если он не делает того, на что он запрограммирован. И вот мы подходим к бесплатному хостингу, только немного специфическому 🙂. Гугл таблицы позволяют создавать сценарии на языке абсолютно схожем с JavaScript, а это
Оглавление

Не хочешь покупать хостинг для размещения телеграм бота? Тогда ты по адресу. Читай эту статью и узнай, как экономить на хостинге. Гугл-таблицы помогут нам в решении этой интересной задачи.

Телеграм бот на гугл таблицах
Телеграм бот на гугл таблицах

Любое создание телеграм бота упирается в его развертывании. Запускать на своем компьютере, это удел разработки, но развертывание требует стабильности и доступности.

Покупка хостинга, это всегда неудобно. Мало того, что тратишь деньги на бота, который скорее всего не принесёт тебе никакого дохода, а создан просто для развлечения. Так еще затраты на него не единоразовые, а ежемесячные.

Конечно же в первую очередь приходит в голову бесплатный хостинг на примере pythonanywhere, но там столько ограничений, что бот может часть своего функционала просто не воспроизводить. А зачем нам такой бот, если он не делает того, на что он запрограммирован.

И вот мы подходим к бесплатному хостингу, только немного специфическому 🙂. Гугл таблицы позволяют создавать сценарии на языке абсолютно схожем с JavaScript, а это открывает широкий простор. Поэтому мы можем разработать полноценного бота на базе гугл-таблиц, здесь у нас и хостинг и БД в распоряжении в виде самих таблиц.

Мы продолжаем создание бота, который будет осуществлять рассылку зарплатной ведомости сотрудникам из гугл-таблицы. Если вы не понимаете, о чем речь, то вам обязательно нужно начать с этой статьи. Пока будете читать цикл статей, параллельно научитесь разработке требований и вернетесь к данной статье уже с новым багажом знаний.

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

Создание новых файлов со сценариями
Создание новых файлов со сценариями

Красной стрелочкой показал, как создавать новые файлы. Давайте разберем их предназначения.

  • Код - основной файл, который взаимодействует с ботом;
  • month_tab - здесь хранится код, который связан непосредственно с работой вкладки содержащей ведомость за месяц, которую необходимо рассылать сотрудникам;
  • data - файл, которых содержит данные программы: константы и переменные;
  • user_tab - здесь хранятся сценарии отвечающие за работу со вкладкой пользователи;
  • general_functions - в этой вкладке будет храниться всего одна функция, которая является общей для всех файлов.

Хочу предостеречь, кода будет очень много, поэтому укладывать все в эту статью будет громоздко. Предлагаю в этой статье осветить файлы с минимальным количеством кода, а в следующей отобразить файлы с большими объёмами.

Файл с данными программы

Начнем с базовой вещи, определим всем константы и переменные, которые нам потребуются.

Файл data
Файл data

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

Но коротко выскажусь. Константы - это не просто ячейки памяти, которые должны запоминать какую-то статичную информацию. Важно понимать, что код вы будет читать неоднократно, поэтому увидим в коде число 5 используемое в индексе при обращении в массиве. Мы вряд ли получим что-то информативное. А вот константа COLUMN_F четко дает понять, что мы работаем со столбцом F в гугл-таблице.

С переменными немного другая история, т.к. мы здесь не используем ООП, то количество аргументов в определяемых функциях необходимо сокращать путем объявления переменных в корне файла, чтобы они были доступны любой функции. Почему стоит избегать большого количества аргументов в функции? Потому что такие функции сложно понимать. Лучшая читаемая функция та, которая не имеет аргументов. Но это идеальный случай.

Ладно, мы отвлеклись на читаемость кода. Касательно данного файла я думаю объяснять каждую переменную и константу нет необходимости, т.к. они написаны таким образом, чтобы они требовали комментариев для своего объяснения.

Файл с общими(ей) функциями

Предлагаю теперь посмотреть содержимое самого большого файла general_functions.

Содержимое файла general_functions
Содержимое файла general_functions

Были бы все файлы такие большие 🙂.

Функция достаточно простая, она получает объект таблицы и возвращает двумерный массив в виде значений всей вкладки tab.

Файл с основным кодом взаимодействия с телеграм ботом

Данный файл состоит из трех функций, они уже вам знакомы, давайте их утвердим в этом файле.

Функция отправки сообщения
Функция отправки сообщения

Обращаю ваше внимание, что данная функция имеет аттрибут parse_mode, что позволяет форматировать текст для отправки сообщения в телеграм используя HTML теги.

Теперь посмотрим на функцию маршрутизатор, которая запускается через крючок из самого телеграм.

Функция маршрутизатор doPost
Функция маршрутизатор doPost

Данная функция состоит из трех маршрутов, по которым может пойти пользователь:

  1. Регистрация сотрудника через команду /start;
  2. Запуск рассылки ведомости руководителем через команду /send;
  3. Отправка обычных сообщений, которые обрабатываются другой функцией маршрутизатором setNameInTheStatment.

Эта функция находится в файле, который мы будем разбирать в следующих статьях. А сейчас осветим заключительную третью функцию в данном файле.

Функция для установления крючка с маршрутизатором
Функция для установления крючка с маршрутизатором

Напоминаю, что при каждом сохранении нужно новое развертывание, а его необходимо также применить на телеграм. Чтобы не собирать руками каждый раз ссылку, мы создали функцию, которую нужно просто выполнять. Это самая незаменимая функция во всем проекте 🙂

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

Ты самое главное подпишись, чтобы ничего не пропустить.