Не хочешь покупать хостинг для размещения телеграм бота? Тогда ты по адресу. Читай эту статью и узнай, как экономить на хостинге. Гугл-таблицы помогут нам в решении этой интересной задачи.
Любое создание телеграм бота упирается в его развертывании. Запускать на своем компьютере, это удел разработки, но развертывание требует стабильности и доступности.
Покупка хостинга, это всегда неудобно. Мало того, что тратишь деньги на бота, который скорее всего не принесёт тебе никакого дохода, а создан просто для развлечения. Так еще затраты на него не единоразовые, а ежемесячные.
Конечно же в первую очередь приходит в голову бесплатный хостинг на примере pythonanywhere, но там столько ограничений, что бот может часть своего функционала просто не воспроизводить. А зачем нам такой бот, если он не делает того, на что он запрограммирован.
И вот мы подходим к бесплатному хостингу, только немного специфическому 🙂. Гугл таблицы позволяют создавать сценарии на языке абсолютно схожем с JavaScript, а это открывает широкий простор. Поэтому мы можем разработать полноценного бота на базе гугл-таблиц, здесь у нас и хостинг и БД в распоряжении в виде самих таблиц.
Мы продолжаем создание бота, который будет осуществлять рассылку зарплатной ведомости сотрудникам из гугл-таблицы. Если вы не понимаете, о чем речь, то вам обязательно нужно начать с этой статьи. Пока будете читать цикл статей, параллельно научитесь разработке требований и вернетесь к данной статье уже с новым багажом знаний.
А мы переходим к разработке приложения. В первую очередь начнем с того, что создадим файловую структуру, т.к. весь код хранить в одном файле будет абсолютно неправильно.
Красной стрелочкой показал, как создавать новые файлы. Давайте разберем их предназначения.
- Код - основной файл, который взаимодействует с ботом;
- month_tab - здесь хранится код, который связан непосредственно с работой вкладки содержащей ведомость за месяц, которую необходимо рассылать сотрудникам;
- data - файл, которых содержит данные программы: константы и переменные;
- user_tab - здесь хранятся сценарии отвечающие за работу со вкладкой пользователи;
- general_functions - в этой вкладке будет храниться всего одна функция, которая является общей для всех файлов.
Хочу предостеречь, кода будет очень много, поэтому укладывать все в эту статью будет громоздко. Предлагаю в этой статье осветить файлы с минимальным количеством кода, а в следующей отобразить файлы с большими объёмами.
Файл с данными программы
Начнем с базовой вещи, определим всем константы и переменные, которые нам потребуются.
Если вам кажется это количество констант избыточным, то напишите в комментарии, тогда я напишу цикл статей о том, как писать читаемый код.
Но коротко выскажусь. Константы - это не просто ячейки памяти, которые должны запоминать какую-то статичную информацию. Важно понимать, что код вы будет читать неоднократно, поэтому увидим в коде число 5 используемое в индексе при обращении в массиве. Мы вряд ли получим что-то информативное. А вот константа COLUMN_F четко дает понять, что мы работаем со столбцом F в гугл-таблице.
С переменными немного другая история, т.к. мы здесь не используем ООП, то количество аргументов в определяемых функциях необходимо сокращать путем объявления переменных в корне файла, чтобы они были доступны любой функции. Почему стоит избегать большого количества аргументов в функции? Потому что такие функции сложно понимать. Лучшая читаемая функция та, которая не имеет аргументов. Но это идеальный случай.
Ладно, мы отвлеклись на читаемость кода. Касательно данного файла я думаю объяснять каждую переменную и константу нет необходимости, т.к. они написаны таким образом, чтобы они требовали комментариев для своего объяснения.
Файл с общими(ей) функциями
Предлагаю теперь посмотреть содержимое самого большого файла general_functions.
Были бы все файлы такие большие 🙂.
Функция достаточно простая, она получает объект таблицы и возвращает двумерный массив в виде значений всей вкладки tab.
Файл с основным кодом взаимодействия с телеграм ботом
Данный файл состоит из трех функций, они уже вам знакомы, давайте их утвердим в этом файле.
Обращаю ваше внимание, что данная функция имеет аттрибут parse_mode, что позволяет форматировать текст для отправки сообщения в телеграм используя HTML теги.
Теперь посмотрим на функцию маршрутизатор, которая запускается через крючок из самого телеграм.
Данная функция состоит из трех маршрутов, по которым может пойти пользователь:
- Регистрация сотрудника через команду /start;
- Запуск рассылки ведомости руководителем через команду /send;
- Отправка обычных сообщений, которые обрабатываются другой функцией маршрутизатором setNameInTheStatment.
Эта функция находится в файле, который мы будем разбирать в следующих статьях. А сейчас осветим заключительную третью функцию в данном файле.
Напоминаю, что при каждом сохранении нужно новое развертывание, а его необходимо также применить на телеграм. Чтобы не собирать руками каждый раз ссылку, мы создали функцию, которую нужно просто выполнять. Это самая незаменимая функция во всем проекте 🙂
На сегодня все, в дальнейшем будем разбирать гигантские файлы, которые выделим в отдельных статьях. Если ты ничего не понял, значит ты не пошел читать цикл статей и для тебя здесь все чуждо. Еще раз напоминаю, что тебе просто необходимо прочитать цикл статей перед началом прочтения данной статьи.
Ты самое главное подпишись, чтобы ничего не пропустить.