123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154 |
- <?php
- define('BOT_TOKEN', '<bot_token>');
- define('API_URL', 'https://api.telegram.org/bot'.BOT_TOKEN.'/');
- define('CHANNEL', '<channel_id>');
- define('ADMIN_CHAT', '<admin_chat>');
- define('ADMIN_ID', '<admin_id>');
- $mysql_user = '<mysql_user>';
- $mysql_pass = '<mysql_pass>';
- $mysql_db = 'scusettebot';
- $db = new PDO('mysql:host=127.0.0.1;dbname=scusettebot;charset=utf8mb4', $mysql_user, $mysql_pass);
- $ingiurie = array( "Coglione!",
- "Oh ma ce la fai?",
- "Ti ripigli?",
- "Ma quanto sei ritardato?",
- "Sei proprio un @w00tw00t",
- "Messaggio ricevuto, sei ritardato",
- "Per caso lavori in Accenture?",
- "Senior Manager in Spike Reply vero?",
- "http://www.gtfo.org",
- "Hai l'aria di uno che fa Big Data per KPMG",
- "Mandato il CV a Deloitte?"
- );
- $help = "
- <strong>Scusette.it</strong> bot
- Per ricevere una scusetta random
- <pre>
- /random
- </pre>
- Per cercare una scusetta
- <pre>
- /query
- keyword
- </pre>
- Per inviare una scusetta invia un messaggio col seguente formato:
- <pre>
- /invia
- titolo scusetta
- corpo scusetta
- </pre>
- <em>Linee guida</em>:
- * Utilizza grammatica e capitalizzazione corrette
- * Il titolo e' il fatto e il corpo e' la scusetta in prima persona, prendi spunto da quelle gia' pubblicate
- * Valuta se anche se scontestualizzata la scusetta e' divertente lo stesso
- * La scusetta deve essere stata usata
- * Le scusette saranno pubblicate solo previa approvazione di un admin
- * Sta calmo e non piangere pls
- ";
- function reply($chatid, $reply) {
- return file_get_contents(API_URL."sendmessage?chat_id=".$chatid."&text=".urlencode($reply)."&parse_mode=HTML");
- }
-
- $content = file_get_contents("php://input");
- //file_put_contents('/tmp/debug.txt', $content);
- $update = json_decode($content, true);
- $chatid = $update["message"]["chat"]["id"];
- $fromid = $update["message"]["from"]["id"];
- $fromusername = $update["message"]["from"]["username"];
- $command = explode("\n", $update['message']['text'])[0];
- switch($command) {
- case '/start':
- $reply = $help;
- break;
- case '/invia':
- $exp = explode("\n", $update['message']['text']);
- $title = $exp[1];
- $body = $exp[2];
- $stmt = $db->prepare("INSERT INTO submissions (title, body, fromid, fromusername, timestamp) VALUES (?, ?, ?, ?, ?)");
- $stmt->execute(array($title, $body, $fromid, $fromusername, time()));
- reply(ADMIN_CHAT, "Nuova scusetta in coda, controlla con /list");
- $reply = "Scusetta inviata, se verra' approvata la vedrai pubblicata su scusette.it";
- break;
- case '/list':
- if ($fromid === ADMIN_ID) {
- $reply = "";
- $stmt = $db->prepare("SELECT * FROM submissions");
- $stmt->execute();
- $scusette = $stmt->fetchAll(PDO::FETCH_ASSOC);
- foreach ($scusette as $scusetta) {
- $reply = $reply."<strong>".$scusetta['id']."</strong> by @".$scusetta['fromusername']."\n<em>".$scusetta['title']."</em>\n".$scusetta['body']."\n\n";
- }
- } else {
- $reply = "Non ho capito";
- }
- break;
- case '/approve':
- if ($fromid === ADMIN_ID) {
- $exp = explode("\n", $update['message']['text']);
- $id = $exp[1];
- $stmt = $db->prepare("SELECT * FROM submissions WHERE id = ?");
- $stmt->execute(array($id));
- $scusetta = $stmt->fetch(PDO::FETCH_ASSOC);
- $slug = strtolower(preg_replace('/[^\p{L}0-9]+/u', '-', trim($scusetta['title'])));
- $stmt = $db->prepare("INSERT INTO anchor.anchor_posts (title, slug, markdown, html, created, updated, author, category, status) VALUES (?, ?, ?, ?, now(), now(), ?, ?, 'published')");
- $stmt->execute(array($scusetta['title'], $slug, htmlentities($scusetta['body']), "<p>".htmlentities($scusetta['body'])."</p>", 6, 1));
- $stmt = $db->prepare("DELETE FROM submissions WHERE id = ?");
- $stmt->execute(array($id));
- reply(CHANNEL, html_entity_decode("<strong>".htmlentities($scusetta["title"])."</strong>\n".htmlentities($scusetta["body"])));
- $reply = "https://scusette.it/blog/index.php/posts/".$slug;
-
- } else {
- $reply = "Non ho capito";
- }
- break;
- case '/delete':
- if ($fromid === ADMIN_ID) {
- $exp = explode("\n", $update['message']['text']);
- $id = $exp[1];
- $stmt = $db->prepare("DELETE FROM submissions WHERE id = ?");
- $stmt->execute(array($id));
- $reply = "Scusetta ".$id." eliminata";
- } else {
- $reply = "Non ho capito";
- }
- break;
- case '/random':
- $stmt = $db->prepare("SELECT title, markdown FROM anchor.anchor_posts ORDER BY RAND() LIMIT 1");
- $stmt->execute();
- $scusetta = $stmt->fetch(PDO::FETCH_ASSOC);
- $reply = html_entity_decode("<strong>".$scusetta["title"]."</strong>\n".$scusetta["markdown"]);
- break;
- case '/query':
- $search = "%".str_replace('%', '', explode("\n", $update['message']['text'])[1])."%";
- $stmt = $db->prepare("SELECT title, markdown FROM anchor.anchor_posts WHERE markdown LIKE ? OR title LIKE ? ORDER BY RAND() LIMIT 1");
- $stmt->execute(array($search, $search));
- $scusetta = $stmt->fetch(PDO::FETCH_ASSOC);
- if (!empty($scusetta)) {
- $reply = html_entity_decode("<strong>".$scusetta["title"]."</strong>\n".$scusetta["markdown"]);
- } else {
- $reply = "Nope!";
- }
-
- break;
- default:
- if ($fromid === ADMIN_ID) {
- $reply = "Ogni tuo desiderio e' un ordine padrone";
- } else {
- $reply = $ingiurie[array_rand($ingiurie, 1)];
- }
- //$reply = "Non ho capito";
- break;
- }
- reply($chatid, $reply);
-
- ?>
|