Telegram Bot API и NodeJS

Ищем библиотеку для работы с Telegram Bot API

Влад Скуришин
2 min readJan 21, 2018

Недавно мы решили написать простенькое приложение, основная задача которого поиск команд на футбольные матчи. Изначально наш выбор пал на реализацию мобильного приложения с помощью React Native, но немного поразмыслив, мы пришли к выводу, что использовать Telegram Bot API будет намного проще для MVP.

Создавать свой велосипед желания не было, поэтому мы начали поиски open source библиотеки на github.

Руководствуясь количеством звездочек, мы получили два “потенциальных клиента”: node-telegram-bot-api, telegraf. По сути они ничем не отличаются, но в telegraf реализовано подобие state-manager’а, поэтому выбрали его.

Создание бота

Первоначально необходимо создать бота с помощью BotFather (бот для создания ботов).

Введите команду /newbot и следуйте инструкциям.

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

После создания вы получите token (примерно такого вида: 123456789:AbCdfGhIJKlmNoQQRsTUVwxyZ) для работы с API бота.

Telegraf

Итак, мы сгенерировали token для нашего бота, давайте добавим ему чутка мозгов с помощью Telegraf.

Создание бота. Первый параметр - сгенерированный нами токен.

Для вывода приветственного сообщения используем функцию start, в которую передаем обработчик. Например можем просто вывести “Добро пожаловать!”.

Обработать команды в стиле /findmatch, можно с помощью функции command.

Пример обработки команды /findmatch

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

Сценарий создания матча

Как видите, при выполнении события create (пользователь нажал на кнопку “Создать матч”) мы начинаем обработку с помощью сцены, последовательно переходя с этапа на этап: пользователь выбирает тип матча, затем время проведения и т.д.

Обработка нажатия кнопки “Создать матч”

Переход на следующий этап происходит с помощью функции next, а назад с помощью функции back.

Вы можете так же глянуть пример из официальной документации Telegraf: клац.

Клавиатура

Еще одна интересная вещь, на которой построен наш бот — inline-клавиатура.

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

Итого

Библиотек для работы с Teleagram API в nodeJS очень много, поэтому сейчас достаточно просто поднять своего бота. Особняком стоит Telegraf, который позволяет использовать как сам API на всю катушку, так и предоставляет дополнительные возможности в виде Scene, WizardScene.

По мере работы над проектом я буду дополнять информацию о том, как работать Telegraf.

--

--

Responses (6)