Пишем Telegram бота на JavaScript. Вводная
Вводная
Данный текст планируется как цикл статей, первая, она же пилотная, охватит лишь базовые объяснения, установки и настройки, в зависимости от реакции приму решение писать ли дальше. Планируется, что в первом боте мы создадим простые команды, которыми будем получать текущий курс Bitcoin из разных источников, далее хотелось бы рассмотреть как делать кнопочное меню, где смотреть emoji для кнопок и как работать с api VK.com, а так же как логировать ошибки в файл. Итак, включайте саундтрек, поехали.
Экосистема
Мы будем использовать nodejs на windows. Почему? Начать просто. Помимо этого в качественных проектах рассчитанных на большую аудиторию используются WebHooks, нужен SSL, подписать сертификат, но это можно изучить самостоятельно позже, SSL получить бесплатно на год, а на само построение бота не особо влияет.
Давайте подготовим наш компуктер, идём на nodejs.org и качаем стабильную версию, устанавливаем и… мы восхитительны. Далее, создаём папку нашего проекта, например, cryptobot, открываем в ней консоль или powershell и вбиваем команду:
npm init -f
Ключ -f означает вбить все настройки по-умолчанию автоматически.Следующей командой установим ядро для Api Telegram:
npm i -D node-telegram-bot-api
i - просто сокращение Install, -D сохранить в наши зависимости (dependencies) файла package.json.
Следующим нашим действием будет создание файла index.js. Запишем код:
var
TelegramBot = require('node-telegram-bot-api');
// Тем самым подключаем api
var
TOKEN = ''
// Пока оставим пустым, далее мы вернемся к этой константе
var
botOptions = { polling:
true
};
var
bot =
new
TelegramBot(TOKEN, botOptions);
// Создаём экземпляр объекта бота через конструктор, если по простому, то мы будем обращаться к bot за нашими методами api.
Далее самое важное, метод, который позволит нам получать и обрабатывать сообщения, посылаемые боту:
bot.on('text',
function
(msg) {
//msg - Объект, который возвращает этот метод, когда приходит сообщение, посмотрите через консоль из чего он состоит. Далее получим id чата, чтобы разделять написавших и само сообщение
var
messageChatId = msg.chat.id;
var
messageText = msg.text;
if
(messageText === '/start') {
// /start это первая команда, которая посылается любому боту
bot.sendMessage(messageChatId, 'Добро пожаловать, ну hello world');
// метод, посылающий сообщение в чат, первым аргументом тот самый id, вторым - сообщение, есть и третий, но о нём в следующем уроке, если вы поддержите статью.
} });
С черновой заготовкой всё, перейдём к регистрации самого бота. Идём в телеграм и ищем @BotFather
Пишем ему команду
/newbot.
После бот попросит указать название бота, наберем btccurrency. Следующим шагом нужно указать имя бота, оно обязательно должно заканчиваться на bot: btccur_bot - это то, как мы будем искать бота @btccur_bot
Далее бот сгенерирует специальный ключ, токен:
271342174:AAFY4-V7TY7Ux5V7liK_TpdmFM7W87TzTuM
Помните оставили в коде пустую константу TOKEN? Вот давайте вернемся и впишем значение:
var TOKEN = '271342174:AAFY4-V7TY7Ux5V7liK_TpdmFM7W87TzTuM'
Готово. Теперь можем запустить бота и протестировать. Открываем консоль, пишем node index, если ошибки не посыпались,то всё хорошо(консоль не закрываем), далее возвращаемся в telegram и ищем бота в поиске @btccur_bot открываем и нажимаем\пишем
/start
Эпилог
Используйте свои токены и имена для ботов, так как мои лишь для демонстрации в статье. Буду рад советам по оформлению, особенно кода. Ставьте голос, подписывайтесь, шерьте в сетях, всем спасибо!