Источник: Nuances of Programming
Начало работы
В первую очередь нужно зарегистрировать бота. Сделать это можно в приложении Telegram через BotFather .
Нажмите Start в чате и просмотрите доступные варианты. Вам понадобится выбрать название для бота и имя пользователя, а затем можно сохранять ключ.
После этого бот начнет отображаться в поиске Telegram — для этого просто введите @<bot-username> . Однако пока никаких действий выполнять он не будет.
Переходим к коду. Для работы с API Telegram воспользуемся пакетом NPM. Устанавливаем его с помощью команды yarn add node-telegram-bot-api .
Пакет готов к работе. Добавляем токен в переменную:
const TelegramBot = require ('node-telegram-bot-api' )
const token = 'YOUR_TELEGRAM_BOT_TOKEN'
const bot = new TelegramBot(token, { polling : true })
Теперь можно приступать к настройке бота. Ниже показан простой пример:
onText позволяет реагировать на сообщения, соответствующие регулярным выражениям. В этом варианте /\/echo (.+)/ означает, что вам нужно написать /echo , а следом за ним какой-либо текст.
Переменная chatId представляет ID пользователя, который используется для отправки сообщения. Чтобы бот мог самостоятельно выполнять эту функцию, ID должны где-то храниться.
bot.sendMessage применятся для отправки сообщений. Строка resp посылается после команды echo . Бот отправляет обратно то, что он получает.
Запускаем node app.js , открываем чат с ботом и отправляем ему следующее.
Автоматическая отправка сообщений
Как было сказано выше, чтобы отправлять пользователям сообщения, понадобится chatId , который нужно где-то хранить. В приложениях для этого стоит выбрать энергонезависимые хранилища, такие как MySQL, MongoDB и любые другие базы данных.
В этом примере мы будем хранить идентификаторы в массиве. Пользователь может зарегистрироваться в боте с помощью /register . После этого он будет получать сообщения.
Бот отправляет сообщение каждому пользователю один раз в секунду. Для этого достаточно пройтись по массиву с циклом for .
После отправки /register боту мы начинаем получать много спама.
Реакция на все сообщения
bot.onText позволяет реагировать на сообщения, соответствующие регулярному выражению. Чтобы обрабатывать любой входящий текст, нужно воспользоваться bot.on("message") — он запускается каждый раз, когда кто-то отправляет сообщение.
Вот простой пример. Бот реагирует на каждое сообщение, но отвечает, только когда пользователь присылает текст “dog”.
Отправка опросов
В Telegram можно обменивать не только стикерами, видео и текстом, но и опросами. Создавать их очень просто.
bot.sendPoll(chatId, 'Is Telegram great?' , [‘Sure’, ‘Of course’])
Сразу после ID мы передаем вопрос, а затем идет массив возможных вариантов ответов. Вы можете добавить больше опций по желанию.
Telegram-бот, созданный с помощью Node.js, готов.
Читайте также:
Перевод статьи Louis Petrik : How To Build a Telegram Bot With Node.js in Under 3 Minutes