Пишем 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

Эпилог

Используйте свои токены и имена для ботов, так как мои лишь для демонстрации в статье. Буду рад советам по оформлению, особенно кода. Ставьте голос, подписывайтесь, шерьте в сетях, всем спасибо!


Comments 7


Приветствую Вас и желаю успехов на платформе Голос!

В этой статье вы сможете найти ответы на большинство вопросов, возникающих у новичков. Также большую подборку ссылок на полезные материалы вы можете найти по этой ссылке
Оперативно получить помощь, вы можете присоединившись к нашему сообществу в Телеграм

Буду признателен, если расскажете, откуда Вы узнали о платформе Голос (ответьте цифрой):
1) увидел в Facebook
2) увидел в ВКонтакте
3) из поиска Google
4) из поиска Яндекс
5) из Steem
6) рассказал друг
7) другое (укажите в комментарии)

Чтобы быстрей освоится, присоединяйтесь к конкурсу для новичков, который идёт прямо сейчас!

10.06.2017 08:00
0

6

10.06.2017 08:19
0

Как раз начал джаваскрипт осваивать, твоя статья как нельзя кстати, теперь будет с чем поиграться. Спасибо тебе.

16.06.2017 12:54
0

Спасибо, но я не затрагивал аспекты для новичков, если что спрашивайте, а вообще тут @rassen пишет замечательнейшие статьи для освоения и в ООП в принципе, что очень важно.

16.06.2017 18:39
0

Благодарю за наводку. У меня есть некоторый опыт написания telegram ботов на python, было интересно посмотреть как выглядит подобная программа на другом языке.

19.06.2017 09:45
0