lfile(''.$log_fitxer.''); $log->lwrite("Estàn activades les respostes a les mencions."); if($control_memoria_utils == 1) { $log -> lwrite ( mostra_us_memoria()." ".mostra_pic_memoria()." - ".__LINE__ ); } // preparatius i variables comunes $resposta = ConsultaNotificacions($token,$base_url,$limit_m,$headers); $tmc = microtime(true); $dcon = $tmc - $tm; //print_r($resposta); //exit; $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']; if ($mencio == "mention") { $mis_id = $resposta[$d]['status']['id']; $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 ); } //print_r($menc_mat); //exit; $nombre_matriu = count($menc_mat); $men_resp = null; $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; } // 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']; $mstg = $menc_mat[$e]['que']; $mis_vis = $menc_mat[$e]['visib']; $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"; 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. \nDe 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". $en_resposta = $miss_id; if ( ($men_resp != null) ) { $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 } } $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) ){ $decisio = TriaOpcio($en_resposta); if( ($decisio == 1) || ($decisio == 2) || ($decisio == 3) || ($decisio == 4) || ($decisio == 5) ) { //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) || ($decisio == 8) || ($decisio == 9) ) { 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); } } else { $heoptat = "Detectada etiqueta interna. Faig el tut de resposta"; } // 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." "; $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) ){ $escriu_mencions_detall = fopen($lloc."/fitxers/mencions.txt", "a") or die("No puc escriure al registre!"); fwrite($escriu_mencions_detall, $m_id.":::".$en_resposta.":::".$usuari.":::".$mencio_t.":::".$temps.":::".$mstg."\n"); fclose($escriu_mencions_detall); $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").""); } } // echo "He escrit ". $m_id."-".$en_resposta."-".$usu_ac."-".$temps."\n"; $mr++; } } $menc_mat_f[] = array( 'id' => (int)$m_id, 'mis_id' => (int)$miss_id, 'qui' => $usuari, 'mencio' => $mencio_t, 'quan' => $temps, 'que' => $mstg ); $nm++; // echo "nm: ".$nm."\n"; $log->lwrite("NOVA MENCIO: ".$usuari." - id: ".$en_resposta." ".$mencio_t." ".$heoptat); 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.""); // } } } // final missatge no es nul } //final no repetir } // final bucle for } // 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); } if($mem_net == 1) { $menc_mat = null; $menc_mat_f = null; unset($menc_mat,$menc_mat_f); } //retalle a un màxim de XXX linies $fit_mencions = $lloc."/fitxers/mencions_r.txt"; $lin_men = count(file($fit_mencions)); 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); $net_men00= shell_exec("cat ".$lloc."/fitxers/mencions_r.txt > ".$lloc."/fitxers/mencions_r.bak"); usleep(200000); } $fit_mencions = $lloc."/fitxers/mencions.txt"; $lin_men = count(file($fit_mencions)); 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"); } } $tmf = microtime(true); $dm = $tmf - $tm; //echo "Temps mencions: ".round($dm,4).""; $log->lwrite("Temps mencions: ".round($dm,4)." segons"); // afegir aqui i arrancar els impulsos? // 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__ ); } ?>