Содержание

@amperka/telegram

Библиотека для работы с мессенджером 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();
    });
  });
});

Функции модуля

create(options)

Создаёт новый объект Telegram. Параметр options — объект, содержащий поля token и polling. Поле token должно содержать токен, выданный сервисом Телеграмм. Параметр options может содержать необязательные поля:

var bot = require('telegram').create({
  token: '-УКАЖИТЕ_ЗДЕСЬ_СВОЙ_API_ТОКЕН-', // Обязательное. API токен Телеграм-бота
  polling: { // Необязательное
    interval: 1000,
    timeout: 0,
    limit: 1,
    retryTimeout: 5000
  }
});

Telegram

Класс для работы с Telegram-ботом. Для создания экземпляра используйте функцию create.

Telegram.connect()

Функция запускает опрос сервиса Telegram на наличие новых сообщений.

bot.connect();

Telegram.disconnect()

Функция прекращает получение обновлений.

Telegram.keyboard([array of arrays], {resize, once, selective})

Функция создаёт объект-клавиатуру, который может быть передан в качестве markup для функций sendMessage и sendLocation.

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 });
 
});

Telegram.button(<location | contact>, <text>)

Создаёт объект-кнопку типа 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 }.`);
});

Telegram.inlineButton(<text>, {url | callback | inline})

Создаёт объект-кнопку InlineKeyboardButton.

Telegram.inlineKeyboard([array of arrays])

Создаёт объект встроенную клавиатуру.

  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:

Библиотека использует стандартные для Telegram API имена методов.

Telegram.sendMessage(chat_id, text, {reply, markup, notify})

Функция отправляет сообщение с текстом text пользователю chat_id. Третьим параметром может передаваться объект с полями:

Telegram.answerCallback(callback_query_id, text | undefined, show_alert)

Функция отправляет ответ на запрос пользователя, произведённый со "встроенной" клавиатуры.

Telegram.sendLocation(chat_id, [latitude, longitude], {reply, markup, notify})

Функция отправляет сообщение пользователю chat_id с координатами latitude (широта) и longitude (долгота).

// обменяться координатами с ботом
bot.on('location', (msg, self) => {
  return bot.sendLocation(msg.from.id, [55.743853, 37.656175]);
});

События

Используйте bot.on(<event>, <function>) для обработки событий в процессе работы.

События:

События для сообщений:

Для обработки команды с параметрами просто добавьте слеш /:

bot.on('/hello', msg => {
  var params = msg.text.split(' ');
  return bot.sendMessage(msg.from.id, 'Hello, '+params[1]+' '+params[2]+'!');
});

Интерфейс библиотеки основан на библиотеке telebot.

Подробное описание API Telegram.