const HilSu = require("hilsu-api"); const Telegraf = require("telegraf"); const namesMap = {gems:"Салоцветы",money:"Самородки",balance:"Червонцы"} let exchangeClient = new HilSu.ExchangeClient(process.env.HILTOKEN); let bot = new Telegraf(process.env.BOTTOKEN); /** * rates - Новое значение курса * oldRates - Предыдущее значение курса */ exchangeClient.on("ratesUpdate", (rates,oldRates) => { if(oldRates===rates) return; //пропускаем если ничего не изменилось if(oldRates===undefined) return; //и пропускаем если это первое получение данных (при старте) let message = "Обновление курса:\n"; for (let rate of rates.rates) { //получаем старый курс для этого обмена let old = oldRates.rates.find(r => r.to===rate.to&&r.from===rate.from); message+=`${namesMap[rate.from]} -> ${namesMap[rate.to]}: ${rate.value.toFixed(3)} (${getPercentageChange(old.value, rate.value).toFixed(2)}%)\n`; } message+=`\nПул валют:\nЧервонцы: ${rates.maxExchange.balance.toFixed(3)}\nСалоцветы: ${rates.maxExchange.gems.toFixed(3)}\nСамородки: ${rates.maxExchange.money.toFixed(3)}`; bot.telegram.sendMessage("-765759105",message); }); function getPercentageChange(oldNumber, newNumber){ return ((oldNumber - newNumber) / oldNumber) * 100; } bot.startPolling(); exchangeClient.connect();