Боты Telegram
Создание бота Telegram
Прежде чем начинать разработку, в качестве первого шага, бота необходимо зарегистрировать в Telegram и получить его уникальный id. Для этого в Telegram существует специальный бот — @BotFather
. Отправьте ему команду /newbot
— и бот просит придумать имя новому боту. Единственное ограничение на имя — в конце оно должно оканчиваться на «bot». В случае успеха @BotFather
возвращает id бота.
Затем, в вашем приложении на Scorocode необходимо создать серверный скрипт, который будет привязан к боту и в котором будет происходить обработка событий.
Третьим шагом, необходимо создать бота в приложении. Для этого предейтите в раздел "Боты" и нажмите на кнопку "Создать бота". В открывшейся форме создания бота задайте слeдующие данные:
Параметр | Свойства | Описание |
---|---|---|
Название бота | Обязательный | Название бота приложения |
Идентификатор бота | Обязательный | Telegram id бота, полученный от '@BotFather' |
Идентификатор скрипта | Обязательный | Выберите скрипт из списка серверных скриптов приложения |
Флаг включения бота | Необязательный, по-умолчанию false |
Флаг включения бота |
Для сохранения бота, нажмите кнопку "сохранить" и ваш бот появится в списке ботов приложения. Вы в любой момент можете отредактировать любые настройки бота, заданные при его создании, нажав на кнопку редактирования бота.
Принципы работы
При включении бота создается webhook
на который приходят данные от Telegram
. Эти данные доступны в серверном скрипте в объекте pool
при каждом вызове. Полное описание полей доступно в документации к Telegram Bot API
Ответные сообщения от бота передаются при помощи метода .send(data) класса sc.Bot, где data - объект, имеющий следующую структуру:
{
'method': 'sendMessage', // метод Telegram Bot API
'method_params': { // параметры для передачи в метод
'chat_id': pool.message.chat.id.toString(),
'text': 'Hello!',
'reply_to_message_id': pool.message.message_id,
'reply_markup': keyBoard
},
}
Полное описание поддерживаемых методов доступно в документации к Telegram Bot API
Поддерживаемые методы
Поддерживаеются все методы Telegram Bot API 2.3.1, за исключением Telegram Bot Games API
Пример серверного скрипта Бота:
var sc = require('scorocode');
var client = sc.Init({
ApplicationID: "xxx", // <- заменить xxx на ключ appId приложения
JavaScriptKey: "xxx", // <- заменить xxx на ключ javascript приложения
MasterKey: "xxx" // <- заменить xxx на ключ masterKey приложения
});
var bot = new sc.Bot("321196098:AAEDbOYD6iLWsHD7w28vqf3a9oBeJAPXXpg");
var querystring = require('querystring');
// Crate new button for ReplyKeyboardMarkup
function newKeyboardButton(text, request_contact, request_location) {
var button = {
'text': text
}
if (request_contact) {
button.request_contact = request_contact
}
if (request_location) {
button.request_location = request_location
}
return button
}
// Основная логика
const sourceMessage = pool.message.text.toLowerCase()
var request = null
if (sourceMessage === '/start' || sourceMessage === 'привет') {
var keyBoard = {
'keyboard': [
[ newKeyboardButton('Привет') ],
[ newKeyboardButton('my phone number', true)],
[ newKeyboardButton('logo') ]
]
}
request = {
'method': 'sendMessage',
'method_params': {
'chat_id': pool.message.chat.id.toString(),
'text': 'Привет',
'reply_to_message_id': pool.message.message_id,
'reply_markup': keyBoard
},
}
} else if (sourceMessage === 'logo') {
request = {
'method': 'sendPhoto',
'method_params': {
'chat_id': pool.message.chat.id.toString(),
'photo': 'https://habrastorage.org/files/aab/c24/364/aabc24364c3b4e109c20ae71da646d91.jpg',
},
}
} else {
return
}
bot.send(request);