2020-01-03 01:52:49 +01:00
const tools = require ( '../tools/general' ) ;
2021-02-24 04:48:31 +01:00
const appTelegram = [ tools . CNM ] ;
2020-01-03 01:52:49 +01:00
2020-02-07 22:08:46 +01:00
const appTelegramFinti = [ '2' ] ;
2021-02-24 04:48:31 +01:00
const appTelegramDest = [ tools . CNM ] ;
2020-02-07 22:08:46 +01:00
2020-01-03 01:52:49 +01:00
const printf = require ( 'util' ) . format ;
const { User } = require ( '../models/user' ) ;
2020-01-21 01:37:15 +01:00
const { CalZoom } = require ( '../models/calzoom' ) ;
2020-03-10 21:44:14 +01:00
const { Nave } = require ( '../models/nave' ) ;
2020-02-07 22:08:46 +01:00
const shared _consts = require ( '../tools/shared_nodejs' ) ;
2020-01-03 01:52:49 +01:00
2020-06-08 13:31:05 +02:00
const { ListaIngresso } = require ( '../models/listaingresso' ) ;
const { MsgTemplate } = require ( '../models/msg_template' ) ;
2020-01-03 22:02:18 +01:00
const emoji = require ( 'node-emoji' ) ;
2020-07-02 22:00:58 +02:00
const { Flotta } = require ( '../models/flotta' ) ;
2020-06-08 13:31:05 +02:00
2020-01-20 01:48:25 +01:00
const i18n = require ( "i18n" ) ;
2020-06-08 13:31:05 +02:00
let url = process . env . URL || 'https://<PUBLIC-URL>' ;
2020-01-03 22:02:18 +01:00
const Benvenuto = emoji . get ( 'heartbeat' ) + emoji . get ( 'heartbeat' ) + emoji . get ( 'heartbeat' ) + ' Benvenuto!' ;
2020-01-03 01:52:49 +01:00
2020-01-20 01:48:25 +01:00
const emo = {
2020-02-19 16:09:16 +01:00
JOY : emoji . get ( 'joy' ) ,
JOY2 : emoji . get ( 'rolling_on_the_floor_laughing' ) ,
DANCER : emoji . get ( 'dancer' ) ,
2020-01-21 01:37:15 +01:00
STARS : emoji . get ( 'stars' ) ,
FIRE : emoji . get ( 'fire' ) ,
2020-02-19 16:09:16 +01:00
SUN : emoji . get ( 'sunrise' ) ,
2020-02-07 22:08:46 +01:00
TV : emoji . get ( 'tv' ) ,
NEWSPAPER : emoji . get ( 'newspaper' ) ,
2020-02-19 16:09:16 +01:00
KISS : emoji . get ( 'kiss' ) ,
2020-02-07 22:08:46 +01:00
PENCIL : emoji . get ( 'pencil2' ) ,
2020-01-20 01:48:25 +01:00
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' ) ,
2020-02-19 16:09:16 +01:00
LEFT _FACING _FIST : emoji . get ( 'left-facing_fist' ) ,
2020-01-20 01:48:25 +01:00
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' ) ,
2020-03-10 21:44:14 +01:00
GIFT : emoji . get ( 'gift' ) ,
2020-02-05 00:39:25 +01:00
ROBOT _FACE : emoji . get ( 'robot_face' ) ,
ADMIN : emoji . get ( 'information_desk_person' ) ,
2020-02-19 16:09:16 +01:00
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 = {
2020-03-10 21:44:14 +01:00
MIANAVE : [ 'Nave' ] ,
CIAO : [ 'ciao' , 'ciaoo' , 'hola' , 'holaa' , 'hey' , 'salve' , 'buongiorno' , 'buondi' , 'ciao ❤️' ] ,
2020-02-19 16:09:16 +01:00
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' ] ,
2020-03-10 21:44:14 +01:00
PROSSIMO _ZOOM : [ 'prossimo zoom' , 'fare lo zoom' , 'gli zoom' , 'conferenz' , 'zoom' ] ,
2020-02-19 16:09:16 +01:00
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
2020-01-20 01:48:25 +01:00
} ;
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' )
2020-03-10 21:44:14 +01:00
} else {
return number ;
2020-01-20 01:48:25 +01:00
}
}
2020-03-10 21:44:14 +01:00
strNave = "Nave" ;
2020-02-19 16:09:16 +01:00
2020-01-03 01:52:49 +01:00
const Menu = {
2020-03-31 20:34:24 +02:00
LANG _IT : emoji . get ( 'flag-it' ) + ' Italiano' ,
LANG _EN : emoji . get ( 'flag-gb' ) + ' English' ,
LANG _ES : emoji . get ( 'flag-es' ) + ' Español' ,
LANG _FR : emoji . get ( 'flag-fr' ) + ' Français' ,
LANG _SI : emoji . get ( 'flag-si' ) + ' Slovenski' ,
LANG _PT : emoji . get ( 'flag-pt' ) + ' Português' ,
LANG : emoji . get ( 'globe_with_meridians' ) + ' Language' ,
CHAT _PERSONALE : emoji . get ( 'female-office-worker' ) + emoji . get ( 'computer' ) ,
EXIT _TELEGRAM : 'exittotelegram' ,
MSG _TO _USER : 'sendmsgto' ,
2020-01-20 01:48:25 +01:00
ADMIN : emoji . get ( 'information_desk_person' ) + ' Admin' ,
ALTRO : emoji . get ( 'newspaper' ) + ' Altro' ,
2020-03-10 21:44:14 +01:00
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' ,
2020-06-08 13:31:05 +02:00
NESSUN _IMBARCO _7REQ : emoji . get ( 'incoming_envelope' ) + 'No Imbarco (7 Req)' ,
2020-03-10 21:44:14 +01:00
MSG _SI _INVITATI _NO _7REQ _INVITATI : emoji . get ( 'incoming_envelope' ) + 'Inv e NO 7 Req' ,
2020-02-07 22:08:46 +01:00
MSGSTAFF : emoji . get ( 'incoming_envelope' ) + ' Invia a STAFF' ,
2020-06-08 13:31:05 +02:00
MSGPAOLO : emoji . get ( 'incoming_envelope' ) + ' Invia a PAOLO' ,
2020-03-31 20:34:24 +02:00
MSGATUTTI : emoji . get ( 'incoming_envelope' ) + ' Invia a TUTTI' ,
it : {
ACCEDI : emo . PERSON + ' Accedi' ,
LAVAGNA : emoji . get ( 'om_symbol' ) + ' Lavagna' ,
LINK _CONDIVIDERE : emoji . get ( 'link' ) + ' Link da condividere' ,
ZOOM : emoji . get ( 'information_source' ) + ' Zoom (Conferenze)' ,
INFO : emoji . get ( 'information_source' ) + ' Informazioni' ,
ASSISTENZA : emoji . get ( 'open_hands' ) + ' Le Chat 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' ,
2020-12-21 02:16:42 +01:00
NUOVOSITO : 'https://ayni.gifteconomy.app'
2020-03-31 20:34:24 +02:00
} ,
es : {
ACCEDI : emo . PERSON + ' Entra' ,
LAVAGNA : emoji . get ( 'om_symbol' ) + ' Tablero' ,
LINK _CONDIVIDERE : emoji . get ( 'link' ) + ' Enlaces para compartir' ,
ZOOM : emoji . get ( 'information_source' ) + ' Zoom (Conferencias)' ,
INFO : emoji . get ( 'information_source' ) + ' Información' ,
ASSISTENZA : emoji . get ( 'open_hands' ) + ' Chats 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' ,
2020-04-07 14:34:29 +02:00
LAVAGNA : emoji . get ( 'om_symbol' ) + ' Tabla' ,
LINK _CONDIVIDERE : emoji . get ( 'link' ) + ' Link za vpis oseb' ,
2020-03-31 20:34:24 +02:00
ZOOM : emoji . get ( 'information_source' ) + ' Zoom (Konference)' ,
INFO : emoji . get ( 'information_source' ) + ' Informacije' ,
ASSISTENZA : emoji . get ( 'open_hands' ) + ' 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' ,
} ,
2020-01-03 01:52:49 +01:00
} ;
2020-03-10 21:44:14 +01:00
const CONTA _SOLO = 'contasolo' ;
const RICEVI _EMAIL = 'riceviemail' ;
2020-06-08 13:31:05 +02:00
const NOME _COGNOME = 'nomecognome' ;
const CHEDI _SE _IMBARCARTI = 'chiedi_se_imbarcarti' ;
const InlineCmd = {
2020-09-04 00:06:49 +02:00
VOGLIO _IMBARCARMI : 'w_imb' ,
NON _VOGLIO _IMBARCARMI : 'nw_imb'
} ;
const InlineZoomConferma = {
CONFERMA _ZOOM _PRESENZA : 'conf_pres' ,
NON _CONFERMA _ZOOM _PRESENZA : 'nonconf_pres'
2020-06-08 13:31:05 +02:00
} ;
2020-03-10 21:44:14 +01:00
2020-06-08 13:31:05 +02:00
const SendMsgCmd = [ CONTA _SOLO , RICEVI _EMAIL , NOME _COGNOME , CHEDI _SE _IMBARCARTI ] ;
2020-03-10 21:44:14 +01:00
2020-01-20 01:48:25 +01:00
2020-03-31 20:34:24 +02:00
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 ] ] } ,
} ;
2020-01-20 01:48:25 +01:00
2021-05-10 01:50:40 +02:00
const MenuStandard _AYNI = {
2020-03-31 20:34:24 +02:00
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 ] ] } ,
} ;
2021-06-04 10:07:57 +02:00
const MenuStandard = {
it : { menu : [ [ Menu . it . LAVAGNA , Menu . it . LINK _CONDIVIDERE ] , [ Menu . it . ZOOM , Menu . it . ASSISTENZA ] , [ Menu . LANG ] ] } ,
} ;
2020-03-31 20:34:24 +02:00
const 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 ] ] } ,
} ;
2020-12-21 02:16:42 +01:00
const MenuRedirigi = {
it : { menu : [ [ Menu . it . NUOVOSITO ] ] } ,
es : { menu : [ [ Menu . it . NUOVOSITO ] ] } ,
fr : { menu : [ [ Menu . it . NUOVOSITO ] ] } ,
si : { menu : [ [ Menu . it . NUOVOSITO ] ] } ,
pt : { menu : [ [ Menu . it . NUOVOSITO ] ] } ,
enUs : { menu : [ [ Menu . it . NUOVOSITO ] ] } ,
} ;
2020-03-31 20:34:24 +02:00
const MenuLang = {
it : { menu : [ [ Menu . LANG _IT , Menu . LANG _EN ] , [ Menu . LANG _ES , Menu . LANG _FR ] , [ Menu . LANG _SI , Menu . LANG _PT , Menu . it . INDIETRO ] ] } ,
} ;
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 = {
2020-06-08 13:31:05 +02:00
it : { menu : [ [ Menu . MSGSTAFF , Menu . MSGATUTTI , Menu . it . INDIETRO ] , [ Menu . MSG _NO _7 _REQ , Menu . MSG _NO _9 _REQ , Menu . NESSUN _IMBARCO _7REQ ] , [ Menu . MSGPAOLO , Menu . MSG _TO _NAVE , Menu . MSG _SI _INVITATI _NO _7REQ _INVITATI ] ] } ,
2020-03-31 20:34:24 +02:00
} ;
const MenuSend = {
2020-06-08 13:31:05 +02:00
it : { menu : [ [ CONTA _SOLO , RICEVI _EMAIL , NOME _COGNOME ] , [ CHEDI _SE _IMBARCARTI , Menu . it . INDIETRO ] ] } ,
2020-03-31 20:34:24 +02:00
} ;
const MenuChat = {
it : { menu : [ [ Menu . it . ESCI _DA _CHAT , Menu . it . INDIETRO ] ] } ,
es : { menu : [ [ Menu . es . ESCI _DA _CHAT , Menu . es . INDIETRO ] ] } ,
fr : { menu : [ [ Menu . fr . ESCI _DA _CHAT , Menu . fr . INDIETRO ] ] } ,
si : { menu : [ [ Menu . si . ESCI _DA _CHAT , Menu . si . INDIETRO ] ] } ,
pt : { menu : [ [ Menu . pt . ESCI _DA _CHAT , Menu . pt . INDIETRO ] ] } ,
enUs : { menu : [ [ Menu . enUs . ESCI _DA _CHAT , Menu . enUs . INDIETRO ] ] } ,
} ;
2020-01-03 01:52:49 +01:00
2020-02-19 16:09:16 +01:00
const Sex = {
MALE : 1 ,
FEMALE : - 1 ,
} ;
2020-01-03 01:52:49 +01:00
const Status = {
2020-06-08 13:31:05 +02:00
EXIT : - 5 ,
2020-01-03 01:52:49 +01:00
NONE : 0 ,
VERIFIED : 1 ,
WAITFOR _USERNAME _BO : 102 ,
WAITFOR _VERIFY _CODE : 103 ,
2020-02-19 16:09:16 +01:00
WAITFOR _RISPOSTA : 110 ,
2020-01-03 01:52:49 +01:00
} ;
2020-03-10 21:44:14 +01:00
const Destin = {
STAFF : 1 ,
TUTTI : 2 ,
NO _7 _REQ : 3 ,
NO _9 _REQ : 4 ,
SI _INVITATI _NO _7REQ _INVITATI : 5 ,
A _UTENTE : 6 ,
MSG _TO _NAVE : 7 ,
2020-06-08 13:31:05 +02:00
NESSUN _IMBARCO _7REQ : 8 ,
PAOLO : 9 ,
2020-03-10 21:44:14 +01:00
} ;
2020-01-20 01:48:25 +01:00
const StatusMSGALL = {
NONE : 0 ,
ASK : 1 ,
CONFIRM : 2 ,
} ;
2020-01-03 01:52:49 +01:00
const txt = {
2020-01-03 22:02:18 +01:00
MSG _SCEGLI _MENU : emoji . get ( 'dizzy' ) + ' Scegli una voce di menu:' + emoji . get ( 'dizzy' ) ,
2020-02-05 00:39:25 +01:00
MSG _ASK _USERNAME _BO : 'Scrivi nel messaggio lo username o la email con cui ti sei registrato sul sito di %s:' ,
2020-02-19 16:09:16 +01:00
MSG _ERRORE _USERNAME : 'Attenzione! Devi inserire solo lo username (40 caratteri massimo)' ,
2020-03-10 21:44:14 +01:00
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:' ,
2020-01-20 01:48:25 +01:00
MSG _ERRORE _USERNAME _ANNULLA : 'Inserimento Annullato. Riprovare' ,
MSG _OPERAZ _ANNULLATA : 'Operazione Annullata' ,
2020-01-03 01:52:49 +01:00
MSG _ERRORE _VERIFY _CODE _MAXLEN : 'Attenzione! Devi inserire solo il codice a 6 cifre' ,
2020-02-19 16:09:16 +01:00
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 ,
2020-01-03 22:02:18 +01:00
MSG _ERR _UNKNOWN _VERIFY _CODE : 'Errore durante il salvataggio sul Server. Riprovare piú tardi' ,
MSG _EXIT _TELEGRAM : 'L\'account è stato ora scollegato da questo Telegram BOT.' ,
2021-06-04 10:07:57 +02:00
MSG _APORTADOR _USER _REGISTERED : emo . FIRE + ' Si è appena Registrato "%s (n. %s)' ,
2021-04-30 01:31:12 +02:00
MSG _ISCRITTO _CONACREIS : emo . FIRE + ' Si è appena Iscritto al Conacreis "%s"' ,
2020-01-20 01:48:25 +01:00
MSG _MSG _SENT : emoji . get ( 'envelope' ) + ' Messaggi Inviati !' ,
2020-03-10 21:44:14 +01:00
MSG _MSG _TOSENT : emoji . get ( 'envelope' ) + ' Messaggi da Inviare' ,
2020-02-19 16:09:16 +01:00
MSG _MSG _INCORSO : emoji . get ( 'envelope' ) + ' messaggi in corso... Inviati attualmente' ,
2020-01-03 01:52:49 +01:00
} ;
2020-03-31 20:34:24 +02:00
const txt _es = {
MSG _SCEGLI _MENU : emoji . get ( 'dizzy' ) + ' Elija un elemento del menú:' + emoji . get ( 'dizzy' ) ,
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' ) ,
2020-04-24 10:29:25 +02:00
MSG _ASK _USERNAME _BO : 'Écrivez dans le message l\'username ou l\'e-mail avec lequel vous vous êtes enregistré sur le site de %s: ' ,
2020-03-31 20:34:24 +02:00
MSG _ERRORE _USERNAME : 'Attention! Vous devez insérer seulement l’ username (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 d’ Authentification (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 = {
2020-04-07 14:34:29 +02:00
MSG _SCEGLI _MENU : emoji . get ( 'dizzy' ) + 'Izbirni meni:' + emoji . get ( 'dizzy' ) ,
2020-04-24 10:29:25 +02:00
MSG _ASK _USERNAME _BO : 'Vpiši svoje uporabniško ime in e-naslov s katerimi si se registriral na spletni strani %s: ' ,
2020-03-31 20:34:24 +02:00
MSG _ERRORE _USERNAME : 'Pozor! Vpiši samo uporabniško ime (40 znakov) maksimalno' ,
MSG _ERRORE _USERNAME _NOT _FOUND : 'Ponovno preverite telegram BOT Uporabniško ime ali e-poštno sporočilo, s katerim ste registrirali na spletni strani 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: ' ,
2020-04-24 10:29:25 +02:00
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 ' +
2020-03-31 20:34:24 +02:00
'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' ,
} ;
2020-01-03 01:52:49 +01:00
const TelegramBot = require ( 'node-telegram-bot-api' ) ;
2020-01-03 22:02:18 +01:00
module . exports = {
2020-06-08 13:31:05 +02:00
ADMIN _IDTELEGRAM _SERVER : '12429864' , //Paolo
2020-01-03 22:02:18 +01:00
ADMIN _USER _SERVER : 'paoloar77' ,
ADMIN _USER _NAME _SERVER : 'Paolo' ,
phase : {
2021-04-30 01:31:12 +02:00
REGISTRATION : 1 ,
ISCRIZIONE _CONACREIS : 2
2020-01-03 22:02:18 +01:00
} ,
2020-09-04 00:06:49 +02:00
getFormDaMostrare : function ( idapp , myfunc , myuser ) {
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 + '|' + myuser . username
} ,
{
text : 'Annulla Presenza Zoom' ,
// callback_data: { action: InlineZoomConferma.NON_CONFERMA_ZOOM_PRESENZA, username: myuser.username }
callback _data : InlineZoomConferma . NON _CONFERMA _ZOOM _PRESENZA + '|' + myuser . username
} ,
] ) ;
}
return FormDaMostrare ;
} ,
2020-03-10 21:44:14 +01:00
getCiao : function ( idapp , username , lang ) {
return tools . gettranslate ( 'CIAO' , lang ) + ' ' + username + '!\n' ;
} ,
2020-01-03 22:02:18 +01:00
notifyToTelegram : async function ( phase , mylocalsconf ) {
let userdest = mylocalsconf . user . aportador _solidario ;
2020-03-31 20:34:24 +02:00
let langdest = mylocalsconf . user . lang ;
2020-01-20 01:48:25 +01:00
let NameFrom = ` ${ mylocalsconf . user . name } ${ mylocalsconf . user . surname } ` ;
2020-05-11 22:43:14 +02:00
const index = mylocalsconf . user . index ;
2020-01-20 01:48:25 +01:00
let aportador = '' ;
2020-01-20 02:18:11 +01:00
if ( userdest ) {
2020-01-20 01:48:25 +01:00
aportador = ` ( ${ userdest } ) ` ;
2020-01-20 02:18:11 +01:00
NameFrom += aportador ;
} else {
aportador = mylocalsconf . user . aportador _solidario _nome _completo ;
}
2020-01-20 01:48:25 +01:00
2020-01-03 22:02:18 +01:00
let text = '' ;
if ( phase === this . phase . REGISTRATION ) {
2020-01-20 01:48:25 +01:00
if ( userdest ) {
NameFrom = await User . getNameSurnameByUsername ( mylocalsconf . idapp , userdest ) + aportador ;
2020-01-20 02:18:11 +01:00
aportador = NameFrom ;
2020-01-20 01:48:25 +01:00
}
2021-06-04 10:07:57 +02:00
text = printf ( getstr ( langdest , 'MSG_APORTADOR_USER_REGISTERED' ) , ` ${ mylocalsconf . user . name } ${ mylocalsconf . user . surname } ( ${ mylocalsconf . user . username } ) ` , index ) ;
2020-01-03 22:02:18 +01:00
}
2020-01-20 02:18:11 +01:00
let addtext = "" ;
if ( ! ! mylocalsconf . user . aportador _solidario ) {
addtext = '[Inviato a ' + NameFrom + ']:' + '\n' ;
2020-01-20 01:48:25 +01:00
await this . sendMsgTelegram ( mylocalsconf . idapp , userdest , text ) ;
2020-01-20 02:18:11 +01:00
}
2020-01-03 22:02:18 +01:00
2020-01-20 02:18:11 +01:00
await this . sendMsgTelegramToTheManagers ( mylocalsconf . idapp , addtext + text ) ;
2020-01-03 22:02:18 +01:00
} ,
2021-04-30 01:31:12 +02:00
notifyIscrizioneToTelegram : async function ( phase , mylocalsconf ) {
let langdest = mylocalsconf . iscritto . lang ;
let NameFrom = ` ${ mylocalsconf . iscritto . name } ${ mylocalsconf . iscritto . surname } ` ;
let text = printf ( getstr ( langdest , 'MSG_ISCRITTO_CONACREIS' ) , NameFrom ) ;
let addtext = "" ;
await this . sendMsgTelegramToTheManagers ( mylocalsconf . idapp , addtext + text ) ;
} ,
sendMsgTelegramToTheManagers : async function ( idapp , text , onlyintofile = false , MyForm = null ) {
2020-01-03 22:02:18 +01:00
2020-03-10 21:44:14 +01:00
tools . writeManagersLog ( text ) ;
2020-05-10 21:07:51 +02:00
if ( ! onlyintofile ) {
const usersmanagers = await User . getusersManagers ( idapp ) ;
if ( usersmanagers ) {
for ( const rec of usersmanagers ) {
2020-09-04 00:06:49 +02:00
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 )
2020-05-10 21:07:51 +02:00
}
2020-01-20 02:18:11 +01:00
}
2020-01-03 22:02:18 +01:00
}
2020-02-07 22:08:46 +01:00
return true
2020-01-03 22:02:18 +01:00
} ,
2020-06-08 13:31:05 +02:00
getMsgByTipoMsg : async function ( mydata , lang , user , sonosognatore ) {
2020-03-10 21:44:14 +01:00
if ( ! ! mydata . msgextra ) {
2020-07-13 23:35:05 +02:00
return { body : mydata . msgextra , title : '' } ;
2020-03-10 21:44:14 +01:00
}
2020-06-08 13:31:05 +02:00
let title = '' ;
let msg = '' ;
2020-03-10 21:44:14 +01:00
if ( mydata . tipomsg === tools . TipoMsg . SEND _LINK _CHAT _DONATORI ) {
2020-05-10 21:07:51 +02:00
if ( sonosognatore )
2020-06-08 13:31:05 +02:00
msg = printf ( tools . gettranslate ( 'SEND_LINK_CHAT_SOGNATORE' , lang ) , user . name , mydata . navemediatore . riga + '.' + mydata . navemediatore . col , mydata . msgpar1 ) ;
2020-05-10 21:07:51 +02:00
else
2020-06-08 13:31:05 +02:00
msg = printf ( tools . gettranslate ( 'SEND_LINK_CHAT_DONATORI' , lang ) , user . name , mydata . navemediatore . riga + '.' + mydata . navemediatore . col , mydata . msgpar1 ) ;
2020-03-25 09:25:31 +01:00
} else if ( mydata . tipomsg === tools . TipoMsg . SEND _MSG || mydata . tipomsg === tools . TipoMsg . SEND _MSG _SINGOLO ) {
2020-04-07 14:34:29 +02:00
if ( ! ! mydata . username _mitt ) {
2020-06-08 13:31:05 +02:00
msg = '[' + tools . gettranslate ( 'MSG_SEND_FROM' , lang ) + ' ' + mydata . username _mitt + ']:' + tools . ACAPO ;
2020-04-07 14:34:29 +02:00
}
2020-06-08 13:31:05 +02:00
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 ) ;
2020-07-02 22:00:58 +02:00
if ( ! ! user . profile . revolut )
msg = msg . replace ( '{revolut}' , user . profile . revolut ) ;
2020-09-04 00:06:49 +02:00
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 ) ;
2020-06-08 13:31:05 +02:00
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 ) ;
}
2020-07-02 22:00:58 +02:00
// const cl = getclTelegByidapp(user.idapp);
msg = msg . replace ( '{link_chathelp}' , tools . HELP _CHAT ) ;
2020-06-08 13:31:05 +02:00
if ( ! ! mydata . flotta ) {
// SOSTITUISCI LE PAROLE CHIAVI
if ( ! ! mydata . flotta . date _start )
2020-07-02 22:00:58 +02:00
msg = msg . replace ( '{date_start}' , tools . getstrDateLongTot ( new Date ( mydata . flotta . date _start ) , user . lang ) ) ;
2020-06-08 13:31:05 +02:00
if ( ! ! mydata . flotta . date _close )
2020-07-02 22:00:58 +02:00
msg = msg . replace ( '{date_close}' , tools . getstrDateLongTot ( new Date ( mydata . flotta . date _close ) , user . lang ) ) ;
2020-06-08 13:31:05 +02:00
if ( ! ! mydata . flotta . link _superchat )
msg = msg . replace ( '{link_superchat}' , mydata . flotta . link _superchat ) ;
if ( ! ! mydata . flotta . tutor1 )
msg = msg . replace ( '{tutor1}' , mydata . flotta . tutor1 ) ;
if ( ! ! mydata . flotta . tutor2 )
msg = msg . replace ( '{tutor2}' , mydata . flotta . tutor2 ) ;
if ( ! ! mydata . flotta . tutor3 )
msg = msg . replace ( '{tutor3}' , mydata . flotta . tutor3 ) ;
if ( ! ! mydata . flotta . tutorslo )
msg = msg . replace ( '{tutorslo}' , mydata . flotta . tutorslo ) ;
if ( ! ! mydata . flotta . sognatore _nomecognome )
msg = msg . replace ( '{sognatore}' , mydata . flotta . sognatore _nomecognome ) ;
2020-07-02 22:00:58 +02:00
if ( ! ! mydata . flotta . sognatore _nomecognome )
msg = msg . replace ( '{flotta}' , mydata . flotta . riga + '.' + Math . ceil ( mydata . flotta . col _prima / 8 ) + ' - ' + mydata . flotta . riga + '.' + Math . ceil ( mydata . flotta . col _ultima / 8 ) ) ;
2020-06-08 13:31:05 +02:00
}
return { body : msg , title } ;
2020-03-10 21:44:14 +01:00
} ,
2020-07-02 22:00:58 +02:00
sendMsgTelegramToNave : async function ( idapp , mydata , res ) {
2020-06-08 13:31:05 +02:00
let nummsgtosend = 0 ;
2020-03-10 21:44:14 +01:00
let nummsgsent = 0 ;
let strout = '' ;
2020-06-08 13:31:05 +02:00
let flotta = mydata . flotta ;
const sendemail = require ( '../sendemail' ) ;
2020-03-10 21:44:14 +01:00
try {
2020-06-08 13:31:05 +02:00
let arrnavi = null ;
2020-07-02 22:00:58 +02:00
let strflotta = '' ;
2020-06-08 13:31:05 +02:00
if ( flotta ) {
2020-07-02 22:00:58 +02:00
strflotta = Flotta . getStrFlotta ( flotta ) ;
2020-06-08 13:31:05 +02:00
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 ) ;
}
2020-03-10 21:44:14 +01:00
// console.log('usersmanagers', usersmanagers);
2020-06-08 13:31:05 +02:00
let mymsg = "" ;
let mymsgprimo = "" ;
tipomsgorig = mydata . tipomsg ;
2020-03-10 21:44:14 +01:00
if ( arrnavi ) {
2020-06-08 13:31:05 +02:00
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 ) ;
}
}
2020-03-10 21:44:14 +01:00
for ( const nave of arrnavi ) {
2020-06-08 13:31:05 +02:00
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;
2020-03-25 09:25:31 +01:00
2020-03-10 21:44:14 +01:00
if ( ! ! user ) {
const lang = user . lang ;
const idteleg = user . profile . teleg _id ;
2020-06-08 13:31:05 +02:00
mydata . nave = nave ;
const rismsg = await this . getMsgByTipoMsg ( mydata , lang , user , false ) ;
mymsg = rismsg . body ;
mytitle = rismsg . title ;
if ( mymsgprimo === '' ) {
2020-07-02 22:00:58 +02:00
if ( lang === 'it' )
mymsgprimo = mymsg ;
2020-06-08 13:31:05 +02:00
}
2020-03-10 21:44:14 +01:00
if ( ! ! idteleg ) {
2020-06-08 13:31:05 +02:00
strout += '\n (' + index + ') ' + user . name + ' ' + user . surname + ':' ;
2020-03-10 21:44:14 +01:00
if ( mydata . inviareale ) {
await this . sendMsgTelegramByIdTelegram ( idapp , idteleg , mymsg , undefined , undefined , true ) ;
2020-09-04 00:06:49 +02:00
await tools . snooze ( 100 ) ;
2020-06-08 13:31:05 +02:00
strout += ' -> (MSG OK)' ;
if ( mydata . inviaemail && ! ! user . email ) {
// user.email = 'paolo.arena77@gmail.com';
2020-07-13 23:35:05 +02:00
await sendemail . sendEmail _ByText ( user . lang , user . email , user , idapp , {
emailbody : mymsg ,
emailtitle : mytitle
} ) ;
2020-06-08 13:31:05 +02:00
strout += ' -> (EMAIL OK)' ;
}
2020-03-21 10:28:26 +01:00
2020-06-08 13:31:05 +02:00
nummsgsent ++ ;
} else {
strout += ' (Ok)' ;
nummsgtosend ++ ;
2020-03-21 10:28:26 +01:00
}
}
2020-03-10 21:44:14 +01:00
}
2020-06-08 13:31:05 +02:00
index ++ ;
2020-03-10 21:44:14 +01:00
}
2020-06-08 13:31:05 +02:00
}
2020-03-10 21:44:14 +01:00
2020-06-08 13:31:05 +02:00
if ( ! mydata . inviareale ) {
2020-07-02 22:00:58 +02:00
await this . sendMsgTelegram ( idapp , res . req . user . username , 'TEST INVIO MESSAGGIO:\n' + mymsgprimo + '\n\n(Messaggi da Inviare: ' + nummsgtosend + ')' ) ;
2020-06-08 13:31:05 +02:00
}
2020-05-10 21:07:51 +02:00
2020-06-08 13:31:05 +02:00
if ( ( nummsgsent > 1 ) && ( mydata . inviareale ) ) {
try {
let msg = '' ;
if ( ! ! flotta ) {
2020-07-02 22:00:58 +02:00
if ( ! ! mydata . tipomsg ) {
2020-07-13 23:35:05 +02:00
msg = 'Flotta ' + strflotta + '): ' + tools . getStrMsgByTipoMsg ( mydata . tipomsg ) + '\n' + mymsg ;
2020-07-02 22:00:58 +02:00
} else {
msg = 'Inviato messaggio a tutta la FLOTTA DA ' + flotta . riga + '.' + flotta . col _prima + ' A ' + flotta . riga + '.' + flotta . col _ultima + ' \n' + mymsg ;
}
2020-06-08 13:31:05 +02:00
} 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 ) {
2020-05-10 21:07:51 +02:00
2020-06-08 13:31:05 +02:00
}
}
2020-05-10 21:07:51 +02:00
2020-06-08 13:31:05 +02:00
/ *
if ( mydata . tipomsg === tools . TipoMsg . SEND _LINK _CHAT _DONATORI ) {
2020-05-10 21:07:51 +02:00
2020-06-08 13:31:05 +02:00
const usersognatore = await Nave . getSognatoreByRigaColMediatore ( idapp , mydata . navemediatore ) ;
console . log ( 'Sognatore: ' , usersognatore . username ) ;
2020-05-10 21:07:51 +02:00
2020-06-08 13:31:05 +02:00
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)' ;
2020-03-10 21:44:14 +01:00
}
}
}
2020-06-08 13:31:05 +02:00
* /
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 } ) ;
}
}
2020-03-10 21:44:14 +01:00
return { nummsgsent , strout } ;
} catch ( e ) {
2020-05-04 19:34:41 +02:00
console . error ( e . message ) ;
2020-06-08 13:31:05 +02:00
strout = 'Error: ' + e . message + '\n' + strout ;
2020-03-25 09:25:31 +01:00
return { nummsgsent , strout } ;
2020-03-10 21:44:14 +01:00
}
} ,
2020-03-21 10:28:26 +01:00
sendMsgTelegramToTheAdmin : async function ( idapp , text , senzaintestazione ) {
2020-02-19 16:09:16 +01:00
const usersmanagers = await User . getusersManagers ( idapp ) ;
2020-03-21 10:28:26 +01:00
let intestaz = emo . ROBOT _FACE + '[BOT-ADMIN]' + emo . ADMIN + ': ' ;
if ( senzaintestazione )
intestaz = '' ;
2020-02-19 16:09:16 +01:00
if ( usersmanagers ) {
for ( const rec of usersmanagers ) {
if ( User . isAdmin ( rec . perm ) ) {
2020-03-21 10:28:26 +01:00
this . sendMsgTelegramByIdTelegram ( idapp , rec . profile . teleg _id , intestaz + text , undefined , undefined , true ) ;
2020-02-19 16:09:16 +01:00
await tools . snooze ( 300 )
}
}
}
return true
} ,
2020-01-20 01:48:25 +01:00
sendMsgTelegramToALL : async function ( idapp , text ) {
const usersall = await User . getUsersTelegALL ( idapp ) ;
if ( usersall ) {
2020-02-07 22:08:46 +01:00
for ( const rec of usersall ) {
this . sendMsgTelegramByIdTelegram ( idapp , rec . profile . teleg _id , text ) ;
await tools . snooze ( 300 )
}
2020-01-20 01:48:25 +01:00
}
} ,
2020-04-07 14:34:29 +02:00
sendMsgTelegram : async function ( idapp , username , text , alsotomanagers , username _mitt ) {
2021-04-30 01:31:12 +02:00
const { User } = require ( '../models/user' ) ;
2020-01-03 22:02:18 +01:00
const teleg _id = await User . TelegIdByUsername ( idapp , username ) ;
const cl = getclTelegByidapp ( idapp ) ;
2020-03-25 09:25:31 +01:00
let ris = null ;
2020-01-03 22:02:18 +01:00
if ( cl && teleg _id ) {
2020-03-25 09:25:31 +01:00
ris = await cl . sendMsg ( teleg _id , text )
2020-01-03 22:02:18 +01:00
}
2020-03-25 09:25:31 +01:00
if ( cl && teleg _id ) {
if ( alsotomanagers ) {
await this . sendMsgTelegramToTheManagers ( idapp , text )
}
2020-04-07 14:34:29 +02:00
if ( ! ! username _mitt ) {
const rec = cl . getRecByUsername ( username ) ;
if ( rec ) {
rec . msgall _username _specifico = username _mitt ;
}
}
2020-03-10 21:44:14 +01:00
}
2020-03-25 09:25:31 +01:00
return ris ;
2020-01-03 22:02:18 +01:00
} ,
2020-09-04 00:06:49 +02:00
sendMsgTelegramByIdTelegram : async function ( idapp , idtelegram , text , message _id , chat _id , ripr _menuPrec , MyForm = null ) {
2020-01-20 01:48:25 +01:00
if ( ! idtelegram )
return ;
2020-01-03 22:02:18 +01:00
const cl = getclTelegByidapp ( idapp ) ;
if ( cl && idtelegram ) {
2020-02-19 16:09:16 +01:00
let myform = null ;
2020-09-04 00:06:49 +02:00
return await cl . sendMsg ( idtelegram , text , null , MyForm , message _id , chat _id , ripr _menuPrec )
2020-01-03 22:02:18 +01:00
}
}
} ;
2020-02-19 16:09:16 +01:00
async function sendMsgTelegramToTheAdmin ( idapp , text , msg ) {
const usersmanagers = await User . getusersManagers ( idapp ) ;
2020-03-10 21:44:14 +01:00
const clorig = getclTelegByidapp ( idapp ) ;
const rec = clorig . getRecInMem ( msg ) ;
let username = '' ;
if ( ! ! rec ) {
username = rec . username _bo ;
} else {
username = msg . chat . username ;
}
2020-02-19 16:09:16 +01:00
2020-03-10 21:44:14 +01:00
text = emo . ROBOT _FACE + '[BOT-ADMIN]' + emo . ADMIN + ': Da ' + msg . chat . first _name + ' ' + msg . chat . last _name + ' [' + username + ']: \n' + text ;
2020-02-19 16:09:16 +01:00
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
}
2020-03-10 21:44:14 +01:00
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 ) {
2020-02-19 16:09:16 +01:00
const usersmanagers = await User . getusersManagers ( idapp ) ;
2020-03-10 21:44:14 +01:00
let username = msg . chat . username ;
if ( username _bo )
username = username _bo ;
2020-02-19 16:09:16 +01:00
2020-05-13 01:32:27 +02:00
text = emo . ROBOT _FACE + ': Da ' + msg . chat . first _name + ' ' + msg . chat . last _name + ' (' + username + '): \n' + text ;
2020-02-19 16:09:16 +01:00
tools . writeEventsLog ( text ) ;
if ( usersmanagers ) {
for ( const rec of usersmanagers ) {
const idtelegram = rec . profile . teleg _id ;
const cl = getclTelegByidapp ( idapp ) ;
if ( cl && idtelegram ) {
2020-03-10 21:44:14 +01:00
await cl . sendMsg ( idtelegram , text , undefined , undefined , undefined , undefined , true )
2020-02-19 16:09:16 +01:00
}
2020-09-04 00:06:49 +02:00
await tools . snooze ( 100 )
2020-02-19 16:09:16 +01:00
}
}
return true
}
2020-01-03 01:52:49 +01:00
2020-04-24 10:29:25 +02:00
function getstr ( lang , key , param1 ) {
2020-03-31 20:34:24 +02:00
let mystr = '' ;
2020-04-07 14:34:29 +02:00
if ( ( lang === 'si' ) || ( lang === 'sl-si' ) ) {
2020-03-31 20:34:24 +02:00
try {
mystr = txt _si [ key ]
} 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 === '' )
2020-04-24 10:29:25 +02:00
mystr = txt [ key ] ;
if ( ! ! param1 ) {
mystr = printf ( mystr , param1 ) ;
}
return mystr ;
2020-01-03 01:52:49 +01:00
}
class Telegram {
constructor ( idapp , bot ) {
this . idapp = idapp ;
this . bot = bot ;
this . token = bot . token ;
this . arrUsers = [ ] ;
}
2020-01-20 01:48:25 +01:00
async createIfNotExist ( msg ) {
if ( ! await this . alreadyExist ( msg ) ) {
2020-02-19 16:09:16 +01:00
if ( await this . insertIntoDB ( msg ) ) {
2020-01-20 01:48:25 +01:00
let rec = this . getRecInMem ( msg ) ;
2020-03-31 20:34:24 +02:00
if ( ! ! rec ) {
if ( rec . user )
rec . status = Status . VERIFIED
} else {
return false
}
2020-01-20 01:48:25 +01:00
}
return true
} else {
return false
}
}
2020-01-03 01:52:49 +01:00
2020-01-20 01:48:25 +01:00
async start ( msg ) {
2020-01-03 01:52:49 +01:00
// Check if Present to the DB
2020-03-31 20:34:24 +02:00
const riscreate = await this . createIfNotExist ( msg ) ;
if ( ! riscreate ) {
2020-01-03 01:52:49 +01:00
let rec = this . getRecInMem ( msg ) ;
if ( ! rec )
rec = this . addUser ( msg ) ;
2020-01-20 01:48:25 +01:00
if ( rec . user )
rec . status = Status . VERIFIED
2020-03-31 20:34:24 +02:00
} else {
let prova = 1 ;
2020-04-24 10:29:25 +02:00
// await this.sendMsg(msg.chat.id, getstr(this.getlang(msg), 'MSG_ASK_USERNAME_BO', tools.getNomeAppByIdApp(this.idapp)), MenuNoLogin);
2020-01-03 01:52:49 +01:00
}
}
2020-05-11 22:43:14 +02:00
geturlfaq ( ) {
return tools . getHostByIdApp ( this . idapp ) + '/faq'
}
2020-02-19 16:09:16 +01:00
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 ) {
2020-05-11 22:43:14 +02:00
myname = rec . user . name + ' ' + rec . user . surname + ' (n.' + rec . user . index + ')' ;
2020-02-19 16:09:16 +01:00
}
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' ;
2020-05-10 21:07:51 +02:00
2020-02-19 16:09:16 +01:00
if ( ! ! rec . user ) {
2020-05-10 21:07:51 +02:00
const myrec = await User . getUserShortDataByUsername ( this . idapp , rec . user . username ) ;
2020-05-11 22:43:14 +02:00
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 ;
2020-05-10 21:07:51 +02:00
risp += 'Num Invitati: ' + myrec . numinvitati + tools . ACAPO ;
risp += 'Num Invitati Attivi: ' + myrec . numinvitatiattivi + tools . ACAPO ;
2020-02-19 16:09:16 +01:00
} 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 ;
2020-03-10 21:44:14 +01:00
// } 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;
2020-02-19 16:09:16 +01:00
} 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 ) ) {
2020-07-02 22:00:58 +02:00
risp = 'Clicca qui per entrare nella Chat AYNI - HELP di Supporto\n' + tools . HELP _CHAT + '\n\nI miei colleghi umani ti aiuteranno a risolvere !' ;
2020-02-19 16:09:16 +01:00
} 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 ;
2020-03-25 09:25:31 +01:00
} else if ( testo . length >= 10 ) {
2020-02-19 16:09:16 +01:00
noanswer = true ;
2020-05-11 22:43:14 +02:00
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' ;
2020-05-04 19:34:41 +02:00
// 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 !';
2020-03-10 21:44:14 +01:00
await local _sendMsgTelegramToTheManagers ( this . idapp , testo , msg , rec . username _bo ) ;
2020-02-19 16:09:16 +01:00
}
}
2020-05-11 22:43:14 +02:00
let keyboard = null ;
2020-02-19 16:09:16 +01:00
if ( contastiera ) {
keyboard = {
2020-05-10 21:07:51 +02:00
"parse_mode" : "HTML" ,
2020-02-19 16:09:16 +01:00
"reply_markup" : {
"resize_keyboard" : true ,
2020-03-31 20:34:24 +02:00
"keyboard" : await this . getKeyboard ( id , undefined , this . getlang ( msg ) )
2020-02-19 16:09:16 +01:00
}
}
}
if ( rec . numdomande > 3 && rec . msgcodeprec === '' ) {
2020-03-10 21:44:14 +01:00
// 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;
// }
2020-02-19 16:09:16 +01:00
}
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 !== '' ;
}
2020-01-20 01:48:25 +01:00
async isMenuNotVerified ( rec , msg ) {
2020-03-31 20:34:24 +02:00
if ( this . isSelMenu ( msg , msg . text , 'ASSISTENZA' ) ) {
2020-01-20 01:48:25 +01:00
await this . menuAssistenza ( msg )
2020-03-31 20:34:24 +02:00
} else if ( msg . text === Menu . LANG _IT ) {
await this . ScegliLang ( msg , 'it' ) ;
} else if ( msg . text === Menu . LANG _ES ) {
await this . ScegliLang ( msg , 'es' ) ;
} else if ( msg . text === Menu . LANG _SI ) {
await this . ScegliLang ( msg , 'si' ) ;
} else if ( msg . text === Menu . LANG _FR ) {
await this . ScegliLang ( msg , 'fr' ) ;
} else if ( msg . text === Menu . LANG _EN ) {
await this . ScegliLang ( msg , 'enUs' ) ;
} else if ( msg . text === Menu . LANG _PT ) {
await this . ScegliLang ( msg , 'pt' ) ;
} else if ( this . isSelMenu ( msg , msg . text , 'INFO' ) ) {
2020-01-20 01:48:25 +01:00
await this . menuInformazioni ( msg )
2020-03-31 20:34:24 +02:00
} else if ( msg . text === Menu . LANG ) {
await this . menuLang ( msg )
} else if ( this . isSelMenu ( msg , msg . text , 'ZOOM' ) || MsgBot . PROSSIMO _ZOOM . find ( ( rec ) => msg . text . indexOf ( rec ) > - 1 ) ) {
2020-01-21 01:37:15 +01:00
await this . menuZoom ( msg )
2020-02-19 16:09:16 +01:00
} else if ( await this . IsTesto ( msg ) ) {
// OK
2020-01-20 01:48:25 +01:00
} else {
await this . msgScegliMenu ( msg ) ;
}
}
2020-03-31 20:34:24 +02:00
isSelMenu ( msg , menuselect , key ) {
let miomenu = '' ;
try {
let lang = this . getlang ( msg ) ;
miomenu = Menu [ lang ] [ key ] ;
} catch ( e ) {
miomenu = Menu [ 'it' ] [ key ] ;
}
2020-04-10 13:02:33 +02:00
let trovato = ( miomenu === menuselect ) ;
if ( ! trovato ) {
try {
let miomenu2 = Menu [ 'it' ] [ key ] ;
trovato = ( miomenu2 === menuselect ) ;
2020-04-24 10:29:25 +02:00
} catch ( e ) {
2020-04-10 13:02:33 +02:00
}
}
return trovato ;
2020-03-31 20:34:24 +02:00
}
2020-01-20 01:48:25 +01:00
async isMenu ( rec , msg ) {
2020-02-19 16:09:16 +01:00
if ( ! msg )
return ;
if ( msg . text === undefined )
return ;
2020-03-10 21:44:14 +01:00
const arrtext = msg . text . split ( " " ) ;
let cmd2 = "" ;
let cmd1 = arrtext [ 0 ] ;
if ( arrtext . length > 1 )
cmd2 = arrtext [ 1 ] ;
let oldusername = rec . msgall _username _specifico ;
2020-03-31 20:34:24 +02:00
if ( ( this . isSelMenu ( msg , msg . text , 'ESCI_DA_CHAT' ) ) || ( this . isSelMenu ( msg , msg . text , 'INDIETRO' ) ) ) {
2020-03-10 21:44:14 +01:00
rec . msgall _username _specifico = '' ;
} else {
if ( rec . msgall _username _specifico !== '' ) {
await this . SendMsgToUser ( msg , rec , rec . msgall _username _specifico , msg . text ) ;
return true ;
}
}
2020-03-31 20:34:24 +02:00
if ( this . isSelMenu ( msg , msg . text , 'LAVAGNA' ) || MsgBot . LAVAGNA . find ( ( rec ) => msg . text . indexOf ( rec ) > - 1 ) ) {
2020-03-10 21:44:14 +01:00
await this . menuLavagna ( msg ) ;
2020-12-21 02:16:42 +01:00
} else if ( msg . text === Menu . it . NUOVOSITO ) {
await this . sendMsg ( msg . chat . id , Menu . it . NUOVOSITO ) ;
2020-03-10 21:44:14 +01:00
} else if ( msg . text === Menu . MIANAVE || ( cmd2 === strNave ) || MsgBot . MIANAVE . find ( ( rec ) => msg . text . indexOf ( rec ) > - 1 ) ) {
await this . menuNave ( msg )
2020-03-31 20:34:24 +02:00
} else if ( this . isSelMenu ( msg , msg . text , 'ACCEDI' ) ) {
2020-02-19 16:09:16 +01:00
await this . menuAccedi ( msg )
2020-03-31 20:34:24 +02:00
} else if ( this . isSelMenu ( msg , msg . text , 'LINK_CONDIVIDERE' ) ) {
2020-01-20 01:48:25 +01:00
await this . menuLinkCondividere ( msg )
2020-01-03 22:02:18 +01:00
} else if ( msg . text === Menu . EXIT _TELEGRAM ) {
2020-01-20 01:48:25 +01:00
await this . menuExitToTelegram ( msg )
} else if ( msg . text === Menu . ADMIN ) {
await this . menuAdmin ( msg )
2020-03-31 20:34:24 +02:00
} else if ( msg . text === Menu . LANG ) {
await this . menuLang ( msg )
2020-01-20 01:48:25 +01:00
} else if ( msg . text === Menu . MSGATUTTI ) {
await this . menumsgAll ( msg )
2020-02-07 22:08:46 +01:00
} else if ( msg . text === Menu . MSGSTAFF ) {
await this . menumsgStaff ( msg )
2020-06-08 13:31:05 +02:00
} else if ( msg . text === Menu . MSGPAOLO ) {
await this . menumsgPaolo ( msg )
2020-03-10 21:44:14 +01:00
} 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 )
2020-06-08 13:31:05 +02:00
} else if ( msg . text === Menu . NESSUN _IMBARCO _7REQ ) {
await this . menumsgGenerico ( msg , Destin . NESSUN _IMBARCO _7REQ ) ;
2020-03-10 21:44:14 +01:00
} 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 )
2020-03-31 20:34:24 +02:00
} else if ( this . isSelMenu ( msg , msg . text , 'INDIETRO' ) || ( msg . text === Menu . it . INDIETRO ) ) {
2020-01-20 01:48:25 +01:00
await this . msgScegliMenu ( msg ) ;
2020-03-31 20:34:24 +02:00
} else if ( this . isSelMenu ( msg , msg . text , 'ESCI_DA_CHAT' ) ) {
2020-03-10 21:44:14 +01:00
await this . sendMsg ( msg . chat . id , 'Uscito dalla Chat con ' + oldusername ) ;
rec . msgall _username _specifico = '' ;
2020-01-03 22:02:18 +01:00
} else {
2020-01-20 01:48:25 +01:00
await this . isMenuNotVerified ( rec , msg ) ;
}
}
2020-01-27 15:07:53 +01:00
getsymb ( symb , valid , isnum , num , smileif ) {
2020-01-20 01:48:25 +01:00
let str = symb + ': ' ;
if ( valid )
str += emo . CHECK _VERDE ;
else
str += emo . CROSS _ROSSA ;
if ( isnum ) {
2020-01-27 15:07:53 +01:00
str += ' ' + getemojibynumber ( num ) ;
2020-01-20 01:48:25 +01:00
if ( smileif )
str += emo . SMILE _STAR ;
2020-01-03 01:52:49 +01:00
}
2020-01-20 01:48:25 +01:00
return str + ' ' ;
}
isdreamset ( user ) {
if ( user ) {
if ( user . profile . my _dream )
if ( user . profile . my _dream . length > 10 )
return true
}
return false
2020-01-03 01:52:49 +01:00
}
2020-02-19 16:09:16 +01:00
ispayment ( user ) {
if ( user ) {
if ( ! ! user . profile . paymenttypes ) {
2020-07-13 23:35:05 +02:00
/ * i f ( u s e r . p r o f i l e . p a y m e n t t y p e s . i n c l u d e s ( ' p a y p a l ' ) ) {
2020-02-19 16:09:16 +01:00
if ( user . profile . email _paypal ) {
ispaypal = true
}
2020-07-13 23:35:05 +02:00
} * /
2020-02-19 16:09:16 +01:00
if ( ! ! user . profile )
if ( ! ! user . profile . paymenttypes ) {
2020-07-13 23:35:05 +02:00
return ( user . profile . paymenttypes . length >= 1 ) ;
2020-02-19 16:09:16 +01:00
}
}
}
return false
}
async menuAccedi ( msg ) {
let status = this . getstatusInMemory ( msg ) ;
if ( status === Status . WAITFOR _USERNAME _BO ) {
2020-03-31 20:34:24 +02:00
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
}
2020-02-19 16:09:16 +01:00
}
}
async getLavagnaByUser ( user , msg ) {
2020-01-03 01:52:49 +01:00
let mystr = '' ;
2020-02-19 16:09:16 +01:00
const dashboard = await User . getDashboard ( this . idapp , user . aportador _solidario , user . username , user . aportador _solidario _name _surname ) ;
2020-05-14 17:23:17 +02:00
const downline = await User . getDownline ( this . idapp , user . aportador _solidario , user . username ) ;
2020-01-03 01:52:49 +01:00
2020-05-14 17:23:17 +02:00
let numpersone = ( downline . downline ) ? downline . downline . length : 0 ;
2020-02-19 16:09:16 +01:00
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`;
2020-01-20 01:48:25 +01:00
2020-02-19 16:09:16 +01:00
let tuttie9 = false ;
2020-02-05 00:39:25 +01:00
2020-03-25 09:25:31 +01:00
let mystrnave = '' ;
2020-02-19 16:09:16 +01:00
if ( user ) {
2020-03-31 20:34:24 +02:00
mystr += tools . get _ _ ( 'BENVENUTO' , this . getlang ( msg ) ) + ' ' + user . name + ' (' + user . username + ') ' + emo . DIZZY + '\n\n' ;
2020-01-20 01:48:25 +01:00
2020-02-19 16:09:16 +01:00
tuttie9 = dashboard . myself . qualified && ( numpersone >= 2 ) && invitati _attivi >= 2 ;
2020-01-20 01:48:25 +01:00
2020-05-10 21:07:51 +02:00
mystrnave = await Nave . getNaveByUser ( this . idapp , user . username , user . lang , true ) ;
2020-03-25 09:25:31 +01:00
if ( mystrnave === '' && tuttie9 ) {
mystr += tools . gettranslate ( 'NO_PROG' , user . lang ) ;
2020-01-03 01:52:49 +01:00
}
2020-02-19 16:09:16 +01:00
2020-03-25 09:25:31 +01:00
if ( ! ! mystrnave ) {
2020-03-31 20:34:24 +02:00
mystr += '✨✨✨' + tools . get _ _ ( 'TUE_NAVI' , this . getlang ( msg ) ) + ':\n' ;
2020-03-25 09:25:31 +01:00
mystr += mystrnave ;
2020-05-11 22:43:14 +02:00
2020-03-25 09:25:31 +01:00
} else {
2020-02-19 16:09:16 +01:00
2020-03-25 09:25:31 +01:00
if ( ! tuttie9 ) {
2020-03-31 20:34:24 +02:00
mystr += dashboard . myself . qualified ? emo . SMILE _STAR + tools . get _ _ ( 'HAI_I_7_REQUISITI' , this . getlang ( msg ) ) + emo . SMILE _STAR : emo . EXCLAMATION _MARK + tools . get _ _ ( 'NON_HAI_I_7_REQUISITI' , this . getlang ( msg ) ) ;
2020-03-25 09:25:31 +01:00
mystr += '\n\n' ;
}
2020-03-31 20:34:24 +02:00
mystr += tuttie9 ? emo . SMILE _STAR + tools . get _ _ ( 'HAI_I_9_REQUISITI' , this . getlang ( msg ) ) + emo . SMILE _STAR : emo . EXCLAMATION _MARK + tools . get _ _ ( 'NON_HAI_I_9_REQUISITI' , this . getlang ( msg ) ) ;
2020-03-25 09:25:31 +01:00
mystr += '\n\n' ;
2020-03-31 20:34:24 +02:00
mystr += tools . get _ _ ( 'INFO_LA_MIA_LAVAGNA' , this . getlang ( msg ) ) ;
2020-02-19 16:09:16 +01:00
2020-03-25 09:25:31 +01:00
mystr += '\n' + '1. ' + this . getsymb ( emo . ENVELOPE , user . verified _email ) ;
2020-03-31 20:34:24 +02:00
mystr += tools . get _ _ ( 'EMAIL' , this . getlang ( msg ) ) + ' ' ;
mystr += user . verified _email ? tools . get _ _ ( 'VERIF' , this . getlang ( msg ) ) : tools . get _ _ ( 'EMAIL_NON_VERIF' , this . getlang ( msg ) ) ;
2020-01-20 01:48:25 +01:00
2020-03-31 20:34:24 +02:00
mystr += '\n2. ' + this . getsymb ( emo . ROBOT _FACE , true ) + tools . get _ _ ( 'BOT' , this . getlang ( msg ) ) + ' ' ;
mystr += tools . get _ _ ( 'VERIF' , this . getlang ( msg ) ) ;
2020-01-20 01:48:25 +01:00
2020-03-31 20:34:24 +02:00
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 ) ) ;
2020-09-15 11:49:20 +02:00
// 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));
2020-03-31 20:34:24 +02:00
mystr += '\n7. ' + this . getsymb ( emo . CREDIT _CARD , this . ispayment ( user ) ) + tools . get _ _ ( 'PAYMENTS' , this . getlang ( msg ) ) ;
2020-03-25 09:25:31 +01:00
}
2020-02-19 16:09:16 +01:00
// } else{
// mystr += tools.get__('TELEGRAM_NOT_CONNECTED', msg) + ' ' + emoji.get('e-mail');
}
// numpersone = 2;
2020-03-25 09:25:31 +01:00
if ( ! mystrnave ) {
2020-03-31 20:34:24 +02:00
mystr += '\n8. ' + this . getsymb ( emo . INVITATI , numpersone >= 2 , numpersone , numpersone , numpersone >= 3 ) + tools . get _ _ ( 'INVITATI' , this . getlang ( msg ) ) ;
mystr += '\n9. ' + this . getsymb ( emo . INVITATI , invitati _attivi >= 2 , invitati _attivi , invitati _attivi , invitati _attivi >= 3 ) + tools . get _ _ ( 'INVITATI_ATTIVI' , this . getlang ( msg ) ) + '\n' + '\n' ;
2020-03-25 09:25:31 +01:00
if ( numpersone > 0 ) {
2020-03-31 20:34:24 +02:00
mystr += tools . get _ _ ( 'INVITATI_LISTA' , this . getlang ( msg ) ) + ':\n' ;
2020-03-25 09:25:31 +01:00
let index = 1 ;
2020-05-14 17:23:17 +02:00
downline . downline . forEach ( ( user ) => {
2020-03-25 09:25:31 +01:00
mystr += emoji . get ( 'star-struck' ) + ` ${ index } °: ` ;
2020-05-11 22:43:14 +02:00
mystr += ( user . qualified ) ? emo . CHECK _VERDE : emo . CROSS _ROSSA ;
2020-03-25 09:25:31 +01:00
mystr += ` ${ user . name } ${ user . surname } ( ${ user . username } ) \n ` ;
index ++ ;
} ) ;
} else {
2020-03-31 20:34:24 +02:00
mystr += tools . get _ _ ( 'NESSUN_INVITATO' , this . getlang ( msg ) ) + tools . ACAPO ;
2020-03-25 09:25:31 +01:00
}
2020-02-19 16:09:16 +01:00
}
2020-01-20 01:48:25 +01:00
2020-02-19 16:09:16 +01:00
2020-03-10 21:44:14 +01:00
// if (dashboard.downnotreg) {
// if (dashboard.downnotreg.length > 0) {
// mystr += '\n' + emo.QUESTION_MARK + ' ' + tools.get__('NONREG', msg) + ':' + emo.QUESTION_MARK + '\n';
// let index = 1;
// dashboard.downnotreg.forEach((user) => {
// mystr += ` - ${index}°: ${user.name} ${user.surname} (tel: ${user.cell_complete})\n`;
// index++;
// });
// }
// }
2020-01-03 01:52:49 +01:00
2020-02-19 16:09:16 +01:00
if ( tuttie9 )
2020-03-31 20:34:24 +02:00
mystr += '\n' + printf ( tools . get _ _ ( 'INFO_LAVAGNA_SITO' , this . getlang ( msg ) ) ) ;
2020-02-19 16:09:16 +01:00
else
2020-03-31 20:34:24 +02:00
mystr += '\n' + printf ( tools . get _ _ ( 'INFO_LAVAGNA_SITO_COMPLETARE' , this . getlang ( msg ) ) , tools . getHostByIdApp ( this . idapp ) ) ;
2020-01-03 01:52:49 +01:00
2020-02-19 16:09:16 +01:00
return mystr ;
}
2020-02-05 00:39:25 +01:00
2020-02-19 16:09:16 +01:00
async menuLavagna ( msg ) {
const rec = this . getRecInMem ( msg ) ;
let mystr = '' ;
if ( rec . user ) {
mystr = await this . getLavagnaByUser ( rec . user , msg )
2020-02-05 00:39:25 +01:00
2020-01-03 01:52:49 +01:00
}
if ( ! ! mystr )
2020-01-20 01:48:25 +01:00
await this . sendMsg ( msg . chat . id , mystr ) ;
2020-01-03 01:52:49 +01:00
}
2020-03-10 21:44:14 +01:00
async menuNave ( msg ) {
const rec = this . getRecInMem ( msg ) ;
let mystr = '' ;
if ( ! rec . user )
return "" ;
2020-05-10 21:07:51 +02:00
let username _to _check = rec . user . username ;
2020-03-10 21:44:14 +01:00
let arrstringa = msg . text . split ( " " ) ;
if ( ! ! arrstringa ) {
if ( arrstringa . length > 1 ) {
let last = arrstringa . slice ( - 1 ) [ 0 ] ;
if ( ! isNaN ( last ) ) {
2020-12-21 02:16:42 +01:00
// ind_order_to_check = last;
2020-03-10 21:44:14 +01:00
}
}
}
2020-05-10 21:07:51 +02:00
mystr = await Nave . getNaveByUser ( this . idapp , username _to _check , rec . user . lang , true ) ;
2020-03-10 21:44:14 +01:00
if ( ! ! mystr )
await this . sendMsg ( msg . chat . id , mystr ) ;
}
2020-01-03 01:52:49 +01:00
async menuLinkCondividere ( msg ) {
const rec = this . getRecInMem ( msg ) ;
2020-02-05 00:39:25 +01:00
let mystr = '' ;
2020-01-03 01:52:49 +01:00
if ( rec . user ) {
2020-04-24 10:29:25 +02:00
mystr += printf ( tools . get _ _ ( 'INFO_LINK_DA_CONDIVIDERE' , this . getlang ( msg ) ) , tools . getHostByIdApp ( this . idapp ) + '/signup/' + rec . user . username ) ;
2020-07-02 22:00:58 +02:00
mystr += tools . ACAPO + tools . ACAPO + printf ( tools . get _ _ ( 'INFO_LINK_ZOOM' , this . getlang ( msg ) ) , tools . getlinkzoom ( null ) ) ;
2020-01-20 01:48:25 +01:00
await this . sendMsg ( msg . chat . id , mystr ) ;
2020-01-03 01:52:49 +01:00
}
}
2020-01-03 22:02:18 +01:00
async menuExitToTelegram ( msg ) {
const rec = this . getRecInMem ( msg ) ;
if ( rec . user ) {
2020-03-31 20:34:24 +02:00
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' ) ) ;
}
} )
2020-02-19 16:09:16 +01:00
} else {
this . deleteRecInMem ( msg ) ;
2020-01-03 22:02:18 +01:00
}
}
2020-01-03 01:52:49 +01:00
async menuInformazioni ( msg ) {
const mystr = 'Informazioni Aggiuntive: ...' ;
2020-01-20 01:48:25 +01:00
await this . sendMsg ( msg . chat . id , mystr ) ;
}
2020-03-31 20:34:24 +02:00
async getNextZoom ( msg ) {
2020-01-21 01:37:15 +01:00
const listazoom = await CalZoom . findAllIdApp ( this . idapp ) ;
const nextzoom = await CalZoom . getNextZoom ( this . idapp ) ;
2020-02-19 16:09:16 +01:00
let mystr = '' ;
2020-03-31 20:34:24 +02:00
mystr += emo . STARS + tools . get _ _ ( 'ZOOM_CONFERENCE' , this . getlang ( msg ) ) + emo . STARS + '\n\n' ;
2020-01-21 01:37:15 +01:00
2020-05-04 19:34:41 +02:00
// let pwd = 'Password: 123123';
2020-04-07 14:34:29 +02:00
2020-01-21 01:37:15 +01:00
let index = 1 ;
listazoom . forEach ( ( evento ) => {
2020-01-27 15:07:53 +01:00
let iniziata = false ;
if ( nextzoom )
iniziata = ( nextzoom . _id . toString ( ) === evento . _id . toString ( ) ) ;
2020-01-21 01:37:15 +01:00
2020-07-02 22:00:58 +02:00
let lang = this . getlang ( msg ) ;
2020-01-27 15:07:53 +01:00
if ( iniziata ) {
2020-07-02 22:00:58 +02:00
mystr += emo . CHECK _VERDE + ' ' + tools . get _ _ ( 'ZOOM_INIZIATO' , lang ) + ' ' + emo . CHECK _VERDE + '\n' ;
2020-01-27 15:07:53 +01:00
}
2020-07-02 22:00:58 +02:00
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 ` ;
2020-01-27 15:07:53 +01:00
if ( nextzoom ) {
2020-01-21 01:37:15 +01:00
if ( iniziata ) {
2020-03-31 20:34:24 +02:00
mystr += emo . FIRE + tools . get _ _ ( 'CLICCA_ENTRA' , this . getlang ( msg ) ) + ' ' + emo . FIRE + '\n' ;
2020-07-02 22:00:58 +02:00
mystr += tools . getlinkzoom ( evento ) + '\n' ;
2020-05-04 19:34:41 +02:00
mystr += '\n' ;
//mystr += pwd + '\n\n';
2020-01-21 01:37:15 +01:00
}
2020-01-27 15:07:53 +01:00
}
2020-01-21 01:37:15 +01:00
2020-01-27 15:07:53 +01:00
index ++ ;
} ) ;
if ( ! nextzoom && index > 1 ) {
2020-02-19 16:09:16 +01:00
mystr += "✨✨✨✨✨✨✨✨✨✨✨✨\n" +
2020-07-02 22:00:58 +02:00
tools . get _ _ ( 'CLICCA_PER_ZOOM' , this . getlang ( msg ) ) + '\n' + "✨✨✨✨✨✨✨✨✨✨✨✨\n" ;
2020-01-27 15:07:53 +01:00
}
2020-01-21 01:37:15 +01:00
2020-02-19 16:09:16 +01:00
return mystr
}
async menuZoom ( msg ) {
2020-03-31 20:34:24 +02:00
let mystr = await this . getNextZoom ( msg ) ;
2020-01-21 01:37:15 +01:00
2020-02-07 22:08:46 +01:00
await this . sendMsg ( msg . chat . id , mystr ) ;
2020-01-21 01:37:15 +01:00
}
2020-01-20 01:48:25 +01:00
async menuAdmin ( msg ) {
2020-03-31 20:34:24 +02:00
const mystr = tools . get _ _ ( 'SCEGLI_VOCE' , this . getlang ( msg ) ) ;
2020-01-21 01:37:15 +01:00
await
this . sendMsg ( msg . chat . id , mystr , MenuAdmin ) ;
2020-01-20 01:48:25 +01:00
}
2020-03-31 20:34:24 +02:00
async menuLang ( msg ) {
const mystr = tools . get _ _ ( 'SCEGLI_VOCE' , this . getlang ( msg ) ) ;
await
this . sendMsg ( msg . chat . id , mystr , MenuLang ) ;
}
2020-03-10 21:44:14 +01:00
getDestinStr ( msg , destin , rec ) {
if ( destin === Destin . TUTTI )
return 'TUTTI' ;
else if ( destin === Destin . STAFF )
return 'STAFF' ;
2020-06-08 13:31:05 +02:00
else if ( destin === Destin . PAOLO )
return 'PAOLO' ;
2020-03-10 21:44:14 +01:00
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 ;
2020-06-08 13:31:05 +02:00
else if ( destin === Destin . NESSUN _IMBARCO _7REQ )
return 'No Imbarcati (7 Req) ' ;
2020-03-10 21:44:14 +01:00
else if ( destin === Destin . A _UTENTE ) {
const rec = this . getRecInMem ( msg ) ;
return rec . msgall _username _specifico
2020-02-07 22:08:46 +01:00
}
2020-03-10 21:44:14 +01:00
}
async menumsgAll ( msg ) {
await this . menumsgGenerico ( msg , Destin . TUTTI ) ;
2020-02-07 22:08:46 +01:00
}
async menumsgStaff ( msg ) {
2020-03-10 21:44:14 +01:00
await this . menumsgGenerico ( msg , Destin . STAFF ) ;
}
2020-06-08 13:31:05 +02:00
async menumsgPaolo ( msg ) {
await this . menumsgGenerico ( msg , Destin . PAOLO ) ;
}
2020-03-10 21:44:14 +01:00
async menumsg _No _7 _Req ( msg ) {
await this . menumsgGenerico ( msg , Destin . NO _7 _REQ ) ;
}
async menumsg _No _9 _Req ( msg ) {
await this . menumsgGenerico ( msg , Destin . NO _9 _REQ ) ;
}
async menumsg _to _Nave ( msg , nave ) {
await this . menumsgGenerico ( msg , Destin . MSG _TO _NAVE , undefined , nave ) ;
}
async menumsg _Si _Invitati _No _7Req ( msg ) {
await this . menumsgGenerico ( msg , Destin . SI _INVITATI _NO _7REQ _INVITATI ) ;
}
async menumsg _A _Utente ( msg ) {
const arr = msg . text . split ( ' ' ) ;
if ( ! ! arr && arr . length > 1 ) {
const username = arr [ 1 ] ;
const rec = this . getRecInMem ( msg ) ;
rec . msg _wait = true ;
await this . SendMsgToUser ( msg , rec , username , msg . text ) ;
}
}
async menumsgGenerico ( msg , dest , username , extraparam ) {
2020-02-07 22:08:46 +01:00
const rec = this . getRecInMem ( msg ) ;
if ( rec . user ) {
rec . msgall _status = StatusMSGALL . ASK ;
2020-03-10 21:44:14 +01:00
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 ) ;
2020-01-20 01:48:25 +01:00
}
2020-01-03 01:52:49 +01:00
}
2020-05-10 21:07:51 +02:00
getlink ( qualelink ) {
if ( qualelink === 'website' ) {
return 'https://ayni.gifteconomy.app'
} else if ( qualelink === 'biblio' ) {
return 'https://t.me/joinchat/AAAAAFMDe8b5lB1X7vOYng' ;
} else if ( qualelink === 'help' ) {
2020-07-02 22:00:58 +02:00
return tools . HELP _CHAT ;
2020-05-10 21:07:51 +02:00
} else if ( qualelink === 'faq' ) {
return '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 +
2020-09-15 11:49:20 +02:00
"HRV 🇭🇷 BIH 🇧🇦 SRB 🇷🇸 MNE 🇲🇪: https://t.me/joinchat/KFGPolcH0lLrqrdloOASYQ" + tools . ACAPO +
2020-05-10 21:07:51 +02:00
"ESP 🇪🇸 - PRT 🇵🇹: https://t.me/joinchat/AL2qKBqJRuIEuc2FivgAzg" + tools . ACAPO +
2020-09-15 11:49:20 +02:00
"FRA 🇫🇷: https://t.me/joinchat/POqmM1ddtRmnxtLdKkm5sQ" + tools . ACAPO +
"ENG 🇬🇧: https://t.me/joinchat/AL2qKBYX0yVvOJ6Ssf9hKg" + tools . ACAPO
;
2020-05-10 21:07:51 +02:00
}
}
2020-01-03 01:52:49 +01:00
async menuAssistenza ( msg ) {
2020-01-20 01:48:25 +01:00
2020-05-10 21:07:51 +02:00
const sito = this . getlink ( 'website' ) ;
const empower = this . getlink ( 'empower' ) ;
const biblio = this . getlink ( 'biblio' ) ;
const faq = this . getlink ( 'faq' ) ;
let help = "" ;
let helpaperta = true ;
2020-09-04 00:06:49 +02:00
if ( tools . isMonToFri ( ) && tools . isBetweenTwoTime ( '9:00:00' , '19:00:00' ) ) {
2020-05-10 21:07:51 +02:00
help = '✅ ' + this . getlink ( 'help' ) ;
} else {
help = "🔴 [ORA CHIUSA - NOW CLOSED]" ;
helpaperta = false ;
}
let mytext = "" ;
if ( this . getlang ( msg ) === 'it' )
2020-09-15 11:49:20 +02:00
mytext = printf ( tools . get _ _ ( 'TESTO_ASSISTENZA' , this . getlang ( msg ) ) , sito , biblio , empower , faq , help ) ;
2020-05-10 21:07:51 +02:00
else
2020-09-15 11:49:20 +02:00
mytext = printf ( tools . get _ _ ( 'TESTO_ASSISTENZA' , this . getlang ( msg ) ) , sito , biblio , empower , help ) ;
2020-01-20 01:48:25 +01:00
2020-02-19 16:09:16 +01:00
let menu = null ;
const rec = this . getRecInMem ( msg ) ;
if ( ! rec . user ) {
menu = MenuNoLogin
}
2020-01-21 01:37:15 +01:00
await
2020-02-19 16:09:16 +01:00
this . sendMsg ( msg . chat . id , mytext , menu ) ;
2020-01-03 01:52:49 +01:00
}
existInMemory ( msg ) {
const rec = this . getRecInMem ( msg ) ;
return ! ! rec
}
2020-01-20 01:48:25 +01:00
getstatus ( rec ) {
2020-01-03 01:52:49 +01:00
if ( ! ! rec )
return rec . status ;
else
return Status . NONE ;
}
2020-01-20 01:48:25 +01:00
getstatusInMemory ( msg ) {
const rec = this . getRecInMem ( msg ) ;
return this . getstatus ( rec ) ;
}
2020-01-03 01:52:49 +01:00
getRecInMem ( msg ) {
2020-06-08 13:31:05 +02:00
return this . arrUsers . find ( ( rec ) => rec . id === this . getchatid ( msg ) ) ;
2020-01-03 01:52:49 +01:00
}
2020-02-19 16:09:16 +01:00
getRecInMemById ( id ) {
return this . arrUsers . find ( ( rec ) => rec . id === id ) ;
}
2020-03-10 21:44:14 +01:00
getRecByUsername ( username ) {
return this . arrUsers . find ( ( rec ) => rec . username _bo === username ) ;
}
getRecInMemById ( id ) {
return this . arrUsers . find ( ( rec ) => rec . id === id ) ;
}
2020-01-03 22:02:18 +01:00
deleteRecInMem ( msg ) {
2020-06-08 13:31:05 +02:00
this . arrUsers = this . arrUsers . filter ( ( rec ) => rec . id !== this . getchatid ( msg ) ) ;
2020-01-03 22:02:18 +01:00
}
2020-02-19 16:09:16 +01:00
async getUser ( msg , rec , conmsg ) {
let myid = 0 ;
let ok = false ;
2020-03-10 21:44:14 +01:00
let mystruser = tools . getFirstWord ( msg . text . trim ( ) ) ;
const user = await User . findByUsername ( this . idapp , mystruser , true ) ;
2020-02-19 16:09:16 +01:00
if ( ! user ) {
if ( conmsg ) {
2020-03-31 20:34:24 +02:00
await this . sendMsg ( msg . from . id , getstr ( this . getlang ( msg ) , 'MSG_ERRORE_USERNAME_NOT_FOUND' ) , MenuNoLogin ) ;
const lang = this . getlang ( msg ) ;
2020-05-10 21:07:51 +02:00
// const textman = msg.chat.first_name + ' ' + msg.chat.last_name + ' sta tentando di autenticarsi con il BOT (lang=' + lang + ') (username che scrive: ' + msg.text + ') ';
// await local_sendMsgTelegramToTheManagers(this.idapp, textman, msg);
2020-02-19 16:09:16 +01:00
rec . username _bo = '' ;
}
} else {
rec . username _bo = user . username ;
myid = user . _id ;
ok = true ;
}
return { rec , user , myid , ok } ;
}
2020-01-03 01:52:49 +01:00
async setUsernameBo ( msg ) {
try {
2020-02-19 16:09:16 +01:00
let rec = this . getRecInMem ( msg ) ;
2020-01-27 15:07:53 +01:00
if ( msg . text === undefined )
return false ;
2020-01-03 01:52:49 +01:00
console . log ( 'msg.text' , msg . text ) ;
const text = msg . text ;
2020-02-19 16:09:16 +01:00
if ( text . length < 40 ) {
2020-01-03 01:52:49 +01:00
if ( rec ) {
2020-02-19 16:09:16 +01:00
let ris = await this . getUser ( msg , rec , true ) ;
rec = ris . rec ;
2020-01-27 15:07:53 +01:00
2020-02-19 16:09:16 +01:00
if ( ris . ok ) {
rec . user = ris . user ;
await User . SetTelegramCheckCode ( this . idapp , ris . myid . toString ( ) , rec . code ) ;
rec . status = Status . WAITFOR _VERIFY _CODE ;
2020-04-24 10:29:25 +02:00
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 ) ;
2020-01-03 01:52:49 +01:00
}
}
} else if ( text . length === 0 ) {
if ( rec )
rec . status = Status . NONE ;
2020-03-31 20:34:24 +02:00
await this . sendMsg ( msg . from . id , getstr ( this . getlang ( msg ) , 'MSG_ERRORE_USERNAME_ANNULLA' ) ) ;
2020-01-20 01:48:25 +01:00
this . deleteRecInMem ( msg )
2020-01-03 01:52:49 +01:00
} else {
2020-03-31 20:34:24 +02:00
await this . sendMsg ( msg . from . id , getstr ( this . getlang ( msg ) , 'MSG_ERRORE_USERNAME' ) )
2020-01-03 01:52:49 +01:00
}
} catch ( e ) {
console . error ( 'Error setUsernameBo:' , e )
}
}
async setVerifyCode ( msg ) {
try {
2020-04-24 10:29:25 +02:00
if ( ! ! msg . text ) {
const code = msg . text . toString ( ) . trim ( ) ;
const rec = this . getRecInMem ( msg ) ;
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 ) ) ;
2020-05-10 21:07:51 +02:00
// local_sendMsgTelegramToTheManagers(this.idapp, recuser.name + ' ' + recuser.surname + ' si è Verificato a Telegram BOT! (lang=' + recuser.lang + ')' + emo.STARS, msg);
2020-04-24 10:29:25 +02:00
} 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 ) ) ) ;
2020-02-19 16:09:16 +01:00
} else {
2020-04-24 10:29:25 +02:00
rec . status = Status . NONE ;
await
this . sendMsg ( msg . from . id , getstr ( this . getlang ( msg ) , 'MSG_ERRORE_USERNAME_ANNULLA' ) ) ;
this . deleteRecInMem ( msg ) ;
2020-02-19 16:09:16 +01:00
}
2020-01-20 01:48:25 +01:00
}
2020-01-03 01:52:49 +01:00
}
2020-04-24 10:29:25 +02:00
} 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' ) )
2020-01-03 01:52:49 +01:00
}
}
} catch ( e ) {
console . error ( 'Error setVerifyCode' , e ) ;
}
}
2020-03-10 21:44:14 +01:00
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 ;
2020-01-20 01:48:25 +01:00
} else {
2020-03-10 21:44:14 +01:00
rec . msgall _username _specifico = '' ;
}
2020-01-20 01:48:25 +01:00
2020-03-10 21:44:14 +01:00
return recdest
}
2020-01-20 01:48:25 +01:00
2020-02-19 16:09:16 +01:00
2020-03-10 21:44:14 +01:00
async sendMsgToAll ( rec , msg , texttosend , destin ) {
try {
if ( ( texttosend . length < 3 ) && ( destin !== Destin . A _UTENTE ) ) {
} else {
2020-02-19 16:09:16 +01:00
2020-03-10 21:44:14 +01:00
let usersall = null ;
if ( destin === Destin . A _UTENTE )
usersall = await User . getUsersTelegALL ( rec . user . idapp , rec . msgall _username _specifico ) ;
2020-02-19 16:09:16 +01:00
else
2020-03-10 21:44:14 +01:00
usersall = await User . getUsersTelegALL ( rec . user . idapp ) ;
2020-02-19 16:09:16 +01:00
2020-03-10 21:44:14 +01:00
let nummsgsent = 0 ;
2020-02-19 16:09:16 +01:00
2020-03-10 21:44:14 +01:00
let textdainviare = "" ;
let preparatesto = '' ;
let myid = '' ;
2020-03-31 20:34:24 +02:00
if ( this . isSelMenu ( msg , texttosend , 'ZOOM' ) ) {
texttosend = await this . getNextZoom ( msg )
2020-03-10 21:44:14 +01:00
}
const cmd = texttosend . toLowerCase ( ) ;
if ( usersall ) {
2020-03-31 20:34:24 +02:00
if ( this . isSelMenu ( msg , cmd , 'INDIETRO' ) ) {
2020-03-10 21:44:14 +01:00
rec . msgall _status = StatusMSGALL . NONE ;
return
2020-02-07 22:08:46 +01:00
}
2020-03-10 21:44:14 +01:00
tools . writeEventsLog ( this . getDestinStr ( msg , destin , rec ) + ':\n' + texttosend ) ;
2020-06-08 13:31:05 +02:00
// let chiedisino = false;
// TEST usersall = await User.getUsersTelegALL(rec.user.idapp, 'paoloar77');
2020-03-10 21:44:14 +01:00
for ( const utente of usersall ) {
2020-06-08 13:31:05 +02:00
let FormDaMostrare = null ;
const lang = utente . lang ;
2020-04-24 10:29:25 +02:00
if ( ! utente . deleted && ! utente . sospeso ) {
if ( this . isSelMenu ( msg , texttosend === 'LAVAGNA' ) ) {
textdainviare = await this . getLavagnaByUser ( utente , msg ) ;
} else if ( destin === Destin . A _UTENTE ) {
textdainviare = texttosend ;
2020-03-10 21:44:14 +01:00
} else {
2020-04-24 10:29:25 +02:00
textdainviare = texttosend ;
2020-03-10 21:44:14 +01:00
}
2020-04-24 10:29:25 +02:00
let invia = false ;
if ( destin === Destin . STAFF ) {
invia = User . isManager ( utente . perm ) ;
} else if ( destin === Destin . TUTTI ) {
invia = true ;
2020-06-08 13:31:05 +02:00
} else if ( destin === Destin . PAOLO ) {
invia = utente . username === 'paoloar77' ;
2020-04-24 10:29:25 +02:00
} else if ( destin === Destin . A _UTENTE ) {
invia = utente . username === rec . msgall _username _specifico ;
} 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 ) ;
2020-06-08 13:31:05 +02:00
} else if ( destin === Destin . NESSUN _IMBARCO _7REQ ) {
invia = await User . NessunaNavePresenteByUsername ( this . idapp , utente . username ) ;
2020-04-24 10:29:25 +02:00
} else if ( destin === Destin . MSG _TO _NAVE ) {
invia = ! await Nave . findDonatoreByNave ( this . idapp , rec . extraparam ) ;
} else if ( destin === Destin . SI _INVITATI _NO _7REQ _INVITATI ) {
2020-05-10 21:07:51 +02:00
const numinvitati = await ListaIngresso . getnumInvitati ( this . idapp , utente . username ) ;
const numinvitatiattivi = await ListaIngresso . getnumInvitatiAttivi ( this . idapp , utente . username ) ;
2020-04-24 10:29:25 +02:00
invia = ( numinvitati >= 2 ) && ( numinvitatiattivi < 2 ) ;
}
2020-06-08 13:31:05 +02:00
// TEST invia = true;
2020-04-24 10:29:25 +02:00
if ( invia ) {
2020-06-08 13:31:05 +02:00
let inviaveramente = false ;
2020-04-24 10:29:25 +02:00
if ( cmd === RICEVI _EMAIL ) {
preparatesto += utente . email + ', ' ;
2020-06-08 13:31:05 +02:00
} else if ( cmd === NOME _COGNOME ) {
preparatesto += utente . name + ' ' + utente . surname + '(' + utente . username + ')' + '\n' ;
2020-04-24 10:29:25 +02:00
} else if ( cmd === CONTA _SOLO ) {
// Niente
2020-06-08 13:31:05 +02:00
} else if ( cmd === CHEDI _SE _IMBARCARTI ) {
textdainviare = tools . gettranslate ( 'VUOI_IMBARCARTI' , lang ) ;
// chiedisino = true;
// rec.msgall_status = StatusMSGALL.CONFIRM;
FormDaMostrare = this . getInlineKeyboard ( lang , [
2020-07-13 23:35:05 +02:00
{
text : Menu [ lang ] . SI ,
2020-09-04 00:06:49 +02:00
// callback_data: { action: InlineCmd.VOGLIO_IMBARCARMI, username: utente.username }
callback _data : InlineCmd . VOGLIO _IMBARCARMI + '|' + utente . username
2020-07-13 23:35:05 +02:00
} ,
{
text : Menu [ lang ] . NO ,
2020-09-04 00:06:49 +02:00
// callback_data: { action: InlineCmd.NON_VOGLIO_IMBARCARMI, username: utente.username }
callback _data : InlineCmd . NON _VOGLIO _IMBARCARMI + '|' + utente . username
2020-07-13 23:35:05 +02:00
} ,
2020-06-08 13:31:05 +02:00
] ) ;
inviaveramente = true ;
2020-04-24 10:29:25 +02:00
} else {
2020-06-08 13:31:05 +02:00
inviaveramente = true ;
}
if ( inviaveramente ) {
2020-04-24 10:29:25 +02:00
if ( destin === Destin . A _UTENTE ) {
await this . sistemaRecDest ( rec , msg ) ;
await this . sendMsg ( utente . profile . teleg _id , '[' + rec . username _bo + ' ti scrive]:\n' + textdainviare , MenuChat ) ;
} else {
2020-06-08 13:31:05 +02:00
// if (chiedisino) {
// this.ChiediSINO(msg, textdainviare);
// } else {
// TEST
let telegid = utente . profile . teleg _id ;
// if (process.env.PROD === "0") {
// telegid = 12429864;
// }
await this . sendMsg ( telegid , textdainviare , null , FormDaMostrare ) ;
// break;
2020-04-24 10:29:25 +02:00
}
2020-09-04 00:06:49 +02:00
await tools . snooze ( 100 ) ;
2020-06-08 13:31:05 +02:00
nummsgsent ++ ;
2020-03-10 21:44:14 +01:00
}
2020-06-08 13:31:05 +02:00
2020-04-24 10:29:25 +02:00
if ( ! SendMsgCmd . includes ( cmd ) ) {
2020-09-04 00:06:49 +02:00
if ( ( nummsgsent % 100 ) === 0 ) {
myid = await this . sendMsg ( msg . chat . id , nummsgsent + ' ' + getstr ( this . getlang ( msg ) , 'MSG_MSG_INCORSO' ) , null , null , myid ) ;
await tools . snooze ( 100 )
2020-04-24 10:29:25 +02:00
}
}
2020-03-10 21:44:14 +01:00
}
}
2020-02-07 22:08:46 +01:00
}
2020-03-10 21:44:14 +01:00
}
2020-02-19 16:09:16 +01:00
2020-03-10 21:44:14 +01:00
let msgris = "" ;
if ( cmd === CONTA _SOLO ) {
2020-03-31 20:34:24 +02:00
msgris = nummsgsent + ' ' + getstr ( this . getlang ( msg ) , 'MSG_MSG_TOSENT' ) ;
2020-06-08 13:31:05 +02:00
} else if ( cmd === NOME _COGNOME ) {
msgris = nummsgsent + ' ' + 'Utenti' ;
await this . sendMsg ( msg . chat . id , msgris ) ;
msgris = preparatesto ;
2020-03-10 21:44:14 +01:00
} else if ( cmd === RICEVI _EMAIL ) {
msgris = nummsgsent + ' ' + 'Email' ;
await this . sendMsg ( msg . chat . id , msgris ) ;
msgris = preparatesto ;
} else {
2020-03-31 20:34:24 +02:00
msgris = nummsgsent + ' ' + getstr ( this . getlang ( msg ) , 'MSG_MSG_SENT' ) ;
2020-03-10 21:44:14 +01:00
}
2020-02-19 16:09:16 +01:00
2020-03-10 21:44:14 +01:00
if ( destin === Destin . A _UTENTE ) {
const recdest = await this . sistemaRecDest ( rec ) ;
if ( ! ! recdest ) {
await this . sendMsg ( msg . chat . id , 'Conversazione Iniziata con ' + rec . msgall _username _specifico + ' !' , MenuChat ) ;
} else {
await this . sendMsg ( msg . chat . id , 'Utente ' + rec . msgall _username _specifico + ' non presente sul BOT !' ) ;
}
} else {
tools . writeEventsLog ( msgris ) ;
await this . sendMsg ( msg . chat . id , msgris ) ;
2020-01-20 01:48:25 +01:00
}
2020-03-10 21:44:14 +01:00
}
rec . start _write _msgall = false ;
} catch ( e ) {
2020-05-04 19:34:41 +02:00
console . error ( e . message ) ;
2020-01-20 01:48:25 +01:00
}
}
2020-03-10 21:44:14 +01:00
2020-01-20 01:48:25 +01:00
selectMenuHelp ( msg ) {
2020-03-31 20:34:24 +02:00
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 )
2020-04-24 10:29:25 +02:00
|| ( msg . text === Menu . LANG _FR ) || ( msg . text === Menu . LANG _SI ) || ( msg . text === Menu . LANG _PT ) )
2020-01-20 01:48:25 +01:00
}
2020-06-08 13:31:05 +02:00
async setInit ( msg ) {
2020-01-03 01:52:49 +01:00
let status = this . getstatusInMemory ( msg ) ;
if ( status === Status . NONE ) {
2020-02-19 16:09:16 +01:00
await this . start ( msg ) ;
2020-01-03 22:02:18 +01:00
let status = this . getstatusInMemory ( msg ) ;
if ( status !== Status . VERIFIED )
2020-06-08 13:31:05 +02:00
return Status . EXIT ;
2020-01-20 01:48:25 +01:00
} else {
2020-02-19 16:09:16 +01:00
await this . setUser ( msg )
2020-01-03 01:52:49 +01:00
}
2020-06-08 13:31:05 +02:00
return status ;
}
async receiveMsg ( msg ) {
let status = await this . setInit ( msg ) ;
if ( status === Status . EXIT ) {
return
}
2020-01-20 01:48:25 +01:00
const rec = this . getRecInMem ( msg ) ;
status = this . getstatus ( rec ) ;
2020-03-31 20:34:24 +02:00
if ( status === Status . WAITFOR _USERNAME _BO && ! this . selectMenuHelp ( msg ) && ! this . selectMenuLang ( msg ) ) {
2020-02-19 16:09:16 +01:00
await this . setUsernameBo ( msg )
2020-01-03 01:52:49 +01:00
} else if ( status === Status . WAITFOR _VERIFY _CODE ) {
2020-02-19 16:09:16 +01:00
await this . setVerifyCode ( msg )
2020-01-03 01:52:49 +01:00
} else if ( status === Status . NONE ) {
2020-02-19 16:09:16 +01:00
await this . start ( msg ) ;
2020-01-03 01:52:49 +01:00
} else if ( status === Status . VERIFIED ) {
2020-01-20 01:48:25 +01:00
let normale = true ;
if ( rec . msgall _status === StatusMSGALL . CONFIRM ) {
2020-03-31 20:34:24 +02:00
if ( this . isSelMenu ( msg , msg . text , 'SI' ) ) {
2020-01-20 01:48:25 +01:00
// Take msg to send to ALL
2020-03-10 21:44:14 +01:00
await this . sendMsgToAll ( rec , msg , rec . msgtosent , rec . msgall _achi )
2020-01-20 01:48:25 +01:00
} else {
2020-03-31 20:34:24 +02:00
this . sendMsg ( msg . chat . id , getstr ( this . getlang ( msg ) , 'MSG_OPERAZ_ANNULLATA' ) ) ;
2020-01-20 01:48:25 +01:00
}
rec . msgall _status = StatusMSGALL . NONE ;
normale = false ;
} else if ( rec . msgall _status === StatusMSGALL . ASK ) {
2020-03-31 20:34:24 +02:00
if ( ! this . isSelMenu ( msg , msg . text , 'INDIETRO' ) ) {
2020-01-20 01:48:25 +01:00
rec . msgtosent = msg . text ;
rec . msgall _status = StatusMSGALL . CONFIRM ;
2020-03-10 21:44:14 +01:00
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 + '?' ;
2020-06-08 13:31:05 +02:00
else if ( cmd === NOME _COGNOME )
domanda = 'Confermi di vedere la lista di persone ' + achi + '?' ;
2020-03-10 21:44:14 +01:00
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 ;
}
2020-01-20 01:48:25 +01:00
this . ChiediSINO ( msg , domanda ) ;
} else {
rec . msgall _status = StatusMSGALL . NONE ;
2020-01-21 01:37:15 +01:00
await
this . msgScegliMenu ( msg ) ;
2020-01-20 01:48:25 +01:00
}
normale = false
}
if ( normale ) {
// Check Menu
2020-02-19 16:09:16 +01:00
await this . isMenu ( rec , msg ) ;
2020-01-20 01:48:25 +01:00
}
} else {
2020-01-21 01:37:15 +01:00
await
this . isMenuNotVerified ( rec , msg ) ;
2020-01-03 01:52:49 +01:00
}
}
async askVerifiedCode ( msg ) {
2020-06-08 13:31:05 +02:00
const rec = this . getRecInMem ( msg ) ;
2020-01-03 01:52:49 +01:00
if ( ! rec ) {
2020-02-19 16:09:16 +01:00
await this . addUser ( msg ) ;
2020-01-03 01:52:49 +01:00
2020-03-31 20:34:24 +02:00
// await this.sendMsg(msg.chat.id, getstr(this.getlang(msg), printf(txt.MSG_ASK_USERNAME_BO, tools.getHostByIdApp(this.idapp))));
2020-04-24 10:29:25 +02:00
await this . sendMsg ( msg . chat . id , getstr ( this . getlang ( msg ) , 'MSG_ASK_USERNAME_BO' , tools . getNomeAppByIdApp ( this . idapp ) ) , MenuNoLogin ) ;
2020-01-20 01:48:25 +01:00
return false ;
2020-01-03 01:52:49 +01:00
}
2020-01-20 01:48:25 +01:00
return true ;
2020-01-03 01:52:49 +01:00
}
2020-01-20 01:48:25 +01:00
async setUser ( msg ) {
2020-06-08 13:31:05 +02:00
let id = this . getchatid ( msg ) ;
2020-03-10 21:44:14 +01:00
const user = await User . UserByIdTelegram ( this . idapp , id ) ;
2020-06-08 13:31:05 +02:00
let rec = this . getRecInMem ( msg ) ;
2020-01-20 01:48:25 +01:00
if ( user && rec ) {
2020-01-03 01:52:49 +01:00
rec . user = user ;
2020-01-20 01:48:25 +01:00
}
}
2020-03-10 21:44:14 +01:00
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 ;
}
}
2020-06-08 13:31:05 +02:00
getchatid ( msg ) {
if ( msg . from . is _bot )
return msg . chat . id ;
else
return msg . from . id ;
}
2020-01-20 01:48:25 +01:00
async alreadyExist ( msg ) {
2020-06-08 13:31:05 +02:00
const id = this . getchatid ( msg ) ;
2020-01-20 01:48:25 +01:00
let rec = null ;
try {
2020-02-19 16:09:16 +01:00
const user = await User . UserByIdTelegram ( this . idapp , id ) ;
2020-06-08 13:31:05 +02:00
let rec = this . getRecInMem ( msg ) ;
2020-01-20 01:48:25 +01:00
if ( user && ! rec ) {
rec = this . addUser ( msg ) ;
}
if ( rec ) {
rec . user = user ;
if ( user )
rec . username _bo = user . username ;
else
rec . username _bo = ''
}
} catch ( e ) {
console . error ( 'Error: ' , e ) ;
2020-01-03 22:02:18 +01:00
}
2020-01-03 01:52:49 +01:00
return ! ! rec
}
addUser ( msg ) {
2020-03-31 20:34:24 +02:00
const lang = this . getlang ( msg ) ;
2020-01-03 01:52:49 +01:00
const code = 100000 + Math . round ( Math . random ( ) * 899999 ) ;
const rec = {
2020-06-08 13:31:05 +02:00
id : this . getchatid ( msg ) ,
2020-01-03 01:52:49 +01:00
code ,
lang ,
status : Status . WAITFOR _USERNAME _BO ,
2020-02-19 16:09:16 +01:00
statusmsg : 0 ,
msgcodeprec : '' ,
sex : 0 ,
numdomande : 0 ,
2020-01-03 01:52:49 +01:00
retry : 0 ,
2020-01-20 01:48:25 +01:00
username _bo : '' ,
msgall _status : StatusMSGALL . NONE ,
2020-03-10 21:44:14 +01:00
msgall _achi : 0 ,
msgall _username _specifico : '' ,
extraparam : '' ,
2020-01-20 01:48:25 +01:00
msgtosent : '' ,
2020-03-10 21:44:14 +01:00
msg _wait : false ,
lastmenu : null ,
2020-01-03 01:52:49 +01:00
} ;
this . arrUsers . push ( rec ) ;
return rec ;
}
2020-02-19 16:09:16 +01:00
async insertIntoDB ( msg ) {
2020-01-03 01:52:49 +01:00
2020-02-19 16:09:16 +01:00
return await this . askVerifiedCode ( msg ) ;
2020-01-20 01:48:25 +01:00
}
2020-03-31 20:34:24 +02:00
async getKeyboard ( id , menu , lang ) {
2020-01-20 01:48:25 +01:00
let keyb = MenuStandard ;
2020-12-21 02:16:42 +01:00
if ( this . idapp === tools . AYNI ) {
keyb = MenuRedirigi
}
2020-01-20 01:48:25 +01:00
// Check if you are Admin
2020-03-10 21:44:14 +01:00
const ismanager = await User . isAdminByIdTeleg ( this . idapp , id ) ;
if ( ismanager && menu !== MenuChat )
2020-01-20 01:48:25 +01:00
keyb = MenuPerAdmin ;
2020-12-21 02:16:42 +01:00
if ( this . idapp === tools . AYNI ) {
keyb = MenuRedirigi
}
2020-01-20 01:48:25 +01:00
if ( menu ) {
keyb = menu
}
2020-01-03 01:52:49 +01:00
2020-03-31 20:34:24 +02:00
let mykeyb = undefined ;
if ( ! ! keyb ) {
mykeyb = this . getmenuKey ( keyb , lang ) ;
}
return mykeyb ;
2020-01-03 01:52:49 +01:00
}
2020-02-19 16:09:16 +01:00
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 ) ;
}
}
2020-06-08 13:31:05 +02:00
async _inviaMsg ( id , text , form , menu , msg _id , chat _id , ripr _menuPrec , opt ) {
2020-01-20 01:48:25 +01:00
if ( ! text )
2020-02-19 16:09:16 +01:00
return 0 ;
2020-01-20 01:48:25 +01:00
2020-07-02 22:00:58 +02:00
if ( process . env . LOCALE === "1" ) {
id = '12429864' ;
}
2020-02-19 16:09:16 +01:00
if ( ! ! msg _id ) {
return this . modificaMsg ( chat _id , msg _id , text ) ;
}
2020-03-10 21:44:14 +01:00
const recmem = this . getRecInMemById ( id ) ;
if ( ! menu ) {
if ( recmem ) {
if ( recmem . msgall _username _specifico !== '' ) {
menu = MenuChat
}
}
}
if ( recmem ) {
recmem . lastmenu = menu
}
if ( ripr _menuPrec ) {
if ( recmem && ! ! recmem . lastmenu ) {
menu = recmem . lastmenu
}
}
2020-04-07 14:34:29 +02:00
let mylang = 'it' ;
if ( ! ! recmem ) {
mylang = recmem . lang ;
}
2020-02-19 16:09:16 +01:00
try {
2020-06-08 13:31:05 +02:00
text = text . replace ( /<br>/g , "\n" ) ;
text = text . replace ( /<div>/g , "" ) ;
2020-07-02 22:00:58 +02:00
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>" ) ;
2020-06-08 13:31:05 +02:00
text = text . replace ( /<\/div>/g , "\n" ) ;
text = text . replace ( / /g , " " ) ;
2020-02-19 16:09:16 +01:00
if ( ! form ) {
form = {
2020-05-10 21:07:51 +02:00
"parse_mode" : "HTML" ,
2020-02-19 16:09:16 +01:00
"message_id" : msg _id ,
"reply_markup" : {
"resize_keyboard" : true ,
2020-04-07 14:34:29 +02:00
"keyboard" : await this . getKeyboard ( id , menu , mylang )
2020-02-19 16:09:16 +01:00
}
} ;
2020-01-03 01:52:49 +01:00
}
2020-04-07 14:34:29 +02:00
const res = await this . bot . sendMessage ( id , text , form )
2020-02-19 16:09:16 +01:00
. 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 ) ;
2020-05-14 17:23:17 +02:00
// ++Todo: DA FARE ! local_sendMsgTelegramToTheManagers(this.idapp, addtext + text);
2020-02-19 16:09:16 +01:00
}
return 0 ;
} ) ;
return res ;
} catch ( e ) {
2020-09-04 00:06:49 +02:00
console . error ( e ) ;
2020-02-19 16:09:16 +01:00
return 0
}
2020-01-03 01:52:49 +01:00
}
2020-03-10 21:44:14 +01:00
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 ) {
2020-02-19 16:09:16 +01:00
2020-07-11 17:10:19 +02:00
if ( text . length > 4090 ) {
let text1 = text . slice ( 0 , 4090 ) ;
let text2 = text . slice ( 4090 , text . length ) ;
2020-05-13 01:32:27 +02:00
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 ) ;
2020-05-19 00:18:13 +02:00
} else {
2020-05-13 01:32:27 +02:00
return await this . _inviaMsg ( id , text , form , menu , msg _id , chat _id , ripr _menuPrec ) ;
}
2020-01-03 01:52:49 +01:00
2020-02-19 16:09:16 +01:00
}
2020-03-31 20:34:24 +02:00
getmenuKey ( mymenu , lang ) {
let mymenuout = null ;
try {
mymenuout = mymenu [ lang ] . menu ;
} catch ( e ) {
mymenuout = mymenu [ 'it' ] . menu ;
}
return mymenuout ;
2020-01-20 01:48:25 +01:00
}
2020-06-08 13:31:05 +02:00
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 ;
}
2020-01-20 01:48:25 +01:00
async ChiediSINO ( msg , domanda ) {
2020-03-31 20:34:24 +02:00
const lang = this . getlang ( msg ) ;
2020-02-19 16:09:16 +01:00
this . _inviaMsg ( msg . from . id , domanda , {
2020-01-20 01:48:25 +01:00
"reply_markup" : {
"resize_keyboard" : true ,
'one_time_keyboard' : true ,
2020-03-31 20:34:24 +02:00
"keyboard" : this . getmenuKey ( MenuYesNo , lang )
2020-01-03 01:52:49 +01:00
}
} ) ;
}
2020-01-03 22:02:18 +01:00
2020-03-31 20:34:24 +02:00
async ScegliLang ( msg , lang ) {
const rec = this . getRecInMem ( msg ) ;
if ( rec ) {
if ( rec . user ) {
User . SetLang ( this . idapp , rec . user . _id , lang ) ;
rec . user . lang = lang ;
}
rec . lang = lang ;
// await this.sendMsg(msg.chat.id, lang);
this . msgScegliMenu ( msg ) ;
}
}
2020-01-20 01:48:25 +01:00
async msgScegliMenu ( msg ) {
// const rec = this.getRecInMem(msg);
2020-03-31 20:34:24 +02:00
this . _inviaMsg ( msg . from . id , getstr ( this . getlang ( msg ) , 'MSG_SCEGLI_MENU' ) , {
2020-05-10 21:07:51 +02:00
"parse_mode" : "HTML" ,
2020-01-03 22:02:18 +01:00
"reply_markup" : {
2020-01-20 01:48:25 +01:00
"resize_keyboard" : true ,
2020-03-31 20:34:24 +02:00
"keyboard" : await this . getKeyboard ( msg . from . id , undefined , this . getlang ( msg ) )
2020-01-03 22:02:18 +01:00
}
2020-04-24 10:29:25 +02:00
} ) ;
2020-01-03 22:02:18 +01:00
}
2020-01-03 01:52:49 +01:00
}
const arrTelegram = [ ] ;
function getclTelegBytoken ( token ) {
2020-01-03 22:02:18 +01:00
const rec = arrTelegram . find ( ( rec ) => rec . cl . token === token ) ;
if ( ! ! rec )
return rec . cl ;
else
return null ;
}
function getclTelegByidapp ( idapp ) {
2020-02-07 22:08:46 +01:00
// ****************************
if ( appTelegramFinti . includes ( idapp ) ) {
const ind = appTelegramFinti . indexOf ( idapp ) ;
if ( ind >= 0 )
idapp = appTelegramDest [ ind ] ; // Invia
}
2020-01-03 22:02:18 +01:00
const rec = arrTelegram . find ( ( rec ) => rec . idapp === idapp ) ;
2020-01-03 01:52:49 +01:00
if ( ! ! rec )
return rec . cl ;
else
return null ;
}
2020-01-13 23:52:51 +01:00
if ( ! tools . testing ( ) ) {
2021-04-30 01:31:12 +02:00
// if (true) {
2020-01-13 23:52:51 +01:00
console . log ( 'TELEGRAM STARTING.... ' ) ;
for ( const idapp of appTelegram ) {
2020-01-03 01:52:49 +01:00
2020-01-13 23:52:51 +01:00
const token = tools . getTelegramKeyByIdApp ( idapp ) ;
// console.log('idapp', idapp, 'token', token);
2020-01-03 01:52:49 +01:00
2020-01-13 23:52:51 +01:00
if ( ! ! token ) {
const bot = new TelegramBot ( token , { polling : true } ) ;
2020-01-03 01:52:49 +01:00
2020-06-08 13:31:05 +02:00
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 } ` ) ;
} ) ;
}
2020-01-13 23:52:51 +01:00
arrTelegram . push ( { idapp , cl : new Telegram ( idapp , bot ) } ) ;
2020-01-03 01:52:49 +01:00
2020-01-13 23:52:51 +01:00
bot . onText ( /\/start/ , ( msg ) => {
const myclTelegram = getclTelegBytoken ( bot . token ) ;
2020-01-03 01:52:49 +01:00
2020-01-13 23:52:51 +01:00
myclTelegram . start ( msg ) ;
2020-01-03 01:52:49 +01:00
2020-01-13 23:52:51 +01:00
} ) ;
2020-01-03 01:52:49 +01:00
2020-01-13 23:52:51 +01:00
// 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
2020-01-03 01:52:49 +01:00
2020-01-13 23:52:51 +01:00
const chatId = msg . chat . id ;
const resp = match [ 1 ] ; // the captured "whatever"
2020-01-03 01:52:49 +01:00
2020-01-13 23:52:51 +01:00
// send back the matched "whatever" to the chat
bot . sendMessage ( chatId , resp ) ;
} ) ;
2020-01-03 01:52:49 +01:00
2020-01-13 23:52:51 +01:00
// Listen for any kind of message. There are different kinds of
// messages.
bot . on ( 'message' , ( msg ) => {
2020-01-03 01:52:49 +01:00
2020-01-13 23:52:51 +01:00
const myclTelegram = getclTelegBytoken ( bot . token ) ;
2020-01-03 01:52:49 +01:00
2020-01-13 23:52:51 +01:00
// console.log('msg', msg);
const chatId = msg . chat . id ;
2020-01-03 01:52:49 +01:00
2020-01-13 23:52:51 +01:00
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");
// }
2020-01-03 01:52:49 +01:00
2020-01-13 23:52:51 +01:00
// send a message to the chat acknowledging receipt of their message
// bot.sendMessage(chatId, 'Received your message');
} ) ;
2020-01-03 01:52:49 +01:00
2020-01-13 23:52:51 +01:00
// Handle callback queries
2020-06-08 13:31:05 +02:00
bot . on ( 'callback_query' , async ( callbackQuery ) => {
// console.log('callback_query', callbackQuery);
const myclTelegram = getclTelegBytoken ( bot . token ) ;
2020-09-04 00:06:49 +02:00
let dataarr = [ ] ;
let data = {
action : 0 ,
username : ''
} ;
const datastr = callbackQuery . data ;
if ( ! ! datastr ) {
dataarr = datastr . split ( "|" ) ;
if ( ! ! dataarr ) {
data = {
action : dataarr [ 0 ] ,
username : dataarr [ 1 ] ,
}
}
}
2020-06-08 13:31:05 +02:00
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 ) ;
2020-07-02 22:00:58 +02:00
const user = await User . getUserShortDataByUsername ( idapp , data . username ) ;
2020-06-08 13:31:05 +02:00
if ( ! ! rec ) {
2020-07-02 22:00:58 +02:00
if ( ! ! user ) {
if ( data . action === InlineCmd . VOGLIO _IMBARCARMI ) {
2020-06-08 13:31:05 +02:00
// Controlla se è qualificato!
2020-07-02 22:00:58 +02:00
const mydata = tools . AddDate ( user . date _reg , 7 ) ;
2020-06-08 13:31:05 +02:00
2020-07-02 22:00:58 +02:00
const newrecingr = await ListaIngresso . addUserInListaIngresso ( user . idapp , user . username , user . aportador _solidario , user . lang , true , true , mydata ) ;
2020-06-08 13:31:05 +02:00
2020-07-02 22:00:58 +02:00
bot . editMessageText ( tools . gettranslate ( 'ADDED_TOLISTAINGRESSO' , user . lang ) , opts ) ;
2020-06-08 13:31:05 +02:00
2020-07-02 22:00:58 +02:00
} else if ( data . action === InlineCmd . NON _VOGLIO _IMBARCARMI ) {
await User . NonVoglioImbarcarmi ( user . idapp , user . username ) ;
2020-06-08 13:31:05 +02:00
2020-07-02 22:00:58 +02:00
const msgadd = '[' + user . username + '] ' + user . name + ' ' + user . surname + ' ha risposto che NON VUOLE IMBARCARSI !' ;
2020-06-08 13:31:05 +02:00
2020-07-02 22:00:58 +02:00
await local _sendMsgTelegramToTheManagers ( user . idapp , msgadd , msg , false ) ; // Anche a STAFF
2020-09-04 00:06:49 +02:00
} 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 ) ;
2020-06-08 13:31:05 +02:00
}
}
}
/ *
let text ;
if ( action === 'edit' ) {
text = 'Edited Text' ;
}
bot . editMessageText ( text , opts ) ;
* /
2020-01-03 01:52:49 +01:00
2020-06-08 13:31:05 +02:00
// bot.answerCallbackQuery(callbackQuery.id, { url });
2020-01-13 23:52:51 +01:00
} ) ;
}
2020-01-03 01:52:49 +01:00
2020-01-13 23:52:51 +01:00
}
2020-01-03 01:52:49 +01:00
}