PHP Classes
Icontem

File: class.boboirc.php


  Search   All class groups All class groups   Latest entries Latest entries   Top 10 charts Top 10 charts   Newsletter Newsletter   Blog Blog   Forums Forums   Help FAQ Help FAQ  
  Login   Register  
Recommend this page to a friend! ReTweet ReTweet Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of JImmy Bo  >  Bobo PHP IRC Class  >  class.boboirc.php  
File: class.boboirc.php
Role: Class source
Content type: text/plain
Description: The class file for Bobo's PHP IRC Class
Class: Bobo PHP IRC Class
Client to access IRC servers
 

Contents

Class file image Download
<?

error_reporting
(E_ALL);

/* Please leave this comment in at the top of the script if you use this script
 * in it's entirety. That is my only request. Other then that have fun.
 *
 * Now you too can create irc bots too 8 )
 * created by bobo (uregina -at- gmail -dot- com)
 * feel free to email me and tell me what you think
 * feel free to visit my site (http://hexmud.com) I sometimes throw things there
 * or if you have any cool optimizations for it
 *
 * example usage:
 * $ircbot = new boboirc($nick, $ident, $realname, $host, $port);
 * $ircbot->joinChan('#phphelp'); // usually where u can find great help on undernet. #php is useless
 * $ircbot->loop(); // begin loop (so program doesn't die right away)
 * 
 * to add new commands to your new bobot, scroll down to the following function 
 * parse_command($command, $msg)
 * and follow the directions. It's easy. I'm easy.
 *
 * Also if you're looking for help from me directly you can usually find me
 * slumming it on #phphelp on the undernet irc network.
 * my nick on there is usually _P_H_P_ 
 *
 */
 

class boboirc
{
    
private $fp$readbuffer$line$mcommands;
    
public $nick$ident$realname$host$port;
    
    function 
boboirc($nick$ident$realname$host$port)
    {
        
$this->nick         $nick;
        
$this->ident         $ident;
        
$this->realname $realname;
        
$this->host         $host;
        
$this->port         $port;

        
$this->fp fsockopen($host$port$erno$errstr30);
        if(!
$this->fp) die("Could not connect\r\n");
        
    
fwrite($this->fp"NICK ".$nick."\r\n");
    
fwrite($this->fp"USER ".$ident." ".$host." bla :".$realname."\r\n");

        
$this->flush();

    }
    
    function 
loop()
    {
        
// now for program loop //
        
while (!feof($this->fp)) 
        {
            
$this->line fgets($this->fp256); // wait for a message

            
if($this->is_ping($this->line)) $this->pong();
                        
            if(
strstr($this->line,"PRIVMSG"))
            {
                echo 
"PRIVMSG...  \r\n";
                
// incoming private message //
                
$msg $this->msgToArray($this->line);
                                
                
// is this a command?
                
if($command $this->get_command($msg['msg']))
                {
                    echo 
"processing command ($command)... \r\n";
                    
// erase command from message array  // array('from, 'chan', 'msg'); //
                    
$msg['msg'] = trim(str_replace($command,'',$msg['msg']));
                    echo 
"parsing command ($command)... \r\n";
                    
$this->parse_command($command$msg);
                }
            }
            
            
$this->line "";
            
$this->flush();
            
$this->wait(); // time to next cycle
        
}

    }
    
    
// outgoing //
    
function out($msg// raw message
    
{
        if(@empty(
$msg)) return false;
        if(!
strstr($msg"\n")) $msg .= "\n";

        
fwrite($this->fp$msg);
        return 
true;
    }
    
    function 
setNick($nick)                        { $this->out("NICK ".$nick."\r\n"); $this->nick $nick; }
    function 
joinChan($channel)             { $this->out("JOIN :".$channel."\r\n"); }
    function 
quitChan($channel)             { $this->out("PART :".$channel."\r\n"); }

    function 
listChans()                             { $this->out("LIST\r\n"); }
    function 
getTopic($channel)                { $this->out("TOPIC ".$channel."\r\n"); }
    
    function 
msg($target$msg)             { $this->out("PRIVMSG $target :$msg\r\n"); }
    function 
msgChan($channel$msg)     { $this->msg($channel$msg); }
    function 
msgUser($user$msg)         { $this->msg($user$msg); }
    
    function 
pong()                                     { $this->out("PONG :".$this->host."\r\n"); }
    function 
quit($msg="")                        { $this->out("QUIT :$msg\r\n"); }
    
    
// incoming processing //
    
function is_ping($line)                        { if(strstr($line'PING')) return true; }
    function 
is_msg($line)                        { if(strstr($line'PRIVMSG')) return true; }

    function 
msgToArray($line// array('from, 'chan', 'msg');
    
{
        
$array explode(":",$line);
                
        
$from explode("!",$array[1]);
        
$from trim($from[0]);
        
        
$fromchan explode("#",$array[1]);
        
$fromchan "#".trim($fromchan[1]);
        
        
$string $array[2];
        
$string trim($string);
        
        
$msg = array('from'=>$from'chan'=>$fromchan'msg'=>$string);
        
        return 
$msg;
    }
    
    
// system
    
function flush()                                    { @ob_flush; @flush(); }
    function 
wait()                                        { usleep(250000); }
    function 
get_command($string)
    {
        if(!
strstr($string,"!")) return false;
        if(!
strstr($string" "))
            
$command $string;
        else
        {
            
$command explode(" "$string,2);
            
$command $command[0];
        }
        return 
$command;
    }
    
    
// misc useful functions //
    
function rem_xs_whitespace($string){ $string trim(preg_replace('/\s+/'' ',     $string)); return $string; }



    
// command parser //
    // TELL THE PARSER WHAT COMMANDS ARE AVAILABLE
    // add commands in the next section below this function
    
function parse_command($command$msg)
    {
        
// $command = "!command"; $msg = array('from, 'chan', 'msg')
        
switch($command)
        {
            case 
'!sayrand'$this->command_sayrand($msg); break;
        }
    }
    
    
// now for commands //
    // ADD YOUR COMMANDS HERE //
    
function command_sayrand($msg)
    {
        
$number rand(1,100);
        
$this->msgChan($msg['chan'], "random number:".$number);
        echo 
"saying magic number...\r\n";
    }

}

?>

 
  Advertise on this site Advertise on this site   Site map Site map   Statistics Statistics   Site tips Site tips   Privacy policy Privacy policy   Contact Contact  

For more information send a message to :
info at phpclasses dot org.
Copyright (c) Icontem 1999-2009 PHP Classes - PHP Class Scripts
  PHP Book Reviews - Reviews of books and other products