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

Мой первый Бот

Не скрою, что последнее время я практически ничего не пишу. Дело в том, что я погрузился в изучение 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 - к которому придется обратиться в ТГ при регистрации бота.
Вот и все. Если будет что интересное - напишу еще.

2
0.209 GOLOS
На Golos с July 2017
Комментарии (10)
Сортировать по:
Сначала старые