Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
serjl
7 лет назад

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

Эпилог

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

783
1.236 GOLOS
На Golos с June 2017
Комментарии (7)
Сортировать по:
Сначала старые