<?php
 
 
// example containing a trivia plugin and a command line non-blocking client that supports input/output
 
 
    require_once('class.phpircclient.php');
 
 
    // create a plugin
 
    class MyPlugin {
 
        private $pClient; // parent client
 
 
        // send messages //
 
        public function send($message) {
 
            $this->pClient->send($message);
 
        }
 
 
        // send messages with delay //
 
        public function send_delayed($message, $delay) {
 
            $this->pClient->send_delayed($message, $delay);
 
        }
 
        
 
        // construct // set parent
 
        public function __construct($client) {
 
            $this->pClient = $client;
 
        }
 
 
        // every plugin must have this function // it processes incoming lines
 
        public function process($line) {
 
            echo "Plugin: $line\n";
 
        }
 
    } // end plugin example
 
 
 
 
 
 
 
    class TriviaPlugin {
 
        
 
        // someone starts a private message with our chatclient and types: !trivia
 
        // the chatclient will then start a trivia game with that person
 
        // very simple... but you can make it more complex if you want
 
 
        private $pClient; // parent client
 
 
        private $questions = array(
 
            "What is the capital of France?", // Question 1
 
            "What is the highest mountain in the world?", // Question 2
 
            // Add more questions here...
 
        );
 
        private $answers = array(
 
            "Paris", // Answer to Question 1
 
            "Mount Everest", // Answer to Question 2
 
            // Add more answers here...
 
        );
 
        private $current_question = 0;
 
        private $waiting_for_answer = false;
 
 
        
 
        // construct // set parent
 
        public function __construct($client) {
 
            $this->pClient = $client;
 
        }
 
 
        public function get_nick()
 
        {
 
            return $this->pClient->nick;
 
        }
 
 
        // send messages //
 
        public function send($message) {
 
            $this->pClient->send($message); // sends a raw irc message
 
        }
 
        // send messages with delay //
 
        public function send_delayed($message, $delay) {
 
            $this->pClient->send_delayed($message, $delay); // send a raw message with delay
 
        }
 
 
        public function msg_user($user, $message) {
 
            $str = $this->pClient->str_send_message($user, $message); // make the string to send to a user
 
            $this->pClient->send($str); // send the strings
 
        }
 
 
        // every plugin must have this function // it processes incoming lines
 
        public function process($line) {
 
            echo "Plugin: $line\n";
 
 
            // Check if the incoming message is a private message
 
            if (preg_match('/^:([^!]+)!([^@]+)@([^ ]+) PRIVMSG ([^ ]+) :(.+)/', $line, $matches)) {
 
                $sender = $matches[1];
 
                $channel = $matches[4];
 
                $message = $matches[5];
 
 
                print_r($matches);
 
                print($sender."===");
 
                print($this->get_nick());
 
                echo "===\r\n";
 
            
 
                if ($sender == $this->get_nick()) {
 
                    return;
 
                }
 
 
                // Check if the message is a command to start the trivia game
 
                if (strtolower($message) == "!trivia") {
 
                    // Check if the game is already in progress
 
                    if ($this->waiting_for_answer) {
 
                        $this->msg_user($sender, "A game of trivia is already in progress!");
 
                    } else {
 
                        $this->msg_user($sender, "Starting a new game of trivia!");
 
                        $this->current_question = 0;
 
                        $this->waiting_for_answer = true;
 
 
                        # send user the question
 
                        $this->msg_user($sender, "Question 1- " . $this->questions[$this->current_question]);
 
                        return;
 
                    }
 
                }
 
 
                // Check if the plugin is currently waiting for an answer to a trivia question
 
                if ($this->waiting_for_answer) {
 
                    // Check if the message is the correct answer to the current question
 
                    if (strtolower($message) == strtolower($this->answers[$this->current_question])) {
 
                        $this->msg_user($sender, "Correct!");
 
                        $this->current_question++;
 
 
                        // now if the current question is the last question, reset the game
 
                        if($this->current_question == count($this->questions)) {
 
                            $this->current_question = 0;
 
                            $this->waiting_for_answer = false;
 
                            $this->msg_user($sender, "Game over!");
 
                            return;
 
                        }
 
 
                        // Check if there are more questions
 
                        if ($this->current_question < count($this->questions)) {
 
                            $this->msg_user($sender, "Question " . ($this->current_question + 1) . "- " . $this->questions[$this->current_question]);
 
                        } else {
 
                            // $this->send("Game over!");
 
                            $this->waiting_for_answer = false;
 
                        }
 
                    } else {
 
                        $this->msg_user($sender, "Incorrect! Try again.");
 
                        // repeat question
 
                        $this->msg_user($sender, "Question " . ($this->current_question + 1) . "- " . $this->questions[$this->current_question]);
 
                    }
 
                } // end waiting for answer
 
            }
 
        }
 
    } // end trivia bot example
 
 
 
    $nick = 'yournickhere';
 
    $user = 'yourusernamehere';
 
    $realname = 'a name';
 
 
    $channel = "#ircclientexample";
 
 
    $client = new IRCClient('irc.defineya.com', 6667, $channel); #doesn't connect to channel off the hop.
 
 
    // attach plugins //
 
    $client->plugins[] = new MyPlugin($client);
 
    $client->plugins[] = new TriviaPlugin($client);
 
 
    $client->connect();
 
    // now send login and join channel commands
 
    $client->send_delayed($client->str_login($nick, $user, $realname), 2);
 
    $client->send_delayed($client->str_join_channel($channel), 3);
 
 
    $client->startLoop();
 
    $client->disconnect();
 
 
?>
 
 
 |