Sunday, September 30, 2018

"Hello, world!" бот за 10 минут

Вступление


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

Шаблон, собственно, уже создан. Вот он:
https://github.com/VadimCpp/myfirstbotbot

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


Инструкция


0. Предусловия


Прежде чем перейти к пункту 1, проверьте чек-лист:

  1. У вас есть аккаунт Github (если нет - зарегистрироваться);
  2. Вы умеете работать в командной строке (если нет - изучить навигацию по системе, выполнение команд, создание/копирование/удаление файлов);
  3. У вас установлен Telegram (если нет - установить);
  4. Уметь создавать боты в Telegram (если нет - изучить @BotFather);

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


1. Скачать исходники


Открыть командную строку перейти в рабочий каталог и выполнить команду:
git clone https://github.com/VadimCpp/myfirstbotbot.git

После этого исходники с сервера будут скачаны на компьютер. Примерно лог будет выглядеть так:



После этого необходимо убедиться в том что файлы скачаны. Перейти в папку проекта и вывести список файлов. 
Выполнить команды для OS X:
cd fxswap_bot/
ls -l

Выполнить команды для Windows:
cd fxswap_bot/
dir

Результат примерно такой:



2. Создать телеграм бот


Запустить бот для создания ботов. Перейти по ссылке:
Или открыть бот непосредственно в приложении: @BotFather

Необходимо создать бота и получить его токен. Пример:



3. Создать приложение Heroku


Теперь необходимо создать приложение Heroku.



4. Настроить приложение Heroku


Теперь необходимо настроить приложение. Первым делом нужно на вкладке “Deploy” выполнить указания раздела “Deploy using Heroku Git”:


Необходимо связать исходники с локального компьютера с приложением Heroku. Выполнить команды:
heroku git:remote -a your_heroku_app_name
git push heroku master

Первая команда установит связь между исходниками и приложением, а вторая команда отправит локальные исходники на сервер приложения Heroku.

Результат команд должен выглядеть примерно так:




5. Прописать переменные


Далее на странице Settings необходимо прописать переменные:


Сначала пример, а ниже - какое значение прописывать для каждой переменной. Пример:


5.1. Токен бота


BOT_ACCESS_TOKEN - токен бота. Получить значение в Телеграмме у бота @BotFather.
Пример:


5.2. Ссылка для мессенджера телеграм.


HEROKU_URL - это ссылка на сайт. Ее можно узнать нажав на кнопочку “Open app”.
Вот она:


Пример:

https://myfirstbotbot.herokuapp.com/

5.3. Тип деплоя


NODE_ENV - всегда “production”

Это означает, что бот запускается в боевом режиме (а не в режиме разработки).


6. Запустить бот


Необходимо запустить бот и убедиться что он работает. Открыть вкладку “View logs” и затем нажать кнопку “Restart all dynos”



На скрине видно запись:
[MyFirstBotApp]: Create Application...

Это означает что бот запущен. Еще совсем чуточку…

...


Откройте бота и убедитесь что он работает:


Поздравляем!
Вы только что создали свой первый телеграм бот на node.js


Итого


Исходники бота:
https://github.com/VadimCpp/myfirstbotbot

Бот:
https://t.me/myfirstbotbot

Update 2019-08-11:
Бот построен на основе библиотеки https://github.com/yagop/node-telegram-bot-api
Есть еще другая библиотека: https://github.com/telegraf/telegraf , но до нее руки пока так и не дошли. 🙂