es6 native
This commit is contained in:
50
src/inc/trigger/coins.mjs
Normal file
50
src/inc/trigger/coins.mjs
Normal file
@@ -0,0 +1,50 @@
|
||||
import rp from "request-promise";
|
||||
|
||||
const api_url = ({ market, crypto, currency }) => `https://api.cryptowat.ch/markets/${market}/${crypto}${currency}/summary`;
|
||||
const currencies = {
|
||||
usd: ({ val }) => `\$${val}`,
|
||||
eur: ({ val }) => `${val}€`,
|
||||
eth: ({ val }) => `${val}Ξ`,
|
||||
btc: ({ val }) => `${val}฿`,
|
||||
xmr: ({ val }) => `${val} xmr`
|
||||
};
|
||||
const markets = {
|
||||
btc: "coinbase",
|
||||
eth: "coinbase",
|
||||
xmr: "bitfinex"
|
||||
};
|
||||
|
||||
export default bot => {
|
||||
bot._trigger.set("coins", new bot.trigger({
|
||||
call: /^(\.|\/)(btc|eth|xmr)/i,
|
||||
f: e => {
|
||||
cryptowat_summary(e.cmd, markets[e.cmd], e.cmd !== "xmr" ? e.args[0] || "eur" : "usd").then(
|
||||
resolve => e.reply(resolve),
|
||||
reject => e.reply(reject)
|
||||
);
|
||||
}
|
||||
}));
|
||||
};
|
||||
|
||||
const cryptowat_summary = (crypto, market, currency) => {
|
||||
return new Promise((resolve, reject) => {
|
||||
if (!Object.keys(currencies).includes(currency) || crypto === currency)
|
||||
reject(`Can't convert or invalid currency: ${currency}`);
|
||||
rp([{ market: market, crypto: crypto, currency: currency }].map(api_url).join``, { json: true })
|
||||
.then(res => {
|
||||
if (res.length === 0)
|
||||
reject("No data received");
|
||||
const data = {
|
||||
last: [{ val: res.result.price.last }].map(currencies[currency]).join``,
|
||||
high: [{ val: res.result.price.high }].map(currencies[currency]).join``,
|
||||
low: [{ val: res.result.price.low }].map(currencies[currency]).join``,
|
||||
change: (res.result.price.change.percentage * 100).toFixed(2),
|
||||
volume: res.result.volume
|
||||
};
|
||||
resolve(`Current: [b]${data.last}[/b] - High: [b]${data.high}[/b] - Low: [b]${data.low}[/b] - Change: [b]${data.change}[/b]% - Volume: [b]${data.volume}[/b]`);
|
||||
})
|
||||
.catch(err => {
|
||||
reject("lol cryptowatch ist down");
|
||||
});
|
||||
});
|
||||
};
|
||||
Reference in New Issue
Block a user