Files
freeplanet_serverside/src/server/telegram/telegrambot.js
Paolo Arena 140e181fcc AGGIORNAMENTO SITO
👉🏻 E' possibile ora visualizzare la Posizione Reale d'imbarco di quando si verrà aggiunti alle prossime Navi Definitive.
Le posizioni verranno aggiornate ogni ora in automatico!

👉🏻 Ora gli imbarchi comprendono anche le navi provvisorie, pertanto è possibile annullarli oppure cambiare l'Invitante, dalla lista imbarchi.

 👉🏻 E' ora possibile spostare gli invitati solo se si hanno piu' di 2 invitati per ogni Nave già partita.

👨🏻‍💻 Per i Tutor:
👉🏻- Sostituzioni : Cliccando su "Cerca il Primo Disponibile" vi suggerirà in automatico il primo passeggero disponibile per la sostituzione.

2020-10-17 22:12:37 +02:00

2303 lines
85 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.AYNI, tools.SIP];
const appTelegramFinti = ['2'];
const appTelegramDest = [tools.AYNI];
const printf = require('util').format;
const { User } = require('../models/user');
const { CalZoom } = require('../models/calzoom');
const { Nave } = require('../models/nave');
const shared_consts = require('../tools/shared_nodejs');
const emoji = require('node-emoji');
const i18n = require("i18n");
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 = {
MIANAVE: ['Nave'],
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'],
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: ['ayni help', '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'],
CHI_E_VISTAR: ['chi è vistar'],
CHI_E_PAOLO: ['chi è paolo'],
};
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;
}
}
strNave = "Nave";
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',
MSG_SI_INVITATI_NO_7REQ_INVITATI: emoji.get('incoming_envelope') + 'Inv e NO 7 Req',
MSGSTAFF: emoji.get('incoming_envelope') + ' Invia a STAFF',
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 di AYNI',
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',
},
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 de AYNI',
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 d\'AYNI',
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') + ' AYNI-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 do AYNI',
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') + ' AYNI\'s 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 SendMsgCmd = [CONTA_SOLO, RICEVI_EMAIL];
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]] },
es: { menu: [[Menu.es.LAVAGNA, Menu.es.LINK_CONDIVIDERE], [Menu.es.ZOOM, Menu.es.ASSISTENZA], [Menu.LANG]] },
fr: { menu: [[Menu.fr.LAVAGNA, Menu.fr.LINK_CONDIVIDERE], [Menu.fr.ZOOM, Menu.fr.ASSISTENZA], [Menu.LANG]] },
si: { menu: [[Menu.si.LAVAGNA, Menu.si.LINK_CONDIVIDERE], [Menu.si.ZOOM, Menu.si.ASSISTENZA], [Menu.LANG]] },
pt: { menu: [[Menu.pt.LAVAGNA, Menu.pt.LINK_CONDIVIDERE], [Menu.pt.ZOOM, Menu.pt.ASSISTENZA], [Menu.LANG]] },
enUs: { menu: [[Menu.enUs.LAVAGNA, Menu.enUs.LINK_CONDIVIDERE], [Menu.enUs.ZOOM, Menu.enUs.ASSISTENZA], [Menu.LANG]] },
};
const MenuPerAdmin = {
it: { menu: [[Menu.it.LAVAGNA, Menu.it.LINK_CONDIVIDERE], [Menu.it.ZOOM, Menu.it.ASSISTENZA], [Menu.LANG, Menu.ADMIN]] },
es: { menu: [[Menu.es.LAVAGNA, Menu.es.LINK_CONDIVIDERE], [Menu.es.ZOOM, Menu.es.ASSISTENZA], [Menu.LANG, Menu.ADMIN]] },
fr: { menu: [[Menu.fr.LAVAGNA, Menu.fr.LINK_CONDIVIDERE], [Menu.fr.ZOOM, Menu.fr.ASSISTENZA], [Menu.LANG, Menu.ADMIN]] },
si: { menu: [[Menu.si.LAVAGNA, Menu.si.LINK_CONDIVIDERE], [Menu.si.ZOOM, Menu.si.ASSISTENZA], [Menu.LANG, Menu.ADMIN]] },
pt: { menu: [[Menu.pt.LAVAGNA, Menu.pt.LINK_CONDIVIDERE], [Menu.pt.ZOOM, Menu.pt.ASSISTENZA], [Menu.LANG, Menu.ADMIN]] },
enUs: { menu: [[Menu.enUs.LAVAGNA, Menu.enUs.LINK_CONDIVIDERE], [Menu.enUs.ZOOM, Menu.enUs.ASSISTENZA], [Menu.LANG, Menu.ADMIN]] },
};
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.MSG_NO_7_REQ, Menu.MSG_NO_9_REQ], [Menu.MSG_TO_NAVE, Menu.MSG_SI_INVITATI_NO_7REQ_INVITATI]] },
};
const MenuSend = {
it: { menu: [[CONTA_SOLO, RICEVI_EMAIL], [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 = {
NONE: 0,
VERIFIED: 1,
WAITFOR_USERNAME_BO: 102,
WAITFOR_VERIFY_CODE: 103,
WAITFOR_RISPOSTA: 110,
};
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,
};
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 di AYNI:',
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 di AYNI:\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 AYNI BOT. ' + '\nSono il tuo assistente virtuale.\n' +
'Continua la guida passo passo tornando sul sito di AYNI.\n\nQuesta chat ti servirà per vedere velocemente la tua Lavagna e per ricevere Importanti avvisi su come procedere il tuo cammino.\n\nUsa il menu qui sotto per controllare la tua situazione.' + emo.GREEN_HEART,
MSG_ERR_UNKNOWN_VERIFY_CODE: 'Errore durante il salvataggio sul Server. Riprovare piú tardi',
MSG_EXIT_TELEGRAM: 'L\'account è stato ora scollegato da questo Telegram BOT.',
MSG_APORTADOR_USER_REGISTERED: emo.FIRE + ' Si è appena Registrato "%s (n. %s)"\n(Invitato da %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 de AYNI.:',
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 de AYNI:\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 AYNI BOT. ' + '\nSoy su asistente virtual.\nContinúa la guía paso a paso de vuelta a la página web de AYNI.\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 AYNI: ',
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 de AYNI:\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 AYNI BOT. ' + '\nJe suis ton assistant virtuel.\n' +
"Continuez le guide étape par étape en revenant sur le site Web d'AYNI. \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 AYNI: ',
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 AYNI: \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 AYNI BOT. ' + ' \nsem tvoj virtualni asisten.\n ' +
'Vodenje se nadeljuje z vodenimi koraki, ko se vrneš na spletno stran AYNI. \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 AYNI 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 AYNI 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 AYNI BOT. ' + '\nI am your virtual assistant.\n' +
'Continue the step-by-step guide back to the AYNI 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 da AYNI:',
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 do AYNI:\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 AYNI BOT. ' + '\nEu sou o vosso assistente virtual.\n' +
'Continue o guia passo-a-passo de volta ao site da AYNI.\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');
module.exports = {
ADMIN_IDTELEGRAM_SERVER: '12429864',
ADMIN_USER_SERVER: 'paoloar77',
ADMIN_USER_NAME_SERVER: 'Paolo',
phase: {
REGISTRATION: 1
},
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})`, index, aportador);
}
let addtext = "";
if (!!mylocalsconf.user.aportador_solidario) {
addtext = '[Inviato a ' + NameFrom + ']:' + '\n';
await this.sendMsgTelegram(mylocalsconf.idapp, userdest, text);
}
await this.sendMsgTelegramToTheManagers(mylocalsconf.idapp, addtext + text);
},
sendMsgTelegramToTheManagers: async function (idapp, text, onlyintofile) {
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);
await tools.snooze(200)
}
}
}
return true
},
getMsgByTipoMsg: function (mydata, lang, user, sonosognatore) {
if (!!mydata.msgextra) {
return mydata.msgextra;
}
if (mydata.tipomsg === tools.TipoMsg.SEND_LINK_CHAT_DONATORI) {
if (sonosognatore)
return printf(tools.gettranslate('SEND_LINK_CHAT_SOGNATORE', lang), user.name, mydata.navemediatore.riga + '.' + mydata.navemediatore.col, mydata.msgpar1);
else
return 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) {
let mymsg = '';
if (!!mydata.username_mitt) {
mymsg = '[' + tools.gettranslate('MSG_SEND_FROM', lang) + ' ' + mydata.username_mitt + ']:' + tools.ACAPO;
}
mymsg += mydata.msgpar1;
return mymsg;
}
},
sendMsgTelegramToNave: async function (idapp, mydata) {
let nummsgsent = 0;
let strout = '';
try {
const arrnavi = await Nave.getusersByNave(idapp, mydata.navemediatore);
// console.log('usersmanagers', usersmanagers);
if (arrnavi) {
tools.writeManagersLog('sendMsgTelegramToNave', mydata.navemediatore.riga + '.' + mydata.navemediatore.col);
for (const nave of arrnavi) {
const user = await User.findByIndOrder(idapp, nave.ind_order);
if (!!user) {
const lang = user.lang;
const idteleg = user.profile.teleg_id;
const mymsg = this.getMsgByTipoMsg(mydata, lang, user, false);
if (!!idteleg) {
strout += '\n' + user.name + ' ' + user.surname + ':';
if (mydata.inviareale) {
await this.sendMsgTelegramByIdTelegram(idapp, idteleg, mymsg, undefined, undefined, true);
await tools.snooze(300);
strout += ' -> MSG INVIATO';
} else {
strout += ' (Pronto da Inviare)';
}
nummsgsent++;
}
if ((nummsgsent === 1) && (mydata.inviareale)) {
try {
await this.sendMsgTelegramToTheManagers(idapp, 'Inviato messaggio a tutti i Donatori della Nave ' + mydata.navemediatore.riga + '.' + mydata.navemediatore.col + '\n' + mymsg)
} 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);
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, username_mitt) {
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) {
if (!idtelegram)
return;
const cl = getclTelegByidapp(idapp);
if (cl && idtelegram) {
let myform = null;
return await cl.sendMsg(idtelegram, text, null, null, message_id, chat_id, ripr_menuPrec)
}
}
};
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(300)
}
}
return true
}
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 = [];
}
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 {
let prova = 1;
// 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;
const rec = this.getRecInMem(msg);
let myname = '';
if (rec.user) {
myname = rec.user.name + ' ' + rec.user.surname + ' (n.' + rec.user.index + ')';
}
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 = '';
if (risp === '') {
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 su AYNI 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 AYNI 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)) {
// risp = 'Vistar è un nomade che vive in Perù tra i selvaggi, filosofeggiando e cazzeggiando qua e la... Per questo è un Fico ed è adulato dalle ragazze di tutto il Globo ' + emo.JOY + emo.JOY + emo.JOY;
// } else if (MsgBot.CHI_E_PAOLO.includes(testo)) {
// risp = 'Paolo è il Programmatore Sborone di AYNI. Anche lui Fico quanto Vistar (ma chi è Vistar) ' + emo.JOY + ' che anzichè creare la Nave cazzeggia su AYNI BOT, trovando risposte alle domande più assurde.' + emo.JOY2 + emo.JOY2;
} 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 AYNI - HELP di Supporto\n' + 'https://t.me/joinchat/AL2qKE80rxDkgbeMGO-0bw' + '\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 + '\nTi ricordo che nella CHAT EMPOWER si fa FESTA!\n\nChat AYNI - EMPOWER: Entra ⛩ nella nostra Community chat:\n https://t.me/joinchat/C741mkx5QYXu-kyYCYvA8g';
} 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 AYNI - HELP.\nGrazie\nStaff AYNI';
// risp += '\nClicca qui per entrare nella Chat AYNI - 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++;
await tools.snooze(600);
this._inviaMsg(id, '[AYNI BOT' + emo.ROBOT_FACE + ' scrive]:\n' + risp, keyboard);
let strlog = 'USER [' + myname + ']: ' + testo + '\n';
if (!noanswer) {
strlog += 'BOT: ' + risp + '\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 (msg.text === Menu.MIANAVE || (cmd2 === strNave) || MsgBot.MIANAVE.find((rec) => msg.text.indexOf(rec) > -1)) {
await this.menuNave(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.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 (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) {
let ispaypal = false;
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) && ispaypal;
}
}
}
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'), MenuNoLogin);
}
}
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(''));
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());
if (iniziata) {
mystr += emo.CHECK_VERDE + ' ' + tools.get__('ZOOM_INIZIATO', this.getlang(msg)) + ' ' + emo.CHECK_VERDE + '\n';
}
mystr += `${emo.EYES} ${tools.getstrDateTimeShort(evento.date_start, this.getlang(msg))} ${emo.EYES}`;
mystr += `\n${evento.title}\n(${evento.note})\n\n`;
if (nextzoom) {
if (iniziata) {
mystr += emo.FIRE + tools.get__('CLICCA_ENTRA', this.getlang(msg)) + ' ' + emo.FIRE + '\n';
mystr += tools.getlinkzoom(evento.id_conf_zoom) + '\n';
mystr += '\n';
//mystr += pwd + '\n\n';
}
}
index++;
});
if (!nextzoom && index > 1) {
mystr += "✨✨✨✨✨✨✨✨✨✨✨✨\n" +
tools.get__('CLICCA_PER_ZOOM', this.getlang(msg)) + ':\n' + tools.getlinkzoom(listazoom[0].id_conf_zoom) + '\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.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.A_UTENTE) {
const rec = this.getRecInMem(msg);
return rec.msgall_username_specifico
}
}
async menumsgAll(msg) {
await this.menumsgGenerico(msg, Destin.TUTTI);
}
async menumsgStaff(msg) {
await this.menumsgGenerico(msg, Destin.STAFF);
}
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);
}
}
getlink(qualelink) {
if (qualelink === 'website') {
return 'https://ayni.gifteconomy.app'
} else if (qualelink === 'biblio') {
return 'https://t.me/joinchat/AAAAAFMDe8b5lB1X7vOYng';
} else if (qualelink === 'help') {
return 'https://t.me/joinchat/AL2qKE80rxDkgbeMGO-0bw';
} else if (qualelink === 'faq') {
return 'https://ayni.gifteconomy.app/faq';
} else if (qualelink === 'empower') {
return "ITA 🇮🇹: https://t.me/joinchat/C741mkx5QYXu-kyYCYvA8g" + tools.ACAPO +
"SLO 🇸🇮: https://t.me/aynislovenija" + tools.ACAPO +
"ESP 🇪🇸 - PRT 🇵🇹: https://t.me/joinchat/AL2qKBqJRuIEuc2FivgAzg" + tools.ACAPO +
"ENG 🇬🇧: https://t.me/joinchat/AL2qKBYX0yVvOJ6Ssf9hKg" + tools.ACAPO +
"FRA 🇫🇷: https://t.me/joinchat/Kz0wtxieJjzoC3L_DsrdZw";
}
}
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.isMonToSat() && tools.isBetweenTwoTime('8:00:00', '19:50:00')) {
help = '✅ ' + this.getlink('help');
} else {
help = "🔴 [ORA CHIUSA - NOW CLOSED]";
helpaperta = false;
}
let mytext = "";
if (this.getlang(msg) === 'it')
mytext = printf(tools.get__('TESTO_ASSISTENZA', this.getlang(msg)), sito, empower, biblio, faq, help);
else
mytext = printf(tools.get__('TESTO_ASSISTENZA', this.getlang(msg)), sito, empower, biblio, help);
let menu = null;
const rec = this.getRecInMem(msg);
if (!rec.user) {
menu = MenuNoLogin
}
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 === msg.from.id);
}
getRecInMemById(id) {
return this.arrUsers.find((rec) => rec.id === id);
}
getRecByUsername(username) {
return this.arrUsers.find((rec) => rec.username_bo === username);
}
getRecInMemById(id) {
return this.arrUsers.find((rec) => rec.id === id);
}
deleteRecInMem(msg) {
this.arrUsers = this.arrUsers.filter((rec) => rec.id !== msg.from.id);
}
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'), MenuNoLogin);
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)), MenuNoLogin)
} else {
await this.sendMsg(msg.chat.id, getstr(this.getlang(msg), 'MSG_ASK_USERNAME_BO', tools.getNomeAppByIdApp(this.idapp)), MenuNoLogin);
}
}
} 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'), MenuNoLogin);
return
}
if (code.length < 7) {
if (rec) {
if (code === telegcode) {
// 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 sendMsgToAll(rec, msg, texttosend, destin) {
try {
if ((texttosend.length < 3) && (destin !== Destin.A_UTENTE)) {
} else {
let usersall = null;
if (destin === Destin.A_UTENTE)
usersall = await User.getUsersTelegALL(rec.user.idapp, rec.msgall_username_specifico);
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);
for (const utente of usersall) {
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.A_UTENTE) {
invia = utente.username === rec.msgall_username_specifico;
} else if (destin === Destin.NO_7_REQ) {
invia = !await User.isUserQualified7(this.idapp, utente.username);
} else if (destin === Destin.NO_9_REQ) {
invia = !await User.isUserQualified9(this.idapp, utente.username);
} else if (destin === Destin.MSG_TO_NAVE) {
invia = !await Nave.findDonatoreByNave(this.idapp, rec.extraparam);
} else if (destin === Destin.SI_INVITATI_NO_7REQ_INVITATI) {
const numinvitati = await ListaIngresso.getnumInvitati(this.idapp, utente.username);
const numinvitatiattivi = await ListaIngresso.getnumInvitatiAttivi(this.idapp, utente.username);
invia = (numinvitati >= 2) && (numinvitatiattivi < 2);
}
if (invia) {
if (cmd === RICEVI_EMAIL) {
preparatesto += utente.email + ', ';
} else if (cmd === CONTA_SOLO) {
// Niente
} else {
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 {
await this.sendMsg(utente.profile.teleg_id, textdainviare);
}
await tools.snooze(300)
}
nummsgsent++;
if (!SendMsgCmd.includes(cmd)) {
if ((nummsgsent % 50) === 0) {
myid = await this.sendMsg(msg.chat.id, nummsgsent + ' ' + getstr(this.getlang(msg), 'MSG_MSG_INCORSO'), null, { message_id: myid });
await tools.snooze(300)
}
}
}
}
}
}
let msgris = "";
if (cmd === CONTA_SOLO) {
msgris = nummsgsent + ' ' + getstr(this.getlang(msg), 'MSG_MSG_TOSENT');
} else if (cmd === RICEVI_EMAIL) {
msgris = nummsgsent + ' ' + 'Email';
await this.sendMsg(msg.chat.id, msgris);
msgris = preparatesto;
} else {
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 {
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 receiveMsg(msg) {
let status = this.getstatusInMemory(msg);
if (status === Status.NONE) {
await this.start(msg);
let status = this.getstatusInMemory(msg);
if (status !== Status.VERIFIED)
return
} else {
await this.setUser(msg)
}
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 {
this.sendMsg(msg.chat.id, getstr(this.getlang(msg), 'MSG_OPERAZ_ANNULLATA'));
}
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 (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 (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.arrUsers.find((rec) => rec.id === msg.from.id);
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)), MenuNoLogin);
return false;
}
return true;
}
async setUser(msg) {
const id = msg.from.id;
const user = await User.UserByIdTelegram(this.idapp, id);
let rec = this.arrUsers.find((rec) => rec.id === msg.from.id);
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;
}
}
async alreadyExist(msg) {
const id = msg.from.id;
let rec = null;
try {
const user = await User.UserByIdTelegram(this.idapp, id);
let rec = this.arrUsers.find((rec) => rec.id === msg.from.id);
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
}
addUser(msg) {
const lang = this.getlang(msg);
const code = 100000 + Math.round(Math.random() * 899999);
const rec = {
id: msg.from.id,
code,
lang,
status: Status.WAITFOR_USERNAME_BO,
statusmsg: 0,
msgcodeprec: '',
sex: 0,
numdomande: 0,
retry: 0,
username_bo: '',
msgall_status: StatusMSGALL.NONE,
msgall_achi: 0,
msgall_username_specifico: '',
extraparam: '',
msgtosent: '',
msg_wait: false,
lastmenu: null,
};
this.arrUsers.push(rec);
return rec;
}
async insertIntoDB(msg) {
return await this.askVerifiedCode(msg);
}
async getKeyboard(id, menu, lang) {
let keyb = MenuStandard;
// Check if you are Admin
const ismanager = await User.isAdminByIdTeleg(this.idapp, id);
if (ismanager && menu !== MenuChat)
keyb = MenuPerAdmin;
if (menu) {
keyb = menu
}
let mykeyb = undefined;
if (!!keyb) {
mykeyb = this.getmenuKey(keyb, lang);
}
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) {
if (!text)
return 0;
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 {
if (!form) {
form = {
"parse_mode": "HTML",
"message_id": msg_id,
"reply_markup": {
"resize_keyboard": true,
"keyboard": await this.getKeyboard(id, menu, mylang)
}
};
}
const res = await 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;
});
return res;
} catch (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 > 4096) {
let text1 = text.slice(0, 4096);
let text2 = text.slice(4096, 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) {
mymenuout = mymenu['it'].menu;
}
return mymenuout;
}
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) {
// const rec = this.getRecInMem(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()) {
console.log('TELEGRAM STARTING.... ');
for (const idapp of appTelegram) {
const token = tools.getTelegramKeyByIdApp(idapp);
// console.log('idapp', idapp, 'token', token);
if (!!token) {
const bot = new TelegramBot(token, { polling: true });
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);
// console.log('msg', msg);
const chatId = msg.chat.id;
myclTelegram.receiveMsg(msg);
// var bye = "bye";
// if (msg.text.toString().toLowerCase().includes(bye)) {
// bot.sendMessage(msg.chat.id, "Hope to see you around again , Bye");
// }
// send a message to the chat acknowledging receipt of their message
// bot.sendMessage(chatId, 'Received your message');
});
// Handle callback queries
bot.on('callback_query', function onCallbackQuery(callbackQuery) {
console.log('callback_query', callbackQuery);
bot.answerCallbackQuery(callbackQuery.id, { url });
});
}
}
}