From c71f4af370401a6a8c45d866324b5684d01d960d Mon Sep 17 00:00:00 2001 From: Surya Paolo Date: Sun, 17 Dec 2023 16:20:44 +0100 Subject: [PATCH] Abilitazione del BOT --- filelog.txt | 12 +++ src/server/models/bot.js | 141 +++++++++++++++++++++++++++-- src/server/models/orderscart.js | 1 + src/server/models/site.js | 6 ++ src/server/models/user.js | 11 +++ src/server/router/users_router.js | 7 ++ src/server/telegram/telegrambot.js | 30 +++++- src/server/tools/general.js | 26 +++++- 8 files changed, 221 insertions(+), 13 deletions(-) diff --git a/filelog.txt b/filelog.txt index e1a4589..4139363 100644 --- a/filelog.txt +++ b/filelog.txt @@ -93,3 +93,15 @@ Gio 12/10 ORE 15:06: USER [paoloar77]: bottone Ven 13/10 ORE 11:05: USER [SuryaArena]: bottone Ven 13/10 ORE 11:40: USER [SuryaArena]: bottone + +Dom 17/12 ORE 15:38: USER [admin]: prova + +Dom 17/12 ORE 16:18: USER [admin]: vai al sito + +Dom 17/12 ORE 16:19: USER [admin]: vai al sito + +Dom 17/12 ORE 16:19: USER [admin]: il mio profilo + +Dom 17/12 ORE 16:19: USER [admin]: prova + +Dom 17/12 ORE 16:19: USER [admin]: link da condividere diff --git a/src/server/models/bot.js b/src/server/models/bot.js index bb0d430..97f291d 100755 --- a/src/server/models/bot.js +++ b/src/server/models/bot.js @@ -50,11 +50,11 @@ const BotSchema = new Schema({ }, }); -BotSchema.statics.getFieldsForSearch = function() { +BotSchema.statics.getFieldsForSearch = function () { return [{ field: 'label', type: tools.FieldType.string }] }; -BotSchema.statics.executeQueryTable = function(idapp, params) { +BotSchema.statics.executeQueryTable = function (idapp, params) { params.fieldsearch = this.getFieldsForSearch(); return tools.executeQueryTable(this, idapp, params); }; @@ -66,12 +66,141 @@ BotSchema.statics.DuplicateAllRecords = async function (idapporig, idappdest) { }; -BotSchema.statics.findAllIdApp = async function(idapp) { +BotSchema.statics.generateBotMenuRecords = async function (idapp) { + + try { + let arrrec = [ + { + "page": 1, + "index": 1, + "riga": 1, + "active": true, + "label": "Vai al Sito", + "type": 3, + "value": "{host}", + "visibility": 0, + idapp, + "lang": "it", + "main": true + }, + { + "page": 1, + "index": 1, + "riga": 2, + "active": true, + "label": "Il mio Profilo", + "type": 3, + "value": "{host}/my/{username}", + "visibility": 1, + idapp, + "lang": "it", + "main": true + }, + { + "page": 1, + "index": 1, + "riga": 3, + "active": true, + "label": "Link da Condividere", + "type": 2, + "value": "{host}/registrati/{username}", + "visibility": 1, + idapp, + "lang": "it", + "main": true, + }, + { + "page": 1, + "index": 2, + "riga": 1, + "active": true, + "label": "🔮 Help", + "type": 4, + "value": "", + "visibility": 0, + idapp, + "lang": "it", + "main": true, + }, + { + "page": 1, + "index": 1, + "riga": 3, + "active": true, + "label": "💁‍♀️ Admin", + "type": 4, + "value": "", + "visibility": 5, + idapp, + "lang": "it", + "main": true + }, + { + "page": 1, + "index": 2, + "riga": 2, + "active": true, + "label": "Imposta Foto Profilo", + "type": 4, + "value": "🖼 SetPicProfile", + "visibility": 1, + idapp, + "lang": "it", + "main": true + }, + { + "page": 1, + "index": 2, + "riga": 3, + "active": true, + "label": "🛠 Strumenti", + "type": 1, + "value": "2", + "visibility": 1, + idapp, + "lang": "it", + "main": true, + }, + { + "page": 2, + "index": 1, + "riga": 1, + "active": true, + "label": "🔑 Cambio Password", + "type": 4, + "value": "🔑 SetResetPwd", + "visibility": 1, + idapp, + "lang": "it", + }, + { + "page": 2, + "index": 1, + "riga": 2, + "active": true, + "label": "👉🏻 Indietro", + "type": 1, + "value": "1", + "visibility": 1, + idapp, + "lang": "it", + }]; + + const ris = await MyBot.insertMany(arrrec); + + return ris; + + } catch (e) { + console.error('Err:', e); + } + +} +BotSchema.statics.findAllIdApp = async function (idapp) { const Bot = this; - const myfind = {idapp}; + const myfind = { idapp }; - return await Bot.find(myfind).sort({page: 1, lang: 1, riga: 1, index: 1}).lean(); + return await Bot.find(myfind).sort({ page: 1, lang: 1, riga: 1, index: 1 }).lean(); }; const MyBot = mongoose.model('Bot', BotSchema); @@ -80,4 +209,4 @@ MyBot.createIndexes((err) => { if (err) throw err; }); -module.exports = {MyBot}; +module.exports = { MyBot }; diff --git a/src/server/models/orderscart.js b/src/server/models/orderscart.js index d3e062f..3ce5ad0 100755 --- a/src/server/models/orderscart.js +++ b/src/server/models/orderscart.js @@ -262,6 +262,7 @@ module.exports.getOrdersCartByUserId = async function (uid, idapp, numorder) { return order; }); + console.log('*** Num myorderscart ', myorderscart.length); return myorderscart } catch (e) { console.error('Err:', e); diff --git a/src/server/models/site.js b/src/server/models/site.js index f79314d..85b4612 100755 --- a/src/server/models/site.js +++ b/src/server/models/site.js @@ -64,6 +64,12 @@ const SiteSchema = new Schema({ telegram_key_test: { type: String, }, + load_process_telegram: { + type: Boolean, + }, + load_process_telegram_test: { + type: String, + }, teleg_cfg: { type: String, }, diff --git a/src/server/models/user.js b/src/server/models/user.js index d1b5f33..8509448 100755 --- a/src/server/models/user.js +++ b/src/server/models/user.js @@ -30,6 +30,7 @@ const i18n = require('i18n'); const shared_consts = require('../tools/shared_nodejs'); + mongoose.Promise = global.Promise; mongoose.level = 'F'; @@ -5387,6 +5388,8 @@ UserSchema.statics.addNewSite = async function (idappPass, body) { }; if (arrSite && arrSite.length === 1 && numutenti < 2) { + const MyTelegramBot = require('../telegram/telegrambot'); + // Nessun Sito Installato e Nessun Utente installato ! let myuser = new User(); myuser._id = new ObjectID(); @@ -5403,11 +5406,19 @@ UserSchema.statics.addNewSite = async function (idappPass, body) { myuser.perm = '3'; myuser.profile.special_req = true; myuser.profile.nationality = 'IT'; + myuser.profile.manage_telegram = true; + myuser.profile.teleg_id = MyTelegramBot.ADMIN_IDTELEGRAM_SERVER; + myuser.profile.username_telegram = MyTelegramBot.ADMIN_USERNAME_TELEGRAM; myuser.lasttimeonline = new Date(); myuser.date_reg = new Date(); await myuser.save(); + const { MyBot } = require('../models/bot'); + + // Genera il Menu del BOT: + await MyBot.generateBotMenuRecords(idapp); + return { code: server_constants.RIS_CODE_OK, idapp }; } } diff --git a/src/server/router/users_router.js b/src/server/router/users_router.js index 9135f41..e871351 100755 --- a/src/server/router/users_router.js +++ b/src/server/router/users_router.js @@ -17,6 +17,8 @@ const { Settings } = require('../models/settings'); const { SendNotif } = require('../models/sendnotif'); +const { MyBot } = require('../models/bot'); + const tools = require('../tools/general'); const shared_consts = require('../tools/shared_nodejs'); @@ -1409,6 +1411,11 @@ async function eseguiDbOp(idapp, mydata, locale, req, res) { } else if (mydata.dbop === 'updateSaldoAndTransato_AllAccounts') { await Account.updateSaldoAndTransato_AllAccounts(idapp); + } else if (mydata.dbop === 'generateBotMenuRecords') { + + + await MyBot.generateBotMenuRecords(idapp); + } else if (mydata.dbop === 'GenerateVapiKey') { await tools.generateVapiKey(); diff --git a/src/server/telegram/telegrambot.js b/src/server/telegram/telegrambot.js index 2b2ecf3..8753b70 100755 --- a/src/server/telegram/telegrambot.js +++ b/src/server/telegram/telegrambot.js @@ -695,6 +695,7 @@ const ADMIN_IDTELEGRAM_TEST = 5356627050; // 5022837609; //Surya Arena const MyTelegramBot = { ADMIN_IDTELEGRAM_SERVER: '12429864', //Paolo + ADMIN_USERNAME_TELEGRAM: 'surya1977', //Paolo ADMIN_USER_SERVER: 'paoloar77', ADMIN_USER_NAME_SERVER: 'Paolo', @@ -710,7 +711,7 @@ const MyTelegramBot = { } else { return appTelegram; } - + }, getAppTelegramTest: function () { @@ -719,7 +720,7 @@ const MyTelegramBot = { } else { return appTelegram_TEST; } - + }, local_sendMsgTelegramByIdTelegram: async function (idapp, idtelegram, text, @@ -978,7 +979,7 @@ const MyTelegramBot = { if (send_notif && msg_notifpush) { // SEND PUSH NOTIFICATION - await tools.sendNotificationToUser(userId, title, msg_notifpush, openUrl, '', tag, actions); + await tools.sendNotificationToUser(userId, title, msg_notifpush, openUrl, '', tag, actions); } @@ -3435,15 +3436,26 @@ class Telegram { rec.status = Status.NONE; if (!msg.from.username) { + // Non ha l'Username: + + // Chiedi l'username sul Bot: if (tools.getConfSiteOptionEnabledByIdApp(this.idapp, shared_consts.ConfSite.AskUsernameSulBot)) { rec.status = Status.WAITFOR_USERNAME_TELEGRAM; } } else { + // Ha l'Username + + // Chiedi l'invitante ? if (tools.getConfSiteOptionEnabledByIdApp(this.idapp, shared_consts.ConfSite.AskInvitantesulBot)) { rec.status = Status.WAITFOR_USERNAME_INVITANTE; } } + if (rec.status === Status.NONE) { + // Se il Sito non chiede di autenticarsi o l'invitante, allora lo Verifico direttamente ! + rec.status = Status.VERIFIED; + } + this.arrUsers.push(rec); if (tools.getConfSiteOptionEnabledByIdApp(this.idapp, shared_consts.ConfSite.AskInvitantesulBot)) { @@ -4065,11 +4077,16 @@ if (true) { else if (process.env.NODE_ENV === 'test') arrTeleg = MyTelegramBot.getAppTelegramTest(); + const arrTelegFromSite = tools.getArrTelegramFromSite(); + if (arrTelegFromSite.length > 0) { + arrTeleg = arrTelegFromSite; + } + var internetAvailable = require('internet-available'); internetAvailable().then(() => { // .. - console.log('TELEGRAM STARTING.... NODE_ENV:' + process.env.NODE_ENV); + console.log('TELEGRAM STARTING.... ' + process.env.NODE_ENV); for (const idapp of arrTeleg) { @@ -4080,7 +4097,9 @@ if (true) { // console.log('idapp', idapp, 'token', token); if (!!token) { - console.log('*** START BOT ' + nomebot); + console.log('-------------------------------------'); + console.log('*** STARTING BOT ' + nomebot); + console.log('-------------------------------------'); const bot = new TelegramBot(token, { polling: true }); if (url === '0') { @@ -4095,6 +4114,7 @@ if (true) { arrTelegram.push({ idapp, cl: new Telegram(idapp, bot) }); bot.onText(/\/start/, (msg) => { + console.log('*** BOT PARTITO CORRETTAMENTE !!! (Start Cmd)'); const myclTelegram = getclTelegBytoken(bot.token); myclTelegram.start(msg); diff --git a/src/server/tools/general.js b/src/server/tools/general.js index 51897ef..7bcba2c 100755 --- a/src/server/tools/general.js +++ b/src/server/tools/general.js @@ -1804,7 +1804,7 @@ module.exports = { getTelegramBotNameByIdApp: function (idapp) { const myapp = this.MYAPPS.find((item) => item.idapp === idapp); - if (process.env.NODE_ENV === 'test') + if (process.env.NODE_ENV === 'test' || process.env.NODE_ENV === 'development') return (myapp) ? myapp.telegram_bot_name_test : ''; else return (myapp) ? myapp.telegram_bot_name : ''; @@ -1823,12 +1823,30 @@ module.exports = { getTelegramKeyByIdApp: function (idapp) { const myapp = this.MYAPPS.find((item) => item.idapp === idapp); - if (process.env.NODE_ENV === 'test') + if (process.env.NODE_ENV === 'test' || process.env.NODE_ENV === 'development') return (myapp) ? myapp.telegram_key_test : ''; else return (myapp) ? myapp.telegram_key : ''; }, + getArrTelegramFromSite: function () { + const myapp = this.MYAPPS; + let arrteleg = [] + for (const site of myapp) { + if (site.active) { + if (process.env.NODE_ENV === 'test') { + if (myapp.load_process_telegram_test) + arrteleg.push(myapp.idapp) + } else { + if (myapp.load_process_telegram) + arrteleg.push(myapp.idapp) + } + } + } + + return arrteleg; + }, + getLookupPipeLine(params, proj) { let myquery = [ @@ -4025,7 +4043,11 @@ module.exports = { if (!msg) return msg; + if (!!user) { + if (msg.includes('{host}')) { + msg = msg.replace('{host}', this.getHostByIdApp(user.idapp)); + } if (msg.includes('{appname}')) msg = msg.replace('{appname}', this.getNomeAppByIdApp(user.idapp)); msg = msg.replace('{username}', user.username);