diff --git a/webhook.php b/webhook.php new file mode 100644 index 0000000..93efa63 --- /dev/null +++ b/webhook.php @@ -0,0 +1,274 @@ +{"message"}->{"text"}); + if ($command_list[0] == $command || $command_list[0] == $command . "@" . $bot_name) { + return True; + } + else { + return False; + } +} + +// Send code back to the sender. +function send_code($post_message) { + global $bot_api; + global $chat_id; + $url = 'https://api.telegram.org/bot' . $bot_api . '/sendMessage'; + $post_msg = array('chat_id' => $chat_id, 'text' => '```\n ' . $post_message . '```', 'parse_mode' => 'markdown' ); + $options = array( + 'http' => array( + 'header' => "Content-type: application/x-www-form-urlencoded\r\n", + 'method' => 'POST', + 'content' => http_build_query($post_msg) + ) + ); + $context = stream_context_create($options); + $result = file_get_contents($url, false, $context); +} + +// Send text back to the sender. +function send_text($post_message) { + global $bot_api; + global $chat_id; + $url = 'https://api.telegram.org/bot' . $bot_api . '/sendMessage'; + $post_msg = array('chat_id' => $chat_id, 'text' =>$post_message ); + $options = array( + 'http' => array( + 'header' => "Content-type: application/x-www-form-urlencoded\r\n", + 'method' => 'POST', + 'content' => http_build_query($post_msg) + ) + ); + $context = stream_context_create($options); + $result = file_get_contents($url, false, $context); +} + + +// Send html back to the sender. +function send_html($post_message) { + global $bot_api; + global $chat_id; + $url = 'https://api.telegram.org/bot' . $bot_api . '/sendMessage'; + $post_msg = array('chat_id' => $chat_id, 'text' =>$post_message, 'parse_mode' => 'html'); + $options = array( + 'http' => array( + 'header' => "Content-type: application/x-www-form-urlencoded\r\n", + 'method' => 'POST', + 'content' => http_build_query($post_msg) + ) + ); + $context = stream_context_create($options); + $result = file_get_contents($url, false, $context); +} + +// Returns Insults +function get_insults() { + global $decoded; + if ($decoded->{"message"}->{"from"}->{"id"} == 394312580){ + return "Sorry master, I am unable to do that."; + } + else { + $insults = file('insults.txt'); + return $insults[rand(0,count($insults)-1)]; + } +} + +// Logs Intruder +function intruder() { + global $decoded; + $text = "id: " . $chat_id . "first name" . $decoded->{"message"}->{"chat"}->{"first_name"} . "\n"; + $file=fopen('attempter','a'); + fwrite($file,$text); + fclose($file); + send_text("You are not authorized to view the commits. Contact @ceda_ei for details"); +} + +// Generates random words +function rand_words($onewordmode) { + global $command_list; + if($onewordmode == 1){ + $num = 1; + } + else { + if (isset($command_list[1])) { + $num = $command_list[1]; + } + else { + $num = 10; + } + } + $num++; + $words = array(); + if (is_integer($num)) { + $wordlist = file("/usr/share/dict/british"); + for ($word=1; $word < $num; $word++) { + $words[] = $wordlist[rand(0,count($wordlist))]; + } + send_text(implode(' ', $words)); + } + else { + send_text(get_insults()); + } +} + +// Checks if the domain is available +function domain_checker() { + global $command_list; + if (isset($command_list[1])) { + $title=$command_list[1]; + $title .= '.com'; + $title = escapeshellarg($title); + exec("whois $title | grep 'No match for domain' &> /dev/null && echo Domain Available || echo Domain Not Available", $output); + $post_text = $title ." " . implode(' ', $output); + send_text($post_text); + } + else { + send_text(insults()); + } +} + +function rand_question() +{ + $questions = file('rand_questions.txt'); + $question = $questions[rand(0,count($questions))]; + send_text($question); +} + +function arch_wiki() +{ + global $command_list; + $search_query = ""; + for ($i=1; $i < count($command_list); $i++) { + $search_query .= $command_list[$i]; + if ($i < count($command_list) - 1) { + $search_query .= " "; + } + } + if (preg_match('/^\s*$/', $search_query)) { + send_text('Missing search query'); + return; + } + $url = "https://wiki.archlinux.org/api.php?action=opensearch&format=json&search=" . urlencode($search_query); + $a = json_decode(file_get_contents($url)); + send_html("" . $a[1][0] . ""); +} + +// Get JSON from post, store it and decode it. +$var = file_get_contents('php://input'); +$json = fopen('json', "w"); +fwrite($json, $var); +fclose($json); +$decoded = json_decode($var); + +// If message is a reply, exit +if (isset($decoded->{"message"}->{"reply_to_message"})) { + exit(); +} + +function coin() +{ + $random = rand(0,1); + if ($random == 1) { + send_text('Heads'); + } + else { + send_text('Tails'); + } +} + +function yes_or_no() +{ + $random = rand(0,1); + if ($random == 1) { + send_text('Yes'); + } + else { + send_text('No'); + } +} + +// Store the chat ID +$chat_id = $decoded->{"message"}->{"chat"}->{"id"}; + +$modules = array( + array( + "command" => "/word", + "function" => "rand_words(1);" + ), + array( + "command" => "/words", + "function" => "rand_words(0);" + ), + array( + "command" => "/dc", + "function" => "domain_checker();" + ), + array( + "command" => "/question", + "function" => "rand_question();" + ), + array( + "command" => "/wiki", + "function" => "arch_wiki();" + ), + array( + "command" => "/coin", + "function" => "coin();" + ), + array( + "command" => "/is", + "function" => "yes_or_no();" + ), + array( + "command" => "/can", + "function" => "yes_or_no();" + ), + array( + "command" => "/will", + "function" => "yes_or_no();" + ), + array( + "command" => "/shall", + "function" => "yes_or_no();" + ), + array( + "command" => "/was", + "function" => "yes_or_no();" + ), + array( + "command" => "/does", + "function" => "yes_or_no();" + ), + array( + "command" => "/did", + "function" => "yes_or_no();" + ), + array( + "command" => "/should", + "function" => "yes_or_no();" + ) +); + +if (!isset($decoded->{"message"}->{"text"})){ + exit(); +} +if (isset($decoded->{"message"}->{"pinned_message"})){ + exit(); +} + +$command_list = explode(" ", $decoded->{"message"}->{"text"}); + +foreach ($modules as $module ) { + if (check_command($module["command"])) { + eval($module["function"]); + exit(); + } +} +send_text(get_insults()); +?>