С помощью всего 8 строк кода создайте и разверните бессерверного бота для телеграмм с использованием JavaScript, не тратя ни цента.

Однако я должен вас предупредить, хотя код прост, установка вроде долгая.

Firebase

Если вы не слышали о Firebase, это Backend as a Service (BaaS), который имеет собственную интегрированную базу данных в реальном времени, веб-хостинг, аутентификацию пользователей и многие другие услуги. В этом руководстве мы будем использовать только одну услугу - Firebase Cloud Functions. Перейдите в Firebase Console, чтобы создать свою учетную запись и начать новый проект.

Убедитесь, что ваш тарифный план Firebase установлен на тарифный план Blaze с оплатой по мере использования, чтобы серверы Telegram могли взаимодействовать с вашим сервером Firebase Cloud Functions. Не волнуйтесь, существует бесплатный уровень из 2 000 000 вызовов функций в месяц, поэтому вам не нужно ни за что платить, если только вы не решите отправить своему боту 2 миллиона сообщений в месяц (теперь это является достижением).

Телеграф

В этом руководстве используется фреймворк Telegraf. Эта структура значительно упрощает процесс написания ботов для телеграмм всего за несколько элегантных строк кода, что делает создание ботов гораздо более приятным процессом. Если вы когда-нибудь застрянете за пределами этого руководства, не забудьте прочитать документацию Telegraf.

Предпосылки

  1. В этом руководстве предполагается, что у вас установлен Node.jsNPM, который поставляется вместе с Node.js).
  2. Не забудьте сначала создать проект Firebase, установить тарифный план на План Blaze и записать используемое название проекта.

Настраивать

1) Установите Firebase CLI, запустив:

npm install -g firebase-tools

2) Войдите в Firebase, используя свою учетную запись Google, запустив:

firebase login

3) Создайте новый каталог проекта для хранения всего кода и необходимых файлов.

mkdir telegram-bot-firebase
cd telegram-bot-firebase

4) Перейдите в корневой каталог проекта и инициализируйте новый проект Firebase, запустив:

firebase init

Когда будет предложено указать необходимые функции Firebase CLI, выберите только Functions, поскольку это единственная функция, которая нам нужна. Вот полный список моих ответов, если вы просто хотите продолжить:

Are you ready to proceed? Yes
Which Firebase CLI features do you want to set up for this folder? Functions: Configure and deploy Cloud Functions
Select a default Firebase project for this directory: <YOUR_PROJECT_NAME>
What language would you like to use to write Cloud Functions? JavaScript
Do you want to use ESLint to catch probable bugs and enforce style? Yes
Do you want to install dependencies with npm now? Yes

5) После завершения установки нам нужно установить еще больше зависимостей.

Перейдите в каталог /functions:

cd functions

Затем установите Telegraf:

npm install telegraf

6) Наконец-то пришло время для кода! Запустите вашу любимую среду IDE, чтобы отредактировать index.js файл. Вот весь код, необходимый для работы простого бота:

Если вы новичок в этом бизнесе npm и вас пугает количество файлов в вашем каталоге, просто знайте, что файл index.js - единственный файл, который вам когда-либо понадобится отредактировать для этого руководства (и для вашего бота, чтобы это важно).

7) Если у вас острый взгляд, вы могли заметить переменную окружения functions().config.telegrambot.key в приведенном выше коде. На самом деле это API-ключ телеграмм-бота, который нам еще предстоит создать.

Итак, давайте перейдем к @BotFather в Telegram, чтобы создать нового бота. Следуйте инструкциям на BotFather и обратите внимание на токен HTTP API, который он отправляет вам при создании вашего бота.

8) Теперь мы можем настроить переменную среды Firebase для хранения ключа API вашего бота (вы можете просто поместить ключ API прямо в код, но лучше никогда не кодировать ключи API жестко). Теперь выполните следующее, заменив <YOUR_BOT'S_API_KEY> фактическим ключом API из шага 7.

firebase functions:config:set telegrambot.key="<YOUR_BOT'S_API_KEY>"

Убедитесь, что пара ключ-значение действительно была установлена, выполнив:

firebase functions:config:get

Обратитесь к официальной документации Firebase, если хотите узнать больше о переменных среды.

9) Теперь мы можем развернуть эту функцию в Firebase Functions, выполнив:

firebase deploy --only functions

10) Но подождите! Мы еще не закончили. Нам еще предстоит настроить конечную точку нашего бота для взаимодействия с нашими функциями Firebase.

Перейдите в Консоль Firebase и нажмите на вкладку Функции. Вы должны увидеть таблицу с функцией под названием bot (или как вы решили ее назвать) вместе с URL в столбце Триггер:

В своем терминале запустите следующее, снова заменив <YOUR_FIREBASE_FUNCTIONS_URL> URL, который мы только что нашли, а <YOUR_BOT'S_API_KEY> фактическим ключом API вашего бота:

curl -F "<YOUR_FIREBASE_FUNCTIONS_URL>" https://api.telegram.org/bot<YOUR_BOT'S_API_KEY>/setWebhook

11) И вуаля! Теперь, когда вы отправляете «привет» своему телеграм-боту, он отвечает «привет», как и в нашем коде в строке 6.

Теперь это может показаться сложной начальной настройкой. Однако с этого момента все, что вам нужно сделать, чтобы внести изменения, - это отредактировать и сохранить index.js, запустить firebase deploy --only functions, и все должно работать должным образом.