mirror of
https://github.com/anatolykopyl/mining-status-skill.git
synced 2026-03-26 12:55:43 +00:00
Initial commit
This commit is contained in:
174
index.js
Normal file
174
index.js
Normal file
@@ -0,0 +1,174 @@
|
||||
const axios = require('axios');
|
||||
const dedent = require('dedent-js');
|
||||
|
||||
const getMiner = async (wallet) => {
|
||||
const response = await axios.post(
|
||||
'https://baikalmine.com/api/pool/miner/getMiner',
|
||||
{
|
||||
type: "pps_plus",
|
||||
coin: "eth",
|
||||
miner: wallet
|
||||
}
|
||||
).catch(error => ({error}));
|
||||
|
||||
if (response.error) {
|
||||
const text = dedent(`
|
||||
Ошибка получения данных, проверьте правильность введенного кошелька.
|
||||
"${wallet}"
|
||||
`);
|
||||
const tts = dedent(`
|
||||
Ошибка получения данных, проверьте правильность введенного кошелька.
|
||||
"${wallet}"
|
||||
`);
|
||||
|
||||
return { text, tts };
|
||||
}
|
||||
|
||||
const miner = response.data;
|
||||
|
||||
const text = dedent(`
|
||||
Работает ${miner.workers.online} из ${miner.workers.total},
|
||||
хешрейт ${fromatHashrate(miner.hashrate.reported)} MH/s.
|
||||
До выплаты осталось ${daysUntilPayout(miner)} дней.
|
||||
`);
|
||||
const tts = dedent(`
|
||||
Работает ${miner.workers.online} из ${miner.workers.total},
|
||||
хешр+ейт ${fromatHashrate(miner.hashrate.reported)} мегах+ешей в секунду.
|
||||
До выплаты осталось ${daysUntilPayout(miner)} дней.
|
||||
`);
|
||||
|
||||
return {text, tts};
|
||||
};
|
||||
|
||||
const fromatHashrate = (hs) => {
|
||||
return Math.floor(hs / 1000000);
|
||||
};
|
||||
|
||||
const daysUntilPayout = (miner) => {
|
||||
const { stats, settings } = miner;
|
||||
return Math.ceil((settings.paymentThreshold - stats.balance) / stats.dayliProfit);
|
||||
}
|
||||
|
||||
const handleFirstLaunch = async (event) => {
|
||||
const {version, session} = event;
|
||||
const text = 'Введите адрес своего кошелька'
|
||||
|
||||
return {
|
||||
version,
|
||||
session,
|
||||
response: {
|
||||
text,
|
||||
end_session: false,
|
||||
},
|
||||
session_state: {
|
||||
awaiting_wallet_input: true,
|
||||
},
|
||||
}
|
||||
};
|
||||
|
||||
const handleWalletInput = async (event) => {
|
||||
const {version, session, request} = event;
|
||||
|
||||
const wallet = request.command.replace(/ /g,'');
|
||||
let {text, tts} = await getMiner(wallet);
|
||||
|
||||
text = 'Адрес сохранен. \n'.concat(text);
|
||||
tts = 'Адрес сохранен. \n'.concat(tts);
|
||||
|
||||
return {
|
||||
version,
|
||||
session,
|
||||
response: {
|
||||
text,
|
||||
tts,
|
||||
end_session: false,
|
||||
},
|
||||
session_state: {
|
||||
awaiting_wallet_input: false,
|
||||
},
|
||||
user_state_update: {
|
||||
wallet,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const handleResetWallet = async (event) => {
|
||||
const {version, session} = event;
|
||||
|
||||
const text = 'Адрес кошелька сброшен, введите новый';
|
||||
|
||||
return {
|
||||
version,
|
||||
session,
|
||||
response: {
|
||||
text,
|
||||
end_session: false,
|
||||
},
|
||||
session_state: {
|
||||
awaiting_wallet_input: true,
|
||||
},
|
||||
user_state_update: {
|
||||
wallet: null,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const handleGetStatus = async (event) => {
|
||||
const {version, session, state} = event;
|
||||
|
||||
const {text, tts} = await getMiner(state.user.wallet);
|
||||
|
||||
return {
|
||||
version,
|
||||
session,
|
||||
response: {
|
||||
text,
|
||||
tts,
|
||||
end_session: true,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
const handleHelp = async (event) => {
|
||||
const {version, session} = event;
|
||||
|
||||
const text = dedent(`
|
||||
Я умею узнавать статус вашей майнинг фермы на пуле baikalmine.com.
|
||||
Если ошиблись с вводом адреса, скажите "сбросить адрес".
|
||||
`);
|
||||
|
||||
return {
|
||||
version,
|
||||
session,
|
||||
response: {
|
||||
text,
|
||||
end_session: false,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
module.exports.handler = async (event) => {
|
||||
const {session, request, state} = event;
|
||||
|
||||
if (request.command === 'сбросить адрес') {
|
||||
return handleResetWallet(event);
|
||||
}
|
||||
const helpCommands = ['помощь', 'что ты умеешь'];
|
||||
if (helpCommands.includes(request.command)) {
|
||||
return handleHelp(event);
|
||||
}
|
||||
|
||||
if (state.session.awaiting_wallet_input) {
|
||||
return handleWalletInput(event);
|
||||
}
|
||||
|
||||
if (!state.user.wallet) {
|
||||
if (session.new) {
|
||||
return handleFirstLaunch(event);
|
||||
}
|
||||
|
||||
return handleWalletInput(event);
|
||||
}
|
||||
|
||||
return handleGetStatus(event);
|
||||
};
|
||||
Reference in New Issue
Block a user