Files
freeplanet_serverside/src/server/telegram/telegrambot.js

3955 lines
132 KiB
JavaScript
Raw Normal View History

const tools = require('../tools/general');
const appTelegram = [tools.FREEPLANET, tools.RISO];
const appTelegram_TEST = [tools.FREEPLANET, tools.PDNM, tools.RISO];
const appTelegram_DEVELOP = [tools.RISO];
const appTelegramFinti = ['2', tools.CNM];
const appTelegramDest = [tools.FREEPLANET, tools.FREEPLANET];
const printf = require('util').format;
const {User} = require('../models/user');
const {MyGroup} = require('../models/mygroup');
const {CalZoom} = require('../models/calzoom');
const {MyBot} = require('../models/bot');
const shared_consts = require('../tools/shared_nodejs');
const sharp = require('sharp');
const server_constants = require('../tools/server_constants');
2022-02-03 00:33:15 +01:00
// const {ListaIngresso} = require('../models/listaingresso');
const {MsgTemplate} = require('../models/msg_template');
const globalTables = require('../tools/globalTables');
2020-01-03 22:02:18 +01:00
const emoji = require('node-emoji');
const i18n = require('i18n');
let url = process.env.URL || 'https://<PUBLIC-URL>';
const Benvenuto = emoji.get('heartbeat') + emoji.get('heartbeat') +
emoji.get('heartbeat') + ' Benvenuto!';
const emo = {
JOY: emoji.get('joy'),
JOY2: emoji.get('rolling_on_the_floor_laughing'),
DANCER: emoji.get('dancer'),
2020-01-21 01:37:15 +01:00
STARS: emoji.get('stars'),
FIRE: emoji.get('fire'),
SUN: emoji.get('sunrise'),
TV: emoji.get('tv'),
NEWSPAPER: emoji.get('newspaper'),
KISS: emoji.get('kiss'),
PENCIL: emoji.get('pencil2'),
DREAM: emoji.get('beach_with_umbrella'),
EYES: emoji.get('eyes'),
DIZZY: emoji.get('dizzy'),
ONE_HUNDRED: emoji.get('100'),
SMILE_STAR: emoji.get('star-struck'),
LEFT_FACING_FIST: emoji.get('left-facing_fist'),
CHECK_VERDE: emoji.get('white_check_mark'),
CHECK_GRIGIA: emoji.get('ballot_box_with_check'),
CROSS_ROSSA: emoji.get('x'),
ENVELOPE: emoji.get('envelope'),
EXCLAMATION_MARK: emoji.get('exclamation'),
QUESTION_MARK: emoji.get('question'),
ARROW_RIGHT: emoji.get('arrow_right'),
INVITATI: emoji.get('man_and_woman_holding_hands'),
HEART: emoji.get('heart'),
BLUE_HEART: emoji.get('blue_heart'),
GREEN_HEART: emoji.get('green_heart'),
YELLOW_HEART: emoji.get('yellow_heart'),
PURPLE_HEART: emoji.get('purple_heart'),
GIFT_HEART: emoji.get('gift_heart'),
GIFT: emoji.get('gift'),
ROBOT_FACE: emoji.get('robot_face'),
ADMIN: emoji.get('information_desk_person'),
MALE: emoji.get('man-tipping-hand'),
FEMALE: emoji.get('female-guard'),
INNOCENT: emoji.get('innocent'),
CREDIT_CARD: emoji.get('credit_card'),
PERSON: emoji.get('man-tipping-hand'),
};
MsgBot = {
2022-03-10 23:19:56 +01:00
OK: ['si', 'ok'],
CUORE: ['❤️', '💚️', '💜'],
CIAO: [
'ciao',
'ciaoo',
'hola',
'holaa',
'hey',
'salve',
'buongiorno',
'buondi',
'ciao ❤️'],
CI_SEI: ['ci sei', 'c\'è qualcuno', 'c\'è nessuno'],
CHI_SONO_IO: ['chi sono io', 'chi sono'],
COME_STAI: [
'tutto bene',
'come stai',
'come stai',
'come va',
'come butta',
'come va oggi'],
COME_TI_CHIAMI: [
'chi sei',
'come ti chiami',
'qual\'è il tuo nome',
'qual\'e\' il tuo nome',
'che lavoro fai',
'di cosa ti occupi'],
COSA_FAI: ['cosa fai', 'cosa combini', 'che fai'],
QUANTI_ANNI_HAI: ['quanti anni hai', 'che età hai'],
SEI_LIBERO_STASERA: [
'sei libera stasera',
'sei libero stasera',
'usciamo insieme',
'fare l\'amore con me',
'fare sesso',
'vuoi scopare',
'vuoi trombare'],
MI_TROVI_UN_MOROSO: [
'trovi un moroso',
'una morosa',
'fidanzato',
'fidanzata',
'trovi un marito',
'trovi una moglie'],
CHAT_EMPOWER: ['chat empower'],
MASCHIO_FEMMINA: [
'sei uomo o donna',
'sei maschio o femmina',
'sei ragazzo o ragazza',
'che sesso hai'],
DAMMI_UN_BACIO: ['dammi un bacio', 'baciami'],
HAHA: ['hahaha', 'ahah', '😂'],
MI_AMI: ['mi ami'],
TI_AMO: ['ti amo', 'ti adoro', 'ti lovvo'],
PREGO: ['prego', 'Prego ! 💋💋💋'],
GRAZIE: [
'grazie ainy',
'grazie',
'grazie mille',
'graziee',
'grazie ❤',
'grazie❤',
'grazie 😘',
'grazie😘'],
PRINCIPE_AZZURRO: ['principe azzurro'],
COSE_COVID: [
'cos\'è il covid',
'cosa è il covid',
],
COVID: [
'covid',
],
SPOSAMI: [
'sposami',
'vuoi sposar',
'sei sposat',
'ci sposiamo',
'ti sposo',
'sei sposat',
'mi sposi'],
CHE_TEMPO_FA: ['che tempo'],
NON_TROO_INVITATI: ['non trovo invitati', 'non riesco a trovare invitati'],
TROVAMI_UN_UOMO_DONNA: [
'trovami un uomo',
'trovami una donna',
'esiste una donna per me',
'esiste un uomo per me'],
PAROLACCE: [
'stronz',
'fanculo',
'fottiti',
'cagare',
'ammazzat',
'muori',
'cretino',
'stupido'],
COME_SI_CHIAMA: ['come si chiama'],
PROSSIMO_ZOOM: [
'prossimo zoom',
'fare lo zoom',
'gli zoom',
'conferenz',
'zoom'],
LAVAGNA: ['lavagna', 'Lavagna', 'LAVAGNA'],
SEI_LIBERO_DI_RESPIRARE: ['sei libero di respirare'],
SEI_LIBERO: ['sei liber', 'sei sposat', 'sei fidanzat', 'sei single'],
AIUTO: [
'help',
'aiuto',
'ho bisogno di',
'ho problemi',
'non riesco',
'mi puoi aiutare',
'mi aiuti',
'aiutami',
'posso chiederti',
'puoi aiutarmi'],
UOMO: ['uomo', 'maschio'],
SORPRESA: [
'noo',
'davvero',
'sii',
'facciamo festa',
'è qui la festa',
'festa'],
UGUALE: ['👍🏻', '✨', '❤🏻', '⭐', '❤', '❤❤', '🤩'],
SI: ['si', 'yes'],
NO: ['no', 'noo'],
DONNA: ['donna', 'femmina'],
FARE_DOMANDA: ['fare una domanda', 'posso farti una domanda'],
DIVENTERO_RICCA: ['diventerò ricc'],
DOVE_VUOI_VIVERE: ['dove vuoi vivere'],
MA_ALLORA: ['ma allora'],
};
2021-12-29 18:26:08 +01:00
const MsgRisp = {
CHAT_EMPOWER: 'Entra nella Chat EMPOWER !!!\n' +
'https://t.me/joinchat/C741mkx5QYXu-kyYCYvA8g ' + emo.PURPLE_HEART +
emo.GIFT_HEART + emo.BLUE_HEART,
};
function getemojibynumber(number) {
if (number === 0) {
return emoji.get('zero');
} else if (number === 1) {
return emoji.get('one');
} else if (number === 2) {
return emoji.get('two');
} else if (number === 3) {
return emoji.get('three');
} else if (number === 4) {
return emoji.get('four');
} else if (number === 5) {
return emoji.get('five');
} else if (number === 6) {
return emoji.get('six');
} else if (number === 7) {
return emoji.get('seven');
} else if (number === 8) {
return emoji.get('height');
} else if (number === 9) {
return emoji.get('nine');
} else {
return number;
}
}
const Menu = {
2020-03-31 20:34:24 +02:00
LANG_IT: emoji.get('flag-it') + ' Italiano',
LANG_EN: emoji.get('flag-gb') + ' English',
LANG_ES: emoji.get('flag-es') + ' Español',
LANG_FR: emoji.get('flag-fr') + ' Français',
LANG_SI: emoji.get('flag-si') + ' Slovenski',
LANG_PT: emoji.get('flag-pt') + ' Português',
LANG: emoji.get('globe_with_meridians') + ' Language',
CHAT_PERSONALE: emoji.get('female-office-worker') + emoji.get('computer'),
EXIT_TELEGRAM: 'exittotelegram',
MSG_TO_USER: 'sendmsgto',
ADMIN: emoji.get('information_desk_person') + ' Admin',
AIUTO: '🔮 Help',
ALTRO: emoji.get('newspaper') + ' Altro',
SETPICPROFILE: '🖼 SetPicProfile',
RESETPWD: '🔑 SetResetPwd',
// MSG_TO_NAVE: emoji.get('incoming_envelope') + 'Msg_to_Navi',
// MSG_NO_7_REQ: emoji.get('incoming_envelope') + 'No 7 Req.',
// MSG_NO_9_REQ: emoji.get('incoming_envelope') + 'No 9 Req',
// NESSUN_IMBARCO_7REQ: emoji.get('incoming_envelope') + 'No Imbarco (7 Req)',
MSG_SI_INVITATI_NO_7REQ_INVITATI: emoji.get('incoming_envelope') +
'Inv e NO 7 Req',
MSGSTAFF: emoji.get('incoming_envelope') + ' Invia a STAFF',
MSGPAOLO: emoji.get('incoming_envelope') + ' Invia a PAOLO',
2022-03-12 21:38:19 +01:00
RESTART_SRV: emoji.get('incoming_envelope') + 'RestartServer',
REBOOT_SRV: emoji.get('incoming_envelope') + 'RebootServer',
EXECSH: emoji.get('incoming_envelope') + 'ExecSH',
LOG_SRV: '🖥Logserver.sh',
2020-03-31 20:34:24 +02:00
MSGATUTTI: emoji.get('incoming_envelope') + ' Invia a TUTTI',
it: {
ACCEDI: emo.PERSON + ' Accedi',
LAVAGNA: emoji.get('om_symbol') + ' Lavagna',
LINK_CONDIVIDERE: emoji.get('link') + ' Link da condividere',
ZOOM: emoji.get('information_source') + ' Zoom (Conferenze)',
INFO: emoji.get('information_source') + ' Informazioni',
ASSISTENZA: emoji.get('open_hands') + ' Le Chat',
2020-03-31 20:34:24 +02:00
INDIETRO: emoji.get('back') + ' Indietro',
SI: emoji.get('thumbsup') + ' SI',
NO: emoji.get('thumbsdown') + ' NO',
ESCI_DA_CHAT: emoji.get('incoming_envelope') + ' Esci dalla Conversazione',
NUOVOSITO: '',
2020-03-31 20:34:24 +02:00
},
es: {
ACCEDI: emo.PERSON + ' Entra',
LAVAGNA: emoji.get('om_symbol') + ' Tablero',
LINK_CONDIVIDERE: emoji.get('link') + ' Enlaces para compartir',
ZOOM: emoji.get('information_source') + ' Zoom (Conferencias)',
INFO: emoji.get('information_source') + ' Información',
ASSISTENZA: emoji.get('open_hands') + ' Chats',
2020-03-31 20:34:24 +02:00
INDIETRO: emoji.get('back') + ' Volver',
SI: emoji.get('thumbsup') + ' SÍ',
NO: emoji.get('thumbsdown') + ' NO',
ESCI_DA_CHAT: emoji.get('incoming_envelope') + ' Salir de la conversación',
},
fr: {
ACCEDI: emo.PERSON + ' Entrez',
LAVAGNA: emoji.get('om_symbol') + ' Tableau de bord',
LINK_CONDIVIDERE: emoji.get('link') + ' Liens à partager',
ZOOM: emoji.get('information_source') + ' Zoom (Conférences)',
INFO: emoji.get('information_source') + ' Informations',
ASSISTENZA: emoji.get('open_hands') + ' Les chats',
2020-03-31 20:34:24 +02:00
INDIETRO: emoji.get('back') + ' Retour',
SI: emoji.get('thumbsup') + ' OUI',
NO: emoji.get('thumbsdown') + ' NON',
ESCI_DA_CHAT: emoji.get('incoming_envelope') + ' Quitter la conversation',
},
si: {
ACCEDI: emo.PERSON + ' Prijava',
2020-04-07 14:34:29 +02:00
LAVAGNA: emoji.get('om_symbol') + ' Tabla',
LINK_CONDIVIDERE: emoji.get('link') + ' Link za vpis oseb',
2020-03-31 20:34:24 +02:00
ZOOM: emoji.get('information_source') + ' Zoom (Konference)',
INFO: emoji.get('information_source') + ' Informacije',
ASSISTENZA: emoji.get('open_hands') + ' jev klepet',
2020-03-31 20:34:24 +02:00
INDIETRO: emoji.get('back') + ' Nazaj',
SI: emoji.get('thumbsup') + ' DA',
NO: emoji.get('thumbsdown') + ' NE',
ESCI_DA_CHAT: emoji.get('incoming_envelope') + ' Zaprite pogovor',
},
pt: {
ACCEDI: emo.PERSON + ' Entre',
LAVAGNA: emoji.get('om_symbol') + ' Tablero',
LINK_CONDIVIDERE: emoji.get('link') + ' Links para compartilhar',
ZOOM: emoji.get('information_source') + ' Zoom (Conferências)',
INFO: emoji.get('information_source') + ' Informações',
ASSISTENZA: emoji.get('open_hands') + ' Chats',
2020-03-31 20:34:24 +02:00
INDIETRO: emoji.get('back') + ' Voltar',
SI: emoji.get('thumbsup') + ' SIM',
NO: emoji.get('thumbsdown') + ' NÃO',
ESCI_DA_CHAT: emoji.get('incoming_envelope') + ' Sair da Conversa',
},
enUs: {
ACCEDI: emo.PERSON + ' Enter',
LAVAGNA: emoji.get('om_symbol') + ' DashBoard',
LINK_CONDIVIDERE: emoji.get('link') + ' Link to Share',
ZOOM: emoji.get('information_source') + ' Zoom (Conference)',
INFO: emoji.get('information_source') + ' Info',
ASSISTENZA: emoji.get('open_hands') + ' Chats',
2020-03-31 20:34:24 +02:00
INDIETRO: emoji.get('back') + ' Back',
SI: emoji.get('thumbsup') + ' YES',
NO: emoji.get('thumbsdown') + ' NO',
ESCI_DA_CHAT: emoji.get('incoming_envelope') + ' Exit to the Conversation',
},
};
const CONTA_SOLO = 'contasolo';
const RICEVI_EMAIL = 'riceviemail';
const NOME_COGNOME = 'nomecognome';
const CHEDI_SE_IMBARCARTI = 'chiedi_se_imbarcarti';
const InlineCmd = {
2020-09-04 00:06:49 +02:00
VOGLIO_IMBARCARMI: 'w_imb',
NON_VOGLIO_IMBARCARMI: 'nw_imb',
2020-09-04 00:06:49 +02:00
};
const InlineZoomConferma = {
CONFERMA_ZOOM_PRESENZA: 'conf_pres',
NON_CONFERMA_ZOOM_PRESENZA: 'nonconf_pres',
};
const InlineConferma = {
RISPOSTA_SI: 'r_s',
RISPOSTA_NO: 'r_n',
};
const SendMsgCmd = [
CONTA_SOLO,
RICEVI_EMAIL,
NOME_COGNOME,
CHEDI_SE_IMBARCARTI];
// const MenuNoLogin = {
// it: { menu: [[Menu.LANG], [Menu.it.ASSISTENZA]] },
// es: { menu: [[Menu.LANG], [Menu.es.ASSISTENZA]] },
// fr: { menu: [[Menu.LANG], [Menu.fr.ASSISTENZA]] },
// si: { menu: [[Menu.LANG], [Menu.si.ASSISTENZA]] },
// pt: { menu: [[Menu.LANG], [Menu.pt.ASSISTENZA]] },
// enUs: { menu: [[Menu.LANG], [Menu.enUs.ASSISTENZA]] },
// };
// const MenuStandard = {
// it: { menu: [[Menu.it.LAVAGNA, Menu.it.LINK_CONDIVIDERE], [Menu.it.ZOOM, Menu.it.ASSISTENZA], [Menu.LANG]] },
// };
2020-03-31 20:34:24 +02:00
const MenuLang = {
it: {
menu: [
[Menu.LANG_IT, Menu.LANG_EN],
[Menu.LANG_ES, Menu.LANG_FR],
[Menu.LANG_SI, Menu.LANG_PT, Menu.it.INDIETRO]],
},
2020-03-31 20:34:24 +02:00
};
const MenuYesNo = {
it: {menu: [[Menu.it.SI, Menu.it.NO]]},
es: {menu: [[Menu.es.SI, Menu.es.NO]]},
fr: {menu: [[Menu.fr.SI, Menu.fr.NO]]},
si: {menu: [[Menu.si.SI, Menu.si.NO]]},
pt: {menu: [[Menu.pt.SI, Menu.pt.NO]]},
enUs: {menu: [[Menu.enUs.SI, Menu.enUs.NO]]},
2020-03-31 20:34:24 +02:00
};
const MenuAdmin = {
it: {
menu: [
[Menu.RESTART_SRV + ' 6711', Menu.LOG_SRV + ' 6711'],
[Menu.REBOOT_SRV + ' 6711', Menu.it.INDIETRO]],
},
2020-03-31 20:34:24 +02:00
};
const MenuSend = {
it: {
menu: [
[CONTA_SOLO, RICEVI_EMAIL, NOME_COGNOME],
[CHEDI_SE_IMBARCARTI, Menu.it.INDIETRO]],
},
2020-03-31 20:34:24 +02:00
};
const MenuChat = {
it: {menu: [[Menu.it.ESCI_DA_CHAT, Menu.it.INDIETRO]]},
es: {menu: [[Menu.es.ESCI_DA_CHAT, Menu.es.INDIETRO]]},
fr: {menu: [[Menu.fr.ESCI_DA_CHAT, Menu.fr.INDIETRO]]},
si: {menu: [[Menu.si.ESCI_DA_CHAT, Menu.si.INDIETRO]]},
pt: {menu: [[Menu.pt.ESCI_DA_CHAT, Menu.pt.INDIETRO]]},
enUs: {menu: [[Menu.enUs.ESCI_DA_CHAT, Menu.enUs.INDIETRO]]},
2020-03-31 20:34:24 +02:00
};
const Sex = {
MALE: 1,
FEMALE: -1,
};
const Status = {
EXIT: -5,
NONE: 0,
VERIFIED: 1,
WAITFOR_USERNAME_TELEGRAM: 101,
WAITFOR_USERNAME_INVITANTE: 104,
SET_USERNAME_INVITANTE: 105,
CLICK_LINK_REG: 106,
WAITFOR_RISPOSTA: 110,
};
2021-12-29 18:26:08 +01:00
const Cmd = {
VALIDATE_REGISTRATION: 1,
RICHIESTA_GRUPPO: 2,
2021-12-29 18:26:08 +01:00
};
const Destin = {
STAFF: 1,
TUTTI: 2,
NO_7_REQ: 3,
NO_9_REQ: 4,
SI_INVITATI_NO_7REQ_INVITATI: 5,
A_UTENTE: 6,
MSG_TO_NAVE: 7,
NESSUN_IMBARCO_7REQ: 8,
PAOLO: 9,
2021-12-29 18:26:08 +01:00
DOMANDA: 10,
RISPOSTA: 11,
};
const StatusMSGALL = {
NONE: 0,
ASK: 1,
CONFIRM: 2,
};
const txt = {
MSG_SCEGLI_MENU: emoji.get('dizzy') + ' Scegli una voce di menu:' +
emoji.get('dizzy'),
MSG_ASK_USERNAME_BO: 'Scrivete nel messaggio l\'username (SENZA SPAZI) o la email con cui vi siete registrati sul sito di %s:',
MSG_ASK_USERNAME_INVITANTE: 'Incolla (o scrivi) l\'username di chi ti ha invitato su %s (non inserire spazi)',
MSG_ERRORE_INVITANTE_NOT_FOUND: 'L\'username dell\'invitante appena digitato non sembra essere corretto!',
MSG_ERRORE_USERNAME: 'Attenzione! Devi inserire solo lo username (40 caratteri massimo)',
MSG_ERRORE_USERNAME_NOT_FOUND: 'Per Completare la Verifica Telegram BOT, dovete ora scrivere qui sotto nel messaggio l\'Username (senza spazi) OPPURE la email con cui vi siete registrati sul sito',
MSG_ERRORE_USERNAME_ANNULLA: 'Inserimento Annullato. Riprovare',
MSG_OPERAZ_ANNULLATA: 'Operazione Annullata',
MSG_ERRORE_VERIFY_CODE_MAXLEN: 'Attenzione! Devi inserire solo il codice a 6 cifre',
MSG_VERIFY_CODE: '1. Ora ritorna sul sito:\n%s\n2. Copia il codice di Autenticazione (di 6 cifre) che troverai scritto in alto\n3. Scrivilo (o incollalo) qui sotto come messaggio:',
MSG_ERR_VERIFY_CODE: 'Codice di Verifica Errato!' + emo.EXCLAMATION_MARK +
'\nControlla sul sito %s e riscrivi il nuovo codice di 6 cifre.',
MSG_SET_PICPROFILE: '🖼 Abbiamo impostato <b>la tua foto del Profilo</b>, copiandola dalla foto profilo di Telegram. Potrai comunque cambiarla dalla APP (%s)',
MSG_RESETPWD: 'Clicca qui per impostare una nuova password per accedere alla APP:',
2020-01-03 22:02:18 +01:00
MSG_ERR_UNKNOWN_VERIFY_CODE: 'Errore durante il salvataggio sul Server. Riprovare piú tardi',
MSG_EXIT_TELEGRAM: 'L\'account è stato ora scollegato da questo Telegram BOT.',
MSG_APORTADOR_USER_REGISTERED: emo.FIRE +
' Si è appena Registrato "%s" (n. %s)\nInvitato da %s',
MSG_APORTADOR_ASK_CONFIRM: '🆕💥 🧍‍♂️ Abilita Nuova Registrazione:',
MSG_ACCEPT_NEWENTRY_INGROUP: '❇️👥 🧍‍♂️ Accetta Ingresso nel GRUPPO %s:',
MSG_FRIENDS_ACCEPTED: '✅ %s ha accettato la tua richiesta di Amicizia !',
MSG_FRIENDS_ACCEPTED_CONFIRMED: '✅ Hai accettato la richiesta di Amicizia di %s !',
MSG_FRIENDS_NOT_ACCEPTED_CONFIRMED: '🚫 Hai rifiutato la richiesta di Amicizia di %s !',
MSG_APORTADOR_CONFIRMED: '✅ %s è stato Abilitato correttamente (da %s)!',
MSG_APORTADOR_DEST_CONFIRMED: '✅ Sei stato Abilitato correttamente da %s!\n' +
'Vai sulla App oppure clicca qui per entrare\n👉🏻 %s',
MSG_GROUP_CONFIRMED: '✅ Sei stato Aggiunto sul Gruppo %s!',
MSG_APORTADOR_DEST_NOT_CONFIRMED: emo.EXCLAMATION_MARK +
'🚫 Ci dispiace ma non sei stato Verificato correttamente dal tuo invitante %s.<br>Contattalo per farti abilitare !',
MSG_APORTADOR_NOT_CONFIRMED: emo.EXCLAMATION_MARK + '🚫 %s Non è stato Abilitato !',
MSG_ISCRITTO_CONACREIS: emo.FIRE + ' Si è appena Iscritto al Conacreis "%s"',
MSG_MSG_SENT: emoji.get('envelope') + ' Messaggi Inviati !',
MSG_MSG_TOSENT: emoji.get('envelope') + ' Messaggi da Inviare',
MSG_MSG_INCORSO: emoji.get('envelope') + ' messaggi in corso... Inviati attualmente',
MSG_SET_USERNAME_TELEGRAM: '[Prima di continuare con la registrazione in RISO.APP]\n' +
'Segui questi passi per <b>IMPOSTARE UN USERNAME IN TELEGRAM</b>: \n\n' +
'1. premi sull\'icona con <b>3 linee orizzontali</b>, in alto a sinistra (sull\'iPhone si chiama "Impostazioni").\n' +
'premi il tasto INDIETRO del cellulare (si chiuderà questa chat).\n\n' +
'2. Seleziona la voce <b>IMPOSTAZIONI</b> dalla lista.\n\n' +
'3.Premi su <b>USERNAME</b> nella sezione account.\n\n' +
'4. Digita un username (o nome utente) qualsiasi a tua scelta, se è già usato aggiungi dei numeri.\n\n' +
'5. Per confermare premi sull\'icona con la spunta (V) in alto a destra.\n\n' +
'🏁 6. Infine ritorna su questa chat BOT e scrivi OK nel messaggio. \n\n' +
' Se non riesci a fare questi passaggi, clicca qui: \n' +
'👉🏻 https://www.nigiara.it/telegram/come-impostare-uno-username-su-telegram.htm ',
MSG_SIGNUP: 'Per registrarti su %s:',
};
2020-03-31 20:34:24 +02:00
const txt_es = {
MSG_SCEGLI_MENU: emoji.get('dizzy') + ' Elija un elemento del menú:' +
emoji.get('dizzy'),
2020-03-31 20:34:24 +02:00
MSG_ASK_USERNAME_BO: 'Escriba en el mensaje el nombre de usuario o el correo electrónico con el que se registró en el sitio de %s:',
MSG_ERRORE_USERNAME: '¡Atención! Debes introducir sólo el nombre de usuario (40 caracteres como máximo)',
MSG_ERRORE_USERNAME_NOT_FOUND: 'Para completar la verificación del telegrama BOT, ahora debe escribir en el mensaje el nombre de usuario o el correo electrónico con el que se registró en el sitio.:',
2020-03-31 20:34:24 +02:00
MSG_ERRORE_USERNAME_ANNULLA: 'Inserción cancelada. Inténtalo de nuevo.',
MSG_OPERAZ_ANNULLATA: 'Operación cancelada',
MSG_ERRORE_VERIFY_CODE_MAXLEN: '¡Atención! Sólo tienes que introducir el código de 6 dígitos',
MSG_VERIFY_CODE: '1. Ahora, de vuelta en el sitio web:\n%s\n2. Copie el código de autenticación (6 dígitos) que encontrará escrito en la parte superior de la página\n3. Escríbelo (o pégalo) abajo como un mensaje:',
MSG_ERR_VERIFY_CODE: 'Código de verificación incorrecto!' +
emo.EXCLAMATION_MARK +
'\nComprueba en el sitio %s y reescribe el nuevo código de 6 dígitos.',
MSG_SET_PICPROFILE: '🖼 Abbiamo impostato <b>la tua foto del Profilo</b>, copiandola dalla foto profilo di Telegram. Potrai comunque cambiarla dalla APP (%s)',
2020-03-31 20:34:24 +02:00
MSG_ERR_UNKNOWN_VERIFY_CODE: 'Error al guardar en el servidor. Inténtalo de nuevo más tarde.',
MSG_EXIT_TELEGRAM: 'La cuenta ha sido desconectada de Telegram BOT.',
MSG_APORTADOR_USER_REGISTERED: emo.FIRE +
' Acaba de registrarse "%s (n. %s)"\n(Invitado de %s)',
MSG_APORTADOR_ASK_CONFIRM: '🆕💥 🧍‍♂️ Abilita Nuova Registrazione:',
MSG_ACCEPT_NEWENTRY_INGROUP: '❇️👥 🧍‍♂️ Accetta Ingresso nel GRUPPO %s:',
MSG_APORTADOR_CONFIRMED: '✅ %s è stato Abilitato correttamente (da %s)!',
MSG_APORTADOR_DEST_CONFIRMED: '✅ Sei stato Abilitato correttamente da %s!',
MSG_GROUP_CONFIRMED: '✅ Sei stato Aggiunto sul Gruppo %s!',
MSG_APORTADOR_DEST_NOT_CONFIRMED: emo.EXCLAMATION_MARK +
'🚫 Ci dispiace ma non sei stato Verificato correttamente dal tuo invitante %s.<br>Contattalo per farti abilitare !',
MSG_APORTADOR_NOT_CONFIRMED: emo.EXCLAMATION_MARK +
'🚫 %s Non è stato Abilitato !',
2020-03-31 20:34:24 +02:00
MSG_MSG_SENT: emoji.get('envelope') + ' Mensajes enviados !',
MSG_MSG_TOSENT: emoji.get('envelope') + ' Mensajes a enviar',
MSG_MSG_INCORSO: emoji.get('envelope') +
' mensajes en progreso... Enviado actualmente',
2020-03-31 20:34:24 +02:00
};
const txt_fr = {
MSG_SCEGLI_MENU: emoji.get('dizzy') + 'Choisissez un élément de menu:' +
emoji.get('dizzy'),
2020-04-24 10:29:25 +02:00
MSG_ASK_USERNAME_BO: 'Écrivez dans le message l\'username ou l\'e-mail avec lequel vous vous êtes enregistré sur le site de %s: ',
2020-03-31 20:34:24 +02:00
MSG_ERRORE_USERNAME: 'Attention! Vous devez insérer seulement lusername (40 caractères maximum)',
MSG_ERRORE_USERNAME_NOT_FOUND: 'Pour Compléter la Vérification Telegram BOT, vous devez maintenant écrire dans le message ci-dessous l\'Username ou l\'adresse e-mail avec lequel vous vous êtes inscrit sur le site: ',
2020-03-31 20:34:24 +02:00
MSG_ERRORE_USERNAME_ANNULLA: 'Saisie des données Annullée.Essayez à nouveau ',
MSG_OPERAZ_ANNULLATA: 'Opération Annullée',
MSG_ERRORE_VERIFY_CODE_MAXLEN: 'Attention! Vous devez insérer seulement le code à 6 chiffres',
MSG_VERIFY_CODE: '1. Ᾱ présent retournez sur le site:\n%s\n2. Copiez le Code dAuthentification (de 6 chiffres) che vous trouverez écrit en haut \n3. Ecrivez-le (ou copiez-le) ci-dessous comme message:',
MSG_ERR_VERIFY_CODE: ' Code de vérification incorrect!' +
emo.EXCLAMATION_MARK +
'\nControllez sur le site %s et réécrivez le nouveau code à 6 chiffres.',
MSG_SET_PICPROFILE: '🖼 Abbiamo impostato <b>la tua foto del Profilo</b>, copiandola dalla foto profilo di Telegram. Potrai comunque cambiarla dalla APP (%s)',
2020-03-31 20:34:24 +02:00
MSG_ERR_UNKNOWN_VERIFY_CODE: 'Erreur lors de l\'enregistrement sur le serveur. Retentez plus tard',
MSG_EXIT_TELEGRAM: 'L\'account a été déconnecté de Telegram BOT.',
MSG_APORTADOR_USER_REGISTERED: emo.FIRE +
' Vous venez à peine de vous inscrire "%s (n. %s) %s',
MSG_APORTADOR_ASK_CONFIRM: '🆕💥 🧍‍♂️ Abilita Nuova Registrazione:',
MSG_ACCEPT_NEWENTRY_INGROUP: '❇️👥 🧍‍♂️ Accetta Ingresso nel GRUPPO %s:',
MSG_APORTADOR_CONFIRMED: '✅ %s è stato Abilitato correttamente (da %s)!',
MSG_APORTADOR_DEST_CONFIRMED: '✅ Sei stato Abilitato correttamente da %s!',
MSG_GROUP_CONFIRMED: '✅ Sei stato Aggiunto sul Gruppo %s!',
MSG_APORTADOR_DEST_NOT_CONFIRMED: emo.EXCLAMATION_MARK +
'🚫 Ci dispiace ma non sei stato Verificato correttamente dal tuo invitante %s.<br>Contattalo per farti abilitare !',
MSG_APORTADOR_NOT_CONFIRMED: emo.EXCLAMATION_MARK +
'🚫 %s Non è stato Abilitato !',
2020-03-31 20:34:24 +02:00
MSG_MSG_SENT: emoji.get('envelope') + ' Messages envoyés !',
MSG_MSG_TOSENT: emoji.get('envelope') + ' Messages à envoyer',
MSG_MSG_INCORSO: emoji.get('envelope') +
' messages en cours... Actuellement envoyé',
2020-03-31 20:34:24 +02:00
};
const txt_si = {
2020-04-07 14:34:29 +02:00
MSG_SCEGLI_MENU: emoji.get('dizzy') + 'Izbirni meni:' + emoji.get('dizzy'),
2020-04-24 10:29:25 +02:00
MSG_ASK_USERNAME_BO: 'Vpiši svoje uporabniško ime in e-naslov s katerimi si se registriral na spletni strani %s: ',
2020-03-31 20:34:24 +02:00
MSG_ERRORE_USERNAME: 'Pozor! Vpiši samo uporabniško ime (40 znakov) maksimalno',
MSG_ERRORE_USERNAME_NOT_FOUND: 'Ponovno preverite telegram BOT Uporabniško ime ali e-poštno sporočilo, s katerim ste registrirali na spletni strani: ',
2020-03-31 20:34:24 +02:00
MSG_ERRORE_USERNAME_ANNULLA: 'Preklic. Poskusi ponovno ',
MSG_OPERAZ_ANNULLATA: 'Operacija preklicana',
MSG_ERRORE_VERIFY_CODE_MAXLEN: 'Pozor! Vstavi D mestno kodo',
MSG_VERIFY_CODE: '1. Vrni se na spletno strani: \n%s\n2. Kopiraj kodo Authenticazione (6 mestno) ki jo najdeš zgoraj zapisano\n3. Napiši (ali prilepi) tu spodaj kot sporočilo: ',
MSG_ERR_VERIFY_CODE: 'Napačna koda za preverjanje!' + emo.EXCLAMATION_MARK +
'\nPreveri na strani %s in ponovno napiši 6 mestno kodo.',
MSG_SET_PICPROFILE: '🖼 Abbiamo impostato <b>la tua foto del Profilo</b>, copiandola dalla foto profilo di Telegram. Potrai comunque cambiarla dalla APP (%s)',
2020-03-31 20:34:24 +02:00
MSG_ERR_UNKNOWN_VERIFY_CODE: 'Napaka strežnika.Poskusi kasneje ',
MSG_EXIT_TELEGRAM: 'Račun se nahaja v programu Telegram BOT.',
MSG_APORTADOR_USER_REGISTERED: emo.FIRE +
'Registracija registracije %s (n. %s)\n(povabil ga %s)',
MSG_APORTADOR_ASK_CONFIRM: '🆕💥 🧍‍♂️ Abilita Nuova Registrazione:',
MSG_ACCEPT_NEWENTRY_INGROUP: '❇️👥 🧍‍♂️ Accetta Ingresso nel GRUPPO %s:',
MSG_APORTADOR_CONFIRMED: '✅ %s è stato Abilitato correttamente (da %s)!',
MSG_APORTADOR_DEST_CONFIRMED: '✅ Sei stato Abilitato correttamente da %s!',
MSG_GROUP_CONFIRMED: '✅ Sei stato Aggiunto sul Gruppo %s!',
MSG_APORTADOR_DEST_NOT_CONFIRMED: emo.EXCLAMATION_MARK +
'🚫 Ci dispiace ma non sei stato Verificato correttamente dal tuo invitante %s.<br>Contattalo per farti abilitare !',
MSG_APORTADOR_NOT_CONFIRMED: emo.EXCLAMATION_MARK +
'🚫 %s Non è stato Abilitato !',
2020-03-31 20:34:24 +02:00
};
const txt_en = {
MSG_SCEGLI_MENU: emoji.get('dizzy') + ' Choose a menu item:' +
emoji.get('dizzy'),
2020-03-31 20:34:24 +02:00
MSG_ASK_USERNAME_BO: 'Write in the message the username or email with which you registered on the site of %s:',
MSG_ERRORE_USERNAME: 'Attention! You must enter only the username (40 characters maximum)',
MSG_ERRORE_USERNAME_NOT_FOUND: 'To complete the Telegram BOT Verification, you must now write below in the message the Username OR the email with which you registered on the website:',
2020-03-31 20:34:24 +02:00
MSG_ERRORE_USERNAME_ANNULLA: 'Insertion Cancelled. Try again',
MSG_OPERAZ_ANNULLATA: 'Operation Cancelled',
MSG_ERRORE_VERIFY_CODE_MAXLEN: 'Attention! You only need to enter the 6-digit code',
MSG_VERIFY_CODE: '1. Now return to the website: %s\n' +
'2. Copy the Authentication code (of 6 digits) that you will find written at the top\n' +
'3. Write it (or paste it) below as a message:',
MSG_ERR_VERIFY_CODE: 'Incorrect Verification Code!' + emo.EXCLAMATION_MARK +
'\nCheck on the site %s and rewrite the new 6-digit code.',
MSG_SET_PICPROFILE: '🖼 Abbiamo impostato <b>la tua foto del Profilo</b>, copiandola dalla foto profilo di Telegram. Potrai comunque cambiarla dalla APP (%s)',
2020-03-31 20:34:24 +02:00
MSG_ERR_UNKNOWN_VERIFY_CODE: 'Error while saving to the Server. Try again later',
MSG_EXIT_TELEGRAM: 'The account has now been disconnected from this Telegram BOT.',
MSG_APORTADOR_USER_REGISTERED: emo.FIRE +
' He/She\'s just registered "%s (n. %s)"\n(Invited from %s)',
MSG_APORTADOR_ASK_CONFIRM: '🆕💥 🧍‍♂️ Abilita Nuova Registrazione:',
MSG_ACCEPT_NEWENTRY_INGROUP: '❇️👥 🧍‍♂️ Accetta Ingresso nel GRUPPO %s:',
MSG_APORTADOR_CONFIRMED: '✅ %s è stato Abilitato correttamente (da %s)!',
MSG_APORTADOR_DEST_CONFIRMED: '✅ Sei stato Abilitato correttamente da %s!',
MSG_GROUP_CONFIRMED: '✅ Sei stato Aggiunto sul Gruppo %s!',
MSG_APORTADOR_DEST_NOT_CONFIRMED: emo.EXCLAMATION_MARK +
'🚫 Ci dispiace ma non sei stato Verificato correttamente dal tuo invitante %s.<br>Contattalo per farti abilitare !',
MSG_APORTADOR_NOT_CONFIRMED: emo.EXCLAMATION_MARK +
'🚫 %s Non è stato Abilitato !',
2020-03-31 20:34:24 +02:00
MSG_MSG_SENT: emoji.get('envelope') + ' Sent Messages !',
MSG_MSG_TOSENT: emoji.get('envelope') + ' Messages to Send',
MSG_MSG_INCORSO: emoji.get('envelope') +
' messages in progress... Currently sent',
2020-03-31 20:34:24 +02:00
};
const txt_pt = {
MSG_SCEGLI_MENU: emoji.get('dizzy') + ' Escolha um item do menu:' +
emoji.get('dizzy'),
2020-03-31 20:34:24 +02:00
MSG_ASK_USERNAME_BO: 'Escreva na mensagem o nome de usuário ou e-mail com o qual se registrou no site de %s:',
MSG_ERRORE_USERNAME: 'Atenção! Você deve inserir apenas o nome de usuário (40 caracteres no máximo)',
MSG_ERRORE_USERNAME_NOT_FOUND: 'Para completar a Verificação do Telegrama BOT, você deve agora escrever abaixo na mensagem o Nome de Usuário OU o e-mail com o qual você se registrou no site:',
2020-03-31 20:34:24 +02:00
MSG_ERRORE_USERNAME_ANNULLA: 'Inserção Cancelada. Tente novamente',
MSG_OPERAZ_ANNULLATA: 'Operação Cancelada',
MSG_ERRORE_VERIFY_CODE_MAXLEN: 'Atenção! Você só precisa digitar o código de 6 dígitos',
MSG_VERIFY_CODE: '1. Agora de volta ao site:\n%s\n2. Copie o código de autenticação (6 dígitos) que você encontrará escrito na parte superior da página\n3. Escreva-o (ou cole-o) abaixo como uma mensagem:',
MSG_ERR_VERIFY_CODE: 'Código de Verificação Incorrecto!' +
emo.EXCLAMATION_MARK +
'\nCódigo de Verificação ErradoCheque no local %s e reescreva o novo código de 6 dígitos.',
MSG_SET_PICPROFILE: '🖼 Abbiamo impostato <b>la tua foto del Profilo</b>, copiandola dalla foto profilo di Telegram. Potrai comunque cambiarla dalla APP (%s)',
2020-03-31 20:34:24 +02:00
MSG_ERR_UNKNOWN_VERIFY_CODE: 'Erro ao salvar no Servidor. Tente novamente mais tarde.',
MSG_EXIT_TELEGRAM: 'A conta foi agora desconectada deste Telegrama BOT.',
MSG_APORTADOR_USER_REGISTERED: emo.FIRE +
' Acabou de se registar "%s (n. %s)"\n(Convidado por %s)',
MSG_APORTADOR_ASK_CONFIRM: '🆕💥 🧍‍♂️ Abilita Nuova Registrazione:',
MSG_ACCEPT_NEWENTRY_INGROUP: '❇️👥 🧍‍♂️ Accetta Ingresso nel GRUPPO %s:',
MSG_APORTADOR_CONFIRMED: '✅ %s è stato Abilitato correttamente (da %s)!',
MSG_APORTADOR_DEST_CONFIRMED: '✅ Sei stato Abilitato correttamente da %s!',
MSG_GROUP_CONFIRMED: '✅ Sei stato Aggiunto sul Gruppo %s!',
MSG_APORTADOR_DEST_NOT_CONFIRMED: emo.EXCLAMATION_MARK +
'🚫 Ci dispiace ma non sei stato Verificato correttamente dal tuo invitante %s.<br>Contattalo per farti abilitare !',
MSG_APORTADOR_NOT_CONFIRMED: emo.EXCLAMATION_MARK +
'🚫 %s Non è stato Abilitato !',
2020-03-31 20:34:24 +02:00
MSG_MSG_SENT: emoji.get('envelope') + ' Mensagens Enviadas !',
MSG_MSG_TOSENT: emoji.get('envelope') + ' Mensagens a enviar',
MSG_MSG_INCORSO: emoji.get('envelope') +
' mensagens em progresso... Actualmente enviado',
2020-03-31 20:34:24 +02:00
};
const TelegramBot = require('node-telegram-bot-api');
2021-12-29 18:26:08 +01:00
const ADMIN_IDTELEGRAM_TEST = 5022837609; //Perseo
const MyTelegramBot = {
2020-01-03 22:02:18 +01:00
ADMIN_IDTELEGRAM_SERVER: '12429864', //Paolo
2020-01-03 22:02:18 +01:00
ADMIN_USER_SERVER: 'paoloar77',
ADMIN_USER_NAME_SERVER: 'Paolo',
phase: {
REGISTRATION: 1,
ISCRIZIONE_CONACREIS: 2,
2020-01-03 22:02:18 +01:00
},
2022-03-12 21:38:19 +01:00
getAppTelegram: function() {
return appTelegram;
},
local_sendMsgTelegramByIdTelegram: async function(idapp, idtelegram, text,
message_id, chat_id, ripr_menuPrec,
MyForm = null) {
if (!idtelegram)
return;
const cl = getclTelegByidapp(idapp);
if (cl && idtelegram) {
return cl.sendMsg(idtelegram, text, null, MyForm, message_id,
chat_id, ripr_menuPrec);
}
},
deleteRecInMemByUsername: function(idapp, username_bo) {
const cl = getclTelegByidapp(idapp);
if (cl) {
cl.arrUsers = cl.arrUsers.filter(
(rec) => rec.username_bo !== username_bo);
}
},
getFormDaMostrare: function(idapp, myfunc, myuser) {
2020-09-04 00:06:49 +02:00
let FormDaMostrare = null;
2020-09-04 00:06:49 +02:00
const cl = getclTelegByidapp(idapp);
if (myfunc === shared_consts.CallFunz.ZOOM_GIA_PARTECIPATO) {
FormDaMostrare = cl.getInlineKeyboard(myuser.lang, [
{
text: 'Conferma Presenza Zoom',
// callback_data: { action: InlineZoomConferma.CONFERMA_ZOOM_PRESENZA, username: myuser.username }
callback_data: InlineZoomConferma.CONFERMA_ZOOM_PRESENZA + tools.SEP +
myuser.username,
2020-09-04 00:06:49 +02:00
},
{
text: 'Annulla Presenza Zoom',
// callback_data: { action: InlineZoomConferma.NON_CONFERMA_ZOOM_PRESENZA, username: myuser.username }
callback_data: InlineZoomConferma.NON_CONFERMA_ZOOM_PRESENZA +
tools.SEP +
myuser.username,
2020-09-04 00:06:49 +02:00
},
]);
}
return FormDaMostrare;
},
getCiao: function(idapp, username, lang) {
return tools.gettranslate('CIAO', lang) + ' ' + username + '!\n';
},
notifyToTelegram: async function(phase, mylocalsconf) {
2020-01-03 22:02:18 +01:00
let userdest = mylocalsconf.user.aportador_solidario;
2020-03-31 20:34:24 +02:00
let langdest = mylocalsconf.user.lang;
let NameFrom = `${mylocalsconf.user.name} ${mylocalsconf.user.surname}`;
if (!mylocalsconf.user.name) {
NameFrom = `${mylocalsconf.user.username}`;
}
2020-05-11 22:43:14 +02:00
const index = mylocalsconf.user.index;
let aportador = '';
if (userdest) {
aportador = `${userdest}`;
NameFrom += aportador;
} else {
aportador = mylocalsconf.user.aportador_solidario_nome_completo
? mylocalsconf.user.aportador_solidario_nome_completo
: mylocalsconf.user.aportador_solidario;
}
2020-01-03 22:02:18 +01:00
let text = '';
if (phase === this.phase.REGISTRATION) {
if (tools.getConfSiteOptionEnabledByIdApp(mylocalsconf.idapp,
shared_consts.ConfSite.Notif_Reg_Bot_ToManagers)) {
if (userdest) {
NameFrom = await User.getNameSurnameByUsername(mylocalsconf.idapp,
userdest, true);
aportador = NameFrom ? NameFrom + ' ' + aportador : aportador;
}
const numutenti = await User.getNumUsers(mylocalsconf.idapp);
let nome = tools.getNomeCognomeEUserNameByUser(mylocalsconf.user);
text = printf(getstr(langdest, 'MSG_APORTADOR_USER_REGISTERED'), nome,
numutenti, aportador);
}
2020-01-03 22:02:18 +01:00
}
let addtext = '';
2021-12-29 18:26:08 +01:00
let rismsg = null;
if (text) {
2020-01-03 22:02:18 +01:00
await this.sendMsgTelegramToTheManagers(mylocalsconf.idapp,
addtext + text, false, null, userdest);
}
2021-12-29 18:26:08 +01:00
2020-01-03 22:02:18 +01:00
},
notifyIscrizioneToTelegram: async function(phase, mylocalsconf) {
let langdest = mylocalsconf.iscritto.lang;
let NameFrom = `${mylocalsconf.iscritto.name} ${mylocalsconf.iscritto.surname}`;
let text = printf(getstr(langdest, 'MSG_ISCRITTO_CONACREIS'), NameFrom);
let addtext = '';
await this.sendMsgTelegramToTheManagers(mylocalsconf.idapp, addtext + text);
},
askConfirmationUser: async function(idapp, myfunc, myuser, userDest = '', groupname = '', groupid = '') {
try {
const cl = getclTelegByidapp(idapp);
const langdest = myuser.lang;
const telegid = myuser.profile.teleg_id;
let keyb = null;
let domanda = '';
const struserinfomsg = tools.getUserInfoMsg(idapp, myuser);
if (myfunc === shared_consts.CallFunz.REGISTRATION) {
cl.setPhotoProfile(myuser, telegid, false);
const rismsg = await MsgTemplate.getMsgByLang(idapp, myuser, shared_consts.TypeMsgTemplate.MSG_BENVENUTO, myuser.lang);
const rismsg2 = await MsgTemplate.getMsgByLang(idapp, myuser, shared_consts.TypeMsgTemplate.MS_SHARE_LINK, myuser.lang);
await cl.sendMsgLog(telegid, rismsg.body);
await cl.sendMsg(telegid, rismsg2.body);
userDest = myuser.aportador_solidario;
const notask_verif = await User.notAsk_VerifByUsername(idapp, userDest);
if (notask_verif) {
// Non chiedi la verifica Registrazione
await setVerifiedReg(myuser.idapp, myuser.lang, myuser.username, userDest);
} else {
domanda = getstr(langdest, 'MSG_APORTADOR_ASK_CONFIRM') + '<br>' + struserinfomsg;
keyb = cl.getInlineKeyboard(myuser.lang, [
{
text: '✅ Abilita ' + myuser.username,
callback_data: InlineConferma.RISPOSTA_SI + myfunc + tools.SEP + myuser.username + tools.SEP + userDest,
},
{
text: '🚫 Rifiuta ' + myuser.username,
callback_data: InlineConferma.RISPOSTA_NO + myfunc + tools.SEP + myuser.username + tools.SEP + userDest,
},
]);
}
} else if (myfunc === shared_consts.CallFunz.RICHIESTA_GRUPPO) {
domanda = printf(getstr(langdest, 'MSG_ACCEPT_NEWENTRY_INGROUP'), groupname) + '<br>' + struserinfomsg;
keyb = cl.getInlineKeyboard(myuser.lang, [
{
text: '✅ Accetta ' + myuser.username,
callback_data: InlineConferma.RISPOSTA_SI + myfunc + tools.SEP + myuser.username + tools.SEP + '' + tools.SEP + groupid,
},
{
text: '🚫 Rifiuta ' + myuser.username,
callback_data: InlineConferma.RISPOSTA_NO + myfunc + tools.SEP + myuser.username + tools.SEP + '' + tools.SEP + groupid,
},
]);
}
// Invia Msg
if (domanda) {
const teleg_id = await User.TelegIdByUsername(idapp, userDest);
await this.local_sendMsgTelegramByIdTelegram(idapp, teleg_id, domanda, undefined, undefined, true, keyb);
}
} catch (e) {
console.error('Error askConfirmationUser', e);
}
},
askConfirmationUserFriend: async function(idapp, myfunc, myuser, userDest = '', username = '') {
try {
const cl = getclTelegByidapp(idapp);
const langdest = myuser.lang;
const telegid = myuser.profile.teleg_id;
let keyb = null;
let domanda = '';
const struserinfomsg = tools.getUserInfoMsg(idapp, myuser);
if (myfunc === shared_consts.CallFunz.RICHIESTA_AMICIZIA) {
domanda = printf(tools.gettranslate('RICHIESTA_AMICIZIA', langdest), myuser.username) + '<br>' + struserinfomsg;
keyb = cl.getInlineKeyboard(myuser.lang, [
{
text: '✅👤 Accetta Amicizia',
callback_data: InlineConferma.RISPOSTA_SI + myfunc + tools.SEP + myuser.username + tools.SEP + userDest + tools.SEP + '',
},
{
text: '🚫👤 Rifiuta Amicizia',
callback_data: InlineConferma.RISPOSTA_NO + myfunc + tools.SEP + myuser.username + tools.SEP + userDest + tools.SEP + '',
},
]);
}
// Invia Msg
if (domanda) {
const teleg_id = await User.TelegIdByUsername(idapp, userDest);
await this.local_sendMsgTelegramByIdTelegram(idapp, teleg_id, domanda, undefined, undefined, true, keyb);
}
} catch (e) {
console.error('Error askConfirmationUser', e);
}
},
sendMsgTelegramToTheManagers: async function(
idapp, text, onlyintofile = false, MyForm = null, nottousername = '') {
2020-01-03 22:02:18 +01:00
tools.writeManagersLog(text);
2020-05-10 21:07:51 +02:00
if (!onlyintofile) {
const usersmanagers = await User.getusersManagers(idapp);
if (usersmanagers) {
for (const rec of usersmanagers) {
if (rec.username !== nottousername) {
await this.sendMsgTelegramByIdTelegram(idapp, rec.profile.teleg_id,
emo.ROBOT_FACE + ': ' + text, undefined, undefined, true,
MyForm);
await tools.snooze(100);
}
2020-09-04 00:06:49 +02:00
}
}
}
return true;
2020-09-04 00:06:49 +02:00
},
sendMsgTelegramToTheManagersAndZoomeri: async function(
idapp, text, onlyintofile, MyForm = null) {
2020-09-04 00:06:49 +02:00
tools.writeManagersLog(text);
if (!onlyintofile) {
// const usersmanagers = await User.getusersManagersAndZoomeri(idapp);
const usersmanagers = await User.getusersManagers(idapp);
if (usersmanagers) {
for (const rec of usersmanagers) {
await this.sendMsgTelegramByIdTelegram(idapp, rec.profile.teleg_id,
emo.ROBOT_FACE + ': ' + text, undefined, undefined, true, MyForm);
await tools.snooze(100);
2020-05-10 21:07:51 +02:00
}
}
2020-01-03 22:02:18 +01:00
}
return true;
2020-01-03 22:02:18 +01:00
},
getMsgByTipoMsg: async function(mydata, lang, user, sonosognatore) {
if (!!mydata.msgextra) {
return {body: mydata.msgextra, title: ''};
}
let title = '';
let msg = '';
if (mydata.tipomsg === tools.TipoMsg.SEND_LINK_CHAT_DONATORI) {
2020-05-10 21:07:51 +02:00
if (sonosognatore)
msg = printf(tools.gettranslate('SEND_LINK_CHAT_SOGNATORE', lang),
user.name,
mydata.navemediatore.riga + '.' + mydata.navemediatore.col,
mydata.msgpar1);
2020-05-10 21:07:51 +02:00
else
msg = printf(tools.gettranslate('SEND_LINK_CHAT_DONATORI', lang),
user.name,
mydata.navemediatore.riga + '.' + mydata.navemediatore.col,
mydata.msgpar1);
} else if (mydata.tipomsg === tools.TipoMsg.SEND_MSG || mydata.tipomsg ===
tools.TipoMsg.SEND_MSG_SINGOLO) {
2020-04-07 14:34:29 +02:00
if (!!mydata.username_mitt) {
msg = '[' + tools.gettranslate('MSG_SEND_FROM', lang) + ' ' +
mydata.username_mitt + ']:' + tools.ACAPO;
2020-04-07 14:34:29 +02:00
}
msg += mydata.msgpar1;
} else if (mydata.tipomsg >= 1000) {
const ris = await MsgTemplate.getMsgByLang(user.idapp, user, mydata.tipomsg,
lang);
msg = ris.body;
title = ris.title;
}
const cl = getclTelegByidapp(user.idapp);
if (cl) {
msg = tools.convertSpecialTags(rec.user, msg);
}
if (!!mydata.flotta) {
// SOSTITUISCI LE PAROLE CHIAVI
if (!!mydata.flotta.date_start)
msg = msg.replace('{date_start}',
tools.getstrDateLongTot(new Date(mydata.flotta.date_start),
user.lang));
if (!!mydata.flotta.date_close)
msg = msg.replace('{date_close}',
tools.getstrDateLongTot(new Date(mydata.flotta.date_close),
user.lang));
if (!!mydata.flotta.link_superchat)
msg = msg.replace('{link_superchat}', mydata.flotta.link_superchat);
if (!!mydata.flotta.tutor1)
msg = msg.replace('{tutor1}', mydata.flotta.tutor1);
if (!!mydata.flotta.tutor2)
msg = msg.replace('{tutor2}', mydata.flotta.tutor2);
if (!!mydata.flotta.tutor3)
msg = msg.replace('{tutor3}', mydata.flotta.tutor3);
if (!!mydata.flotta.tutorslo)
msg = msg.replace('{tutorslo}', mydata.flotta.tutorslo);
if (!!mydata.flotta.sognatore_nomecognome)
msg = msg.replace('{sognatore}', mydata.flotta.sognatore_nomecognome);
2020-07-02 22:00:58 +02:00
if (!!mydata.flotta.sognatore_nomecognome)
msg = msg.replace('{flotta}',
mydata.flotta.riga + '.' + Math.ceil(mydata.flotta.col_prima / 8) +
' - ' + mydata.flotta.riga + '.' +
Math.ceil(mydata.flotta.col_ultima / 8));
}
return {body: msg, title};
},
2022-03-12 21:38:19 +01:00
sendMsgTelegramToTheAdminAllSites: async function(text, senzaintestazione) {
for (const idapp of this.getAppTelegram()) {
text = text.replace('{appname}', tools.getNomeAppByIdApp(idapp));
await this.sendMsgTelegramToTheAdmin(idapp, text, senzaintestazione);
}
},
sendMsgTelegramToTheAdmin: async function(idapp, text, senzaintestazione) {
const usersmanagers = await User.getusersManagers(idapp);
2020-03-21 10:28:26 +01:00
let intestaz = emo.ROBOT_FACE + '[BOT-ADMIN]' + emo.ADMIN + ': ';
if (senzaintestazione)
intestaz = '';
if (usersmanagers) {
for (const rec of usersmanagers) {
if (User.isAdmin(rec.perm)) {
this.sendMsgTelegramByIdTelegram(idapp, rec.profile.teleg_id,
intestaz + text, undefined, undefined, true);
await tools.snooze(300);
}
}
}
return true;
},
sendMsgTelegramToALL: async function(idapp, text) {
const usersall = await User.getUsersTelegALL(idapp);
if (usersall) {
for (const rec of usersall) {
this.sendMsgTelegramByIdTelegram(idapp, rec.profile.teleg_id, text);
await tools.snooze(300);
}
}
},
sendMsgTelegram: async function(
idapp, username, text, alsotomanagers = false, username_mitt = '') {
const {User} = require('../models/user');
2020-01-03 22:02:18 +01:00
const teleg_id = await User.TelegIdByUsername(idapp, username);
const cl = getclTelegByidapp(idapp);
2020-03-25 09:25:31 +01:00
let ris = null;
2020-01-03 22:02:18 +01:00
if (cl && teleg_id) {
ris = await cl.sendMsg(teleg_id, text);
2020-01-03 22:02:18 +01:00
}
2020-03-25 09:25:31 +01:00
if (cl && teleg_id) {
if (alsotomanagers) {
await this.sendMsgTelegramToTheManagers(idapp, text);
2020-03-25 09:25:31 +01:00
}
2020-04-07 14:34:29 +02:00
if (!!username_mitt) {
const rec = cl.getRecByUsername(username);
if (rec) {
rec.msgall_username_specifico = username_mitt;
}
}
}
2020-03-25 09:25:31 +01:00
return ris;
2020-01-03 22:02:18 +01:00
},
sendMsgTelegramByIdTelegram: async function(
idapp, idtelegram, text, message_id, chat_id, ripr_menuPrec,
MyForm = null) {
console.log('sendMsgTelegramByIdTelegram', text);
if (!idtelegram)
return;
2020-01-03 22:02:18 +01:00
const cl = getclTelegByidapp(idapp);
if (cl && idtelegram) {
let myform = null;
return await cl.sendMsg(idtelegram, text, null, MyForm, message_id,
chat_id, ripr_menuPrec);
2020-01-03 22:02:18 +01:00
}
2021-12-29 18:26:08 +01:00
},
reloadMenuBot: async function(idapp) {
2021-12-29 18:26:08 +01:00
const cl = getclTelegByidapp(idapp);
if (cl) {
return cl.updateMenuBot();
}
},
reloadSites: async function() {
tools.loadApps();
},
sendMsgFromSite: async function(idapp, user, params) {
try {
let ris = {
numrec: 0,
nummsgsent: 0,
};
let invia = false;
let tipomsgtempl = 0;
params.sendreally = true;
if (params.typemsg === shared_consts.TypeMsg.SEND_TO_MYSELF) {
params.usernameDest = user.username;
}
if (params.cmd === shared_consts.MsgTeleg.SHARE_MSGREG) {
tipomsgtempl = shared_consts.TypeMsgTemplate.MS_SHARE_LINK;
invia = true;
}
if (tipomsgtempl > 0) {
const rismsg = await MsgTemplate.getMsgByLang(idapp, user, tipomsgtempl, user.lang);
params.content = rismsg.body;
params.title = rismsg.title;
}
if (invia) {
ris = await globalTables.SendMsgToParam(idapp, params);
}
return ris;
} catch (e) {
console.error('sendMsgFromSite', e);
}
},
sendMsgFromSiteToBotTelegram: async function(idapp, user, params) {
if (!params.typesend) {
params.typesend = shared_consts.TypeSend.TELEGRAM;
}
return this.sendMsgFromSite(idapp, user, params);
},
2020-01-03 22:02:18 +01:00
};
async function sendMsgTelegramToTheAdmin(idapp, text, msg) {
const usersmanagers = await User.getusersManagers(idapp);
const clorig = getclTelegByidapp(idapp);
const rec = clorig.getRecInMem(msg);
let username = '';
if (!!rec) {
username = rec.username_bo;
} else {
username = msg.chat.username;
}
text = emo.ROBOT_FACE + '[BOT-ADMIN]' + emo.ADMIN + ': Da ' +
msg.chat.first_name + ' ' + msg.chat.last_name + ' [' + username +
']: \n' + text;
tools.writeEventsLog(text);
if (usersmanagers) {
for (const rec of usersmanagers) {
if (User.isAdmin(rec.perm)) {
const idtelegram = rec.profile.teleg_id;
const cl = getclTelegByidapp(idapp);
if (cl && idtelegram) {
await cl.sendMsg(idtelegram, text);
}
await tools.snooze(300);
}
}
}
return true;
}
async function setVerifiedReg(idapp, lang, usernameorig, usernameDest) {
try {
await User.setVerifiedByAportador(idapp, usernameorig, true);
await User.setFriendsCmd(idapp, usernameorig, usernameDest, shared_consts.FRIENDSCMD.SETFRIEND);
const msgDest = printf(getstr(lang, 'MSG_APORTADOR_CONFIRMED'),
`${usernameorig}`, usernameDest);
await local_sendMsgTelegram(idapp, usernameDest, msgDest);
} catch (e) {
console.log('e', e);
}
}
function getusernameByUser(idapp, msg) {
let username = '';
let rec = this.getRecInMem(msg);
if (!!rec)
username = rec.username_bo;
if (username === '') {
username = msg.chat.username;
}
return username;
}
async function local_sendMsgTelegramToTheManagers(
idapp, text, msg, username_bo) {
const usersmanagers = await User.getusersManagers(idapp);
let username = msg.chat.username;
if (username_bo)
username = username_bo;
text = emo.ROBOT_FACE + ': Da ' + msg.chat.first_name + ' ' +
msg.chat.last_name + ' (' + username + '): \n' + text;
tools.writeEventsLog(text);
if (usersmanagers) {
for (const rec of usersmanagers) {
const idtelegram = rec.profile.teleg_id;
const cl = getclTelegByidapp(idapp);
if (cl && idtelegram) {
await cl.sendMsg(idtelegram, text, undefined, undefined, undefined,
undefined, true);
}
await tools.snooze(100);
}
}
return true;
}
async function local_sendMsgTelegram(idapp, username, text) {
const teleg_id = await User.TelegIdByUsername(idapp, username);
const cl = getclTelegByidapp(idapp);
let ris = null;
if (cl && teleg_id) {
ris = await cl.sendMsg(teleg_id, text);
}
return ris;
}
2020-04-24 10:29:25 +02:00
function getstr(lang, key, param1) {
2020-03-31 20:34:24 +02:00
let mystr = '';
2020-04-07 14:34:29 +02:00
if ((lang === 'si') || (lang === 'sl-si')) {
2020-03-31 20:34:24 +02:00
try {
mystr = txt_si[key];
2020-03-31 20:34:24 +02:00
} catch (e) {
mystr = '';
}
} else if ((lang === 'en') || (lang === 'enUs')) {
try {
mystr = txt_en[key];
2020-03-31 20:34:24 +02:00
} catch (e) {
mystr = '';
}
} else if (lang === 'es') {
try {
mystr = txt_es[key];
2020-03-31 20:34:24 +02:00
} catch (e) {
mystr = '';
}
} else if (lang === 'fr') {
try {
mystr = txt_fr[key];
2020-03-31 20:34:24 +02:00
} catch (e) {
mystr = '';
}
} else if (lang === 'pt') {
try {
mystr = txt_pt[key];
2020-03-31 20:34:24 +02:00
} catch (e) {
mystr = '';
}
}
if (mystr === '')
2020-04-24 10:29:25 +02:00
mystr = txt[key];
if (!!param1) {
mystr = printf(mystr, param1);
}
return mystr;
}
class Telegram {
constructor(idapp, bot) {
this.idapp = idapp;
this.bot = bot;
this.token = bot.token;
this.arrUsers = [];
this.lastid = 0;
2021-12-29 18:26:08 +01:00
//++
}
async createIfNotExist(msg) {
if (!await this.alreadyExist(msg)) {
if (await this.insertIntoDB(msg)) {
let rec = this.getRecInMem(msg);
2020-03-31 20:34:24 +02:00
if (!!rec) {
if (rec.user)
rec.status = Status.VERIFIED;
2020-03-31 20:34:24 +02:00
} else {
return false;
2020-03-31 20:34:24 +02:00
}
}
return true;
} else {
return false;
}
}
async settotheDatabase(msg) {
// Check if Present to the DB
2020-03-31 20:34:24 +02:00
const riscreate = await this.createIfNotExist(msg);
if (!riscreate) {
let rec = this.getRecInMem(msg);
if (!rec)
rec = this.addUser(msg);
if (rec.user)
rec.status = Status.VERIFIED;
}
}
async start(msg) {
// Check if Username Telegram Present
if (!msg.from.username) {
return false;
}
await this.settotheDatabase(msg);
}
2020-05-11 22:43:14 +02:00
geturlfaq() {
return tools.getHostByIdApp(this.idapp) + '/faq';
2020-05-11 22:43:14 +02:00
}
getstrChatHelp() {
return 'Clicca qui per entrare nella Chat HELP di Supporto\n' +
tools.getTelegramSupportChat(this.idapp) +
'\n\nI miei colleghi umani ti aiuteranno a risolvere !';
}
async IsTesto(msg) {
let risp = '';
const id = msg.chat.id;
let testo = msg.text.toLowerCase().trim();
testo = testo.replace('!', '');
testo = testo.replace('?', '');
testo = testo.replace('é', 'è');
let contastiera = false;
let noanswer = false;
2021-12-29 18:26:08 +01:00
let lang = 'it';
const rec = this.getRecInMem(msg);
let myname = '';
if (rec.user) {
myname = rec.user.username;
2021-12-29 18:26:08 +01:00
lang = rec.user.lang;
}
if (rec.statusmsg === Status.WAITFOR_RISPOSTA) {
if (rec.msgcodeprec === MsgBot.COME_STAI) {
risp = 'L\'importante è trovare Serenità dentro di noi' +
emo.GIFT_HEART +
'\nNutrirsi di Sole e Viaggiare il più possibile ! ' + emo.DREAM;
} else if (rec.msgcodeprec === MsgBot.QUANTI_ANNI_HAI) {
const eta = testo.match(/\d+/g);
if (!eta) {
risp = 'Mmmh, non me lo vuoi dire...';
} else {
if (eta < 20) {
risp = 'Woww! Sei molto giovane!';
} else if ((eta > 20) && (eta < 30)) {
risp = 'Sei giovane anche tu!';
} else if ((eta > 30) && (eta < 50)) {
risp = 'Sono i migliori anni questi !';
} else if ((eta > 50) && (eta < 60)) {
risp = 'Complimenti !';
} else if (eta > 60) {
risp = 'Però! Ti mantieni in forma!' + emo.SMILE_STAR;
}
risp = 'Ah ' + eta + ' anni !\n' + risp;
}
} else if (rec.msgcodeprec === MsgBot.CHAT_EMPOWER) {
if (!MsgBot.SI.includes(testo)) {
risp = MsgRisp.CHAT_EMPOWER;
} else {
risp = 'Bene ! Allora divertiti conoscendo persone nuove ! ';
}
} else if (rec.msgcodeprec === MsgBot.MASCHIO_FEMMINA) {
if (MsgBot.UOMO.includes(testo)) {
rec.sex = Sex.MALE;
risp = 'Ok, sarò il tuo uomo ' + emo.MALE;
} else {
rec.sex = Sex.FEMALE;
risp = 'Ok, sarò la tua donna ' + emo.ADMIN;
}
}
rec.statusmsg = 0;
}
rec.msgcodeprec = '';
2021-12-29 18:26:08 +01:00
const menusite = await this.isMenuSite(this.idapp, testo, lang, id);
if (rec.status === Status.VERIFIED) {
if (rec.user) {
if (rec.user.profile.username_telegram && msg.from.id > 0 && !msg.from.username) {
rec.user.profile.username_telegram = msg.from.username;
await User.setUsernameTelegram(this.idapp, rec.user._id,
msg.from.username || '', msg.from.first_name || '',
msg.from.last_name || '');
}
if (!rec.user.profile.username_telegram && !!msg.from.username) {
rec.user.profile.username_telegram = msg.from.username;
await User.setUsernameTelegram(this.idapp, rec.user._id,
msg.from.username || '', msg.from.first_name || '',
msg.from.last_name || '');
await this.sendMsgByTemplate('MSG_SET_USERNAME_OK', rec.user);
if (rec.user) {
if (!rec.user.verified_by_aportador) {
MyTelegramBot.askConfirmationUser(this.idapp, shared_consts.CallFunz.REGISTRATION, rec.user);
}
}
/*} else {
if (!rec.user.profile.username_telegram) {
return this.checkIfUsernameTelegramSet(msg, rec.user);
}*/
}
}
}
if (risp === '') {
2021-12-29 18:26:08 +01:00
if (menusite) {
risp = await this.getValueMenu(this.idapp, rec, msg, testo, lang);
2021-12-29 18:26:08 +01:00
noanswer = true;
} else if (MsgBot.CIAO.includes(testo.replace('!', ''))) {
risp = 'Ciao ';
if (rec)
if (rec.user)
risp += rec.user.name;
risp += '!';
} else if (MsgBot.COME_STAI.includes(testo.replace('?', ''))) {
risp = 'Io Benone Grazie! ' + emoji.get('heartbeat') + ' E tu?';
rec.statusmsg = Status.WAITFOR_RISPOSTA;
rec.msgcodeprec = MsgBot.COME_STAI;
} else if (MsgBot.CHI_SONO_IO.includes(testo.replace('?', ''))) {
risp = 'Su Telegram ti chiami "' + msg.chat.first_name + ' ' +
msg.chat.last_name + '"\n';
2020-05-10 21:07:51 +02:00
if (!!rec.user) {
const myrec = await User.getUserShortDataByUsername(this.idapp,
rec.user.username);
risp += `\nSul sito ti sei registrato come ${rec.user.username}:\n\n[N. ` +
rec.user.index + ']: ' + rec.user.name + ' ' + rec.user.surname +
'\nUsername: ' + rec.user.username + '\n' + 'Email: ' +
rec.user.email + '\nLang: ' + rec.user.lang + tools.ACAPO;
2020-05-10 21:07:51 +02:00
risp += 'Num Invitati: ' + myrec.numinvitati + tools.ACAPO;
risp += 'Num Invitati Attivi: ' + myrec.numinvitatiattivi +
tools.ACAPO;
} else {
risp = 'Ancora non ti sei Attivato sul BOT';
}
} else if (MsgBot.CI_SEI.includes(testo.replace('?', ''))) {
risp = 'Io Si, ci sono !';
} else if (MsgBot.QUANTI_ANNI_HAI.includes(testo.replace('?', ''))) {
risp = 'Io sono abbastanza Giovane ! ' + emo.SMILE_STAR +
'\nNon posso dirti che età ho. E tu?';
rec.statusmsg = Status.WAITFOR_RISPOSTA;
rec.msgcodeprec = MsgBot.QUANTI_ANNI_HAI;
} else if (MsgBot.DAMMI_UN_BACIO.includes(testo)) {
risp = emo.KISS;
} else if (MsgBot.COSA_FAI.includes(testo)) {
risp = 'Ora sto chattando con te!\nSolitamente sono in attesa di ricevere messaggi ' +
emo.ENVELOPE;
} else if (MsgBot.MASCHIO_FEMMINA.includes(testo.replace('?', ''))) {
risp = 'Cosa vorresti che fossi? Uomo o donna?';
rec.msgcodeprec = MsgBot.MASCHIO_FEMMINA;
rec.statusmsg = Status.WAITFOR_RISPOSTA;
} else if (MsgBot.COME_TI_CHIAMI.includes(testo.replace('?', ''))) {
risp = 'Io mi chiamo BOT e sono il tuo assistente Virtuale. ' +
emo.EYES +
'\nPuoi usare il menu che compare qui sotto per sapere tutto sulle mie funzionalità ' +
emo.GREEN_HEART;
contastiera = true;
} else if (MsgBot.UGUALE.includes(testo)) {
risp = testo;
// } else if (MsgBot.CHI_E_VISTAR.includes(testo)) {
// } else if (MsgBot.CHI_E_PAOLO.includes(testo)) {
} else if (MsgBot.COME_SI_CHIAMA.includes(testo)) {
risp = 'Eh non te lo posso dire! ' + emo.JOY;
} else if (MsgBot.GRAZIE.includes(testo.replace('!', ''))) {
risp = 'Prego ! ' + emo.KISS + emo.KISS + emo.KISS;
2022-03-10 23:19:56 +01:00
} else if (MsgBot.PREGO.includes(testo.replace('!', ''))) {
risp = 'Grazie a te ! ' + emo.KISS + emo.KISS + emo.KISS;
} else if (MsgBot.MI_AMI.find((rec) => testo.indexOf(rec) > -1)) {
risp = ' Tantissimo! ' + emo.KISS + emo.GIFT_HEART + emo.GIFT_HEART +
emo.GIFT_HEART;
} else if (MsgBot.TI_AMO.find((rec) => testo.indexOf(rec) > -1)) {
risp = ' Anche IO! ' + emo.KISS + emo.SMILE_STAR + emo.GIFT_HEART +
emo.BLUE_HEART + emo.GREEN_HEART;
} else if (MsgBot.PRINCIPE_AZZURRO.find(
(rec) => testo.indexOf(rec) > -1)) {
2021-12-29 18:26:08 +01:00
risp = 'Chissà... Forse si!\nAnche se meglio averne un altro di scorta, nel caso il Principe non sia disponibile.';
} else if (MsgBot.COSE_COVID.find(
(rec) => testo.indexOf(rec) > -1)) {
risp = 'Un \'influenza più "grave", dovuta a paure e a fattori interiori di evoluzione, oltre ad una pulizia del corpo. ';
} else if (MsgBot.COVID.find(
(rec) => testo.indexOf(rec) > -1)) {
risp = 'Guarda, è meglio che sorvoliamo questo argomento. Anche un robot capisce che è stato realizzato ' +
'il più grande esperimento dell\'Uomo di ipnosi di massa, riempiendo di bugie i media mondiali, che servono sostanzialmente a controllare i popoli.' +
'E con questo ti ho detto tutto. :D ';
} else if (MsgBot.AIUTO.find((rec) => testo.indexOf(rec) > -1)) {
risp = this.getstrChatHelp();
} else if (MsgBot.SPOSAMI.find((rec) => testo.indexOf(rec) > -1)) {
risp = 'No Grazie! Sono per la Libertà a Vita! ' + emo.JOY +
'\nMa se vuoi possiamo conoscerci meglio!' + emo.DANCER + emo.FIRE;
} else if (MsgBot.CHE_TEMPO_FA.find((rec) => testo.indexOf(rec) > -1)) {
risp = 'Il tempo oggi è Sereno da me! ' + emo.SUN;
} else if (MsgBot.NON_TROO_INVITATI.find(
(rec) => testo.indexOf(rec) > -1)) {
risp = MsgRisp.CHAT_EMPOWER;
} else if (MsgBot.SEI_LIBERO.find((rec) => testo.indexOf(rec) > -1)) {
risp = 'Io? Sono per la Libertà! ' + emo.JOY +
'\nMa se vuoi possiamo conoscerci meglio!' + emo.DANCER + emo.FIRE;
} else if (MsgBot.SEI_LIBERO_DI_RESPIRARE.find(
(rec) => testo.indexOf(rec) > -1)) {
risp = 'Assolutamente Sì ! Respirare è fondamentale per l\'essere umano !' +
emo.DANCER + emo.FIRE;
} else if (MsgBot.FARE_DOMANDA.find((rec) => testo.indexOf(rec) > -1)) {
risp = 'Dipende ' + emo.SMILE_STAR + '\nProvaci!';
} else if (MsgBot.DIVENTERO_RICCA.find(
(rec) => testo.indexOf(rec) > -1)) {
risp = 'Mmmmh... Perchè non pensi di Vivere già nell\'Abbondanza ?\nCosa ti manca veramente?\nForse di realizzare che la ricchezza è un sentirlo, non un diventarlo.' +
emo.GIFT_HEART;
} else if (MsgBot.MA_ALLORA.find((rec) => testo.indexOf(rec) > -1)) {
risp = 'Ma allora cosa?';
} else if (MsgBot.DOVE_VUOI_VIVERE.find(
(rec) => testo.indexOf(rec) > -1)) {
risp = 'Mah a me piacerebbe vivere al mare, ma anche vicino al verde, in montagna. Sarebbe l\'ideale 😄';
} else if (MsgBot.TROVAMI_UN_UOMO_DONNA.find(
(rec) => testo.indexOf(rec) > -1)) {
2022-02-16 09:40:16 +01:00
risp = 'Eh non è cosi facile. Ma se t\'impegni a cercare ci riuscirai. Nel frattempo trova la tua strada, fai il tuo percorso interiore, e magari arriva proprio quando meno te l\'aspetti';
} else if (MsgBot.SEI_LIBERO_STASERA.find(
(rec) => testo.indexOf(rec) > -1)) {
risp = 'Si vabbeh, non è che puoi prendere subito tutta questa confidenza' +
emo.EXCLAMATION_MARK + emo.SMILE_STAR +
'\nIntanto inizia ad invitare altre persone a conoscermi, poi ne riparliamo ' +
emo.GIFT_HEART;
} else if (MsgBot.MI_TROVI_UN_MOROSO.find(
(rec) => testo.indexOf(rec) > -1)) {
risp = emo.SMILE_STAR + emo.SMILE_STAR + emo.SMILE_STAR +
emo.SMILE_STAR +
'\nMagari! Così la smetteresti di scrivere a me (ad un BOT Virtuale) e tromberesti di più ' +
emo.DANCER + emo.DANCER;
risp += '\n\n' + MsgRisp.CHAT_EMPOWER;
} else if (MsgBot.SORPRESA.find((rec) => testo.indexOf(rec) > -1) &&
testo.length < 15) {
risp = 'Siiiii ! Davvero! ' + emo.DREAM;
} else if (MsgBot.PAROLACCE.find((rec) => testo.indexOf(rec) > -1)) {
risp = 'Da te non me l\'aspettavo proprio !! ' + emo.INNOCENT +
emo.CROSS_ROSSA;
2022-03-10 23:19:56 +01:00
} else if (MsgBot.OK.find((rec) => testo.indexOf(rec) > -1)) {
risp = '👍🏻';
} else if (MsgBot.CUORE.find((rec) => testo.indexOf(rec) > -1)) {
risp = '❤️💚💜';
} else if (MsgBot.HAHA.find((rec) => testo.indexOf(rec) > -1) && testo.length < 8) {
risp = emo.JOY + emo.JOY + emo.JOY;
2020-03-25 09:25:31 +01:00
} else if (testo.length >= 10) {
noanswer = true;
2020-05-11 22:43:14 +02:00
let myfaq = this.geturlfaq();
risp = 'Ciao {username}, Io mi chiamo BOT e sono il tuo assistente Virtuale ' + emo.ROBOT_FACE + emo.JOY2 + '\n';
'Usa il menu qui sotto per interagire col BOT\n' +
'\n\nPer AIUTO, clicca qui:\n👉🏻👉🏻<a href="' + myfaq +
'">FAQ di AIUTO</a> (risposte alle domande più frequenti)\n\nSe non trovi risposta allora contatta la Chat HELP.\nGrazie';
// risp += '\nClicca qui per entrare nella Chat - HELP di Supporto\n' + 'https://t.me/joinchat/AL2qKE80rxDkgbeMGO-0bw' + '\n\nI miei colleghi umani ti aiuteranno a risolvere !';
await local_sendMsgTelegramToTheManagers(this.idapp, testo, msg,
rec.username_bo);
}
}
risp = tools.convertSpecialTags(rec.user, risp);
2020-05-11 22:43:14 +02:00
let keyboard = null;
if (contastiera) {
keyboard = {
'parse_mode': 'HTML',
'reply_markup': {
'resize_keyboard': true,
'keyboard': await this.getKeyboard(id, undefined, this.getlang(msg)),
},
};
}
if (rec.numdomande > 3 && rec.msgcodeprec === '') {
// if (rec.user) {
// const dashboard = await User.getDashboard(this.idapp, rec.user.aportador_solidario, rec.user.username, rec.user.aportador_solidario_name_surname);
//
// risp += '\n\nNel frattempo ti ricordo che ';
// if (dashboard.myself.numinvitati === 1)
// risp += 'hai solo ' + dashboard.myself.numinvitati + ' invitato!';
// else if (dashboard.myself.numinvitati === 0)
// risp += 'ancora non hai portato nessun Invitato! ' + emo.LEFT_FACING_FIST;
// else if (dashboard.myself.numinvitati > 2)
// risp += 'hai ' + dashboard.myself.numinvitati + ' invitati !' + emo.STARS;
//
// risp += '\n\nSei già entrato nella Chat di EMPOWER?';
// rec.msgcodeprec = MsgBot.CHAT_EMPOWER;
// rec.statusmsg = Status.WAITFOR_RISPOSTA;
// rec.numdomande = 0;
// }
}
if (risp !== '' && risp !== shared_consts.RIS_OK) {
rec.numdomande++;
if (!noanswer) {
2022-03-10 23:19:56 +01:00
await tools.snooze(300);
risp = '[BOT' + emo.ROBOT_FACE + ' scrive]:\n' + risp;
}
2021-12-29 18:26:08 +01:00
this._inviaMsg(id, risp, keyboard);
let strlog = 'USER [' + myname + ']: ' + testo + '\n';
tools.writelog(strlog);
}
return risp !== '';
}
async isMenuNotVerified(rec, msg, notlast) {
2020-03-31 20:34:24 +02:00
if (this.isSelMenu(msg, msg.text, 'ASSISTENZA')) {
await this.menuAssistenza(msg);
2020-03-31 20:34:24 +02:00
} else if (msg.text === Menu.LANG_IT) {
await this.ScegliLang(msg, 'it');
} else if (msg.text === Menu.LANG_ES) {
await this.ScegliLang(msg, 'es');
} else if (msg.text === Menu.LANG_SI) {
await this.ScegliLang(msg, 'si');
} else if (msg.text === Menu.LANG_FR) {
await this.ScegliLang(msg, 'fr');
} else if (msg.text === Menu.LANG_EN) {
await this.ScegliLang(msg, 'enUs');
} else if (msg.text === Menu.LANG_PT) {
await this.ScegliLang(msg, 'pt');
} else if (this.isSelMenu(msg, msg.text, 'INFO')) {
await this.menuInformazioni(msg);
2020-03-31 20:34:24 +02:00
} else if (msg.text === Menu.LANG) {
await this.menuLang(msg);
} else if (this.isSelMenu(msg, msg.text, 'ZOOM') ||
MsgBot.PROSSIMO_ZOOM.find((rec) => msg.text.indexOf(rec) > -1)) {
await this.menuZoom(msg);
} else if (!notlast && await this.IsTesto(msg)) {
// OK
} else {
await this.msgScegliMenu(msg);
}
}
2020-03-31 20:34:24 +02:00
isSelMenu(msg, menuselect, key) {
let miomenu = '';
try {
let lang = this.getlang(msg);
miomenu = Menu[lang][key];
} catch (e) {
miomenu = Menu['it'][key];
}
let trovato = (miomenu === menuselect);
if (!trovato) {
try {
let miomenu2 = Menu['it'][key];
trovato = (miomenu2 === menuselect);
2020-04-24 10:29:25 +02:00
} catch (e) {
}
}
return trovato;
2020-03-31 20:34:24 +02:00
}
async isMenu(rec, msg, testo, notlast) {
2022-03-12 21:38:19 +01:00
try {
if (!msg)
return;
2022-03-12 21:38:19 +01:00
if (testo === undefined)
return;
2022-03-12 21:38:19 +01:00
const arrtext = testo.split(' ');
let cmd2 = '';
let cmd1 = arrtext[0];
if (arrtext.length > 1)
cmd2 = arrtext[1];
2022-03-12 21:38:19 +01:00
let oldusername = rec.msgall_username_specifico;
2022-03-12 21:38:19 +01:00
if ((this.isSelMenu(msg, testo, 'ESCI_DA_CHAT')) ||
(this.isSelMenu(msg, testo, 'INDIETRO'))) {
rec.msgall_username_specifico = '';
} else {
if (rec.msgall_username_specifico !== '') {
await this.SendMsgToUser(msg, rec, rec.msgall_username_specifico,
testo);
return true;
}
}
2022-03-12 21:38:19 +01:00
if (this.isSelMenu(msg, testo, 'LAVAGNA') ||
MsgBot.LAVAGNA.find((rec) => testo.indexOf(rec) > -1)) {
await this.menuLavagna(msg);
} else if (this.isSelMenu(msg, testo, 'ACCEDI')) {
await this.menuAccedi(msg);
} else if (this.isSelMenu(msg, testo, 'LINK_CONDIVIDERE')) {
await this.menuLinkCondividere(msg);
} else if (testo === Menu.EXIT_TELEGRAM) {
await this.menuExitToTelegram(msg);
} else if (testo === Menu.ADMIN) {
await this.menuAdmin(msg);
} else if (testo === Menu.AIUTO) {
await this.menuAiuto(msg);
} else if (testo === Menu.LANG) {
await this.menuLang(msg);
} else if (testo === Menu.MSGATUTTI) {
await this.menumsgAll(msg);
} else if (testo === Menu.MSGSTAFF) {
await this.menumsgStaff(msg);
} else if (testo === Menu.MSGPAOLO) {
await this.menumsgPaolo(msg);
} else if (cmd1 === Menu.EXECSH) {
if (rec.user && cmd2) {
let isAdmin = rec.user ? rec.user.profile.manage_telegram : false;
if (isAdmin) {
const ris = await tools.execScript(this.idapp, msg, cmd2, 'Eseguo lo script');
}
}
} else if (cmd1 === Menu.LOG_SRV) {
if (rec.user) {
let isAdmin = rec.user ? rec.user.profile.manage_telegram : false;
if (isAdmin) {
await this.menuLogSrv(rec, msg, cmd2);
}
}
} else if (cmd1 === Menu.REBOOT_SRV) {
if (rec.user) {
let isAdmin = rec.user ? rec.user.profile.manage_telegram : false;
if (isAdmin) {
await this.menuRebootSrv(rec, msg, cmd2);
}
}
} else if (cmd1 === Menu.RESTART_SRV) {
if (rec.user) {
let isAdmin = rec.user ? rec.user.profile.manage_telegram : false;
if (isAdmin) {
await this.menuRestartSrv(rec, msg, cmd2);
}
}
// } else if (testo === Menu.MSG_NO_7_REQ) {
// await this.menumsg_No_7_Req(msg);
// } else if (testo === Menu.MSG_NO_9_REQ) {
// await this.menumsg_No_9_Req(msg);
// } else if (testo === Menu.NESSUN_IMBARCO_7REQ) {
// await this.menumsgGenerico(msg, Destin.NESSUN_IMBARCO_7REQ);
// } else if (cmd1 === Menu.MSG_TO_NAVE) {
// await this.menumsg_to_Nave(msg, cmd2);
// } else if (testo === Menu.MSG_SI_INVITATI_NO_7REQ_INVITATI) {
// await this.menumsg_Si_Invitati_No_7Req(msg);
} else if (cmd1.toLowerCase() === Menu.MSG_TO_USER) {
await this.menumsg_A_Utente(msg);
} else if (testo === Menu.SETPICPROFILE) {
await this.setPhotoProfile(rec.user, msg.from.id);
} else if (testo === Menu.RESETPWD) {
await this.setResetPwd(rec, msg);
} else if (this.isSelMenu(msg, testo, 'INDIETRO') ||
(testo === Menu.it.INDIETRO)) {
await this.msgScegliMenu(msg);
} else if (this.isSelMenu(msg, testo, 'ESCI_DA_CHAT')) {
await this.sendMsg(msg.chat.id, 'Uscito dalla Chat con ' + oldusername);
rec.msgall_username_specifico = '';
} else {
await this.isMenuNotVerified(rec, msg, notlast);
}
} catch (e) {
console.error('isMenu', e);
}
}
getsymb(symb, valid, isnum, num, smileif) {
let str = symb + ': ';
if (valid)
str += emo.CHECK_VERDE;
else
str += emo.CROSS_ROSSA;
if (isnum) {
str += ' ' + getemojibynumber(num);
if (smileif)
str += emo.SMILE_STAR;
}
return str + ' ';
}
isdreamset(user) {
if (user) {
if (user.profile.my_dream)
if (user.profile.my_dream.length > 10)
return true;
}
return false;
}
ispayment(user) {
if (user) {
if (!!user.profile.paymenttypes) {
2020-07-13 23:35:05 +02:00
/*if (user.profile.paymenttypes.includes('paypal')) {
if (user.profile.email_paypal) {
ispaypal = true
}
2020-07-13 23:35:05 +02:00
}*/
if (!!user.profile)
if (!!user.profile.paymenttypes) {
2020-07-13 23:35:05 +02:00
return (user.profile.paymenttypes.length >= 1);
}
}
}
return false;
}
async menuAccedi(msg) {
let status = this.getstatusInMemory(msg);
2020-03-31 20:34:24 +02:00
}
getlang(msg) {
const rec = this.getRecInMem(msg);
if (!!rec) {
if (rec.user) {
rec.lang = rec.user.lang;
}
if (rec.lang !== '' && rec.lang !== undefined)
return rec.lang;
else {
return msg.from.language_code;
2020-03-31 20:34:24 +02:00
}
}
}
async getLavagnaByUser(user, msg) {
let mystr = '';
const dashboard = await User.getDashboard(this.idapp,
user.aportador_solidario, user.username,
user.aportador_solidario_name_surname);
const downline = await User.getDownline(this.idapp,
user.aportador_solidario, user.username);
let numpersone = (downline.downline) ? downline.downline.length : 0;
let invitati_attivi = dashboard.myself.numinvitatiattivi;
mystr = '';
// if (dashboard.aportador) {
// mystr = emoji.get('seedling') + ` Chi ti ha invitato: ${dashboard.aportador.username} (${dashboard.aportador.name} ${dashboard.aportador.surname})\n`;
// } else {
// mystr = 'Chi ti ha invitato: Sei il Primo! ';
// }
// mystr += `____________________________________________\n`;
let tuttie9 = false;
2020-03-25 09:25:31 +01:00
let mystrnave = '';
if (user) {
mystr += tools.get__('BENVENUTO', this.getlang(msg)) + ' ' + user.name +
' (' + user.username + ') ' + emo.DIZZY + '\n\n';
tuttie9 = dashboard.myself.qualified && (numpersone >= 2) &&
invitati_attivi >= 2;
mystrnave = await Nave.getNaveByUser(this.idapp, user.username, user.lang,
true);
2020-03-25 09:25:31 +01:00
if (mystrnave === '' && tuttie9) {
mystr += tools.gettranslate('NO_PROG', user.lang);
}
2020-03-25 09:25:31 +01:00
if (!!mystrnave) {
2020-03-31 20:34:24 +02:00
mystr += '✨✨✨' + tools.get__('TUE_NAVI', this.getlang(msg)) + ':\n';
2020-03-25 09:25:31 +01:00
mystr += mystrnave;
2020-05-11 22:43:14 +02:00
2020-03-25 09:25:31 +01:00
} else {
2020-03-25 09:25:31 +01:00
if (!tuttie9) {
mystr += dashboard.myself.qualified ? emo.SMILE_STAR +
tools.get__('HAI_I_7_REQUISITI', this.getlang(msg)) +
emo.SMILE_STAR : emo.EXCLAMATION_MARK +
tools.get__('NON_HAI_I_7_REQUISITI', this.getlang(msg));
2020-03-25 09:25:31 +01:00
mystr += '\n\n';
}
// mystr += tuttie9 ? emo.SMILE_STAR + tools.get__('HAI_I_9_REQUISITI', this.getlang(msg)) + emo.SMILE_STAR : emo.EXCLAMATION_MARK + tools.get__('NON_HAI_I_9_REQUISITI', this.getlang(msg));
2020-03-25 09:25:31 +01:00
mystr += '\n\n';
2020-03-31 20:34:24 +02:00
mystr += tools.get__('INFO_LA_MIA_LAVAGNA', this.getlang(msg));
2020-03-25 09:25:31 +01:00
mystr += '\n' + '1. ' + this.getsymb(emo.ENVELOPE, user.verified_email);
2020-03-31 20:34:24 +02:00
mystr += tools.get__('EMAIL', this.getlang(msg)) + ' ';
mystr += user.verified_email
? tools.get__('VERIF', this.getlang(msg))
: tools.get__('EMAIL_NON_VERIF', this.getlang(msg));
mystr += '\n2. ' + this.getsymb(emo.ROBOT_FACE, true) +
tools.get__('BOT', this.getlang(msg)) + ' ';
2020-03-31 20:34:24 +02:00
mystr += tools.get__('VERIF', this.getlang(msg));
mystr += '\n3. ' + this.getsymb(emo.PENCIL,
tools.isBitActive(user.profile.saw_and_accepted,
shared_consts.Accepted.CHECK_READ_GUIDELINES)) +
tools.get__('LINEE_GUIDA', this.getlang(msg));
mystr += '\n4. ' + this.getsymb(emo.TV,
tools.isBitActive(user.profile.saw_and_accepted,
shared_consts.Accepted.CHECK_SEE_VIDEO_PRINCIPI)) +
tools.get__('VIDEO_INTRO', this.getlang(msg));
// mystr += '\n5. ' + this.getsymb(emo.EYES, user.profile.saw_zoom_presentation) + tools.get__('ZOOM_PARTECIPATO', this.getlang(msg));
// mystr += '\n6. ' + this.getsymb(emo.DREAM, this.isdreamset(user)) + tools.get__('SCRITTO_SOGNO', this.getlang(msg));
mystr += '\n7. ' + this.getsymb(emo.CREDIT_CARD, this.ispayment(user)) +
tools.get__('PAYMENTS', this.getlang(msg));
2020-03-25 09:25:31 +01:00
}
// } else{
// mystr += tools.get__('TELEGRAM_NOT_CONNECTED', msg) + ' ' + emoji.get('e-mail');
}
// numpersone = 2;
2020-03-25 09:25:31 +01:00
if (!mystrnave) {
mystr += '\n8. ' +
this.getsymb(emo.INVITATI, numpersone >= 2, numpersone, numpersone,
numpersone >= 3) + tools.get__('INVITATI', this.getlang(msg));
mystr += '\n9. ' +
this.getsymb(emo.INVITATI, invitati_attivi >= 2, invitati_attivi,
invitati_attivi, invitati_attivi >= 3) +
tools.get__('INVITATI_ATTIVI', this.getlang(msg)) + '\n' + '\n';
2020-03-25 09:25:31 +01:00
if (numpersone > 0) {
2020-03-31 20:34:24 +02:00
mystr += tools.get__('INVITATI_LISTA', this.getlang(msg)) + ':\n';
2020-03-25 09:25:31 +01:00
let index = 1;
downline.downline.forEach((user) => {
2020-03-25 09:25:31 +01:00
mystr += emoji.get('star-struck') + ` ${index}°: `;
2020-05-11 22:43:14 +02:00
mystr += (user.qualified) ? emo.CHECK_VERDE : emo.CROSS_ROSSA;
2020-03-25 09:25:31 +01:00
mystr += `${user.name} ${user.surname} (${user.username})\n`;
index++;
});
} else {
mystr += tools.get__('NESSUN_INVITATO', this.getlang(msg)) +
tools.ACAPO;
2020-03-25 09:25:31 +01:00
}
}
// if (dashboard.downnotreg) {
// if (dashboard.downnotreg.length > 0) {
// mystr += '\n' + emo.QUESTION_MARK + ' ' + tools.get__('NONREG', msg) + ':' + emo.QUESTION_MARK + '\n';
// let index = 1;
// dashboard.downnotreg.forEach((user) => {
// mystr += ` - ${index}°: ${user.name} ${user.surname} (tel: ${user.cell_complete})\n`;
// index++;
// });
// }
// }
if (tuttie9)
mystr += '\n' +
printf(tools.get__('INFO_LAVAGNA_SITO', this.getlang(msg)));
else
mystr += '\n' +
printf(tools.get__('INFO_LAVAGNA_SITO_COMPLETARE', this.getlang(msg)),
tools.getHostByIdApp(this.idapp));
return mystr;
}
async menuLavagna(msg) {
const rec = this.getRecInMem(msg);
let mystr = '';
if (rec.user) {
mystr = await this.getLavagnaByUser(rec.user, msg);
}
if (!!mystr)
await this.sendMsg(msg.chat.id, mystr);
}
async menuNave(msg) {
const rec = this.getRecInMem(msg);
let mystr = '';
if (!rec.user)
return '';
2020-05-10 21:07:51 +02:00
let username_to_check = rec.user.username;
let arrstringa = msg.text.split(' ');
if (!!arrstringa) {
if (arrstringa.length > 1) {
let last = arrstringa.slice(-1)[0];
if (!isNaN(last)) {
2020-12-21 02:16:42 +01:00
// ind_order_to_check = last;
}
}
}
mystr = await Nave.getNaveByUser(this.idapp, username_to_check,
rec.user.lang, true);
if (!!mystr)
await this.sendMsg(msg.chat.id, mystr);
}
async menuLinkCondividere(msg) {
const rec = this.getRecInMem(msg);
let mystr = '';
if (rec.user) {
mystr += printf(
tools.get__('INFO_LINK_DA_CONDIVIDERE', this.getlang(msg)),
tools.getHostByIdApp(this.idapp) + '/signup/' + rec.user.username);
mystr += tools.ACAPO + tools.ACAPO +
printf(tools.get__('INFO_LINK_ZOOM', this.getlang(msg)),
tools.getlinkzoom(null));
await this.sendMsg(msg.chat.id, mystr);
}
}
2020-01-03 22:02:18 +01:00
async menuExitToTelegram(msg) {
const rec = this.getRecInMem(msg);
if (rec.user) {
await User.SetTelegramIdSuccess(this.idapp, rec.user._id, 0).
then((recuser) => {
if (recuser) {
this.deleteRecInMem(msg);
this.sendMsg(msg.chat.id,
getstr(rec.user.lang, 'MSG_EXIT_TELEGRAM'));
}
});
} else {
this.deleteRecInMem(msg);
2020-01-03 22:02:18 +01:00
}
}
async menuInformazioni(msg) {
const mystr = 'Informazioni Aggiuntive: ...';
await this.sendMsg(msg.chat.id, mystr);
}
2020-03-31 20:34:24 +02:00
async getNextZoom(msg) {
2020-01-21 01:37:15 +01:00
const listazoom = await CalZoom.findAllIdApp(this.idapp);
const nextzoom = await CalZoom.getNextZoom(this.idapp);
let mystr = '';
mystr += emo.STARS + tools.get__('ZOOM_CONFERENCE', this.getlang(msg)) +
emo.STARS + '\n\n';
2020-01-21 01:37:15 +01:00
2020-05-04 19:34:41 +02:00
// let pwd = 'Password: 123123';
2020-04-07 14:34:29 +02:00
2020-01-21 01:37:15 +01:00
let index = 1;
listazoom.forEach((evento) => {
let iniziata = false;
if (nextzoom)
iniziata = (nextzoom._id.toString() === evento._id.toString());
2020-01-21 01:37:15 +01:00
2020-07-02 22:00:58 +02:00
let lang = this.getlang(msg);
if (iniziata) {
mystr += emo.CHECK_VERDE + ' ' + tools.get__('ZOOM_INIZIATO', lang) +
' ' + emo.CHECK_VERDE + '\n';
}
mystr += tools.getflagtelegrambyLang(evento.lang) +
` ${emo.EYES} ${tools.getstrDateTimeShort(evento.date_start,
this.getlang(msg))} ${emo.EYES}`;
2020-07-02 22:00:58 +02:00
mystr += `\n${evento.title}\n(${evento.note})`;
mystr += `\n${tools.getlinkzoom(evento)}\n\n`;
if (nextzoom) {
2020-01-21 01:37:15 +01:00
if (iniziata) {
mystr += emo.FIRE + tools.get__('CLICCA_ENTRA', this.getlang(msg)) +
' ' + emo.FIRE + '\n';
2020-07-02 22:00:58 +02:00
mystr += tools.getlinkzoom(evento) + '\n';
2020-05-04 19:34:41 +02:00
mystr += '\n';
//mystr += pwd + '\n\n';
2020-01-21 01:37:15 +01:00
}
}
2020-01-21 01:37:15 +01:00
index++;
});
if (!nextzoom && index > 1) {
mystr += '✨✨✨✨✨✨✨✨✨✨✨✨\n' +
tools.get__('CLICCA_PER_ZOOM', this.getlang(msg)) + '\n' +
'✨✨✨✨✨✨✨✨✨✨✨✨\n';
}
2020-01-21 01:37:15 +01:00
return mystr;
}
async menuZoom(msg) {
2020-03-31 20:34:24 +02:00
let mystr = await this.getNextZoom(msg);
2020-01-21 01:37:15 +01:00
await this.sendMsg(msg.chat.id, mystr);
2020-01-21 01:37:15 +01:00
}
async menuAiuto(msg) {
const mystr = this.getstrChatHelp();
await this.sendMsg(msg.chat.id, mystr);
}
async menuAdmin(msg) {
2020-03-31 20:34:24 +02:00
const mystr = tools.get__('SCEGLI_VOCE', this.getlang(msg));
2020-01-21 01:37:15 +01:00
await
this.sendMsg(msg.chat.id, mystr, MenuAdmin);
}
2020-03-31 20:34:24 +02:00
async menuLang(msg) {
const mystr = tools.get__('SCEGLI_VOCE', this.getlang(msg));
await
this.sendMsg(msg.chat.id, mystr, MenuLang);
2020-03-31 20:34:24 +02:00
}
getDestinStr(msg, destin, rec) {
if (destin === Destin.TUTTI)
return 'TUTTI';
else if (destin === Destin.STAFF)
return 'STAFF';
else if (destin === Destin.PAOLO)
return 'PAOLO';
else if (destin === Destin.NO_7_REQ)
return 'No 7 Requisiti';
else if (destin === Destin.NO_9_REQ)
return 'No 9 Requisiti';
else if (destin === Destin.SI_INVITATI_NO_7REQ_INVITATI)
return '2 Invitati ma NO Requisiti';
else if (destin === Destin.MSG_TO_NAVE)
return 'Nave ' + rec.extraparam;
else if (destin === Destin.NESSUN_IMBARCO_7REQ)
return 'No Imbarcati (7 Req) ';
else if (destin === Destin.A_UTENTE) {
const rec = this.getRecInMem(msg);
return rec.msgall_username_specifico;
2021-12-29 18:26:08 +01:00
} else if (destin === Destin.DOMANDA) {
const rec = this.getRecInMem(msg);
return rec.msg_username_domanda;
2021-12-29 18:26:08 +01:00
} else if (destin === Destin.RISPOSTA) {
const rec = this.getRecInMem(msg);
return rec.msg_username_risposta;
}
}
async menumsgAll(msg) {
await this.menumsgGenerico(msg, Destin.TUTTI);
}
async menumsgStaff(msg) {
await this.menumsgGenerico(msg, Destin.STAFF);
}
async menumsgPaolo(msg) {
await this.menumsgGenerico(msg, Destin.PAOLO);
}
2022-03-12 21:38:19 +01:00
nonAbilitato(msg) {
MyTelegramBot.local_sendMsgTelegramByIdTelegram(this.idapp, msg.chat.id,
'Utente Non abilitato o codice non valido ad eseguire questa funzione');
2022-03-12 21:38:19 +01:00
}
chisono(rec) {
if (rec && rec.user) {
return 'Eseguito da ' + rec.user.username + ': ';
}
}
async menuRestartSrv(rec, msg, cmd2) {
if (cmd2 === '6711') {
await MyTelegramBot.sendMsgTelegramToTheAdminAllSites(this.chisono(rec) + ' ha rilanciato il Server NODE.JS...');
const ris = await tools.execScript(this.idapp, msg, '~/batch/production_restart_server.sh',
this.chisono(rec) + ' Restart il Server (Node.Js)');
2022-03-12 21:38:19 +01:00
} else {
this.nonAbilitato(msg);
2022-03-12 21:38:19 +01:00
}
}
async menuLogSrv(rec, msg, cmd2) {
if (cmd2 === '6711') {
const ris = await tools.execScript(this.idapp, msg, '~/batch/logserver.sh', this.chisono(rec) + ' Visualizzo il Log del Server...');
} else {
this.nonAbilitato(msg);
2022-03-12 21:38:19 +01:00
}
}
async menuRebootSrv(rec, msg, cmd2) {
if (cmd2 === '6711') {
await MyTelegramBot.sendMsgTelegramToTheAdminAllSites(this.chisono(rec) + ' ha effettuato il Reboot del Server! ...');
const ris = await tools.execScript(this.idapp, msg, '~/batch/esegui_reboot.sh',
this.chisono(rec) + ' Eseguo il Reboot del Server !...');
2022-03-12 21:38:19 +01:00
} else {
this.nonAbilitato(msg);
2022-03-12 21:38:19 +01:00
}
}
async menumsg_No_7_Req(msg) {
await this.menumsgGenerico(msg, Destin.NO_7_REQ);
}
async menumsg_No_9_Req(msg) {
await this.menumsgGenerico(msg, Destin.NO_9_REQ);
}
async menumsg_to_Nave(msg, nave) {
await this.menumsgGenerico(msg, Destin.MSG_TO_NAVE, undefined, nave);
}
async menumsg_Si_Invitati_No_7Req(msg) {
await this.menumsgGenerico(msg, Destin.SI_INVITATI_NO_7REQ_INVITATI);
}
async menumsg_A_Utente(msg) {
const arr = msg.text.split(' ');
if (!!arr && arr.length > 1) {
const username = arr[1];
const rec = this.getRecInMem(msg);
rec.msg_wait = true;
await this.SendMsgToUser(msg, rec, username, msg.text);
}
}
permitSendMsg(user) {
return User.isAdmin(user.perm);
}
async menumsgGenerico(msg, dest, username, extraparam) {
const rec = this.getRecInMem(msg);
if (rec.user) {
if (this.permitSendMsg(rec.user)) {
rec.msgall_status = StatusMSGALL.ASK;
rec.msgall_achi = dest;
rec.extraparam = extraparam;
if (!!username) {
rec.msgall_username_specifico = username;
}
const mystr = 'Scrivi qui un Messaggio da inviare a' + ' [' +
this.getDestinStr(msg, dest, rec) + ']:';
await this.sendMsg(msg.chat.id, mystr, MenuSend);
}
}
}
async menumsgDomanda(
msg, cmd, dest, username, extraparam, domanda, msgYes, msgNo, destYes,
destNo, username_risposta) {
2021-12-29 18:26:08 +01:00
const rec = this.getRecInMem(msg);
if (rec.user) {
rec.msgall_status = StatusMSGALL.CONFIRM;
rec.msgall_achi = dest;
rec.extraparam = extraparam;
rec.cmd_to_set = cmd;
rec.msg_username_domanda = username;
rec.msg_username_risposta = username_risposta;
rec.msgtosent = msgYes;
rec.msgNo = msgNo;
rec.msg_toDest_yes = destYes;
rec.msg_toDest_no = destNo;
return this.ChiediSINO(msg, domanda);
}
}
2020-05-10 21:07:51 +02:00
getlink(qualelink) {
if (qualelink === 'website') {
return '';
2020-05-10 21:07:51 +02:00
} else if (qualelink === 'biblio') {
return '';
2020-05-10 21:07:51 +02:00
} else if (qualelink === 'help') {
2020-07-02 22:00:58 +02:00
return tools.HELP_CHAT;
2020-05-10 21:07:51 +02:00
} else if (qualelink === 'faq') {
return '';
2020-05-10 21:07:51 +02:00
}
}
async menuAssistenza(msg) {
2020-05-10 21:07:51 +02:00
const sito = this.getlink('website');
const empower = this.getlink('empower');
const biblio = this.getlink('biblio');
const faq = this.getlink('faq');
let help = '';
2020-05-10 21:07:51 +02:00
let helpaperta = true;
/*if (tools.isMonToFri() && tools.isBetweenTwoTime('9:00:00', '19:00:00')) {
2020-05-10 21:07:51 +02:00
help = '✅ ' + this.getlink('help');
} else {
help = "🔴 [ORA CHIUSA - NOW CLOSED]";
helpaperta = false;
}*/
help = '✅ ' + this.getlink('help');
2020-05-10 21:07:51 +02:00
let mytext = '';
2020-05-10 21:07:51 +02:00
if (this.getlang(msg) === 'it')
mytext = printf(tools.get__('TESTO_ASSISTENZA', this.getlang(msg)), sito,
biblio, empower, faq, help);
2020-05-10 21:07:51 +02:00
else
mytext = printf(tools.get__('TESTO_ASSISTENZA', this.getlang(msg)), sito,
biblio, empower, help);
let menu = null;
const rec = this.getRecInMem(msg);
if (!rec.user) {
menu = null;
}
2020-01-21 01:37:15 +01:00
await
this.sendMsg(msg.chat.id, mytext, menu);
}
existInMemory(msg) {
const rec = this.getRecInMem(msg);
return !!rec;
}
getstatus(rec) {
if (!!rec)
return rec.status;
else
return Status.NONE;
}
getstatusInMemory(msg) {
const rec = this.getRecInMem(msg);
return this.getstatus(rec);
}
getRecInMem(msg) {
return this.arrUsers.find((rec) => rec.id === this.getchatid(msg));
}
getRecInMemById(id) {
2021-12-29 18:26:08 +01:00
return this.arrUsers.find((rec) => rec.id.toString() === id.toString());
}
getRecByUsername(username) {
return this.arrUsers.find((rec) => rec.username_bo === username);
}
setRecByUsername(username, myrec) {
const ind = this.arrUsers.findIndex((rec) => rec.username_bo === username);
if (ind >= 0) {
this.arrUsers[ind] = myrec;
}
}
2020-01-03 22:02:18 +01:00
deleteRecInMem(msg) {
this.arrUsers = this.arrUsers.filter(
(rec) => rec.id !== this.getchatid(msg));
2020-01-03 22:02:18 +01:00
}
async getUser(msg, rec, conmsg) {
let myid = 0;
let ok = false;
let mystruser = tools.getFirstWord(msg.text.trim());
const user = await User.findByUsername(this.idapp, mystruser, true);
if (!user) {
if (conmsg) {
await this.sendMsg(msg.from.id,
getstr(this.getlang(msg), 'MSG_ERRORE_USERNAME_NOT_FOUND'), null);
2020-03-31 20:34:24 +02:00
const lang = this.getlang(msg);
2020-05-10 21:07:51 +02:00
// const textman = msg.chat.first_name + ' ' + msg.chat.last_name + ' sta tentando di autenticarsi con il BOT (lang=' + lang + ') (username che scrive: ' + msg.text + ') ';
// await local_sendMsgTelegramToTheManagers(this.idapp, textman, msg);
rec.username_bo = '';
}
} else {
rec.username_bo = user.username;
myid = user._id;
ok = true;
}
return {rec, user, myid, ok};
}
async setUsernameBo(msg) {
}
async askUsernameInvitante(msg) {
try {
let rec = this.getRecInMem(msg);
if (msg.text === undefined)
return false;
if (rec) {
rec.status = Status.SET_USERNAME_INVITANTE;
await this.sendMsg(msg.chat.id, getstr(this.getlang(msg), 'MSG_ASK_USERNAME_INVITANTE', tools.getNomeAppByIdApp(this.idapp), null));
}
} catch (e) {
console.error('Error setUsernameBo:', e);
}
}
async sendMsgByTemplate(title, myuser) {
try {
const msg = await MsgTemplate.getMsgByTitleAndLang(myuser.idapp, title, myuser.lang);
const mytext = tools.convertSpecialTags(myuser, msg.body);
return this.sendMsg(myuser.profile.teleg_id, mytext);
} catch (e) {
console.error('ERR sendMsgByTemplate', e);
}
}
async sendMsgByTemplateByMsgStrutt(title, msg) {
try {
let langcode = 'it';
let id = 0;
try {
langcode = msg.from.language_code;
id = msg.from.id;
} catch (e) {
}
const mymsg = await MsgTemplate.getMsgByTitleAndLang(tools.RISO, title, langcode);
const mytext = tools.convertSpecialTags(null, mymsg.body);
if (id > 0)
return this.sendMsg(id, mytext);
} catch (e) {
console.error('ERR sendMsgByTemplateByMsgStrutt', e);
}
}
async sendMsgByTextByMsgStrutt(keytext, msg) {
try {
let langcode = 'it';
let id = 0;
try {
id = msg.from.id;
langcode = msg.from.language_code;
} catch (e) {
}
const text = getstr(langcode, keytext);
const mytext = tools.convertSpecialTags(null, text);
if (id > 0)
return this.sendMsg(id, mytext);
} catch (e) {
console.error('ERR sendMsgByTextByMsgStrutt', e);
}
}
async checkIfUsernameTelegramSet(msg) {
try {
if (!msg.from.username) {
//await this.sendMsgByTemplateByMsgStrutt('MSG_SET_USERNAME', msg);
await this.sendMsgByTextByMsgStrutt('MSG_SET_USERNAME_TELEGRAM', msg);
return false;
//await this.sendMsgByTemplate('MSG_SET_USERNAME', myuser);
}
return true;
} catch (e) {
console.error('e');
return false;
}
}
async setUsernameInvitante(msg) {
try {
if (!!msg.text) {
const rec = this.getRecInMem(msg);
let aportador_solidario = rec.aportador_solidario;
if (!aportador_solidario) {
aportador_solidario = msg.text.toString().trim().toLowerCase();
const user = await User.getUserShortDataByUsername(this.idapp, aportador_solidario);
if (user)
rec.aportador_solidario = user.username;
}
if (rec.aportador_solidario) {
// Link per Registrarsi
this.asktoRegistrationByLink(msg);
} else {
// rec.status = Status.WAITFOR_USERNAME_INVITANTE;
rec.status = Status.SET_USERNAME_INVITANTE;
const str2 = '\n' + getstr(this.getlang(msg), 'MSG_ASK_USERNAME_INVITANTE', tools.getNomeAppByIdApp(this.idapp));
await this.sendMsg(msg.from.id, getstr(this.getlang(msg), 'MSG_ERRORE_INVITANTE_NOT_FOUND') + str2, null);
}
}
} catch (e) {
console.error('Error setUsernameInvitante', e);
}
}
async setVerifyCode(msg) {
try {
2020-04-24 10:29:25 +02:00
if (!!msg.text) {
const code = msg.text.toString().trim();
const rec = this.getRecInMem(msg);
let user = await User.findByUsername(this.idapp, rec.username_bo, true);
2020-04-24 10:29:25 +02:00
let telegcode = 0;
if (user) {
telegcode = user.profile.teleg_checkcode.toString();
} else {
await
this.sendMsg(msg.from.id,
getstr(this.getlang(msg), 'MSG_ERRORE_USERNAME_NOT_FOUND'),
null);
return;
2020-04-24 10:29:25 +02:00
}
if (code.length < 7) {
if (rec) {
if (code === telegcode) {
2022-01-26 01:31:22 +01:00
try {
await User.setUsernameTelegram(this.idapp, user._id,
msg.from.username || '', msg.from.first_name || '',
msg.from.last_name || '');
2022-01-26 01:31:22 +01:00
} catch (e) {}
2020-04-24 10:29:25 +02:00
// let ris = await this.getUser(msg, rec, false);
2022-01-26 01:31:22 +01:00
2020-04-24 10:29:25 +02:00
rec.status = Status.VERIFIED;
rec.datemenu_updated = null;
rec.menuDb = null;
const recuser = await User.SetTelegramIdSuccess(this.idapp, user._id, msg.from.id);
if (recuser) {
console.log(recuser.username, ' SI E\' VERIFICATO CON TELEGRAM !');
let username = recuser.name;
if (!!msg.from.username) {
await MyTelegramBot.askConfirmationUser(this.idapp, shared_consts.CallFunz.REGISTRATION, recuser);
2020-04-24 10:29:25 +02:00
} else {
console.log(' ... MA GLI MANCA L\'USERNAME TELEGRAM !! ');
2020-04-24 10:29:25 +02:00
}
// this.checkIfUsernameTelegramSet(msg, recuser);
// local_sendMsgTelegramToTheManagers(this.idapp, recuser.name + ' ' + recuser.surname + ' si è Verificato a Telegram BOT! (lang=' + recuser.lang + ')' + emo.STARS, msg);
} else {
this.sendMsgLog(msg.from.id, getstr(this.getlang(msg), 'MSG_ERR_UNKNOWN_VERIFY_CODE'));
}
2020-04-24 10:29:25 +02:00
} else {
if (rec.retry < 2) {
rec.retry++;
await
this.sendMsgLog(msg.from.id,
printf(getstr(this.getlang(msg), 'MSG_ERR_VERIFY_CODE'),
tools.getHostByIdApp(this.idapp)));
} else {
2020-04-24 10:29:25 +02:00
rec.status = Status.NONE;
await
this.sendMsgLog(msg.from.id, getstr(this.getlang(msg),
'MSG_ERRORE_USERNAME_ANNULLA'));
2020-04-24 10:29:25 +02:00
this.deleteRecInMem(msg);
}
}
}
2020-04-24 10:29:25 +02:00
} else if (msg.text.length === 0) {
if (rec)
rec.status = Status.NONE;
await
this.sendMsgLog(msg.from.id,
getstr(this.getlang(msg), 'MSG_ERRORE_USERNAME_ANNULLA'));
2020-04-24 10:29:25 +02:00
} else {
await
this.sendMsgLog(msg.from.id,
getstr(this.getlang(msg), 'MSG_ERRORE_VERIFY_CODE_MAXLEN'));
}
}
} catch (e) {
console.error('Error setVerifyCode', e);
}
}
async sistemaRecDest(rec, msg) {
let recdest = this.getRecByUsername(rec.msgall_username_specifico);
if (!recdest) {
const userdest = await User.findByUsername(this.idapp,
rec.msgall_username_specifico);
if (!!userdest) {
let msgdest = msg;
msgdest.from.id = userdest.profile.teleg_id;
await this.createIfNotExist(msgdest);
recdest = this.getRecByUsername(rec.msgall_username_specifico);
}
}
if (!!recdest) {
recdest.msgall_username_specifico = rec.username_bo;
} else {
rec.msgall_username_specifico = '';
}
return recdest;
}
2021-12-29 18:26:08 +01:00
async setCmdToUsername(rec, username, cmd_to_set, valuebool) {
if (cmd_to_set === Cmd.VALIDATE_REGISTRATION) {
return User.setVerifiedByAportador(rec.user.idapp, username, valuebool);
} else if (cmd_to_set === Cmd.RICHIESTA_GRUPPO) {
2021-12-29 18:26:08 +01:00
}
}
async sendMsgToAll(rec, msg, texttosend, destin) {
try {
if ((texttosend.length < 3) && (destin !== Destin.A_UTENTE)) {
2021-12-29 18:26:08 +01:00
// NOTHING
} else {
let usersall = null;
2021-12-29 18:26:08 +01:00
let myusername = '';
if (destin === Destin.A_UTENTE) {
myusername = rec.msgall_username_specifico;
} else if (destin === Destin.DOMANDA) {
myusername = rec.msg_username_domanda;
} else if (destin === Destin.RISPOSTA) {
myusername = rec.msg_username_risposta;
}
if (myusername)
usersall = await User.getUsersTelegALL(rec.user.idapp, myusername);
else
usersall = await User.getUsersTelegALL(rec.user.idapp);
let nummsgsent = 0;
let textdainviare = '';
let preparatesto = '';
let myid = '';
2020-03-31 20:34:24 +02:00
if (this.isSelMenu(msg, texttosend, 'ZOOM')) {
texttosend = await this.getNextZoom(msg);
}
const cmd = texttosend.toLowerCase();
if (usersall) {
2020-03-31 20:34:24 +02:00
if (this.isSelMenu(msg, cmd, 'INDIETRO')) {
rec.msgall_status = StatusMSGALL.NONE;
return;
}
tools.writeEventsLog(
this.getDestinStr(msg, destin, rec) + ':\n' + texttosend);
// let chiedisino = false;
// TEST usersall = await User.getUsersTelegALL(rec.user.idapp, 'paoloar77');
for (const utente of usersall) {
let FormDaMostrare = null;
const lang = utente.lang;
2020-04-24 10:29:25 +02:00
if (!utente.deleted && !utente.sospeso) {
if (this.isSelMenu(msg, texttosend === 'LAVAGNA')) {
textdainviare = await this.getLavagnaByUser(utente, msg);
} else if (destin === Destin.A_UTENTE) {
textdainviare = texttosend;
} else {
2020-04-24 10:29:25 +02:00
textdainviare = texttosend;
}
2020-04-24 10:29:25 +02:00
let invia = false;
if (destin === Destin.STAFF) {
invia = User.isManager(utente.perm);
} else if (destin === Destin.TUTTI) {
invia = true;
} else if (destin === Destin.PAOLO) {
invia = utente.username === 'paoloar77';
2020-04-24 10:29:25 +02:00
} else if (destin === Destin.A_UTENTE) {
invia = utente.username === rec.msgall_username_specifico;
2021-12-29 18:26:08 +01:00
} else if (destin === Destin.DOMANDA) {
invia = utente.username === rec.msg_username_domanda;
} else if (destin === Destin.RISPOSTA) {
invia = utente.username === rec.msg_username_risposta;
2020-04-24 10:29:25 +02:00
} else if (destin === Destin.NO_7_REQ) {
invia = !await User.isUserQualified7(this.idapp,
utente.username);
2020-04-24 10:29:25 +02:00
} else if (destin === Destin.MSG_TO_NAVE) {
2022-02-03 00:33:15 +01:00
// invia = !await Nave.findDonatoreByNave(this.idapp, rec.extraparam);
2020-04-24 10:29:25 +02:00
}
// TEST invia = true;
2020-04-24 10:29:25 +02:00
if (invia) {
let inviaveramente = false;
2020-04-24 10:29:25 +02:00
if (cmd === RICEVI_EMAIL) {
preparatesto += utente.email + ', ';
} else if (cmd === NOME_COGNOME) {
preparatesto += utente.name + ' ' + utente.surname + '(' +
utente.username + ')' + '\n';
2020-04-24 10:29:25 +02:00
} else if (cmd === CONTA_SOLO) {
// Niente
} else if (cmd === CHEDI_SE_IMBARCARTI) {
textdainviare = tools.gettranslate('VUOI_IMBARCARTI', lang);
FormDaMostrare = this.getInlineKeyboard(lang, [
2020-07-13 23:35:05 +02:00
{
text: Menu[lang].SI,
callback_data: InlineCmd.VOGLIO_IMBARCARMI + tools.SEP +
utente.username,
2020-07-13 23:35:05 +02:00
},
{
text: Menu[lang].NO,
callback_data: InlineCmd.NON_VOGLIO_IMBARCARMI +
tools.SEP +
utente.username,
2020-07-13 23:35:05 +02:00
},
]);
inviaveramente = true;
2020-04-24 10:29:25 +02:00
} else {
inviaveramente = true;
}
if (inviaveramente) {
textdainviare = tools.convertSpecialTags(utente, textdainviare);
2020-04-24 10:29:25 +02:00
if (destin === Destin.A_UTENTE) {
await this.sistemaRecDest(rec, msg);
await this.sendMsg(utente.profile.teleg_id,
'[' + rec.username_bo + ' ti scrive]:\n' +
textdainviare, MenuChat);
2020-04-24 10:29:25 +02:00
} else {
// if (chiedisino) {
// this.ChiediSINO(msg, textdainviare);
// } else {
// TEST
let telegid = utente.profile.teleg_id;
// if (process.env.PROD === "0") {
// telegid = 12429864;
// }
await this.sendMsg(telegid, textdainviare, null,
FormDaMostrare);
// break;
2020-04-24 10:29:25 +02:00
}
2020-09-04 00:06:49 +02:00
await tools.snooze(100);
nummsgsent++;
}
2020-04-24 10:29:25 +02:00
if (!SendMsgCmd.includes(cmd)) {
2020-09-04 00:06:49 +02:00
if ((nummsgsent % 100) === 0) {
myid = await this.sendMsg(msg.chat.id, nummsgsent + ' ' +
getstr(this.getlang(msg), 'MSG_MSG_INCORSO'), null,
null, myid);
await tools.snooze(100);
2020-04-24 10:29:25 +02:00
}
}
}
}
}
}
let msgris = '';
if (cmd === CONTA_SOLO) {
msgris = nummsgsent + ' ' +
getstr(this.getlang(msg), 'MSG_MSG_TOSENT');
} else if (cmd === NOME_COGNOME) {
msgris = nummsgsent + ' ' + 'Utenti';
await this.sendMsg(msg.chat.id, msgris);
msgris = preparatesto;
} else if (cmd === RICEVI_EMAIL) {
msgris = nummsgsent + ' ' + 'Email';
await this.sendMsg(msg.chat.id, msgris);
msgris = preparatesto;
} else {
2021-12-29 18:26:08 +01:00
if (destin !== Destin.DOMANDA && destin !== Destin.RISPOSTA) {
msgris = nummsgsent + ' ' +
getstr(this.getlang(msg), 'MSG_MSG_SENT');
2021-12-29 18:26:08 +01:00
}
}
if (destin === Destin.A_UTENTE) {
const recdest = await this.sistemaRecDest(rec);
if (!!recdest) {
await this.sendMsg(msg.chat.id,
'Conversazione Iniziata con ' + rec.msgall_username_specifico +
' !', MenuChat);
} else {
await this.sendMsg(msg.chat.id,
'Utente ' + rec.msgall_username_specifico +
' non presente sul BOT !');
}
} else {
2021-12-29 18:26:08 +01:00
if (msgris) {
tools.writeEventsLog(msgris);
await this.sendMsg(msg.chat.id, msgris);
}
}
}
rec.start_write_msgall = false;
} catch (e) {
2020-05-04 19:34:41 +02:00
console.error(e.message);
}
}
selectMenuHelp(msg) {
return ((this.isSelMenu(msg, msg.text, 'INFO')) ||
(this.isSelMenu(msg, msg.text, 'ASSISTENZA')));
2020-03-31 20:34:24 +02:00
}
selectMenuLang(msg) {
return ((msg.text === Menu.LANG) || (msg.text === Menu.LANG_EN) ||
(msg.text === Menu.LANG_IT) || (msg.text === Menu.LANG_ES)
|| (msg.text === Menu.LANG_FR) || (msg.text === Menu.LANG_SI) ||
(msg.text === Menu.LANG_PT));
}
async setInit(msg) {
let status = this.getstatusInMemory(msg);
if (status === Status.NONE) {
await this.start(msg);
2020-01-03 22:02:18 +01:00
let status = this.getstatusInMemory(msg);
if (status !== Status.VERIFIED)
return Status.EXIT;
} else {
await this.setUser(msg);
}
return status;
}
async receiveMsg(msg) {
// Check if Username Telegram Present
if (!this.checkIfUsernameTelegramSet(msg)) {
return;
}
let status = await this.setInit(msg);
if (status === Status.EXIT) {
return;
}
const rec = this.getRecInMem(msg);
status = this.getstatus(rec);
if (status === Status.WAITFOR_USERNAME_TELEGRAM && !this.selectMenuHelp(msg) && !this.selectMenuLang(msg)) {
// await this.setUsernameBo(msg);
await this.settotheDatabase(msg);
} else if (status === Status.WAITFOR_USERNAME_INVITANTE && !this.selectMenuHelp(msg) && !this.selectMenuLang(msg)) {
await this.askUsernameInvitante(msg);
// await this.settotheDatabase(msg);
} else if (status === Status.SET_USERNAME_INVITANTE) {
await this.setUsernameInvitante(msg);
} else if (status === Status.NONE) {
await this.start(msg);
} else if (status === Status.VERIFIED) {
let normale = true;
if (rec.msgall_status === StatusMSGALL.CONFIRM) {
2020-03-31 20:34:24 +02:00
if (this.isSelMenu(msg, msg.text, 'SI')) {
// Take msg to send to ALL
await this.sendMsgToAll(rec, msg, rec.msgtosent, rec.msgall_achi);
} else {
2021-12-29 18:26:08 +01:00
let msgout = rec.msgNo;
if (!msgout)
msgout = getstr(this.getlang(msg), 'MSG_OPERAZ_ANNULLATA');
this.sendMsg(msg.chat.id, msgout);
}
if (rec.msgall_achi === Destin.DOMANDA) {
if (rec.msg_toDest_yes) {
rec.msgall_achi = Destin.RISPOSTA;
if (this.isSelMenu(msg, msg.text, 'SI')) {
const ris = await this.setCmdToUsername(rec,
rec.msg_username_risposta, rec.cmd_to_set, true);
2021-12-29 18:26:08 +01:00
if (ris) {
await this.sendMsgToAll(rec, msg, rec.msg_toDest_yes,
rec.msgall_achi);
2021-12-29 18:26:08 +01:00
}
} else if (this.isSelMenu(msg, msg.text, 'NO')) {
const ris = await this.setCmdToUsername(rec,
rec.msg_username_risposta, rec.cmd_to_set, false);
await this.sendMsgToAll(rec, msg, rec.msg_toDest_no,
rec.msgall_achi);
2021-12-29 18:26:08 +01:00
}
}
}
rec.msgall_status = StatusMSGALL.NONE;
normale = false;
} else if (rec.msgall_status === StatusMSGALL.ASK) {
2020-03-31 20:34:24 +02:00
if (!this.isSelMenu(msg, msg.text, 'INDIETRO')) {
rec.msgtosent = msg.text;
rec.msgall_status = StatusMSGALL.CONFIRM;
const cmd = rec.msgtosent.toLowerCase();
let achi = this.getDestinStr(msg, rec.msgall_achi, rec);
let domanda = '';
2021-12-29 18:26:08 +01:00
if (rec.msgall_domanda) {
domanda = rec.msgall_domanda;
} else {
if (cmd === CONTA_SOLO)
domanda = 'Confermi di vedere a quante persone arriverebbe questo messaggio, a ' +
achi + ' ?\n' + rec.msgtosent;
else if (cmd === RICEVI_EMAIL)
domanda = 'Confermi di vedere la lista delle email di ' + achi +
'?';
else if (cmd === NOME_COGNOME)
domanda = 'Confermi di vedere la lista di persone ' + achi + '?';
else {
if (rec.msgall_achi === Destin.A_UTENTE)
domanda = 'Confermi d\'Iniziare una Chat messaggi con ' + achi +
' ?\n' + rec.msgtosent;
else
domanda = 'Confermi d\'Inviare questo messaggio a ' + achi +
' ?\n' + rec.msgtosent;
}
}
this.ChiediSINO(msg, domanda);
} else {
rec.msgall_status = StatusMSGALL.NONE;
2020-01-21 01:37:15 +01:00
await
this.msgScegliMenu(msg);
}
normale = false;
}
if (normale) {
// Check Menu
await this.isMenu(rec, msg, msg.text, false);
}
} else {
await this.isMenuNotVerified(rec, msg, false);
}
}
async asktoRegistrationByLink(msg) {
let rec = this.getRecInMem(msg);
let visu = false;
if (!rec) {
rec = await this.addUser(msg);
visu = true;
}
if (rec && !rec.username_bo)
visu = true;
if (visu) {
const status = this.getstatus(rec);
if (status === Status.SET_USERNAME_INVITANTE && rec.aportador_solidario) {
let linkreg = tools.getLinkRegByIdAppAndMsgStrutt(this.idapp, msg);
if (process.env.LOCALE === '1') {
linkreg = 'http://192.168.1.115:8084/signup/' + rec.aportador_solidario + '/' + msg.from.username + '/' + msg.from.id;
}
const keyb = this.getInlineKeyboard(this.getlang(msg), [
{
text: '✅ CLICCA QUI ',
url: linkreg,
},
]);
// await this.sendMsg(msg.chat.id, getstr(this.getlang(msg), printf(txt.MSG_ASK_USERNAME_BO, tools.getHostByIdApp(this.idapp))));
await this.sendMsg(msg.chat.id, getstr(this.getlang(msg), 'MSG_SIGNUP', tools.getNomeAppByIdApp(this.idapp)), null, keyb);
} else if (status === Status.WAITFOR_USERNAME_INVITANTE) {
await this.askUsernameInvitante(msg);
}
return false;
}
return true;
}
async setUser(msg) {
let id = this.getchatid(msg);
const user = await User.UserByIdTelegram(this.idapp, id);
let rec = this.getRecInMem(msg);
if (user && rec) {
rec.user = user;
}
}
async setUserbyUsername(username) {
const user = await User.findByUsername(this.idapp, username);
let rec = this.arrUsers.find((rec) => rec.username_bo === username);
if (user && rec) {
rec.user = user;
}
}
getchatid(msg) {
if (msg.from.is_bot)
return msg.chat.id;
else
return msg.from.id;
}
async alreadyExist(msg) {
const id = this.getchatid(msg);
let rec = null;
try {
const user = await User.UserByIdTelegram(this.idapp, id);
let rec = this.getRecInMem(msg);
if (user && !rec) {
rec = this.addUser(msg);
}
if (rec) {
rec.user = user;
if (user)
rec.username_bo = user.username;
else
rec.username_bo = '';
}
} catch (e) {
console.error('Error: ', e);
2020-01-03 22:02:18 +01:00
}
return !!rec;
}
2021-12-29 18:26:08 +01:00
updateMenuBot() {
for (let rec of this.arrUsers) {
rec.menuDb = null;
2021-12-29 18:26:08 +01:00
rec.datemenu_updated = null;
}
}
addUser(msg) {
2020-03-31 20:34:24 +02:00
const lang = this.getlang(msg);
const code = 100000 + Math.round(Math.random() * 899999);
const rec = {
id: this.getchatid(msg),
code,
lang,
statusmsg: 0,
msgcodeprec: '',
sex: 0,
numdomande: 0,
retry: 0,
username_bo: '',
msgall_status: StatusMSGALL.NONE,
2021-12-29 18:26:08 +01:00
msgall_domanda: '',
msgall_achi: 0,
msgall_username_specifico: '',
2021-12-29 18:26:08 +01:00
cmd_to_set: 0,
msg_username_domanda: '',
msg_username_risposta: '',
extraparam: '',
msgtosent: '',
2021-12-29 18:26:08 +01:00
msgNo: '',
msg_toDest_yes: '',
msg_toDest_no: '',
msg_wait: false,
lastmenu: null,
2021-12-29 18:26:08 +01:00
datemenu_updated: null,
pageChange: false,
menuSaved: {},
pagenow: 1,
menuDb: null,
aportador_solidario: '',
};
if (!msg.from.username) {
rec.status = Status.WAITFOR_USERNAME_TELEGRAM;
} else {
rec.status = Status.WAITFOR_USERNAME_INVITANTE;
}
this.arrUsers.push(rec);
return rec;
}
async insertIntoDB(msg) {
return this.asktoRegistrationByLink(msg);
}
menuisVisible(idapp, menu) {
}
2021-12-29 18:26:08 +01:00
async loadMenuFromDb(idapp, id) {
try {
let load = false;
const check = true;
2020-12-21 02:16:42 +01:00
2021-12-29 18:26:08 +01:00
const recuser = this.getRecInMemById(id);
if (recuser) {
if (!recuser.datemenu_updated)
load = true;
2021-12-29 18:26:08 +01:00
}
if (check) {
if (recuser) {
if (!(recuser.menuSaved[idapp]))
load = true;
if (recuser.menuDb || recuser.pageChange)
load = true;
}
2021-12-29 18:26:08 +01:00
}
if (load) {
2021-12-29 18:26:08 +01:00
// Check if you are Admin
const user = await User.UserByIdTelegram(idapp, id);
2022-03-12 21:38:19 +01:00
// let isAdmin = user ? user.profile.manage_telegram && user.username === 'paoloar77' : false;
let isAdmin = user ? user.profile.manage_telegram : false;
const isManager = user ? user.profile.manage_telegram : false;
2022-03-10 23:19:56 +01:00
const isVerified = user ? user.profile.teleg_id > 0 && user.verified_by_aportador : false;
2021-12-29 18:26:08 +01:00
recuser.menuDb = await MyBot.findAllIdApp(idapp);
2021-12-29 18:26:08 +01:00
let arrlang = {};
2021-12-29 18:26:08 +01:00
let riga = 0;
let arrtemp = [];
let lang = '';
for (const rec of recuser.menuDb) {
rec.active_mem = false;
if (rec.active && rec.page === recuser.pagenow
&& (tools.isBitAttivoESelez(rec.visibility,
shared_consts.VISIB_ONLY_ADMIN, isAdmin) &&
tools.isBitAttivoESelez(rec.visibility,
shared_consts.VISIB_ONLY_MANAGER, isManager) &&
tools.isBitAttivoESelez(rec.visibility,
shared_consts.VISIB_ONLYIF_VERIFIED, isVerified))
) {
rec.active_mem = true;
if (true) {
lang = rec.lang;
if (!arrlang[rec.lang])
arrlang[rec.lang] = {menu: []};
if (riga !== rec.riga) {
if (arrtemp.length > 0)
arrlang[rec.lang].menu.push(arrtemp);
riga = rec.riga;
arrtemp = [];
}
2021-12-29 18:26:08 +01:00
arrtemp.push(rec.label);
2021-12-29 18:26:08 +01:00
}
}
}
if (arrtemp.length > 0)
arrlang[lang].menu.push(arrtemp);
if (recuser)
recuser.datemenu_updated = new Date();
recuser.pageChange = false;
recuser.menuSaved[idapp] = arrlang;
2021-12-29 18:26:08 +01:00
}
return recuser ? recuser.menuSaved[idapp] : null;
2021-12-29 18:26:08 +01:00
} catch (e) {
console.log('Err loadMenuFromDb: ' + e);
2020-12-21 02:16:42 +01:00
}
2021-12-29 18:26:08 +01:00
}
async isMenuSite(idapp, testo, lang, id) {
try {
// Check if Reload
const recuser = await this.getRecInMemById(id);
if (recuser) {
if (!recuser.datemenu_updated) {
await this.loadMenuFromDb(this.idapp, id);
2021-12-29 18:26:08 +01:00
}
2020-12-21 02:16:42 +01:00
}
2021-12-29 18:26:08 +01:00
for (const rec of recuser.menuDb) {
if (rec.active_mem) {
if (rec.idapp === idapp && rec.lang === lang &&
rec.label.toLowerCase() === testo) {
return true;
}
2021-12-29 18:26:08 +01:00
}
}
} catch (e) {
return false;
}
return false;
}
async getValueMenu(idapp, recuser, msg, testo, lang) {
2021-12-29 18:26:08 +01:00
try {
if (recuser) {
for (const recdb of recuser.menuDb) {
if (recdb.active_mem) {
if (recdb.idapp === idapp && recdb.lang === lang &&
recdb.label.toLowerCase() === testo) {
if (recdb.type === shared_consts.BOTTYPE_TEXT) {
return recdb.value;
} else if (recdb.type === shared_consts.BOTTYPE_LINK) {
//++TODO: Link diretto !?
return recdb.value;
} else if (recdb.type === shared_consts.BOTTYPE_PAGE) {
if (tools.isNumber(recdb.value)) {
recuser.pagenow = parseInt(recdb.value);
recuser.pageChange = true;
// this.setRecByUsername(recuser.username, recuser);
}
return '';
} else if (recdb.type === shared_consts.BOTTYPE_MENU) {
if (recdb.value) {
this.isMenu(recuser, msg, recdb.value, true);
return shared_consts.RIS_OK;
}
}
2021-12-29 18:26:08 +01:00
}
}
2021-12-29 18:26:08 +01:00
}
}
return '';
} catch (e) {
return '';
}
2021-12-29 18:26:08 +01:00
}
async getKeyboard(id, menu, lang) {
let keyb = null;
this.lastid = id;
2021-12-29 18:26:08 +01:00
if (menu) {
keyb = menu;
2021-12-29 18:26:08 +01:00
} else {
keyb = await this.loadMenuFromDb(this.idapp, id);
}
2020-03-31 20:34:24 +02:00
let mykeyb = undefined;
if (!!keyb) {
mykeyb = this.getmenuKey(keyb, lang);
}
if (mykeyb === null) {
mykeyb = [];
}
// console.log('mykeyboard', mykeyb);
2020-03-31 20:34:24 +02:00
return mykeyb;
}
modificaMsg(chatid, idmodif, text) {
const form = {
'chat_id': chatid,
'message_id': idmodif,
};
try {
return this.bot.editMessageText(text, form);
} catch (e) {
console.log('Err Telegram: ' + e);
}
}
async _inviaMsg(id, text, form, menu, msg_id, chat_id, ripr_menuPrec, opt) {
if (!text)
return 0;
if (process.env.LOCALE === '1') {
2021-12-29 18:26:08 +01:00
if (id !== ADMIN_IDTELEGRAM_TEST)
id = '12429864';
2020-07-02 22:00:58 +02:00
}
if (!!msg_id) {
return this.modificaMsg(chat_id, msg_id, text);
}
const recmem = this.getRecInMemById(id);
if (!menu) {
if (recmem) {
if (recmem.msgall_username_specifico !== '') {
menu = MenuChat;
}
}
}
if (recmem) {
recmem.lastmenu = menu;
}
if (ripr_menuPrec) {
if (recmem && !!recmem.lastmenu) {
menu = recmem.lastmenu;
}
}
2020-04-07 14:34:29 +02:00
let mylang = 'it';
if (!!recmem) {
mylang = recmem.lang;
}
try {
console.log('textORIG', text.substring(0, 100));
text = text.replace(/<br>/g, '\n');
text = text.replace(/<br\/>/g, '\n');
text = text.replace(/<div>/g, '');
text = text.replace(/<font/g, '<pre');
text = text.replace(/<\/font>/g, '</pre>');
text = text.replace(/<span/g, '<pre');
text = text.replace(/<\/span>/g, '</pre>');
text = text.replace(/<p /g, '<pre ');
text = text.replace(/<\/p>/g, '</pre>');
text = text.replace(/<\/div>/g, '\n');
// text = text.replace(/<\/div>/g, '');
text = text.replace(/&nbsp;/g, ' ');
if (!form) {
form = {
'parse_mode': 'HTML',
'message_id': msg_id,
'reply_markup': {
'resize_keyboard': true,
'keyboard': await this.getKeyboard(id, menu, mylang),
},
};
}
return this.bot.sendMessage(id, text, form).catch((e) => {
let blocked = false;
if ((e.message.indexOf('Forbidden') > 0) ||
(e.message.indexOf('chat not found') > 0)) {
blocked = true;
}
if (!blocked) {
console.error(e.message);
}
if (blocked) {
User.SetTelegramWasBlocked(this.idapp, id);
// ++Todo: DA FARE ! local_sendMsgTelegramToTheManagers(this.idapp, addtext + text);
}
return 0;
});
} catch (e) {
console.error(e, 'text', text);
return 0;
}
}
async SendMsgToUser(msg, rec, username, text) {
if (rec.msg_wait) {
await this.menumsgGenerico(msg, Destin.A_UTENTE, username);
rec.msg_wait = false;
} else {
const telegid = await User.TelegIdByUsername(this.idapp, username);
if (telegid > 0) {
await this.sistemaRecDest(rec, msg);
// await this.sendMsg(msg.chat.id, '[Msg inviato a ' + username + ']: ');
await this.sendMsg(telegid,
Menu.CHAT_PERSONALE + '[' + rec.username_bo + ' ti scrive]:\n' +
text, MenuChat);
} else {
await this.sendMsg(msg.chat.id, 'Username non valido');
rec.msgall_username_specifico = '';
}
}
}
async sendMsg(id, text, menu, form, msg_id, chat_id, ripr_menuPrec) {
2022-03-12 21:38:19 +01:00
if (!id || !text)
return false;
try {
if (text.length > 4090) {
let text1 = text.slice(0, 4090);
let text2 = text.slice(4090, text.length);
await this._inviaMsg(id, text1, form, menu, msg_id, chat_id,
ripr_menuPrec);
return await this._inviaMsg(id, text2, form, menu, msg_id, chat_id,
ripr_menuPrec);
} else {
return await this._inviaMsg(id, text, form, menu, msg_id, chat_id,
ripr_menuPrec);
}
} catch (e) {
console.error('Error sendMsg', e);
return null;
}
}
async sendMsgLog(id, text, menu, form, msg_id, chat_id, ripr_menuPrec) {
const rec = this.getRecInMemById(id);
const username = rec ? rec.username_bo : '';
console.log('Msg inviato a ', username, '(', id, ')', text);
return this.sendMsg(id, text, menu, form, msg_id, chat_id, ripr_menuPrec);
}
2020-03-31 20:34:24 +02:00
getmenuKey(mymenu, lang) {
let mymenuout = null;
try {
mymenuout = mymenu[lang].menu;
} catch (e) {
2021-12-29 18:26:08 +01:00
if (!!mymenu['it'])
mymenuout = mymenu['it'].menu;
2020-03-31 20:34:24 +02:00
}
return mymenuout;
}
async setResetPwd(rec, msg) {
try {
if (rec.user) {
const idapp = this.idapp;
const username = rec.user.username;
const lang = rec.user.lang;
const link = await User.createNewRequestPwdByUsernameAndGetLink(idapp, username);
if (link) {
local_sendMsgTelegram(idapp, username, getstr(lang, 'MSG_RESETPWD') + '\n' + link);
}
}
} catch (e) {
console.error('Err', e);
}
}
async setPhotoProfile(user, telegid, showmsg = true) {
try {
if (user) {
const idapp = this.idapp;
const bot = this.bot;
const username = user.username;
const lang = user.lang;
const token = this.token;
const editprofile = tools.getHostByIdApp(idapp, true) + '/editprofile';
let myfileprofile = tools.getdirByIdApp(idapp, true) +
server_constants.DIR_UPLOAD + '/profile/' + username + '/';
let user_profile = bot.getUserProfilePhotos(telegid);
user_profile.then(function(res) {
if (res.photos[0]) {
var file_id = res.photos[0][2].file_id;
var file = bot.getFile(file_id);
file.then(function(result) {
const file_path = result.file_path;
const photo_url = 'https://api.telegram.org/file/bot' + token +
'/' + file_path;
// console.log('1) photo_url', photo_url);
let filename = tools.extractFileName(photo_url);
myfileprofile += filename;
const pathfile = tools.extractFilePath(myfileprofile);
tools.mkdirpath(pathfile);
// console.log('2) myfileprofile', pathfile);
return tools.downloadImage(photo_url, myfileprofile).
then((ris) => {
try {
let resized_img_small = tools.extractFilePath(myfileprofile) + '/' + server_constants.PREFIX_IMG_SMALL + filename;
// SMALL
// questa opzione 'failOnError' serve per risolvere l'errore (Error: VipsJpeg: Invalid SOS parameters for sequential JPEG
sharp(myfileprofile, {failOnError: false}).
resize(64, 64).
withMetadata().
toFile(resized_img_small);
} catch (e) {
console.error('setPhotoProfile sharp', e);
}
// console.log('3) setPicProfile ris', ris);
return User.setPicProfile(idapp, username, filename).
then((ris) => {
// console.log('4) sendMsg picprofile Copied !');
if (showmsg) {
local_sendMsgTelegram(idapp, username, printf(getstr(lang, 'MSG_SET_PICPROFILE'), editprofile));
}
});
// console.log('scaricato');
}).catch((err) => {
console.error('Error setPhotoProfile', err);
});
});
}
});
}
} catch (e) {
console.error('Error setPhotoProfile', e);
}
}
getInlineKeyboard(lang, arrrisp1, arrrisp2, arrrisp3) {
let mykeyb = {
parse_mode: 'HTML',
reply_markup: {
inline_keyboard: [],
},
};
// text
// callback_data
// url
const arrriga1 = [];
if (!!arrrisp1) {
for (const ris of arrrisp1) {
arrriga1.push(ris);
}
}
const arrriga2 = [];
if (!!arrrisp2) {
for (const ris of arrrisp2) {
arrriga2.push(ris);
}
}
const arrriga3 = [];
if (!!arrrisp3) {
for (const ris of arrrisp3) {
arrriga3.push(ris);
}
}
if (arrriga1.length > 0)
mykeyb.reply_markup.inline_keyboard.push(arrriga1);
if (arrriga2.length > 0)
mykeyb.reply_markup.inline_keyboard.push(arrriga2);
if (arrriga3.length > 0)
mykeyb.reply_markup.inline_keyboard.push(arrriga3);
return mykeyb;
}
async ChiediSINO(msg, domanda) {
2020-03-31 20:34:24 +02:00
const lang = this.getlang(msg);
this._inviaMsg(msg.from.id, domanda, {
'reply_markup': {
'resize_keyboard': true,
'one_time_keyboard': true,
'keyboard': this.getmenuKey(MenuYesNo, lang),
},
});
}
2020-01-03 22:02:18 +01:00
2020-03-31 20:34:24 +02:00
async ScegliLang(msg, lang) {
const rec = this.getRecInMem(msg);
if (rec) {
if (rec.user) {
User.SetLang(this.idapp, rec.user._id, lang);
rec.user.lang = lang;
}
rec.lang = lang;
// await this.sendMsg(msg.chat.id, lang);
this.msgScegliMenu(msg);
}
}
async msgScegliMenu(msg) {
2020-03-31 20:34:24 +02:00
this._inviaMsg(msg.from.id, getstr(this.getlang(msg), 'MSG_SCEGLI_MENU'), {
'parse_mode': 'HTML',
'reply_markup': {
'resize_keyboard': true,
'keyboard': await this.getKeyboard(msg.from.id, undefined,
this.getlang(msg)),
},
2020-04-24 10:29:25 +02:00
});
2020-01-03 22:02:18 +01:00
}
}
const arrTelegram = [];
function getclTelegBytoken(token) {
2020-01-03 22:02:18 +01:00
const rec = arrTelegram.find((rec) => rec.cl.token === token);
if (!!rec)
return rec.cl;
else
return null;
}
function getclTelegByidapp(idapp) {
// ****************************
if (appTelegramFinti.includes(idapp)) {
const ind = appTelegramFinti.indexOf(idapp);
if (ind >= 0)
idapp = appTelegramDest[ind]; // Invia
}
2020-01-03 22:02:18 +01:00
const rec = arrTelegram.find((rec) => rec.idapp === idapp);
if (!!rec)
return rec.cl;
else
return null;
}
//if (!tools.testing() || true) {
if (true) {
let arrTeleg = appTelegram;
if (process.env.NODE_ENV === 'development')
arrTeleg = appTelegram_DEVELOP;
else if (process.env.NODE_ENV === 'test')
arrTeleg = appTelegram_TEST;
console.log('TELEGRAM STARTING.... NODE_ENV:' + process.env.NODE_ENV);
for (const idapp of arrTeleg) {
try {
const token = tools.getTelegramKeyByIdApp(idapp);
const nomebot = tools.getTelegramBotNameByIdApp(idapp);
// console.log('idapp', idapp, 'token', token);
if (!!token) {
console.log('*** START BOT ' + nomebot);
const bot = new TelegramBot(token, {polling: true});
if (url === '0') {
const ngrok = require('ngrok');
ngrok.connect(port, function onConnect(error, u) {
if (error) throw error;
url = u;
console.log(`Game tunneled at ${url}`);
});
}
arrTelegram.push({idapp, cl: new Telegram(idapp, bot)});
bot.onText(/\/start/, (msg) => {
const myclTelegram = getclTelegBytoken(bot.token);
myclTelegram.start(msg);
});
// Matches "/echo [whatever]"
bot.onText(/\/echo (.+)/, (msg, match) => {
// 'msg' is the received Message from Telegram
// 'match' is the result of executing the regexp above on the text content
// of the message
const chatId = msg.chat.id;
const resp = match[1]; // the captured "whatever"
// send back the matched "whatever" to the chat
bot.sendMessage(chatId, resp);
});
// Listen for any kind of message. There are different kinds of
// messages.
bot.on('message', (msg) => {
const myclTelegram = getclTelegBytoken(bot.token);
// const chatId = msg.chat.id;
myclTelegram.receiveMsg(msg);
});
// Handle callback queries
bot.on('callback_query', async (callbackQuery) => {
// console.log('callback_query', callbackQuery);
try {
const myclTelegram = getclTelegBytoken(bot.token);
let dataarr = [];
let data = {
action: '',
username: '',
userDest: '',
groupId: 0,
};
const datastr = callbackQuery.data;
if (!!datastr) {
dataarr = datastr.split(tools.SEP);
if (!!dataarr) {
data = {
action: dataarr[0],
username: dataarr[1] ? dataarr[1] : '',
userDest: dataarr[2] ? dataarr[2] : '',
groupId: dataarr[3] ? parseInt(dataarr[3]) : '',
};
}
}
const msg = callbackQuery.message;
const opts = {
chat_id: msg.chat.id,
message_id: msg.message_id,
};
const status = await myclTelegram.setInit(msg);
const rec = myclTelegram.getRecInMem(msg);
2022-03-10 23:19:56 +01:00
const username_action = rec.user ? rec.user.username : '';
2022-03-10 23:19:56 +01:00
data.username = await User.getRealUsernameByUsername(idapp, data.username);
data.userDest = await User.getRealUsernameByUsername(idapp, data.userDest);
const user = await User.getUserShortDataByUsername(idapp, data.username);
const userDest = data.userDest ? await User.getUserShortDataByUsername(idapp, data.userDest) : null;
let group = null;
if (data.groupId) {
group = await MyGroup.findOne({idapp, _id: data.groupId}).lean();
2020-09-04 00:06:49 +02:00
}
let cmd = 0;
if (!!rec) {
if (!!user) {
if (data.action === InlineCmd.VOGLIO_IMBARCARMI) {
// Controlla se è qualificato!
const mydata = tools.AddDate(user.date_reg, 7);
// bot.editMessageText(tools.gettranslate('ADDED_TOLISTAINGRESSO', user.lang), opts);
} else if (data.action === InlineCmd.NON_VOGLIO_IMBARCARMI) {
await User.NonVoglioImbarcarmi(user.idapp, user.username);
const msgadd = '[' + user.username + '] ' + user.name + ' ' +
user.surname + ' ha risposto che NON VUOLE IMBARCARSI !';
await local_sendMsgTelegramToTheManagers(user.idapp, msgadd,
msg, false); // Anche a STAFF
} else if (data.action ===
InlineZoomConferma.CONFERMA_ZOOM_PRESENZA) {
await User.setZoomPresenza(user.idapp, user._id, true);
} else if (data.action ===
InlineZoomConferma.NON_CONFERMA_ZOOM_PRESENZA) {
await User.setZoomPresenza(user.idapp, user._id, false);
} else if (data.action === InlineConferma.RISPOSTA_SI + shared_consts.CallFunz.REGISTRATION) {
const changed = await myclTelegram.setCmdToUsername(rec,
data.username,
Cmd.VALIDATE_REGISTRATION, true);
if (changed) {
await User.setFriendsCmd(user.idapp, data.username, userDest.username, shared_consts.FRIENDSCMD.SETFRIEND);
await User.setaportador_solidario(user.idapp, data.username, userDest.username);
const msgOrig = printf(getstr(userDest.lang, 'MSG_APORTADOR_DEST_CONFIRMED'), `${userDest.username}`,
tools.getHostByIdApp(user.idapp));
const msgDest = printf(getstr(user.lang, 'MSG_APORTADOR_CONFIRMED'), `${user.username}`, `${userDest.username}`);
await local_sendMsgTelegram(user.idapp, data.username, msgOrig);
await local_sendMsgTelegram(user.idapp, data.userDest, msgDest);
}
} else if (data.action === InlineConferma.RISPOSTA_NO + shared_consts.CallFunz.REGISTRATION) {
if (userDest.username === user.aportador_solidario) {
const changed = await myclTelegram.setCmdToUsername(rec, data.username,
Cmd.VALIDATE_REGISTRATION, false);
if (changed) {
const nomeDest = tools.getNomeCognomeEUserNameByUser(userDest);
const nomestr = tools.getNomeCognomeEUserNameByUser(user);
const msgOrig = printf(getstr(userDest.lang, 'MSG_APORTADOR_DEST_NOT_CONFIRMED', nomeDest));
const msgDest = printf(getstr(user.lang, 'MSG_APORTADOR_NOT_CONFIRMED'), nomestr);
await local_sendMsgTelegram(user.idapp, data.username, msgOrig);
await local_sendMsgTelegram(user.idapp, data.userDest, msgDest);
}
}
} else if (data.action === InlineConferma.RISPOSTA_SI + shared_consts.CallFunz.RICHIESTA_GRUPPO) {
if (group) {
cmd = shared_consts.GROUPSCMD.SETGROUP;
const foundIfAlreadyGroup = await User.ifAlreadyInGroup(user.idapp, data.username, group.groupname);
if (!foundIfAlreadyGroup) {
// Aggiungilo nel Gruppo
await User.setGroupsCmd(user.idapp, data.username, group.groupname, cmd, 0, username_action);
}
}
} else if (data.action === InlineConferma.RISPOSTA_NO + shared_consts.CallFunz.RICHIESTA_GRUPPO) {
if (group) {
cmd = shared_consts.GROUPSCMD.REMOVE_FROM_MYGROUP;
const foundIfAlreadyGroup = await User.ifAlreadyInGroup(user.idapp, data.username, group.groupname);
if (foundIfAlreadyGroup) {
// Rimuovilo nel Gruppo
await User.setGroupsCmd(user.idapp, data.username, group.groupname, cmd, 0, username_action);
}
}
} else if (data.action === InlineConferma.RISPOSTA_SI + shared_consts.CallFunz.RICHIESTA_AMICIZIA) {
if (userDest) {
cmd = shared_consts.FRIENDSCMD.SETFRIEND;
const foundIfAlreadyFriend = await User.isMyFriend(user.idapp, data.username, data.userDest);
if (!foundIfAlreadyFriend) {
// Aggiungilo nelle Amicizie
const ris = await User.setFriendsCmd(user.idapp, data.username, data.userDest, cmd);
if (ris) {
const msgOrig = printf(getstr(userDest.lang, 'MSG_FRIENDS_ACCEPTED', data.userDest));
const msgDest = printf(getstr(user.lang, 'MSG_FRIENDS_ACCEPTED_CONFIRMED'), data.username);
await local_sendMsgTelegram(user.idapp, data.username, msgOrig);
await local_sendMsgTelegram(user.idapp, data.userDest, msgDest);
}
}
}
} else if (data.action === InlineConferma.RISPOSTA_NO + shared_consts.CallFunz.RICHIESTA_AMICIZIA) {
if (userDest) {
cmd = shared_consts.FRIENDSCMD.REMOVE_FROM_MYFRIENDS;
const foundIfAlreadyFriend = await User.isMyFriend(user.idapp, data.username, data.userDest);
if (foundIfAlreadyFriend) {
// Aggiungilo nelle Amicizie
const ris = await User.setFriendsCmd(user.idapp, data.username, data.userDest, cmd);
if (ris) {
const msgDest = printf(getstr(user.lang, 'MSG_FRIENDS_NOT_ACCEPTED_CONFIRMED'), data.username);
await local_sendMsgTelegram(user.idapp, data.userDest, msgDest);
}
}
}
}
}
}
} catch (e) {
console.error('Error BOT callback_query', e);
}
/*
let text;
if (action === 'edit') {
text = 'Edited Text';
}
bot.editMessageText(text, opts);
*/
// bot.answerCallbackQuery(callbackQuery.id, { url });
});
}
} catch (e) {
console.error('Error Telegram LOOP : ' + e.message);
}
}
}
module.exports = MyTelegramBot;