Advertisement
Guest User

Untitled

a guest
Nov 15th, 2016
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 42.39 KB | None | 0 0
  1. <head>
  2. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  3. </head>
  4. <?php
  5. // Regex pour retirer des data de log
  6. // (.*< (?!kmerci).*(?!c'est).*)|(.*< kmerci> )|(.*-!-.*) // Remplace le contenue par du vide si il ne coorespond pas
  7. // ^(.*a été vu.*)
  8. // ^(http.*)
  9.  
  10. // UPDATE utilisateur
  11. // SET utilisateur_mot_de_passe = 'botalacon', utilisateur_permission = 'Blumax'
  12. // WHERE utilisateur_pseudo = 'Akex_'
  13.  
  14.  
  15.  
  16. // Pas de limite de temps pour le script
  17. set_time_limit(0);
  18.  
  19. // Fuseau horaire de Paris.
  20. date_default_timezone_set('Europe/Paris');
  21.  
  22. $parametres['version_numero'] = "1.1";
  23. $parametres['version_date'] = "15/11/2016";
  24.  
  25. $parametres['salon'][] = '#reprapbot_beta';
  26. // $parametres['salon'][] = '#3dflextruder';
  27. //$parametres['salon'][] = '#reprap-fr';
  28. //$parametres['salon'][] = '#cnc-fr';
  29.  
  30.  
  31. $parametres['serveur'] = 'chat.freenode.net'; //Adresse du serveur irc
  32. $parametres['port'] = '6667'; //Port irc
  33. $parametres['pseudo'] = 'RepRapBot_beta'; //Nom du bot
  34.  
  35. $parametres['pause_min'] = 500000; // 1000000 = une secondes, temps avant de laisser le bot reparler, afin qu'il ne se fasse pas bannir.
  36.  
  37. $parametres['nickServPass'] = ''; //Password du nickserv
  38.  
  39. //Liste des mots réservés qui ne seront pas possible de lui apprendre
  40. $parametres['motReserve'][] = $parametres['pseudo'];
  41. $parametres['motReserve'][] = 'aide';
  42. $parametres['motReserve'][] = 'admin';
  43. $parametres['motReserve'][] = 'version';
  44.  
  45. //Délais d'attente entre 2 demande pour un mots en secondes
  46. $parametres['delaiEntreDemandes'] = 15;
  47.  
  48. $mysql_server = '127.0.0.1'; // Serveur MySQL
  49. $mysql_user = 'root'; // Utilisateur de MySQL
  50. $mysql_pass = ''; // Mot de pass MySQL
  51. $mysql_db = 'b'; // Nom de la base de données MySQL
  52. $mysql_port = '3306'; // Port du serveur MySQL
  53.  
  54. function coucou()
  55. {
  56. echo "coucou" ;
  57. }
  58.  
  59. //Connexion mysql
  60. try {
  61. $connexion = new PDO('mysql:host='.$mysql_server.';port='.$mysql_port.';dbname='.$mysql_db, $mysql_user, $mysql_pass);
  62. } catch(Exception $e) {
  63. echo 'ERREUR DE CONNEXION A MYSQL';
  64. exit();
  65. }
  66.  
  67. // Définit l'encodage des données
  68. $connexion->exec('SET NAMES utf8');
  69. $connexion->exec('SET GLOBAL time_zone = \'Europe/Paris\'');
  70.  
  71. //Connexion au serveur
  72. $socket = fsockopen($parametres['serveur'], $parametres['port']);
  73. if(!$socket) {
  74. echo 'Impossible de se connecter au serveur IRC';
  75. exit;
  76. }
  77.  
  78. // On renseigne l'USER : ici, je mets un peu n'importe quoi, vu que le serveur ne prend en compte que le premier argument (mais qu'il a besoin de 4 arguments).
  79. fputs($socket, 'USER '.$parametres['pseudo'].' '.$parametres['pseudo'].' MonNomestkmerciNewKmerci MonNomestkmerciNewKmerci'.PHP_EOL);
  80. fputs($socket, 'NICK '.$parametres['pseudo'].''.PHP_EOL);
  81.  
  82. $viendDetreKick = false;
  83.  
  84. while(true) {
  85. // Lit les données reçu.
  86. $recu = fgets($socket, 1024);
  87. /*
  88. if($recu === false) {
  89. for($i = 5; $i > 0; $i--) {
  90. echo 'Temps avant reconnexion : '.$i.PHP_EOL;
  91. sleep(1);
  92. }
  93. // Connexion au serveur
  94. $socket = fsockopen($parametres['serveur'], $parametres['port']);
  95. fputs($socket, 'USER '.$parametres['pseudo'].' '.$parametres['pseudo'].' MonNomestkmerciNewKmerci MonNomestkmerciNewKmerci'.PHP_EOL);
  96. fputs($socket, 'NICK '.$parametres['pseudo'].''.PHP_EOL);
  97. } else {
  98. */
  99. $recu = trim($recu);
  100.  
  101. if($recu) {
  102. echo $recu.PHP_EOL;
  103. // Analyse les données reçu
  104. preg_match("/^(?::(?:([^\s\!\@]+)|(?:([\S]+)!([\S]+)@([\S]+)))\s)?([\S]+)\s([^:\n\r]+)?(?::([^\n\r]*))?$/", $recu, $donnees);
  105. $donnees = array_map('trim', $donnees);
  106.  
  107. // Freenode nous attribut un mode +i automatiquement
  108. // Je me base sur cette information pour être sur d'être connecté
  109. // TODO: Il faudrai procéder autrement
  110. if($donnees[5] == 'MODE') {
  111. fputs($socket, 'PRIVMSG NickServ :identify '.$parametres['nickServPass'].PHP_EOL);
  112. foreach($parametres['salon'] as $cle => $val) {
  113. fputs($socket, 'JOIN '.$val.PHP_EOL);
  114. echo '--- Rejoint le salon '.$val.PHP_EOL;
  115. }
  116. }
  117.  
  118. // Si c'est un PING, on renvoie un PONG.
  119. if($donnees[5] == 'PING') {
  120. fputs($socket,"PONG ".$donnees[7].PHP_EOL);
  121. echo '--- PONG '.$donnees[7].PHP_EOL;
  122. }
  123.  
  124. // Si une personne rejoin le salon
  125. if($donnees[5] == 'JOIN') {
  126. if($donnees[2] == $parametres['pseudo']) {
  127. if(!$viendDetreKick) {
  128. // fputs($socket, 'PRIVMSG '.$donnees[6].' :Me revoilà, désolé j\'étais en vacances !'.PHP_EOL);
  129. } else {
  130. $viendDetreKick = false;
  131. }
  132. } else {
  133. $requette = $connexion->prepare('SELECT * FROM utilisateur WHERE utilisateur_pseudo = :utilisateur_pseudo AND utilisateur_salon = :utilisateur_salon');
  134. $requette->bindParam(':utilisateur_pseudo', $donnees[2], PDO::PARAM_STR);
  135. $requette->bindParam(':utilisateur_salon', $donnees[6], PDO::PARAM_STR);
  136. $requette->execute();
  137.  
  138. // Si l'utilisateur n'existe pas en base de données
  139. if($requette->rowCount() < 1) {
  140. $requette = $connexion->prepare('INSERT INTO utilisateur (utilisateur_pseudo, utilisateur_date_premier_fois, utilisateur_salon) VALUES (:utilisateur_pseudo, NOW(), :utilisateur_salon)');
  141. $requette->bindParam(':utilisateur_pseudo', $donnees[2], PDO::PARAM_STR);
  142. $requette->bindParam(':utilisateur_salon', $donnees[6], PDO::PARAM_STR);
  143. $requette->execute();
  144.  
  145. // fputs($socket, 'PRIVMSG '.$donnees[6].' :Bonjour '.$donnees[2].' ! Bienvenue sur '.$donnees[6].'. Si tu as besoin d\'aide tu peux taper "aide ?", je t\'expliquerai comment je fonctionne par message privé.'.PHP_EOL);
  146. }
  147. }
  148. }
  149.  
  150. // S’il y a une expulsion du canal.
  151. if($donnees[5] == 'KICK') {
  152. // Si l'expulsion conserne le robot
  153. if($donnees[7] == $parametres['pseudo']) {
  154. $viendDetreKick = true;
  155. fputs($socket, 'JOIN '.explode(' ', $donnees[6])[0].PHP_EOL);
  156. echo '--- Rejoint le salon '.explode(' ', $donnees[6])[0].PHP_EOL;
  157. fputs($socket, 'PRIVMSG '.explode(' ', $donnees[6])[0].' :Ce n\'est vraiment pas sympa '.$donnees[2].' :('.PHP_EOL);
  158. }
  159. }
  160.  
  161. if($donnees[5] == 'PRIVMSG') {
  162. // Si c'est un message privé adressé au robot
  163. if($donnees[6] == $parametres['pseudo'] && $donnees[7] != $parametres['pseudo']) {
  164. $requette = $connexion->prepare('SELECT * FROM admin WHERE admin_pseudo = :admin_pseudo');
  165. $requette->bindParam(':admin_pseudo', $donnees[2], PDO::PARAM_STR);
  166. $requette->execute();
  167. $affresult = $requette->fetch(PDO::FETCH_OBJ);
  168. if($requette->rowCount() < 1) {
  169. echo PHP_EOL.PHP_EOL.'PAS ADMIN'.PHP_EOL.PHP_EOL;
  170. $estAdmin = false;
  171. } else {
  172. echo PHP_EOL.PHP_EOL.'ADMIN !'.PHP_EOL.PHP_EOL;
  173. $estAdmin = true;
  174. }
  175.  
  176. // REPOND AUX QUESTIONS
  177. if(substr($donnees[7], -1, 1) == '?' && $estAdmin) {
  178. // Retir le ?
  179. $donnees[7] = trim(substr($donnees[7], 0, -1));
  180. if(str_word_count($donnees[7]) < 3) {
  181. if($donnees[7] == 'aide') {
  182. fputs($socket,'PRIVMSG '.$donnees[2].' :Pour voir les enregistrements pour un mot tape : mot ?'.PHP_EOL);
  183. fputs($socket,'PRIVMSG '.$donnees[2].' :Pour supprimer un mot tape : supprime id_mot ton_mot_de_passe'.PHP_EOL);
  184. } else {
  185. fputs($socket, 'PRIVMSG '.$donnees[2].' :Pour '.$donnees[7].' :'.PHP_EOL);
  186.  
  187. $requette = $connexion->prepare('SELECT * FROM mots WHERE mots = :mots');
  188. $requette->bindParam(':mots', $donnees[7], PDO::PARAM_STR);
  189. $requette->execute();
  190.  
  191. if($requette->rowCount() < 1) {
  192. fputs($socket,'PRIVMSG '.$donnees[2].' :Pas de réponse :('.PHP_EOL);
  193. } else {
  194. while($affresult = $requette->fetch(PDO::FETCH_OBJ)) {
  195. fputs($socket,'PRIVMSG '.$donnees[2].' :'.$affresult->mots_salon.' - '.$affresult->mots_id.' - '.$affresult->mots_reponse.PHP_EOL);
  196. usleep(1000000);
  197. }
  198. }
  199. }
  200. }
  201. }
  202.  
  203. preg_match("/^supprime[\:,]?\s+([0-9]+)\s(\w+){1}/", $donnees[7], $enregistre_donner);
  204. if(!empty($enregistre_donner) && $estAdmin) {
  205. if($estAdmin) {
  206. $requette = $connexion->prepare('SELECT * FROM admin WHERE admin_pseudo = :admin_pseudo');
  207. $requette->bindParam(':admin_pseudo', $donnees[2], PDO::PARAM_STR);
  208. $requette->execute();
  209. $affresult = $requette->fetch(PDO::FETCH_OBJ);
  210.  
  211. //On vérifie que le mot de passe est ok
  212. if(strpos($donnees[7], $affresult->admin_mot_de_passe) > 0)
  213. {
  214. //TODO: Faire une sauvegarde des donness supprimés
  215. $requette = $connexion->prepare('DELETE FROM mots WHERE mots_id = :mots_id LIMIT 1');
  216. $requette->bindParam(':mots_id', $enregistre_donner[1], PDO::PARAM_STR);
  217. $requette->execute();
  218. fputs($socket,'PRIVMSG '.$donnees[2].' :C\'est fait !'.PHP_EOL);
  219. usleep($parametres['pause_min']);
  220. }else{
  221. fputs($socket,'PRIVMSG '.$donnees[2].' :Mot de passe érroné !'.PHP_EOL);
  222. }
  223. } else {
  224. fputs($socket,'PRIVMSG '.$donnees[2].' :Vous n\'avez pas les permissions requises.'.PHP_EOL);
  225. usleep($parametres['pause_min']);
  226. }
  227. }
  228.  
  229.  
  230.  
  231.  
  232. } else { // Si ce n'est pas un MP
  233.  
  234. $requette = $connexion->prepare('
  235. INSERT INTO utilisateur
  236. (utilisateur_pseudo, utilisateur_date_premier_fois, utilisateur_salon, utilisateur_derniere_parole_date, utilisateur_derniere_parole)
  237. VALUES
  238. (:utilisateur_pseudo, NOW(), :utilisateur_salon, NOW(), :utilisateur_derniere_parole)
  239. ON DUPLICATE KEY UPDATE
  240. utilisateur_derniere_parole_date = NOW(),
  241. utilisateur_derniere_parole = :utilisateur_derniere_parole,
  242. utilisateur_parole_nombre = utilisateur_parole_nombre +1'
  243. );
  244. $requette->bindParam(':utilisateur_pseudo', $donnees[2], PDO::PARAM_STR);
  245. $requette->bindParam(':utilisateur_salon', $donnees[6], PDO::PARAM_STR);
  246. $requette->bindParam(':utilisateur_derniere_parole', $donnees[7], PDO::PARAM_STR);
  247. $requette->execute();
  248.  
  249. // REPONDS AUX QUESTIONS
  250. if(substr($donnees[7], -1, 1) == '?') {
  251. // Retir le ?
  252. $donnees[7] = trim(substr($donnees[7], 0, -1));
  253.  
  254. // Si il y a moins de 3 mots (un ou deux)
  255. if(str_word_count($donnees[7]) < 3) {
  256.  
  257. switch ($donnees[7]) {
  258. case 'aide':
  259. // Sur le salon ou l'utilisateur à demande de l'aide
  260. fputs($socket,'PRIVMSG '.$donnees[6].' :'.$donnees[2].' je te parle en message privé afin de ne pas importuner les autres.'.PHP_EOL);
  261. usleep($parametres['pause_min']);
  262.  
  263.  
  264. // Envoyer en message privé à l'utilisateur
  265. fputs($socket, 'PRIVMSG '.$donnees[2].' :Bonjour '.$donnees[2].PHP_EOL);
  266. usleep($parametres['pause_min'] * 4);
  267. fputs($socket, 'PRIVMSG '.$donnees[2].' :Je suis un robot pour simplifier la vie de tout le monde.'.PHP_EOL);
  268. usleep($parametres['pause_min'] * 4);
  269. fputs($socket, 'PRIVMSG '.$donnees[2].' :Si tu souhaites obtenir une information, réfléchis au mot clé et saisis ce mot suivi d\'un point d\'interrogation.'.PHP_EOL);
  270. usleep($parametres['pause_min'] * 4);
  271. fputs($socket, 'PRIVMSG '.$donnees[2].' :Par exemple si tu veux savoir comment allumer la lumière, tape simplement "lumière ?".'.PHP_EOL);
  272. usleep($parametres['pause_min'] * 4);
  273. fputs($socket, 'PRIVMSG '.$donnees[2].' :Mon apprentisage est propre à chaque salon, il faut donc me poser les questions sur le salon en question.'.PHP_EOL);
  274. usleep($parametres['pause_min'] * 4);
  275. fputs($socket, 'PRIVMSG '.$donnees[2].' :Pour la recherche par mot clé si tu souhaites plus d\'aide pour trouver un mot que tu cherches dis-moi en privé "mot"'.PHP_EOL);
  276. usleep($parametres['pause_min'] * 4);
  277. fputs($socket, 'PRIVMSG '.$donnees[2].' :Si tu cherches quelqu\'un tu peux me demander "vu le_pseudo_de_la_personne".'.PHP_EOL);
  278. usleep($parametres['pause_min'] * 4);
  279.  
  280.  
  281. break;
  282.  
  283. case 'admin':
  284. $requette = $connexion->prepare('SELECT admin_pseudo FROM admin ORDER BY admin_pseudo');
  285. $requette->execute();
  286. $i = 1;
  287. $retour = '';
  288. while($affresult = $requette->fetch(PDO::FETCH_OBJ)) {
  289. if($requette->rowCount() == $i) {
  290. $retour .= $affresult->admin_pseudo;
  291. } else {
  292. $retour .= $affresult->admin_pseudo.', ';
  293. }
  294. $i++;
  295. }
  296.  
  297. fputs($socket,'PRIVMSG '.$donnees[6].' :Les admins sont '.$retour.'.'.PHP_EOL);
  298. usleep($parametres['pause_min']);
  299. break;
  300.  
  301. case 'version':
  302. fputs($socket,'PRIVMSG '.$donnees[6].' :Je suis la version '.$parametres["version_numero"].' du '.$parametres["version_date"].PHP_EOL);
  303. usleep($parametres['pause_min']);
  304. break;
  305.  
  306. case $parametres['pseudo']:
  307. $requette = $connexion->prepare('
  308. SELECT
  309. *
  310. FROM
  311. utilisateur
  312. WHERE
  313. utilisateur_parole_nombre = (SELECT MAX(utilisateur_parole_nombre) FROM utilisateur WHERE utilisateur_salon = :utilisateur_salon)
  314. ');
  315. $requette->bindParam(':utilisateur_salon', $donnees[6], PDO::PARAM_STR);
  316. $requette->execute();
  317. $affresult = $requette->fetch(PDO::FETCH_OBJ);
  318.  
  319. fputs($socket, 'PRIVMSG '.$donnees[6].' :'.$parametres['pseudo'].' c\'est moi ! Et sans vouloir balancer le plus bavard de '.$donnees[6].' c\'est "Je ne vous le dirais pas !".'.PHP_EOL);
  320. //fputs($socket, 'PRIVMSG '.$donnees[6].' :'.$parametres['pseudo'].' c\'est moi ! Et sans vouloir balancer le plus bavard de '.$donnees[6].' c\'est '.$affresult->utilisateur_pseudo.PHP_EOL);
  321. usleep($parametres['pause_min']);
  322. break;
  323.  
  324. default:
  325. if(strpos($donnees[7], '*') === false) {
  326. $requette = $connexion->prepare('SELECT * FROM mots WHERE mots_salon = :mots_salon AND mots = :mots');
  327. $requette->bindParam(':mots', $donnees[7], PDO::PARAM_STR);
  328. $requette->bindParam(':mots_salon', $donnees[6], PDO::PARAM_STR);
  329. $requette->execute();
  330.  
  331. $requette_update = $connexion->prepare('UPDATE mots SET derniere_demande = NOW() WHERE mots_salon = :mots_salon AND mots = :mots');
  332. $requette_update->bindParam(':mots', $donnees[7], PDO::PARAM_STR);
  333. $requette_update->bindParam(':mots_salon', $donnees[6], PDO::PARAM_STR);
  334. $requette_update->execute();
  335.  
  336. if($requette->rowCount() < 1) {
  337. //echo 'PAS DE REPONSE';
  338. } else {
  339. $premier = true;
  340. $reponse = '';
  341. while($affresult = $requette->fetch(PDO::FETCH_OBJ)) {
  342. //Si on a demandé trop récemment on affiche rien
  343. if((time() - strtotime($affresult->derniere_demande)) < $parametres['delaiEntreDemandes'])
  344. {
  345. echo "FLOOD sur le mot : ".$donnees[7] ;
  346. break;
  347. }
  348.  
  349. if(!$premier) {
  350. $reponse .= ' | ';
  351. } else {
  352. $premier = false;
  353. }
  354.  
  355. $reponse .= $affresult->mots_reponse;
  356.  
  357. //Si la chaine est trop longue on scinde en plusieurs parties pour pouvoir tout afficher
  358. if(strlen($reponse) >= 350)
  359. {
  360. fputs($socket,'PRIVMSG '.$donnees[6].' :'.$donnees[7].' c\'est '.$reponse.PHP_EOL);
  361. $reponse = '' ;
  362. $premier = true;
  363. usleep(500000) ;
  364. }
  365. }
  366.  
  367. //Si on sort de la boucle et qu'il y a eu un élément ajouté a la reponse
  368. if(!$premier)
  369. {
  370. fputs($socket,'PRIVMSG '.$donnees[6].' :'.$donnees[7].' c\'est '.$reponse.PHP_EOL);
  371. }
  372. usleep($parametres['pause_min']);
  373. }
  374. } else { // Si on rentre ici, alors on effectue une recherche approcimative
  375. $requette = $connexion->prepare('SELECT DISTINCT(mots) FROM mots WHERE mots LIKE :mots');
  376. $requette->bindValue(':mots', '%'.preg_replace('/[^[:alnum:]]/', '', $donnees[7]).'%', PDO::PARAM_STR);
  377. $requette->execute();
  378.  
  379. //Si la requete n'a rien trouvé
  380. //Sinon si la requete possède trop de résultats, il demande de cibler la recherche
  381. //Sinon on affiche tout
  382. if($requette->rowCount() < 1) {
  383. fputs($socket,'PRIVMSG '.$donnees[6].' :Je n\'ai rien trouvé pour ce mot :('.PHP_EOL);
  384. usleep($parametres['pause_min']);
  385. } else if($requette->rowCount() >= 100)
  386. {
  387. fputs($socket,'PRIVMSG '.$donnees[6].' :Trop de résultats, essai de cibler ta demande ('.$requette->rowCount().' résultats)'.PHP_EOL);
  388. } else {
  389. $premier = true;
  390. $reponse = '';
  391. while($affresult = $requette->fetch(PDO::FETCH_OBJ)) {
  392. if(!$premier) {
  393. $reponse .= ', ';
  394. } else {
  395. $premier = false;
  396. }
  397.  
  398. $reponse .= $affresult->mots;
  399.  
  400. //Si la chaine est trop longue on scinde en plusieurs parties pour pouvoir tout afficher
  401. if(strlen($reponse) >= 350)
  402. {
  403. fputs($socket,'PRIVMSG '.$donnees[6].' :Tu peux essayer : '.$reponse.PHP_EOL);
  404. $reponse = '' ;
  405. $premier = true;
  406. usleep(500000) ;
  407. }
  408. }
  409. //Si on sort de la boucle et qu'il y a eu un élément ajouté a la reponse
  410. if(!$premier)
  411. {
  412. fputs($socket,'PRIVMSG '.$donnees[6].' :Tu peux essayer : '.$reponse.PHP_EOL);
  413. }
  414. usleep($parametres['pause_min']);
  415. }
  416. }
  417. break;
  418. }
  419.  
  420.  
  421. }
  422.  
  423. }
  424.  
  425. // Commande vu pour savoir depuis quand cette personne s'est connecté
  426. $enregistre_donner = null;
  427. preg_match('/^vu ([^\n ]*)\n?$/imu', $donnees[7], $enregistre_donner);
  428. if(!empty($enregistre_donner)) {
  429. $requette = $connexion->prepare('
  430. SELECT
  431. *,
  432. DATE_FORMAT(utilisateur_derniere_parole_date, "%d/%m/%Y à %H:%i") AS date,
  433. DATE_FORMAT(utilisateur_date_premier_fois, "%d/%m/%Y à %H:%i") AS date_premier_vu,
  434. (SELECT SUM(utilisateur_parole_nombre) FROM utilisateur WHERE utilisateur_salon = :utilisateur_salon) AS total,
  435. (SELECT MAX(utilisateur_parole_nombre) FROM utilisateur WHERE utilisateur_salon = :utilisateur_salon) AS max
  436. FROM
  437. utilisateur
  438. WHERE
  439. utilisateur_pseudo = :utilisateur_pseudo
  440. AND utilisateur_salon = :utilisateur_salon
  441. ');
  442. $requette->bindParam(':utilisateur_pseudo', $enregistre_donner[1], PDO::PARAM_STR);
  443. $requette->bindParam(':utilisateur_salon', $donnees[6], PDO::PARAM_STR);
  444. $requette->execute();
  445.  
  446. if($requette->rowCount() < 1) {
  447. fputs($socket,'PRIVMSG '.$donnees[6].' :Désolé je n\'ai pas vu '.$enregistre_donner[1].' ...'.PHP_EOL);
  448. usleep($parametres['pause_min']);
  449. } else {
  450. $affresult = $requette->fetch(PDO::FETCH_OBJ);
  451. fputs($socket,'PRIVMSG '.$donnees[6].' :'.$affresult->utilisateur_pseudo.' a été vu la dernière fois le '.$affresult->date.' il disait "'.$affresult->utilisateur_derniere_parole.'". Il à écrit '.$affresult->utilisateur_parole_nombre.' lignes sur les '.$affresult->total.' lignes que j\'ai analysées. La première fois que je l\'ai vu c\'était le '.$affresult->date_premier_vu.'.'.PHP_EOL);
  452. usleep($parametres['pause_min']);
  453. /*if($affresult->utilisateur_parole_nombre == $affresult->max) {
  454. fputs($socket,'PRIVMSG '.$donnees[6].' :Félicitation '.$affresult->utilisateur_pseudo.' tu est le plus grand bavard de la communauté '.$donnees[6].' !'.PHP_EOL);
  455. usleep($parametres['pause_min']);
  456. }*/
  457. }
  458.  
  459. }
  460.  
  461.  
  462. // Apprentisage des mot par une phrase pré définit Nom_du_robot LE_MOT_A_APPRENDRE pour LA_REPONSE_A_APPORTER
  463. $enregistre_donner = null;
  464. preg_match('/^'.$parametres['pseudo'].'[\:,]?\s+((\w+\s+){1,2})c\'est\s(.+)/i', $donnees[7], $enregistre_donner);
  465. if(!empty($enregistre_donner)) {
  466. $enregistre_donner[1] = trim($enregistre_donner[1]);
  467.  
  468. // Si le mot clé est composer de moins de 3 mots
  469. // et que le nom du salon commence par # // Pour éviter l'apprentisage dans les MP
  470. // et que le mot n'est pas reserver
  471. if(str_word_count($enregistre_donner[1]) < 3 && $donnees[6][0] == '#' && !in_array($enregistre_donner[1], $parametres['motReserve'])) {
  472. $requette = $connexion->prepare('SELECT * FROM mots WHERE mots = :mots AND mots_reponse = :mots_reponse');
  473. $requette->bindParam(':mots', $enregistre_donner[1], PDO::PARAM_STR);
  474. $requette->bindParam(':mots_reponse', $enregistre_donner[3], PDO::PARAM_STR);
  475. $requette->execute();
  476.  
  477. // Si l'information n'existe pas, la sauvegarder
  478. if($requette->rowCount() < 1) {
  479. echo 'SA MATCH POUR LINSERT'.PHP_EOL.PHP_EOL;
  480.  
  481. $requette = $connexion->prepare('INSERT INTO mots (mots, mots_reponse, mots_date, mots_auteur, mots_salon) VALUES (:mots, :mots_reponse, NOW(), :mots_auteur, :mots_salon)');
  482. $requette->bindParam(':mots', $enregistre_donner[1], PDO::PARAM_STR);
  483. $requette->bindParam(':mots_reponse', $enregistre_donner[3], PDO::PARAM_STR);
  484. $requette->bindParam(':mots_auteur', $donnees[2], PDO::PARAM_STR);
  485. $requette->bindParam(':mots_salon', $donnees[6], PDO::PARAM_STR);
  486. $requette->execute();
  487.  
  488. fputs($socket,'PRIVMSG '.$donnees[6].' :J\'ai enregistré l\'information.'.PHP_EOL);
  489. usleep($parametres['pause_min']);
  490. } else {
  491. fputs($socket,'PRIVMSG '.$donnees[6].' :Cette question/réponse existe déjà !'.PHP_EOL);
  492. usleep($parametres['pause_min']);
  493. }
  494. } else {
  495. fputs($socket,'PRIVMSG '.$donnees[6].' :Désolé, je ne peux pas faire cela !'.PHP_EOL);
  496. usleep($parametres['pause_min']);
  497. }
  498. }
  499. }
  500.  
  501. }
  502. }
  503. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement