bot_plus/utils/bot_plus_mencions.php
2023-05-24 10:40:54 +02:00

210 líneas
6,8 KiB
PHP

<?php
$tm = microtime(true);
// Comprova els arguments, en cas de no existir presenta l'ajuda.
if (!empty($_SERVER["argv"][1])){
$argument = $_SERVER["argv"][1];
} 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.");
// preparatius i variables comunes
$resposta = ConsultaNotificacions($token,$base_url,$limit_m,$headers);
$tmc = microtime(true);
$dcon = $tmc - $tm;
$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'];
} else { $mis_id = 0; }
$menc_mat[] = array ( 'id' => (int)$men_id, 'mis_id' => (int)$mis_id, 'qui' => $usu_ac, 'mencio' => $mencio, 'quan' => $men_tp );
// }
// echo "tipus de menció ".$d.": ".$mencio." i nº ".$men_id." - qui: ".$qui."\n";
// sleep(1);
}
$nombre_matriu = count($menc_mat);
$men_resp = null;
//if($nombre_matriu >= 1) {
// 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'];
$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 encara no converse. \nDe tota manera, moltes gràcies per la teua menció.\n🤖 #SocUnBot";
} elseif (is_int($miss_id/5)) {
$men_resp = "Moltes gràcies per la menció, @".$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.: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.".:cli_user:\n Soc ".$bot_nom." v".$bot_versio." :cli_user:\n🤖 #SocUnBot";
} else {
$men_resp = "Gràcies per mencionar-me, @".$usuari.". Soc ".$bot_nom." i la meua versió és ".$bot_versio." :cli_user:.\n🤖 #SocUnBot";
}
$en_resposta = $miss_id;
if ( ($men_resp != null) ) {
if($act_mencio_resp == 1) {
// Publica a Mastodon
$dades_tut = array(
"status" => $men_resp,
"language" => $llengua,
"visibility" => $visib_mencs,
"in_reply_to_id" => $en_resposta
);
//print_r($status_data);
//sleep(10);
PublicaMissatge($headers,$base_url,$dades_tut);
$log->lwrite("NOVA MENCIO: ".$men_resp." : ".$usuari." - id: ".$en_resposta." ");
}
$decisio = TriaOpcio($en_resposta);
if( ($decisio == 1) ||
($decisio == 2) ||
($decisio == 3) ||
($decisio == 4) ||
($decisio == 5) ||
($decisio == 8) ||
($decisio == 9) ) {
//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 == 10) ) {
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);
}
// 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." ";
$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."\n");
fclose($escriu_mencions_detall);
// 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 );
$nm++;
// echo "nm: ".$nm."\n";
$log->lwrite("NOVA MENCIO: ".$usuari." - id: ".$en_resposta." ".$mencio_t." ".$heoptat);
// final missatge no es nul
}
//final no repetir
}
// final bucle for
}
/**
if($nm>=1) {
$fes_json = json_encode($menc_mat_f, JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES|JSON_OBJECT_AS_ARRAY);
$escriu_f_json = fopen($lloc."/fitxers/mencions.json", "a") or die("No puc escriure al registre!");
fwrite($escriu_f_json, $fes_json);
fclose($escriu_f_json);
}
**/
// $menc_json_actual = shell_exec("php /proves/proves_mencions_json.php.");
//print_r($output_status);
//}
//echo $nm."\n";
//final if publicat
// }
// final condicional per estalviar temps(?)
//}
//$impuls = shell_exec("php ".$lloc."/proves/proves_mencions_json.php ".$lloc);
// fer la matriu de les dades existents al json
if ($nm > 0) {
//$usa_json = exec("php ".$lloc."/proves/proves_impulsos_json.php ".$lloc , $eix_usa_json, $resp_usa_json);
$usa_json = shell_exec("php ".$lloc."/proves/proves_mencions_json.php ".$lloc);
}
//retalle a un màxim de 40 linies
$fit_mencions = $lloc."/fitxers/mencions_r.txt";
$lin_men = count(file($fit_mencions));
if($lin_men > 60) {
$net_men0 = shell_exec("tail -60 ".$lloc."/fitxers/mencions_r.txt | tee ".$lloc."/fitxers/mencions_r.txt");
$net_men1 = shell_exec("tail -60 ".$lloc."/fitxers/mencions.txt | tee ".$lloc."/fitxers/mencions.txt");
}
$tmf = microtime(true);
$dm = $tmf - $tm;
//echo "Temps mencions: ".round($dm,4)."";
$log->lwrite("Temps mencions: ".round($dm,4)."");
// afegir aqui i arrancar els impulsos?
?>