2023-05-24 10:40:54 +02:00
< ? php
$tm = microtime ( true );
// Comprova els arguments, en cas de no existir presenta l'ajuda.
if ( ! empty ( $_SERVER [ " argv " ][ 1 ])){
$argument = $_SERVER [ " argv " ][ 1 ];
2024-08-21 20:50:04 +02:00
// $mstg = $_SERVER["argv"][2];
2023-05-24 10:40:54 +02:00
} else {
// Presenta l'ajuda
echo " NO HE REBUT la variable " ;
exit ;
}
$lloc = $argument ;
// ara podrá carregar la configuració i el logger
include ( " " . $lloc . " /configuracio/bot_plus_cfg.php " );
include ( " " . $lloc . " /utils/bot_plus_funcions.php " );
require_once ( " " . $lloc . " /lib/logger.php " );
// inicia el log
$log = new Logging ();
$log -> lfile ( '' . $log_fitxer . '' );
$log -> lwrite ( " Estàn activades les respostes a les mencions. " );
2024-08-21 20:50:04 +02:00
if ( $control_memoria_utils == 1 ) {
$log -> lwrite ( mostra_us_memoria () . " " . mostra_pic_memoria () . " - " . __LINE__ );
}
2023-05-24 10:40:54 +02:00
// preparatius i variables comunes
$resposta = ConsultaNotificacions ( $token , $base_url , $limit_m , $headers );
$tmc = microtime ( true );
$dcon = $tmc - $tm ;
2024-08-21 20:50:04 +02:00
//print_r($resposta);
//exit;
2023-05-24 10:40:54 +02:00
$nr = count ( $resposta );
$menc_mat = array ();
$d = 0 ;
for ( $d = 0 ; $d < $nr ; $d ++ ) {
// triar les variables que volem de la matriu
$men_id = $resposta [ $d ][ 'id' ];
$mencio = $resposta [ $d ][ 'type' ];
$men_tp = $resposta [ $d ][ 'created_at' ];
$usu_id = $resposta [ $d ][ 'account' ][ 'id' ];
$usu_ac = $resposta [ $d ][ 'account' ][ 'acct' ];
// $usu_no = $resposta[$d]['account']['username'];
// $usu_dp = $resposta[$d]['account']['display_name'];
2024-08-21 20:50:04 +02:00
2023-05-24 10:40:54 +02:00
if ( $mencio == " mention " ) {
$mis_id = $resposta [ $d ][ 'status' ][ 'id' ];
2024-08-21 20:50:04 +02:00
$mis_vis = $resposta [ $d ][ 'status' ][ 'visibility' ];
$mstg = html_entity_decode ( strip_tags ( $resposta [ $d ][ 'status' ][ 'content' ]));
} else { $mis_id = 0 ; $mstg = null ; $mis_vis = 'direct' ; }
// echo "".$mis_vis."-".$d."\n";
$menc_mat [] = array ( 'id' => ( int ) $men_id , 'mis_id' => ( int ) $mis_id , 'qui' => $usu_ac , 'mencio' => $mencio , 'quan' => $men_tp , 'que' => $mstg , 'visib' => $mis_vis );
2023-05-24 10:40:54 +02:00
}
2024-08-21 20:50:04 +02:00
//print_r($menc_mat);
//exit;
2023-05-24 10:40:54 +02:00
$nombre_matriu = count ( $menc_mat );
$men_resp = null ;
2024-08-21 20:50:04 +02:00
$reg_tam = filesize ( " " . $lloc . " /fitxers/mencions_r.txt " );
$reg_lin = count ( file ( " " . $lloc . " /fitxers/mencions_r.txt " ));
$reg_lin_bak = count ( file ( " " . $lloc . " /fitxers/mencions_r.bak " ));
if ( ( $reg_tam == 0 ) || ( $reg_lin < ( $reg_lin_bak )) ) {
$log -> lwrite ( " ALERTA! El fitxer mencions_r te " . $reg_lin . " linies. Cal posar-ne més. " );
$recuperar = 1 ;
$copia_seguretat_rec = shell_exec ( " cat " . $lloc . " /fitxers/mencions_r.bak > " . $lloc . " /fitxers/mencions_r.txt " );
} else {
$recuperar = 0 ;
}
2023-05-24 10:40:54 +02:00
// llegir fitxer per evitar repeticions
$mencio_arx = shell_exec ( " cat " . $lloc . " /fitxers/mencions_r.txt " );
// verificar que un usuari fa més d'una volta la mateixa acció (?);
$e = 0 ;
$nm = 0 ;
$num_seg = 0 ;
$mr = 0 ;
for ( $e = 0 ; $e < $nombre_matriu ; $e ++ ) {
$m_id = $menc_mat [ $e ][ 'id' ];
$miss_id = $menc_mat [ $e ][ 'mis_id' ];
$usuari = $menc_mat [ $e ][ 'qui' ];
$mencio_t = $menc_mat [ $e ][ 'mencio' ];
$temps = $menc_mat [ $e ][ 'quan' ];
2024-08-21 20:50:04 +02:00
$mstg = $menc_mat [ $e ][ 'que' ];
$mis_vis = $menc_mat [ $e ][ 'visib' ];
2023-05-24 10:40:54 +02:00
$mencio_arx = shell_exec ( " cat " . $lloc . " /fitxers/mencions_r.txt " );
$no_repetir = strpos ( $mencio_arx , $miss_id );
if ( $mencio_t == " mention " ) {
// if ( ($mencio_t == "mention") && ($mis_id <>0)) {
$no_repetir = strpos ( $mencio_arx , $miss_id );
// echo "no repetir: ".$e."|".$usuari."|".$no_repetir."\n";
// $log->lwrite("no repetir: ".$e."|".$usuari."|".$no_repetir."");
// sleep(2);
if ( ( $no_repetir === false ) ) {
// echo "menció de : ".$usuari." - ".$mencio_t." - ".$miss_id."\n";
2024-08-21 20:50:04 +02:00
if ( is_int ( $miss_id / 7 )) {
$men_resp = " Ja em disculparàs, @ " . $usuari . " soc un bot :cli_user: amb la versió " . $bot_versio . " i estic aprenent a entendre els comentaris. \n De tota manera, moltes gràcies per la teua menció. \n 🤖 #SocUnBot " ;
} elseif ( is_int ( $miss_id / 5 )) {
$men_resp = " M'agrada molt que em menciones. Així aprendré a entendre els tuts, @ " . $usuari . " .:cli_user: \n Soc " . $bot_nom . " v " . $bot_versio . " :cli_user: \n 🤖 #SocUnBot " ;
} elseif ( is_int ( $miss_id / 3 )) {
$men_resp = " He vist que m'has mencionat, @ " . $usuari . " i et done les gràcies per que així aprendré.:cli_user: \n Soc " . $bot_nom . " v " . $bot_versio . " :cli_user: \n 🤖 #SocUnBot " ;
} elseif ( is_int ( $miss_id / 2 )) {
$men_resp = " Agraït per la menció, @ " . $usuari . " , em serveix per aprendre el vocabulari.:cli_user: \n Soc " . $bot_nom . " v " . $bot_versio . " :cli_user: \n 🤖 #SocUnBot " ;
} else {
$men_resp = " Gràcies per mencionar-me i ajudar-me a entendre el llenguatge natural, @ " . $usuari . " . Soc " . $bot_nom . " i la meua versió és " . $bot_versio . " :cli_user:. \n 🤖 #SocUnBot " ;
}
// $mem_rep = "Em sembla que el teu comentari @".$usuari." és ".$sentiment."\n".
2023-05-24 10:40:54 +02:00
$en_resposta = $miss_id ;
if ( ( $men_resp != null ) ) {
2024-08-21 20:50:04 +02:00
$conteste = rand ( 0 , 1000 );
if ( ( $act_mencio_resp == 1 ) && ( $conteste == 25 ) ){
$contestar = strpos ( $mstg , " comentabot " );
$comp_info = strpos ( $mstg , " infobot " );
$comp_imps = strpos ( $mstg , " impulsosbot " );
$comp_orat = strpos ( $mstg , " oratgebot " );
$comp_salu = strpos ( $mstg , " saludabot " );
$comp_usu = strpos ( $mstg , " usuaribot " );
if ( ( $contestar == false ) && ( $comp_info == false ) &&
( $comp_salu == false ) && ( $comp_orat == false ) && ( $comp_imps == false ) &&
( $comp_usu == false )
) {
// Publica a Mastodon
$dades_tut = array (
" status " => $men_resp ,
" language " => $llengua ,
// "visibility" => $visib_mencs,
" visibility " => $mis_vis ,
" in_reply_to_id " => $en_resposta
);
//print_r($status_data);
//sleep(10);
PublicaMissatge ( $base_url , $headers , $dades_tut );
$log -> lwrite ( " NOVA MENCIO: " . $men_resp . " : " . $usuari . " - id: " . $en_resposta . " " );
// final detectar etiqueta
}
2023-05-24 10:40:54 +02:00
}
2024-08-21 20:50:04 +02:00
$contestar = strpos ( $mstg , " comentabot " );
$comp_info = strpos ( $mstg , " infobot " );
$comp_imps = strpos ( $mstg , " impulsosbot " );
$comp_orat = strpos ( $mstg , " oratgebot " );
$comp_salu = strpos ( $mstg , " saludabot " );
$comp_usu = strpos ( $mstg , " usuaribot " );
if ( ( $comp_salu == false ) && ( $comp_info == false ) &&
( $comp_imps == false ) && ( $comp_orat == false ) &&
( $comp_usu == false )
){
2023-05-24 10:40:54 +02:00
$decisio = TriaOpcio ( $en_resposta );
if ( ( $decisio == 1 ) ||
( $decisio == 2 ) ||
( $decisio == 3 ) ||
( $decisio == 4 ) ||
2024-08-21 20:50:04 +02:00
( $decisio == 5 ) ) {
2023-05-24 10:40:54 +02:00
//if(is_int($en_resposta/2)) {
FesRebloc ( $base_url , $en_resposta , $headers );
$heoptat = " he fet impuls " ;
//print_r($fav_output_status);
} elseif ( ( $decisio == 6 ) ||
( $decisio == 7 ) ||
2024-08-21 20:50:04 +02:00
( $decisio == 8 ) ||
( $decisio == 9 ) ) {
2023-05-24 10:40:54 +02:00
FesFavorit ( $base_url , $en_resposta , $headers );
$heoptat = " he fet favorit " ;
} else {
FesFavorit ( $base_url , $en_resposta , $headers );
FesRebloc ( $base_url , $en_resposta , $headers );
$heoptat = " he fet impuls i favorit " ;
//print_r($reb_output_status);
}
2024-08-21 20:50:04 +02:00
} else { $heoptat = " Detectada etiqueta interna. Faig el tut de resposta " ; }
2023-05-24 10:40:54 +02:00
// escriu la menció al fitxer per no repetir-la
$escriu_mencions = fopen ( $lloc . " /fitxers/mencions_r.txt " , " a " ) or die ( " No puc escriure al registre! " );
fwrite ( $escriu_mencions , $en_resposta . " \n " );
fclose ( $escriu_mencions );
//echo "".$men_resp." - id: ".$en_resposta." ";
2024-08-21 20:50:04 +02:00
$mencs_tam = filesize ( " " . $lloc . " /fitxers/mencions_r.txt " );
$mencs_lin = count ( file ( " " . $lloc . " /fitxers/mencions_r.txt " ));
$mencs_tam_b = filesize ( " " . $lloc . " /fitxers/mencions_r.bak " );
$mencs_lin_b = count ( file ( " " . $lloc . " /fitxers/mencions_r.bak " ));
if (( $mencs_tam > $mencs_tam_b ) || ( $mencs_lin > $mencs_lin_b )) {
$copia_seguretat = exec ( " cat " . $lloc . " /fitxers/mencions_r.txt > " . $lloc . " /fitxers/mencions_r.bak " , $eixida_cs , $resposta_cs );
if ( $resposta_cs != 0 ) {
$log -> lwrite ( " INFO: copia de_seguretat mencions_r: " . ( (( $resposta_cs == 0 )) ? " correcte " : " ERRADA " ) . " " );
}
}
if ( ( $comp_salu == false ) && ( $comp_info == false ) && ( $comp_imps == false ) && ( $comp_orat == false ) && ( $comp_usu == false ) ){
2023-05-24 10:40:54 +02:00
$escriu_mencions_detall = fopen ( $lloc . " /fitxers/mencions.txt " , " a " ) or die ( " No puc escriure al registre! " );
2024-08-21 20:50:04 +02:00
fwrite ( $escriu_mencions_detall , $m_id . " ::: " . $en_resposta . " ::: " . $usuari . " ::: " . $mencio_t . " ::: " . $temps . " ::: " . $mstg . " \n " );
2023-05-24 10:40:54 +02:00
fclose ( $escriu_mencions_detall );
2024-08-21 20:50:04 +02:00
$mencs_tam = filesize ( " " . $lloc . " /fitxers/mencions.txt " );
$mencs_lin = count ( file ( " " . $lloc . " /fitxers/mencions.txt " ));
$mencs_tam_b = filesize ( " " . $lloc . " /fitxers/mencions.bak " );
$mencs_lin_b = count ( file ( " " . $lloc . " /fitxers/mencions.bak " ));
if (( $mencs_tam > $mencs_tam_b ) || ( $mencs_lin > $mencs_lin_b )) {
$copia_seguretat = exec ( " cat " . $lloc . " /fitxers/mencions.txt > " . $lloc . " /fitxers/mencions.bak " , $eixida_cs , $resposta_cs );
if ( $resposta_cs != 0 ) {
$log -> lwrite ( " INFO: copia de seguretat mencions detall: " . ( (( $resposta_cs == 0 )) ? " correcte " : " ERRADA " ) . " " );
}
}
2023-05-24 10:40:54 +02:00
// echo "He escrit ". $m_id."-".$en_resposta."-".$usu_ac."-".$temps."\n";
$mr ++ ;
2024-08-21 20:50:04 +02:00
}
2023-05-24 10:40:54 +02:00
}
2024-08-21 20:50:04 +02:00
$menc_mat_f [] = array ( 'id' => ( int ) $m_id , 'mis_id' => ( int ) $miss_id , 'qui' => $usuari , 'mencio' => $mencio_t , 'quan' => $temps , 'que' => $mstg );
2023-05-24 10:40:54 +02:00
$nm ++ ;
// echo "nm: ".$nm."\n";
$log -> lwrite ( " NOVA MENCIO: " . $usuari . " - id: " . $en_resposta . " " . $mencio_t . " " . $heoptat );
2024-08-21 20:50:04 +02:00
if ( ( $comp_info === false ) && ( $comp_salu === false ) && ( $comp_imps === false ) && ( $comp_orat === false ) && ( $comp_usu === false ) ) {
// active VaderSentiment
// primer neteje la cadena a enviar
$mstg = html_entity_decode ( strip_tags ( $mstg ));
$mstg = str_replace ([ " ' " , " ` " , " ’ " , " \n " ], ' ' , $mstg );
$mstg = str_replace ([ '#' , '&' , '"' , '“' , '”' ], '' , $mstg );
$log -> lwrite ( " envie: " . $mstg . " - " . $en_resposta . " - " . $usuari . " - " . $mis_vis );
$emocio_act = shell_exec ( " php -f " . $lloc . " /proves/proves_conversa.php " . $lloc . " ' " . $mstg . " ' " . $en_resposta . " " . $usuari . " " . $temps . " " . $mencio_t . " " . $m_id . " " );
$log -> lwrite ( " INFO: emocio_act " . ( ( $emocio_act != null ) ? " correcte " : " ERRADA " ) . " " );
} else {
// $log -> lwrite("envie: ".$mstg."-".$en_resposta."-".$usuari."-".$mis_vis);
if ( $comp_info != false ) {
$fertutinfobot = exec ( " php -f " . $lloc . " /utils/bot_plus_tut_info.php " . $lloc . " ' " . $mstg . " ' " . $en_resposta . " " . $usuari . " " . $mis_vis . " " , $ftinfo_eix , $ftinfo_res );
// $log -> lwrite("PROVA: fertutinfobot ".$ftinfo_res);
$log -> lwrite ( " INFO: fertutinfobot " . ( ( $ftinfo_res == 0 ) ? " correcte " : " ERRADA " ) . " " );
// $log -> lwrite("INFO: ".$ftinfo_res." enviat: ".$mstg."-".$en_resposta."-".$usuari."-".$mis_vis."");
}
if ( $comp_salu != false ) {
$fertutsaludabot = exec ( " php -f " . $lloc . " /utils/bot_plus_tut_salutacio.php " . $lloc . " ' " . $mstg . " ' " . $en_resposta . " " . $usuari . " " . $mis_vis . " " , $ftsalu_eix , $ftsalu_res );
// if($ftsalu_res != 0) {
$log -> lwrite ( " INFO: fertutsaludabot " . ( ( $ftsalu_res == 0 ) ? " correcte " : " ERRADA " ) . " " );
// $log -> lwrite("INFO: ".$ftsalu_res." enviat: '".$mstg."'-".$en_resposta."-".$usuari."-".$mis_vis."");
// }
}
if ( $comp_imps != false ) {
$fertutimpulsosbot = exec ( " php -f " . $lloc . " /utils/bot_plus_tut_impulsos.php " . $lloc . " ' " . $mstg . " ' " . $en_resposta . " " . $usuari . " " . $mis_vis . " " , $ftimps_eix , $ftimps_res );
// if($ftimps_res != 0) {
$log -> lwrite ( " INFO: fertutimpulsosbot " . ( ( $ftimps_res == 0 ) ? " correcte " : " ERRADA " ) . " " );
// $log -> lwrite("INFO: ".$ftimps_res." enviat: '".$mstg."'-".$en_resposta."-".$usuari."-".$mis_vis."");
// }
}
if ( $comp_orat != false ) {
$fertutoratgebot = exec ( " php -f " . $lloc . " /utils/bot_plus_tut_oratge.php " . $lloc . " ' " . $mstg . " ' " . $en_resposta . " " . $usuari . " " . $mis_vis . " " , $ftorat_eix , $ftorat_res );
// if($ftorat_res != 0) {
$log -> lwrite ( " INFO: fertutoratgebot " . ( ( $ftorat_res == 0 ) ? " correcte " : " ERRADA " ) . " " );
// $log -> lwrite("INFO: ".$ftorat_res." enviat: '".$mstg."'-".$en_resposta."-".$usuari."-".$mis_vis."");
// }
}
if ( $comp_usu != false ) {
$fertutusuaribot = exec ( " php -f " . $lloc . " /utils/bot_plus_tut_usuari.php " . $lloc . " ' " . $mstg . " ' " . $en_resposta . " " . $usuari . " " . $mis_vis . " " , $ftusu_eix , $ftusu_res );
// if($ftorat_res != 0) {
$log -> lwrite ( " INFO: fertutusuaribot " . ( ( $ftusu_res == 0 ) ? " correcte " : " ERRADA " ) . " " );
// $log -> lwrite("INFO: ".$ftusu_res." enviat: '".$mstg."'-".$en_resposta."-".$usuari."-".$mis_vis."");
// }
}
}
2023-05-24 10:40:54 +02:00
// final missatge no es nul
}
//final no repetir
}
// final bucle for
}
2024-08-21 20:50:04 +02:00
// fer la matriu de les dades existents al json amb filtrat d'etiquetes
if ( ( $nm > 0 ) && ( $comp_info == false ) && ( $comp_salu == false ) && ( $comp_orat == false ) && ( $comp_imps == false ) && ( $comp_usu == false ) ) {
//$usa_json = exec("php ".$lloc."/proves/proves_impulsos_json.php ".$lloc , $eix_usa_json, $resp_usa_json);
$usa_json = shell_exec ( " php " . $lloc . " /utils/bot_plus_mencions_json.php " . $lloc );
}
2023-05-24 10:40:54 +02:00
2024-08-21 20:50:04 +02:00
if ( $mem_net == 1 ) { $menc_mat = null ; $menc_mat_f = null ; unset ( $menc_mat , $menc_mat_f ); }
2023-05-24 10:40:54 +02:00
2024-08-21 20:50:04 +02:00
//retalle a un màxim de XXX linies
$fit_mencions = $lloc . " /fitxers/mencions_r.txt " ;
$lin_men = count ( file ( $fit_mencions ));
2023-05-24 10:40:54 +02:00
2024-08-21 20:50:04 +02:00
if ( $lin_men > $max_linies ) {
// $net_men0 = shell_exec("tail -".$max_linies." ".$lloc."/fitxers/mencions_r.txt | tee ".$lloc."/fitxers/mencions_r.txt");
$fitx = new SplFileObject ( $lloc . " /fitxers/mencions_r.txt " , " r " );
$fitx -> seek ( PHP_INT_MAX );
$last_line = $fitx -> key ();
$lines = new LimitIterator ( $fitx , $last_line - $max_linies , $last_line ); //n being non-zero positive integer $max_linies
// print_r(iterator_to_array($lines));
// Iterate each element
$it = iterator_to_array ( $lines );
$escriu_magatzem = fopen ( $lloc . " /fitxers/mencions_r.txt " , " w " ) or die ( " No puc escriure la data! " );
foreach ( $it as $ele ){
// echo nl2br($ele . "\n");
fwrite ( $escriu_magatzem , $ele );
// usleep(100000);
}
fclose ( $escriu_magatzem );
2023-05-24 10:40:54 +02:00
2024-08-21 20:50:04 +02:00
$net_men00 = shell_exec ( " cat " . $lloc . " /fitxers/mencions_r.txt > " . $lloc . " /fitxers/mencions_r.bak " );
usleep ( 200000 );
2023-05-24 10:40:54 +02:00
}
2024-08-21 20:50:04 +02:00
$fit_mencions = $lloc . " /fitxers/mencions.txt " ;
2023-05-24 10:40:54 +02:00
$lin_men = count ( file ( $fit_mencions ));
2024-08-21 20:50:04 +02:00
if ( $lin_men > $max_linies ) {
// $net_men1 = shell_exec("tail -".$max_linies." ".$lloc."/fitxers/mencions.txt | tee ".$lloc."/fitxers/mencions.txt");
$fitxs = new SplFileObject ( $lloc . " /fitxers/mencions.txt " , " r " );
$fitxs -> seek ( PHP_INT_MAX );
$last_lin = $fitxs -> key ();
$lines = new LimitIterator ( $fitxs , $last_lin - $max_linies , $last_lin ); //n being non-zero positive integer $max_linies
// print_r(iterator_to_array($lines));
// Iterate each element
$it = iterator_to_array ( $lines );
$escriu_magatzem = fopen ( $lloc . " /fitxers/mencions.txt " , " w " ) or die ( " No puc escriure la data! " );
foreach ( $it as $ele ){
// echo nl2br($ele . "\n");
fwrite ( $escriu_magatzem , $ele );
// usleep(100000);
}
fclose ( $escriu_magatzem );
$net_men1 = shell_exec ( " cat " . $lloc . " /fitxers/mencions.txt > " . $lloc . " /fitxers/mencions.bak " );
//}
$men_tam = filesize ( " " . $lloc . " /fitxers/mencions.txt " );
$men_lin = count ( file ( " " . $lloc . " /fitxers/mencions.txt " ));
$men_lin_bak = count ( file ( " " . $lloc . " /fitxers/mencions.bak " ));
if ( $men_tam == 0 ) {
$recupera = shell_exec ( " php " . $lloc . " /utils_cli/bot_plus_cli_mencions_json_cli_refer.php " . $lloc );
}
if ( $men_lin_bak <= $men_lin ) {
$cop_men0 = shell_exec ( " cat " . $lloc . " /fitxers/mencions_r.txt > " . $lloc . " /fitxers/mencions_r.bak " );
$cop_men1 = shell_exec ( " cat " . $lloc . " /fitxers/mencions.txt > " . $lloc . " /fitxers/mencions.bak " );
}
2023-05-24 10:40:54 +02:00
}
$tmf = microtime ( true );
$dm = $tmf - $tm ;
//echo "Temps mencions: ".round($dm,4)."";
2024-08-21 20:50:04 +02:00
$log -> lwrite ( " Temps mencions: " . round ( $dm , 4 ) . " segons " );
2023-05-24 10:40:54 +02:00
// afegir aqui i arrancar els impulsos?
2024-08-21 20:50:04 +02:00
// buidar variables
if ( $mem_net == 1 ) {
$resposta = null ; $lin_men = null ; $reg_lin = null ; $reg_lin_bak = null ; $mencs_lin = null ; $mencs_lin_b = null ;
unset ( $resposta , $lin_men , $reg_lin , $reg_lin_bak , $mencs_lin , $mencs_lin_b );
}
if ( $control_memoria_utils == 1 ) {
$log -> lwrite ( mostra_us_memoria () . " " . mostra_pic_memoria () . " - " . __LINE__ );
}
2023-05-24 10:40:54 +02:00
?>