Files
freeplanet_serverside/src/server/telegram/telegrambot.js
paoloar77 daf872fe55 - Gruppi
2022-02-03 00:33:15 +01:00

3430 lines
112 KiB
JavaScript
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
const tools = require('../tools/general');
const appTelegram = [tools.FREEPLANET];
const appTelegram_TEST = [tools.FREEPLANET, tools.PDNM];
const appTelegram_DEVELOP = [tools.PDNM];
const appTelegramFinti = ['2', tools.CNM];
const appTelegramDest = [tools.FREEPLANET, tools.FREEPLANET];
const printf = require('util').format;
const {User} = require('../models/user');
const {CalZoom} = require('../models/calzoom');
const {MyBot} = require('../models/bot');
const shared_consts = require('../tools/shared_nodejs');
// const {ListaIngresso} = require('../models/listaingresso');
const {MsgTemplate} = require('../models/msg_template');
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'),
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 = {
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'],
GRAZIE: [
'grazie ainy',
'grazie',
'grazie mille',
'graziee',
'grazie 😘',
'grazie😘'],
PRINCIPE_AZZURRO: ['principe azzurro'],
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'],
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: ['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'],
MA_ALLORA: ['ma allora'],
};
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 = {
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',
ALTRO: emoji.get('newspaper') + ' Altro',
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',
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',
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: '',
},
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',
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',
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',
LAVAGNA: emoji.get('om_symbol') + ' Tabla',
LINK_CONDIVIDERE: emoji.get('link') + ' Link za vpis oseb',
ZOOM: emoji.get('information_source') + ' Zoom (Konference)',
INFO: emoji.get('information_source') + ' Informacije',
ASSISTENZA: emoji.get('open_hands') + ' jev klepet',
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',
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',
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 = {
VOGLIO_IMBARCARMI: 'w_imb',
NON_VOGLIO_IMBARCARMI: 'nw_imb',
};
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]] },
// };
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]],
},
};
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]]},
};
const MenuAdmin = {
it: {
menu: [
[Menu.MSGSTAFF, Menu.MSGATUTTI, Menu.it.INDIETRO],
[Menu.MSGPAOLO]],
},
};
const MenuSend = {
it: {
menu: [
[CONTA_SOLO, RICEVI_EMAIL, NOME_COGNOME],
[CHEDI_SE_IMBARCARTI, Menu.it.INDIETRO]],
},
};
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]]},
};
const Sex = {
MALE: 1,
FEMALE: -1,
};
const Status = {
EXIT: -5,
NONE: 0,
VERIFIED: 1,
WAITFOR_USERNAME_BO: 102,
WAITFOR_VERIFY_CODE: 103,
WAITFOR_RISPOSTA: 110,
};
const Cmd = {
VALIDATE_REGISTRATION: 1,
};
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,
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: 'Scrivi nel messaggio lo username o la email con cui ti sei registrato sul sito di %s:',
MSG_ERRORE_USERNAME: 'Attenzione! Devi inserire solo lo username (40 caratteri massimo)',
MSG_ERRORE_USERNAME_NOT_FOUND: 'Per Completare la Verifica Telegram BOT, devi ora scrivere qui sotto nel messaggio l\'Username OPPURE la email con cui ti sei registrato 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_VERIFY_OK: emoji.get('grinning') +
' Benvenuto %s! Ti sei correttamente verificato con il BOT. ' +
'\nSono il tuo assistente virtuale.\n',
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',
MSG_APORTADOR_ASK_CONFIRM: '🆕💥 🧍‍♂️ Abilita Nuova Registrazione: %s',
MSG_APORTADOR_CONFIRMED: '✅ %s è stato Abilitato correttamente!',
MSG_APORTADOR_DEST_CONFIRMED: '✅ Sei stato Abilitato correttamente da %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',
};
const txt_es = {
MSG_SCEGLI_MENU: emoji.get('dizzy') + ' Elija un elemento del menú:' +
emoji.get('dizzy'),
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.:',
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_VERIFY_OK: emoji.get('grinning') +
' Bienvenido %s! Ha verificado correctamente con el BOT. ' +
'\nSoy su asistente virtual.\nContinúa la guía paso a paso de vuelta a la página web.\n\n' +
'Este chat le ayudará a ver rápidamente su pizarra y recibir alertas importantes sobre cómo proceder.\n\nUtilice el menú de abajo para comprobar su situación.' +
emo.GREEN_HEART,
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_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',
};
const txt_fr = {
MSG_SCEGLI_MENU: emoji.get('dizzy') + 'Choisissez un élément de menu:' +
emoji.get('dizzy'),
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: ',
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: ',
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_VERIFY_OK: emoji.get('grinning') +
' Bienvenu(e) %s! Vous vous êtes vérifié avec succès avec le BOT. ' +
'\nJe suis ton assistant virtuel.\n' +
'Continuez le guide étape par étape en revenant sur le site. \n\nCe chat vous servira pour voir rapidement votre tableau de bord et recevoir des avis importants sur la marche à suivre pour continuer votre parcours.\n\nUtilisez le menu ci-dessous pour vérifier votre situation. ' +
emo.GREEN_HEART,
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)',
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é',
};
const txt_si = {
MSG_SCEGLI_MENU: emoji.get('dizzy') + 'Izbirni meni:' + emoji.get('dizzy'),
MSG_ASK_USERNAME_BO: 'Vpiši svoje uporabniško ime in e-naslov s katerimi si se registriral na spletni strani %s: ',
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: ',
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_VERIFY_OK: emoji.get('grinning') +
'Dobrodošel %s! Pravilno ste se preveriliz BOT. ' +
' \nsem tvoj virtualni asisten.\n ' +
'Vodenje se nadeljuje z vodenimi koraki, ko se vrneš na spletno stran. \n\nTa klepet ti bo služil za hitri pregled tvoje table in za sprejemanje pomembnih obvestil glede poteka tvojega potovanja. \n\nUporabite meni tu spodaj, da lahko kontrolirate svojo situacijo. ' +
emo.GREEN_HEART,
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)',
};
const txt_en = {
MSG_SCEGLI_MENU: emoji.get('dizzy') + ' Choose a menu item:' +
emoji.get('dizzy'),
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:',
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_VERIFY_OK: emoji.get('grinning') +
' Welcome %s! You have correctly verified yourself with BOT. ' +
'\nI am your virtual assistant.\n' +
'Continue the step-by-step guide back to the website.\n\nThis chat will help you to quickly see your DashBoard and receive important alerts on how to proceed on your path.\n\nUse the menu below to check your situation.' +
emo.GREEN_HEART,
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_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',
};
const txt_pt = {
MSG_SCEGLI_MENU: emoji.get('dizzy') + ' Escolha um item do menu:' +
emoji.get('dizzy'),
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:',
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_VERIFY_OK: emoji.get('grinning') +
' Bem-vindo %s! Você verificou corretamente com BOT. ' +
'\nEu sou o vosso assistente virtual.\n' +
'Continue o guia passo-a-passo de volta ao site.\n\nEste chat vai ajudá-lo a ver rapidamente o seu Quadro Negro e a receber alertas importantes sobre como proceder..\n\n' +
'Use o menu abaixo para verificar a sua situação.' + emo.GREEN_HEART,
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_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',
};
const TelegramBot = require('node-telegram-bot-api');
const ADMIN_IDTELEGRAM_TEST = 5022837609; //Perseo
module.exports = {
ADMIN_IDTELEGRAM_SERVER: '12429864', //Paolo
ADMIN_USER_SERVER: 'paoloar77',
ADMIN_USER_NAME_SERVER: 'Paolo',
phase: {
REGISTRATION: 1,
ISCRIZIONE_CONACREIS: 2,
},
getFormDaMostrare: function(idapp, myfunc, myuser) {
let FormDaMostrare = null;
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,
},
{
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,
},
]);
}
return FormDaMostrare;
},
getCiao: function(idapp, username, lang) {
return tools.gettranslate('CIAO', lang) + ' ' + username + '!\n';
},
notifyToTelegram: async function(phase, mylocalsconf) {
let userdest = mylocalsconf.user.aportador_solidario;
let langdest = mylocalsconf.user.lang;
let NameFrom = `${mylocalsconf.user.name} ${mylocalsconf.user.surname}`;
const index = mylocalsconf.user.index;
let aportador = '';
if (userdest) {
aportador = ` (${userdest})`;
NameFrom += aportador;
} else {
aportador = mylocalsconf.user.aportador_solidario_nome_completo;
}
let text = '';
if (phase === this.phase.REGISTRATION) {
if (userdest) {
NameFrom = await User.getNameSurnameByUsername(mylocalsconf.idapp,
userdest) + aportador;
aportador = NameFrom;
}
text = printf(getstr(langdest, 'MSG_APORTADOR_USER_REGISTERED'),
`${mylocalsconf.user.name} ${mylocalsconf.user.surname} (${mylocalsconf.user.username})`);
}
let addtext = '';
let rismsg = null;
if (!!mylocalsconf.user.aportador_solidario) {
addtext = '[Inviato a ' + NameFrom + ']:' + '\n';
rismsg = await this.sendMsgTelegram(mylocalsconf.idapp, userdest, text);
}
await this.sendMsgTelegramToTheManagers(mylocalsconf.idapp, addtext + text);
if (phase === this.phase.REGISTRATION) {
await this.askConfirmationUserRegistration(mylocalsconf.idapp, shared_consts.CallFunz.REGISTRATION,
mylocalsconf.user, userdest, langdest);
}
/*
// Invia richiesta allo Sponsor
const domanda = printf(getstr(langdest, 'MSG_APORTADOR_ASK_CONFIRM'),
`${mylocalsconf.user.name + ' ' + mylocalsconf.user.surname + '(' + mylocalsconf.user.username + ')' + 'email: ' + mylocalsconf.user.email }`);
const msgyes = printf(getstr(langdest, 'MSG_APORTADOR_CONFIRMED'),
`${mylocalsconf.user.name + ' ' + mylocalsconf.user.surname}`);
const msgNo = printf(getstr(langdest, 'MSG_APORTADOR_NOT_CONFIRMED'),
`${mylocalsconf.user.name + ' ' + mylocalsconf.user.surname}`);
const msgDestyes = printf(
getstr(langdest, 'MSG_APORTADOR_DEST_CONFIRMED'),
`${mylocalsconf.user.name + ' ' + mylocalsconf.user.surname}`);
const msgDestNo = printf(
getstr(langdest, 'MSG_APORTADOR_DEST_NOT_CONFIRMED'),
`${mylocalsconf.user.name + ' ' + mylocalsconf.user.surname}`);
const cl = getclTelegByidapp(mylocalsconf.idapp);
if (cl) {
await cl.createIfNotExist(rismsg);
await cl.menumsgDomanda(rismsg, Cmd.VALIDATE_REGISTRATION,
Destin.DOMANDA, userdest, '', domanda, msgyes, msgNo, msgDestyes,
msgDestNo, mylocalsconf.user.username);
}
*/
},
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);
},
sendMsgTelegramToTheManagers: async function(
idapp, text, onlyintofile = false, MyForm = null) {
tools.writeManagersLog(text);
if (!onlyintofile) {
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);
}
}
}
return true;
},
sendMsgTelegramToTheManagersAndZoomeri: async function(
idapp, text, onlyintofile, MyForm = null) {
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);
}
}
}
return true;
},
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) {
if (sonosognatore)
msg = printf(tools.gettranslate('SEND_LINK_CHAT_SOGNATORE', lang),
user.name,
mydata.navemediatore.riga + '.' + mydata.navemediatore.col,
mydata.msgpar1);
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) {
if (!!mydata.username_mitt) {
msg = '[' + tools.gettranslate('MSG_SEND_FROM', lang) + ' ' +
mydata.username_mitt + ']:' + tools.ACAPO;
}
msg += mydata.msgpar1;
} else if (mydata.tipomsg >= 1000) {
const ris = await MsgTemplate.getMsgByLang(user.idapp, mydata.tipomsg,
lang);
msg = ris.body;
title = ris.title;
}
if (!!user) {
msg = msg.replace('{username}', user.username);
msg = msg.replace('{name}', user.name);
msg = msg.replace('{surname}', user.surname);
if (!!user.profile.link_payment)
msg = msg.replace('{link_paypalme}', user.profile.link_payment);
if (!!user.profile.revolut)
msg = msg.replace('{revolut}', user.profile.revolut);
if (!!user.profile.payeer_id)
msg = msg.replace('{payeer_id}', user.profile.payeer_id);
if (!!user.profile.advcash_id)
msg = msg.replace('{advcash_id}', user.profile.advcash_id);
if (!!user.profile.email_paypal)
msg = msg.replace('{email_paypal}', user.profile.email_paypal);
if (!!user.profile.note_payment)
msg = msg.replace('{note_payment}', user.profile.note_payment);
}
// const cl = getclTelegByidapp(user.idapp);
msg = msg.replace('{link_chathelp}', tools.HELP_CHAT);
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);
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};
},
sendMsgTelegramToNave: async function(idapp, mydata, res) {
let nummsgtosend = 0;
let nummsgsent = 0;
let strout = '';
let flotta = mydata.flotta;
const sendemail = require('../sendemail');
try {
let arrnavi = null;
let strflotta = '';
if (flotta) {
strflotta = Flotta.getStrFlotta(flotta);
arrnavi = await Nave.getusersByFlotta(idapp, flotta.riga,
flotta.col_prima, flotta.col_ultima);
if (mydata.tipomsg === tools.TipoMsg.SEND_MSG_A_SOGNATORE) {
arrnavi = await User.find({idapp, username: flotta.sognatore});
}
} else {
arrnavi = await Nave.getusersByNave(idapp, mydata.navemediatore);
}
// console.log('usersmanagers', usersmanagers);
let mymsg = '';
let mymsgprimo = '';
tipomsgorig = mydata.tipomsg;
if (arrnavi) {
if (!flotta)
tools.writeManagersLog('sendMsgTelegramToNave',
mydata.navemediatore.riga + '.' + mydata.navemediatore.col);
let index = 1;
if (mydata.inviareale) {
let mystrmsg = tools.getStrMsgByTipoMsg(tipomsgorig);
if (!!mystrmsg) {
tools.writeFlottaLog(idapp, mystrmsg, flotta.riga,
flotta.col_prima);
}
}
for (const nave of arrnavi) {
mydata.tipomsg = tipomsgorig;
let user = null;
if (mydata.tipomsg === tools.TipoMsg.SEND_MSG_A_SOGNATORE) {
user = nave;
} else {
user = await User.findByIndOrder(idapp, nave.ind_order);
if (mydata.tipomsg ===
tools.TipoMsg.SEND_MSG_SOLLECITO_DONATORI_NO_DONO) {
// Solo a quelli che non hanno fatto il dono
if (nave.made_gift)
user = null;
}
if ((nave.num_tess % 2) === 0) {
// MEDIATORE !
// Se l'ultimo Donatore è un Mediatore, allora NON GLI MANDO IL MESSAGGIO !
if (mydata.tipomsg === tools.TipoMsg.SEND_MSG_EFFETTUA_IL_DONO) {
user = null;
}
if (mydata.tipomsg ===
tools.TipoMsg.SEND_MSG_SOLLECITO_DONATORI_NO_DONO) {
user = null;
}
} else {
// DONATORE
if (mydata.tipomsg === tools.TipoMsg.SEND_MSG_A_MEDIATORI) {
user = null; // Se sto mandando msg a Mediatore, allora questo no!
}
}
}
//mydata.tipomsg = tools.TipoMsg.SEND_MSG_A_MEDIATORI;
if (!!user) {
const lang = user.lang;
const idteleg = user.profile.teleg_id;
mydata.nave = nave;
const rismsg = await this.getMsgByTipoMsg(mydata, lang, user,
false);
mymsg = rismsg.body;
mytitle = rismsg.title;
if (mymsgprimo === '') {
if (lang === 'it')
mymsgprimo = mymsg;
}
if (!!idteleg) {
strout += '\n (' + index + ') ' + user.name + ' ' + user.surname +
':';
if (mydata.inviareale) {
await this.sendMsgTelegramByIdTelegram(idapp, idteleg, mymsg,
undefined, undefined, true);
await tools.snooze(100);
strout += ' -> (MSG OK)';
if (mydata.inviaemail && !!user.email) {
// user.email = 'paolo.arena77@gmail.com';
await sendemail.sendEmail_ByText(user.lang, user.email, user,
idapp, {
emailbody: mymsg,
emailtitle: mytitle,
});
strout += ' -> (EMAIL OK)';
}
nummsgsent++;
} else {
strout += ' (Ok)';
nummsgtosend++;
}
}
}
index++;
}
}
if (!mydata.inviareale) {
await this.sendMsgTelegram(idapp, res.req.user.username,
'TEST INVIO MESSAGGIO:\n' + mymsgprimo +
'\n\n(Messaggi da Inviare: ' + nummsgtosend + ')');
}
if ((nummsgsent > 1) && (mydata.inviareale)) {
try {
let msg = '';
if (!!flotta) {
if (!!mydata.tipomsg) {
msg = 'Flotta ' + strflotta + '): ' +
tools.getStrMsgByTipoMsg(mydata.tipomsg) + '\n' + mymsg;
} else {
msg = 'Inviato messaggio a tutta la FLOTTA DA ' + flotta.riga +
'.' + flotta.col_prima + ' A ' + flotta.riga + '.' +
flotta.col_ultima + ' \n' + mymsg;
}
} else {
msg = 'Inviato messaggio a tutti i Donatori della Nave ' +
mydata.navemediatore.riga + '.' + mydata.navemediatore.col +
'\n' + mymsg;
}
await this.sendMsgTelegramToTheManagers(idapp, msg);
} catch (e) {
}
}
/*
if (mydata.tipomsg === tools.TipoMsg.SEND_LINK_CHAT_DONATORI) {
const usersognatore = await Nave.getSognatoreByRigaColMediatore(idapp, mydata.navemediatore);
console.log('Sognatore: ', usersognatore.username);
if (!!usersognatore) {
const lang = usersognatore.lang;
const idteleg = usersognatore.profile.teleg_id;
const mymsg = this.getMsgByTipoMsg(mydata, lang, usersognatore, true);
// Invia Msg al Sognatore !
if (mydata.inviareale) {
await this.sendMsgTelegramByIdTelegram(idapp, idteleg, mymsg, undefined, undefined, true);
await tools.snooze(300);
nummsgsent++;
strout += '\n' + usersognatore.name + ' ' + usersognatore.surname + ':';
strout += ' -> MSG INVIATO';
} else {
strout += ' (Pronto da Inviare)';
}
}
}
*/
if (nummsgsent > 0) {
if (mydata.tipomsg === tools.TipoMsg.SEND_LINK_CHAT_DONATORI) {
const fields_to_update = {
sent_msg_howto_make_gift: true,
};
await Nave.findOneAndUpdate({_id: mydata.navemediatore.id},
{$set: fields_to_update}, {new: false});
}
}
return {nummsgsent, strout};
} catch (e) {
console.error(e.message);
strout = 'Error: ' + e.message + '\n' + strout;
return {nummsgsent, strout};
}
},
sendMsgTelegramToTheAdmin: async function(idapp, text, senzaintestazione) {
const usersmanagers = await User.getusersManagers(idapp);
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');
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);
}
if (cl && teleg_id) {
if (alsotomanagers) {
await this.sendMsgTelegramToTheManagers(idapp, text);
}
if (!!username_mitt) {
const rec = cl.getRecByUsername(username);
if (rec) {
rec.msgall_username_specifico = username_mitt;
}
}
}
return ris;
},
sendMsgTelegramByIdTelegram: async function(
idapp, idtelegram, text, message_id, chat_id, ripr_menuPrec,
MyForm = null) {
console.log('sendMsgTelegramByIdTelegram', text);
if (!idtelegram)
return;
const cl = getclTelegByidapp(idapp);
if (cl && idtelegram) {
let myform = null;
return await cl.sendMsg(idtelegram, text, null, MyForm, message_id,
chat_id, ripr_menuPrec);
}
},
reloadMenuBot: async function(idapp) {
const cl = getclTelegByidapp(idapp);
if (cl) {
return cl.updateMenuBot();
}
},
askConfirmationUserRegistration: async function(idapp, myfunc, myuser, userDest = '', langdest = '') {
const cl = getclTelegByidapp(idapp);
try {
let keyb = null;
let domanda = '';
if (myfunc === shared_consts.CallFunz.REGISTRATION) {
domanda = printf(getstr(langdest, 'MSG_APORTADOR_ASK_CONFIRM'),
`<br>${myuser.name + ' ' + myuser.surname + ' (' + myuser.username +
') <br>Email: ' + myuser.email}`);
keyb = cl.getInlineKeyboard(myuser.lang, [
{
text: '✅ Abilita ' + myuser.username,
callback_data: InlineConferma.RISPOSTA_SI +
shared_consts.CallFunz.REGISTRATION + tools.SEP +
myuser.username + tools.SEP + userDest,
},
{
text: '🚫 Rifiuta ' + myuser.username,
callback_data: InlineConferma.RISPOSTA_NO +
shared_consts.CallFunz.REGISTRATION + tools.SEP +
myuser.username + tools.SEP + userDest,
},
]);
}
// INvia Msg
const teleg_id = await User.TelegIdByUsername(idapp, userDest);
await this.sendMsgTelegramByIdTelegram(myuser.idapp, teleg_id, domanda,
undefined, undefined, true, keyb);
} catch (e) {
console.error('Error askConfirmationUserRegistration', e);
}
},
};
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;
}
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;
}
function getstr(lang, key, param1) {
let mystr = '';
if ((lang === 'si') || (lang === 'sl-si')) {
try {
mystr = txt_si[key];
} catch (e) {
mystr = '';
}
} else if ((lang === 'en') || (lang === 'enUs')) {
try {
mystr = txt_en[key];
} catch (e) {
mystr = '';
}
} else if (lang === 'es') {
try {
mystr = txt_es[key];
} catch (e) {
mystr = '';
}
} else if (lang === 'fr') {
try {
mystr = txt_fr[key];
} catch (e) {
mystr = '';
}
} else if (lang === 'pt') {
try {
mystr = txt_pt[key];
} catch (e) {
mystr = '';
}
}
if (mystr === '')
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.pagenow = 1;
this.pageChange = false;
this.menuDb = null;
this.menuSaved = {};
this.lastid = 0;
//++
}
async createIfNotExist(msg) {
if (!await this.alreadyExist(msg)) {
if (await this.insertIntoDB(msg)) {
let rec = this.getRecInMem(msg);
if (!!rec) {
if (rec.user)
rec.status = Status.VERIFIED;
} else {
return false;
}
}
return true;
} else {
return false;
}
}
async start(msg) {
// Check if Present to the DB
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;
} else {
// await this.sendMsg(msg.chat.id, getstr(this.getlang(msg), 'MSG_ASK_USERNAME_BO', tools.getNomeAppByIdApp(this.idapp)), MenuNoLogin);
}
}
geturlfaq() {
return tools.getHostByIdApp(this.idapp) + '/faq';
}
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;
let lang = 'it';
const rec = this.getRecInMem(msg);
let myname = '';
if (rec.user) {
myname = rec.user.name + ' ' + rec.user.surname + ' (n.' +
rec.user.index + ')';
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 = '';
const menusite = await this.isMenuSite(this.idapp, testo, lang, id);
if (risp === '') {
if (menusite) {
risp = this.getValueMenu(this.idapp, testo, lang);
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';
if (!!rec.user) {
const myrec = await User.getUserShortDataByUsername(this.idapp,
rec.user.username);
risp += '\nSul sito ti sei registrato come:\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;
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;
} 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)) {
risp = 'Chissà... Forse si!\nAnche se meglio averne un altro di scorta, nel caso il Principe non sia disponibile.';
} else if (MsgBot.AIUTO.find((rec) => testo.indexOf(rec) > -1)) {
risp = 'Clicca qui per entrare nella Chat HELP di Supporto\n' +
tools.HELP_CHAT +
'\n\nI miei colleghi umani ti aiuteranno a risolvere !';
} 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.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.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;
} else if (MsgBot.HAHA.find((rec) => testo.indexOf(rec) > -1) &&
testo.length < 8) {
risp = emo.JOY + emo.JOY + emo.JOY;
} else if (testo.length >= 10) {
noanswer = true;
let myfaq = this.geturlfaq();
risp = 'Io sono solo un Robot ' + emo.ROBOT_FACE + emo.JOY2 +
'\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);
}
}
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 !== '') {
rec.numdomande++;
if (!noanswer) {
await tools.snooze(600);
risp = '[BOT' + emo.ROBOT_FACE + ' scrive]:\n' + risp;
}
this._inviaMsg(id, risp, keyboard);
let strlog = 'USER [' + myname + ']: ' + testo + '\n';
tools.writelog(strlog);
}
return risp !== '';
}
async isMenuNotVerified(rec, msg) {
if (this.isSelMenu(msg, msg.text, 'ASSISTENZA')) {
await this.menuAssistenza(msg);
} 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);
} 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 (await this.IsTesto(msg)) {
// OK
} else {
await this.msgScegliMenu(msg);
}
}
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);
} catch (e) {
}
}
return trovato;
}
async isMenu(rec, msg) {
if (!msg)
return;
if (msg.text === undefined)
return;
const arrtext = msg.text.split(' ');
let cmd2 = '';
let cmd1 = arrtext[0];
if (arrtext.length > 1)
cmd2 = arrtext[1];
let oldusername = rec.msgall_username_specifico;
if ((this.isSelMenu(msg, msg.text, 'ESCI_DA_CHAT')) ||
(this.isSelMenu(msg, msg.text, 'INDIETRO'))) {
rec.msgall_username_specifico = '';
} else {
if (rec.msgall_username_specifico !== '') {
await this.SendMsgToUser(msg, rec, rec.msgall_username_specifico,
msg.text);
return true;
}
}
if (this.isSelMenu(msg, msg.text, 'LAVAGNA') ||
MsgBot.LAVAGNA.find((rec) => msg.text.indexOf(rec) > -1)) {
await this.menuLavagna(msg);
} else if (this.isSelMenu(msg, msg.text, 'ACCEDI')) {
await this.menuAccedi(msg);
} else if (this.isSelMenu(msg, msg.text, 'LINK_CONDIVIDERE')) {
await this.menuLinkCondividere(msg);
} else if (msg.text === Menu.EXIT_TELEGRAM) {
await this.menuExitToTelegram(msg);
} else if (msg.text === Menu.ADMIN) {
await this.menuAdmin(msg);
} else if (msg.text === Menu.LANG) {
await this.menuLang(msg);
} else if (msg.text === Menu.MSGATUTTI) {
await this.menumsgAll(msg);
} else if (msg.text === Menu.MSGSTAFF) {
await this.menumsgStaff(msg);
} else if (msg.text === Menu.MSGPAOLO) {
await this.menumsgPaolo(msg);
} else if (msg.text === Menu.MSG_NO_7_REQ) {
await this.menumsg_No_7_Req(msg);
} else if (msg.text === Menu.MSG_NO_9_REQ) {
await this.menumsg_No_9_Req(msg);
} else if (msg.text === 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 (msg.text === 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 (this.isSelMenu(msg, msg.text, 'INDIETRO') ||
(msg.text === Menu.it.INDIETRO)) {
await this.msgScegliMenu(msg);
} else if (this.isSelMenu(msg, msg.text, 'ESCI_DA_CHAT')) {
await this.sendMsg(msg.chat.id, 'Uscito dalla Chat con ' + oldusername);
rec.msgall_username_specifico = '';
} else {
await this.isMenuNotVerified(rec, msg);
}
}
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) {
/*if (user.profile.paymenttypes.includes('paypal')) {
if (user.profile.email_paypal) {
ispaypal = true
}
}*/
if (!!user.profile)
if (!!user.profile.paymenttypes) {
return (user.profile.paymenttypes.length >= 1);
}
}
}
return false;
}
async menuAccedi(msg) {
let status = this.getstatusInMemory(msg);
if (status === Status.WAITFOR_USERNAME_BO) {
await this.sendMsg(msg.from.id,
getstr(this.getlang(msg), 'MSG_ERRORE_USERNAME_NOT_FOUND'));
}
}
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;
}
}
}
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;
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);
if (mystrnave === '' && tuttie9) {
mystr += tools.gettranslate('NO_PROG', user.lang);
}
if (!!mystrnave) {
mystr += '✨✨✨' + tools.get__('TUE_NAVI', this.getlang(msg)) + ':\n';
mystr += mystrnave;
} else {
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));
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));
mystr += '\n\n';
mystr += tools.get__('INFO_LA_MIA_LAVAGNA', this.getlang(msg));
mystr += '\n' + '1. ' + this.getsymb(emo.ENVELOPE, user.verified_email);
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)) + ' ';
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));
}
// } else{
// mystr += tools.get__('TELEGRAM_NOT_CONNECTED', msg) + ' ' + emoji.get('e-mail');
}
// numpersone = 2;
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';
if (numpersone > 0) {
mystr += tools.get__('INVITATI_LISTA', this.getlang(msg)) + ':\n';
let index = 1;
downline.downline.forEach((user) => {
mystr += emoji.get('star-struck') + ` ${index}°: `;
mystr += (user.qualified) ? emo.CHECK_VERDE : emo.CROSS_ROSSA;
mystr += `${user.name} ${user.surname} (${user.username})\n`;
index++;
});
} else {
mystr += tools.get__('NESSUN_INVITATO', this.getlang(msg)) +
tools.ACAPO;
}
}
// 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 '';
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)) {
// 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);
}
}
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);
}
}
async menuInformazioni(msg) {
const mystr = 'Informazioni Aggiuntive: ...';
await this.sendMsg(msg.chat.id, mystr);
}
async getNextZoom(msg) {
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';
// let pwd = 'Password: 123123';
let index = 1;
listazoom.forEach((evento) => {
let iniziata = false;
if (nextzoom)
iniziata = (nextzoom._id.toString() === evento._id.toString());
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}`;
mystr += `\n${evento.title}\n(${evento.note})`;
mystr += `\n${tools.getlinkzoom(evento)}\n\n`;
if (nextzoom) {
if (iniziata) {
mystr += emo.FIRE + tools.get__('CLICCA_ENTRA', this.getlang(msg)) +
' ' + emo.FIRE + '\n';
mystr += tools.getlinkzoom(evento) + '\n';
mystr += '\n';
//mystr += pwd + '\n\n';
}
}
index++;
});
if (!nextzoom && index > 1) {
mystr += '✨✨✨✨✨✨✨✨✨✨✨✨\n' +
tools.get__('CLICCA_PER_ZOOM', this.getlang(msg)) + '\n' +
'✨✨✨✨✨✨✨✨✨✨✨✨\n';
}
return mystr;
}
async menuZoom(msg) {
let mystr = await this.getNextZoom(msg);
await this.sendMsg(msg.chat.id, mystr);
}
async menuAdmin(msg) {
const mystr = tools.get__('SCEGLI_VOCE', this.getlang(msg));
await
this.sendMsg(msg.chat.id, mystr, MenuAdmin);
}
async menuLang(msg) {
const mystr = tools.get__('SCEGLI_VOCE', this.getlang(msg));
await
this.sendMsg(msg.chat.id, mystr, MenuLang);
}
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;
} else if (destin === Destin.DOMANDA) {
const rec = this.getRecInMem(msg);
return rec.msg_username_domanda;
} 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);
}
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);
}
}
async menumsgGenerico(msg, dest, username, extraparam) {
const rec = this.getRecInMem(msg);
if (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) {
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);
}
}
getlink(qualelink) {
if (qualelink === 'website') {
return '';
} else if (qualelink === 'biblio') {
return '';
} else if (qualelink === 'help') {
return tools.HELP_CHAT;
} else if (qualelink === 'faq') {
return '';
}
}
async menuAssistenza(msg) {
const sito = this.getlink('website');
const empower = this.getlink('empower');
const biblio = this.getlink('biblio');
const faq = this.getlink('faq');
let help = '';
let helpaperta = true;
/*if (tools.isMonToFri() && tools.isBetweenTwoTime('9:00:00', '19:00:00')) {
help = '✅ ' + this.getlink('help');
} else {
help = "🔴 [ORA CHIUSA - NOW CLOSED]";
helpaperta = false;
}*/
help = '✅ ' + this.getlink('help');
let mytext = '';
if (this.getlang(msg) === 'it')
mytext = printf(tools.get__('TESTO_ASSISTENZA', this.getlang(msg)), sito,
biblio, empower, faq, help);
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;
}
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) {
return this.arrUsers.find((rec) => rec.id.toString() === id.toString());
}
getRecByUsername(username) {
return this.arrUsers.find((rec) => rec.username_bo === username);
}
deleteRecInMem(msg) {
this.arrUsers = this.arrUsers.filter(
(rec) => rec.id !== this.getchatid(msg));
}
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);
const lang = this.getlang(msg);
// 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) {
try {
let rec = this.getRecInMem(msg);
if (msg.text === undefined)
return false;
console.log('msg.text', msg.text);
const text = msg.text;
if (text.length < 40) {
if (rec) {
let ris = await this.getUser(msg, rec, true);
rec = ris.rec;
if (ris.ok) {
rec.user = ris.user;
await User.SetTelegramCheckCode(this.idapp, ris.myid.toString(),
rec.code);
rec.status = Status.WAITFOR_VERIFY_CODE;
await this.sendMsg(msg.from.id,
getstr(this.getlang(msg), 'MSG_VERIFY_CODE',
tools.getHostByIdApp(this.idapp)), null);
} else {
await this.sendMsg(msg.chat.id,
getstr(this.getlang(msg), 'MSG_ASK_USERNAME_BO',
tools.getNomeAppByIdApp(this.idapp)), null);
}
}
} else if (text.length === 0) {
if (rec)
rec.status = Status.NONE;
await this.sendMsg(msg.from.id,
getstr(this.getlang(msg), 'MSG_ERRORE_USERNAME_ANNULLA'));
this.deleteRecInMem(msg);
} else {
await this.sendMsg(msg.from.id,
getstr(this.getlang(msg), 'MSG_ERRORE_USERNAME'));
}
} catch (e) {
console.error('Error setUsernameBo:', e);
}
}
async setVerifyCode(msg) {
try {
if (!!msg.text) {
const code = msg.text.toString().trim();
const rec = this.getRecInMem(msg);
const user = await User.findByUsername(this.idapp, rec.username_bo,
true);
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;
}
if (code.length < 7) {
if (rec) {
if (code === telegcode) {
try {
await User.setUsernameTelegram(this.idapp, user._id, msg.from.username || '', msg.from.first_name || '', msg.from.last_name || '');
} catch (e) {}
// let ris = await this.getUser(msg, rec, false);
rec.status = Status.VERIFIED;
await User.SetTelegramIdSuccess(this.idapp, user._id,
msg.from.id).then((recuser) => {
if (recuser) {
let name = recuser.name;
this.sendMsg(msg.from.id,
printf(getstr(recuser.lang, 'MSG_VERIFY_OK'), name));
// local_sendMsgTelegramToTheManagers(this.idapp, recuser.name + ' ' + recuser.surname + ' si è Verificato a Telegram BOT! (lang=' + recuser.lang + ')' + emo.STARS, msg);
} else {
this.sendMsg(msg.from.id,
getstr(this.getlang(msg), 'MSG_ERR_UNKNOWN_VERIFY_CODE'));
}
});
} else {
if (rec.retry < 2) {
rec.retry++;
await
this.sendMsg(msg.from.id,
printf(getstr(this.getlang(msg), 'MSG_ERR_VERIFY_CODE'),
tools.getHostByIdApp(this.idapp)));
} else {
rec.status = Status.NONE;
await
this.sendMsg(msg.from.id, getstr(this.getlang(msg),
'MSG_ERRORE_USERNAME_ANNULLA'));
this.deleteRecInMem(msg);
}
}
}
} else if (msg.text.length === 0) {
if (rec)
rec.status = Status.NONE;
await
this.sendMsg(msg.from.id,
getstr(this.getlang(msg), 'MSG_ERRORE_USERNAME_ANNULLA'));
} else {
await
this.sendMsg(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;
}
async setCmdToUsername(rec, username, cmd_to_set, valuebool) {
if (cmd_to_set === Cmd.VALIDATE_REGISTRATION) {
return User.setVerifiedByAportador(rec.user.idapp, username, valuebool);
}
}
async sendMsgToAll(rec, msg, texttosend, destin) {
try {
if ((texttosend.length < 3) && (destin !== Destin.A_UTENTE)) {
// NOTHING
} else {
let usersall = null;
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 = '';
if (this.isSelMenu(msg, texttosend, 'ZOOM')) {
texttosend = await this.getNextZoom(msg);
}
const cmd = texttosend.toLowerCase();
if (usersall) {
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;
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 {
textdainviare = texttosend;
}
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';
} else if (destin === Destin.A_UTENTE) {
invia = utente.username === rec.msgall_username_specifico;
} else if (destin === Destin.DOMANDA) {
invia = utente.username === rec.msg_username_domanda;
} else if (destin === Destin.RISPOSTA) {
invia = utente.username === rec.msg_username_risposta;
} else if (destin === Destin.NO_7_REQ) {
invia = !await User.isUserQualified7(this.idapp,
utente.username);
} else if (destin === Destin.MSG_TO_NAVE) {
// invia = !await Nave.findDonatoreByNave(this.idapp, rec.extraparam);
}
// TEST invia = true;
if (invia) {
let inviaveramente = false;
if (cmd === RICEVI_EMAIL) {
preparatesto += utente.email + ', ';
} else if (cmd === NOME_COGNOME) {
preparatesto += utente.name + ' ' + utente.surname + '(' +
utente.username + ')' + '\n';
} else if (cmd === CONTA_SOLO) {
// Niente
} else if (cmd === CHEDI_SE_IMBARCARTI) {
textdainviare = tools.gettranslate('VUOI_IMBARCARTI', lang);
FormDaMostrare = this.getInlineKeyboard(lang, [
{
text: Menu[lang].SI,
callback_data: InlineCmd.VOGLIO_IMBARCARMI + tools.SEP +
utente.username,
},
{
text: Menu[lang].NO,
callback_data: InlineCmd.NON_VOGLIO_IMBARCARMI +
tools.SEP +
utente.username,
},
]);
inviaveramente = true;
} else {
inviaveramente = true;
}
if (inviaveramente) {
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);
} 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;
}
await tools.snooze(100);
nummsgsent++;
}
if (!SendMsgCmd.includes(cmd)) {
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);
}
}
}
}
}
}
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 {
if (destin !== Destin.DOMANDA && destin !== Destin.RISPOSTA) {
msgris = nummsgsent + ' ' +
getstr(this.getlang(msg), 'MSG_MSG_SENT');
}
}
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 {
if (msgris) {
tools.writeEventsLog(msgris);
await this.sendMsg(msg.chat.id, msgris);
}
}
}
rec.start_write_msgall = false;
} catch (e) {
console.error(e.message);
}
}
selectMenuHelp(msg) {
return ((this.isSelMenu(msg, msg.text, 'INFO')) ||
(this.isSelMenu(msg, msg.text, 'ASSISTENZA')));
}
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);
let status = this.getstatusInMemory(msg);
if (status !== Status.VERIFIED)
return Status.EXIT;
} else {
await this.setUser(msg);
}
return status;
}
async receiveMsg(msg) {
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_BO && !this.selectMenuHelp(msg) &&
!this.selectMenuLang(msg)) {
await this.setUsernameBo(msg);
} else if (status === Status.WAITFOR_VERIFY_CODE) {
await this.setVerifyCode(msg);
} else if (status === Status.NONE) {
await this.start(msg);
} else if (status === Status.VERIFIED) {
let normale = true;
if (rec.msgall_status === StatusMSGALL.CONFIRM) {
if (this.isSelMenu(msg, msg.text, 'SI')) {
// Take msg to send to ALL
await this.sendMsgToAll(rec, msg, rec.msgtosent, rec.msgall_achi);
} else {
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);
if (ris) {
await this.sendMsgToAll(rec, msg, rec.msg_toDest_yes,
rec.msgall_achi);
}
} 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);
}
}
}
rec.msgall_status = StatusMSGALL.NONE;
normale = false;
} else if (rec.msgall_status === StatusMSGALL.ASK) {
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 = '';
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;
await
this.msgScegliMenu(msg);
}
normale = false;
}
if (normale) {
// Check Menu
await this.isMenu(rec, msg);
}
} else {
await
this.isMenuNotVerified(rec, msg);
}
}
async askVerifiedCode(msg) {
const rec = this.getRecInMem(msg);
if (!rec) {
await this.addUser(msg);
// 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_ASK_USERNAME_BO',
tools.getNomeAppByIdApp(this.idapp)), null);
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);
}
return !!rec;
}
updateMenuBot() {
for (let rec of this.arrUsers) {
rec.datemenu_updated = null;
}
}
addUser(msg) {
const lang = this.getlang(msg);
const code = 100000 + Math.round(Math.random() * 899999);
const rec = {
id: this.getchatid(msg),
code,
lang,
status: Status.WAITFOR_USERNAME_BO,
statusmsg: 0,
msgcodeprec: '',
sex: 0,
numdomande: 0,
retry: 0,
username_bo: '',
msgall_status: StatusMSGALL.NONE,
msgall_domanda: '',
msgall_achi: 0,
msgall_username_specifico: '',
cmd_to_set: 0,
msg_username_domanda: '',
msg_username_risposta: '',
extraparam: '',
msgtosent: '',
msgNo: '',
msg_toDest_yes: '',
msg_toDest_no: '',
msg_wait: false,
lastmenu: null,
datemenu_updated: null,
};
this.arrUsers.push(rec);
return rec;
}
async insertIntoDB(msg) {
return this.askVerifiedCode(msg);
}
async loadMenuFromDb(idapp, id) {
try {
let load = false;
const check = true;
const recuser = this.getRecInMemById(id);
if (recuser) {
if (!recuser.datemenu_updated)
load = true;
}
if (check) {
if (!(this.menuSaved[idapp]))
load = true;
}
if (load || !this.menuDb || this.pageChange) {
// Check if you are Admin
const user = await User.UserByIdTelegram(idapp, id);
let isAdmin = user ? user.profile.manage_telegram && user.username ===
'paoloar77' : false;
const isManager = user ? user.profile.manage_telegram : false;
const isVerified = user ? user.profile.teleg_id > 0 &&
user.verified_email && user.verified_by_aportador : false;
this.menuDb = await MyBot.findAllIdApp(idapp);
let arrlang = {};
let riga = 0;
let arrtemp = [];
let lang = '';
for (const rec of this.menuDb) {
if (rec.active && rec.main && rec.page === this.pagenow
&& ((isAdmin && tools.isBitActive(rec.visibility,
shared_consts.VISIB_ONLY_ADMIN))
|| (isManager && tools.isBitActive(rec.visibility,
shared_consts.VISIB_ONLY_MANAGER))
|| (isVerified && tools.isBitActive(rec.visibility,
shared_consts.VISIB_ONLYIF_LOGGED))
|| (rec.visibility === 0))
) {
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 = [];
}
arrtemp.push(rec.label);
}
}
if (arrtemp.length > 0)
arrlang[lang].menu.push(arrtemp);
if (recuser)
recuser.datemenu_updated = new Date();
this.pageChange = false;
this.menuSaved[idapp] = arrlang;
}
return this.menuSaved[idapp];
} catch (e) {
console.log('Err loadMenuFromDb: ' + e);
}
}
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);
}
}
for (const rec of this.menuDb) {
if (rec.idapp === idapp && rec.lang === lang &&
rec.label.toLowerCase() === testo) {
return true;
}
}
} catch (e) {
return false;
}
return false;
}
getValueMenu(idapp, testo, lang) {
try {
for (const rec of this.menuDb) {
if (rec.idapp === idapp && rec.lang === lang &&
rec.label.toLowerCase() === testo) {
if (rec.type === shared_consts.BOTTYPE_TEXT) {
return rec.value;
}
if (rec.type === shared_consts.BOTTYPE_PAGE) {
if (tools.isNumber(rec.value)) {
this.pagenow = parseInt(rec.value);
this.pageChange = true;
}
return '';
}
}
}
return '';
} catch (e) {
return '';
}
return '';
}
async getKeyboard(id, menu, lang) {
let keyb = null;
this.lastid = id;
if (menu) {
keyb = menu;
} else {
keyb = await this.loadMenuFromDb(this.idapp, id);
}
let mykeyb = undefined;
if (!!keyb) {
mykeyb = this.getmenuKey(keyb, lang);
}
if (mykeyb === null) {
mykeyb = [];
}
// console.log('mykeyboard', mykeyb);
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') {
if (id !== ADMIN_IDTELEGRAM_TEST)
id = '12429864';
}
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;
}
}
let mylang = 'it';
if (!!recmem) {
mylang = recmem.lang;
}
try {
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(/&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);
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) {
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);
}
}
getmenuKey(mymenu, lang) {
let mymenuout = null;
try {
mymenuout = mymenu[lang].menu;
} catch (e) {
if (!!mymenu['it'])
mymenuout = mymenu['it'].menu;
}
return mymenuout;
}
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) {
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),
},
});
}
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) {
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)),
},
});
}
}
const arrTelegram = [];
function getclTelegBytoken(token) {
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
}
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);
const myclTelegram = getclTelegBytoken(bot.token);
let dataarr = [];
let data = {
action: '',
username: '',
userDest: '',
};
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] : '',
};
}
}
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);
const user = await User.getUserShortDataByUsername(idapp,
data.username);
const userDest = data.userDest
? await User.getUserShortDataByUsername(idapp, data.userDest)
: null;
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) {
await myclTelegram.setCmdToUsername(rec, data.username,
Cmd.VALIDATE_REGISTRATION, true);
const msgOrig = printf(
getstr(userDest.lang, 'MSG_APORTADOR_DEST_CONFIRMED'),
`${userDest.name + ' ' + userDest.surname}`);
const msgDest = printf(
getstr(user.lang, 'MSG_APORTADOR_CONFIRMED'),
`${user.name + ' ' + user.surname}`);
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) {
await myclTelegram.setCmdToUsername(rec, data.username,
Cmd.VALIDATE_REGISTRATION, false);
const msgOrig = printf(
getstr(userDest.lang, 'MSG_APORTADOR_DEST_NOT_CONFIRMED'),
`${userDest.name + ' ' + userDest.surname}`);
const msgDest = printf(
getstr(user.lang, 'MSG_APORTADOR_NOT_CONFIRMED'),
`${user.name + ' ' + user.surname}`);
await local_sendMsgTelegram(user.idapp, data.username, msgOrig);
await local_sendMsgTelegram(user.idapp, data.userDest, msgDest);
}
}
}
/*
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);
}
}
}