Мой первый Бот
Не скрою, что последнее время я практически ничего не пишу. Дело в том, что я погрузился в изучение java script и node js на все остальное просто не хватает времени. Но. Хочу поделиться с вами первыми своими наработками. Конечно же своей тягой к знаниям я порой достаю вопросами @vik -а и @ropox - a и они подсказывают, за что им премногая благодарность.
Так вот - начал я про бота. Захотелось сделать бота, который бы по введенному нику выдавал информацию о текущем состоянии кошелька. Знаю что такие боты есть, но хотелось своего и к тому же, что бы он показывал не только батарейку, но и текущую Силу Голоса.
Вуаля - вот что у меня получилось. Код небольшой, поэтому выложу сразу весь листинг.
//первый бот для Телеграм
const golos = require('golos-js');// загрузка библиотеки Голоса
var TelegramBot = require('node-telegram-bot-api');
var token = '536ххххххххххххххххххххххх';//токен Телеграма
var bot = new TelegramBot(token, {polling: true});
var request = require('request'), cheerio = require('cheerio'); //Загрузка библиотеки
var massage=[];
golos.config.set('websocket', 'wss://ws.golos.io');//подключение к апи голоса
async function GetAccount(chatId,loginn){
var Get_vest = await parsing();
bot.sendMessage(chatId, loginn+ ' Привет!', {caption: "I'm a bot!"});
var resultt;
resultt = await golos.api.lookupAccountNames([loginn], (e, Result) => {// сбор данных в result
if (e) return console.warn(e); //обработчик ошибок
});
massage[0] = resultt[0];
massage[1] = 'Логин ' + massage[0].name + ' \nБатарейка '+ (massage[0].voting_power)/100 + ' % ' + '\nGBG '+ massage[0].sbd_balance + '\nГолос '+massage[0].balance +'\nСила Голоса '+ (parseFloat(massage[0].vesting_shares)*Get_vest/1000000).toFixed(3) ;
console.log(massage[1]);
bot.sendMessage(chatId, massage[1], {caption: "I'm a bot!"});
}
bot.on('message', function (msg) {
var chatId = msg.chat.id;
var messText = msg.text.split('/');
console.log(messText[1]);
if (messText[1]== 'help'){
bot.sendMessage(chatId, 'Здесь информация по Help', {caption: "I'm a bot!"});
} else{
var massage = GetAccount(chatId,messText[1]);
}
});
async function query(url) {
return new Promise(resolve => {
request(url, (error, response, body) => {
if(error) {
throw error;
}
resolve({response, body});
});
});
}
async function parsing() {
var cccc;
var number = [];
var parsingNumber;
var url = "http://golosd.com/";
try {
const {response, body } = await query(url);
cccc=body;
} catch(error) {
console.error(error);
console.log('число не спарсилось)))');
process.exit();
}
var $= cheerio.load(cccc, {
ignoreWhitespace: true,
xmlMode: true
});
var cod=$('tr').each(function(i, Element){
number[i] = $(this).text();
});
parsingNumber = parseFloat(number[1]);
console.log(parsingNumber);
return parsingNumber;
}
Чтобы его запустить вам понадобится установить node js - как это сделать существует множество мануалов, лучше разместить его на сервере, чтобы он работал 24/7 (постоянно)))
В моём боте все логины нужно указывать с косой чертой "/" к примеру "/login".
в строке
var token = '536ххххххххххххххххххххххх';
сам токен берется из ответа @BotFather - к которому придется обратиться в ТГ при регистрации бота.
Вот и все. Если будет что интересное - напишу еще.