Библиотека для работы с мессенджером telegram.
Позволяет использовать сервис для управления Iskra JS: управление умным домом, вывод информации с датчиков, отправка уведомлений на телефон.
var serial = PrimarySerial; serial.setup(115200); var bot = require('@amperka/telegram').create('-УКАЖИТЕ_ЗДЕСЬ_СВОЙ_API_ТОКЕН-'); bot.on('text', msg => { let fromId = msg.from.id; let firstName = msg.from.first_name; return bot.sendMessage(fromId, 'Welcome,'+firstName+'!'); }); var wifi = require('@amperka/wifi').connect(serial, function(err) { wifi.reset(function(err) { wifi.connect(SSID, PSWD, function(err) { bot.connect(); }); }); });
Создаёт новый объект Telegram. Параметр options
— объект, содержащий поля token
и polling
. Поле token
должно содержать токен, выданный сервисом Телеграмм. Параметр options
может содержать необязательные поля:
interval: 1000
— Период опроса сервера на наличие новых сообщений (в миллисекундах).timeout: 0
— Время удержания соединения с сервером в ожидании ответа о новых сообщениях (0 — short polling, 0< — long polling).limit: 1
— Лимит новых сообщений для одного запроса в диапазоне от 1 до 100.retryTimeout: 5000
— Ограничение времени переподключения (в миллисекундах).var bot = require('telegram').create({ token: '-УКАЖИТЕ_ЗДЕСЬ_СВОЙ_API_ТОКЕН-', // Обязательное. API токен Телеграм-бота polling: { // Необязательное interval: 1000, timeout: 0, limit: 1, retryTimeout: 5000 } });
Класс для работы с Telegram-ботом. Для создания экземпляра используйте функцию create
.
Функция запускает опрос сервиса Telegram на наличие новых сообщений.
bot.connect();
Функция прекращает получение обновлений.
Функция создаёт объект-клавиатуру, который может быть передан в качестве markup
для функций sendMessage
и sendLocation
.
keyboard
— массив строк кнопок, где каждая строка представлена массивом объектов-кнопок.resize
— если true
, клавиатура изменит свой вертикальный размер для оптимального отображения. Значение по умолчанию — false
— оставляет размер клавиатуры стандартного размера.once
— если true
, клавиатура скроется сразу после первого использования, но будет по-прежнему доступна для пользователя. По умолчанию false
.selective
— если true
, сработает в двух случаях:reply
, клавиатура отобразится только у пользователя с id
равным reply
.bot.on(['/start', '/back'], msg => { var keyboard = bot.keyboard([ ['/buttons', '/inlineKeyboard'], ['/start','/hide'] ], { resize: true }); return bot.sendMessage(msg.from.id, 'Keyboard example.', { markup: keyboard }); });
Создаёт объект-кнопку типа location
или contact
. Нажатие кнопки location
передаст координаты пользователя боту. Нажатие кнопки contact
передаст номер телефона пользователя.
bot.on('text', msg => { let markup = bot.keyboard([ [bot.button('contact', 'Your contact'), bot.button('location', 'Your location')] ], { resize: true }); return bot.sendMessage(msg.from.id, 'Button example.', { markup }); }); bot.on(['location', 'contact'], (msg, self) => { return bot.sendMessage(msg.from.id, `Thank you for ${ self.type }.`); });
Создаёт объект-кнопку InlineKeyboardButton
.
Создаёт объект встроенную клавиатуру.
var keyboard = bot.inlineKeyboard([ [ bot.inlineButton('callback', { callback: 'this_is_data' }), bot.inlineButton('inline', { inline: 'some query' }) ], [ bot.inlineButton('url', { url: 'https://telegram.org' }) ] ]); return bot.sendMessage(msg.from.id, 'Inline keyboard example.', { markup: keyboard });
Библиотека использует стандартные для Telegram API имена методов.
Функция отправляет сообщение с текстом text
пользователю chat_id
. Третьим параметром может передаваться объект с полями:
notify
— если установлен в false
, пользователи iOS не получат уведомление о сообщении, а пользователи Android получат уведомление без звука.reply
— id
сообщения, на которое отправляется ответ. markup
— JSON-сериализованный объект с объектом-клавиатурой.Функция отправляет ответ на запрос пользователя, произведённый со "встроенной" клавиатуры.
callback_query_id
— уникальный идентификатор запроса, на который отправляется ответ.text
— текст уведомления. 0-200 символов.show_alert
— показывать уведомления или нет. По умолчанию false
.
Функция отправляет сообщение пользователю chat_id
с координатами latitude
(широта) и longitude
(долгота).
// обменяться координатами с ботом bot.on('location', (msg, self) => { return bot.sendLocation(msg.from.id, [55.743853, 37.656175]); });
Используйте bot.on(<event>, <function>)
для обработки событий в процессе работы.
События:
/*
— любая команда/<cmd>
— определённая командаconnect
— бот подключился к Telegramdisconnect
— бот отключилсяupdate
— обновлениеcallbackQuery
— пришёл ответ от встроенной кнопкиСобытия для сообщений:
contact
– данные пользователяlocation
– данные местоположенияtext
— текстовое сообщение*
— любой тип сообщений
Для обработки команды с параметрами просто добавьте слеш /
:
bot.on('/hello', msg => { var params = msg.text.split(' '); return bot.sendMessage(msg.from.id, 'Hello, '+params[1]+' '+params[2]+'!'); });
Интерфейс библиотеки основан на библиотеке telebot.
Подробное описание API Telegram.