From 00b274ae92add8f5aaf80bbde9f7ef2397220919 Mon Sep 17 00:00:00 2001 From: Francesco Esposito <33671357+frab1t@users.noreply.github.com> Date: Wed, 20 Feb 2019 17:48:26 +0100 Subject: [PATCH] implements logic (cmd) --- server.js | 107 ++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 83 insertions(+), 24 deletions(-) diff --git a/server.js b/server.js index fa2103d..9086e48 100644 --- a/server.js +++ b/server.js @@ -2,53 +2,112 @@ const Telebot = require('telebot'); const config = require('./config'); const utils = require('./utils'); const auth = require('./auth'); +const api = require('./api'); const bot = new Telebot({ token: config.app.tokenBot, usePlugins: ['askUser'], }); -bot.on('/*', (msg) => { - bot.sendMessage(msg.from.id, 'qualsiasi'); -}); - bot.on('/start', (msg) => { - auth(msg.from.id, () => { - bot.sendMessage(msg.from.id, utils.templateStart(), { parseMode: 'Markdown' }); - bot.event('/help', msg); - }, - () => bot.sendMessage(msg.from.id, utils.templateUnauthorizedUser(), { parseMode: 'Markdown' })); + if (!auth(msg.from.id)) { + return bot.sendMessage(msg.from.id, utils.templateUnauthorizedUser(), { parseMode: 'Markdown' }); + } + bot.sendMessage(msg.from.id, utils.templateStart(), { parseMode: 'Markdown' }); + bot.event('/help', msg); }); bot.on('/help', (msg) => { - auth(msg.from.id, () => { - bot.sendMessage(msg.from.id, utils.templateHelp(), { parseMode: 'Markdown' }); - }); + if (!auth(msg.from.id)) { + return bot.sendMessage(msg.from.id, utils.templateUnauthorizedUser(), { parseMode: 'Markdown' }); + } + bot.sendMessage(msg.from.id, utils.templateHelp(), { parseMode: 'Markdown' }); }); bot.on('/list', (msg) => { - auth(msg.from.id, () => { - bot.sendMessage(msg.from.id, 'list template'); - }); + if (!auth(msg.from.id)) { + return bot.sendMessage(msg.from.id, utils.templateUnauthorizedUser(), { parseMode: 'Markdown' }); + } + + api.getDevices() + .then(res => res.json()) + .then((json) => { + json.forEach((elem) => { + bot.sendMessage(msg.from.id, utils.templateDevicesList(elem)); + }); + }) + .catch((err) => { + bot.sendMessage(msg.from.id, 'errore'); + }); }); bot.on('/position', (msg) => { - auth(msg.from.id, () => { - bot.sendMessage(msg.from.id, 'position template'); - }); + if (!auth(msg.from.id)) { + return bot.sendMessage(msg.from.id, utils.templateUnauthorizedUser(), { parseMode: 'Markdown' }); + } + + api.getDevices() + .then(res => res.json()) + .then((devicesJSON) => { + const devices = []; + devicesJSON.forEach((device) => { + devices.push(device.name); + }); + + const replyMarkup = bot.keyboard([devices], { resize: true, once: true }); + bot.sendMessage(msg.from.id, 'Select device', { ask: 'devicePosition', replyMarkup }); + }) + .catch((err) => { + bot.sendMessage(msg.from.id, 'Error1234'); + }); +}); + +bot.on('ask.devicePosition', (msg) => { + if (!auth(msg.from.id)) { + return bot.sendMessage(msg.from.id, utils.templateUnauthorizedUser(), { parseMode: 'Markdown' }); + } + + api.getInfoDevice(msg.text) + .then(res => res.json()) + .then((json) => { + bot.sendLocation(msg.from.id, [json.position.latitude, json.position.longtitude]); + bot.sendMessage(msg.from.id, utils.templatePosition(json)); + }) + .catch((err) => { + bot.sendMessage(msg.from.id, err); + }); }); bot.on('/add', (msg) => { - auth(msg.from.id, () => { - bot.sendMessage(msg.from.id, 'add'); - }); + if (!auth(msg.from.id)) { + return bot.sendMessage(msg.from.id, utils.templateUnauthorizedUser(), { parseMode: 'Markdown' }); + } + bot.sendMessage(msg.from.id, 'insert name', { ask: 'addDevice' }); +}); + +bot.on('ask.addDevice', (msg) => { + if (!auth(msg.from.id)) { + return bot.sendMessage(msg.from.id, utils.templateUnauthorizedUser(), { parseMode: 'Markdown' }); + } + api.addDevice(msg.text) + .then(res => res.json()) + .then((json) => { + bot.sendMessage(msg.from.id, JSON.stringify(json)); + }); }); bot.on('/remove', (msg) => { - auth(msg.from.id, () => { - bot.sendMessage(msg.from.id, 'remove'); - }); + bot.sendMessage(msg.from.id, 'Insert Device ID', { ask: 'removeDevice' }); }); +bot.on('ask.removeDevice', (msg) => { + api.removeDevice(msg.text) + .then((res) => { + bot.sendMessage(msg.from.id, 'Device Deleted'); + }) + .catch((err) => { + bot.sendMessage(msg.from.id, 'Error'); + }); +}); bot.start();