X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=Bots%2FExampleBot.class.php;fp=Bots%2FExampleBot.class.php;h=b9f685d95354b25e195139c084841775e6ffdb88;hb=cacbfd68b7a6d983e55742ea16cd7be101ab05f0;hp=0000000000000000000000000000000000000000;hpb=a53ed534c0e521ae169634f38f391b5bf7ca21b3;p=PHP-P10.git diff --git a/Bots/ExampleBot.class.php b/Bots/ExampleBot.class.php new file mode 100644 index 0000000..b9f685d --- /dev/null +++ b/Bots/ExampleBot.class.php @@ -0,0 +1,101 @@ +uplink = $uplink; //Reference to the P10 Uplink + + //$old is only set, if the module is rehashed. It contains the return value of unload(); + + if(!$old) { + + //Here you can define startup actions + //We'll add an user to the Server + // newuser($localid,$nick,$ident,$host,$realname,$uptime,$modes) returns an array with the result + // $localid is just an id you can set (whatever you want) - maybe you'll use it to identify the bot/user later? + + $nick = "ExampleBot"; // Please note: If this user already exists on another Server it will be killed! + $ident = "Example"; + $host = "Example.Bot"; + $realname = "Thats an example Bot :)"; + $modes = "i"; //we don't need a leading + (that will be added automatically) + + $this->example_bot = $this->uplink->addUser($nick,$ident,$host,$realname,$uptime,$modes); //addUser($nick, $ident, $host, $ip, $modes, $realname) + if(is_a($this->example_bot, "P10_User")) { // A new user was created :) + //ok let's join a channel + $this->uplink->join($this->example_bot, "#test"); + //now we want to say something... + //but note: thats the startup procedure! the p10 server is not connected to an uplink, yet - so noone would recive our message (only the other bots on this server) + } + } else { + $this->example_bot = $old; //We've saved out Bot reference in $old so we can simply use it again... + } + + //OK send something to the Server is easy... + //How to recive something from the IRC Server? + + //I've copied the eggdrop way to do that - bind + ModCMD::bind($this, BIND_PRIVMSG, "recive_privmsg"); + ModCMD::bind($this, BIND_QUIT, "recive_quit"); + } + + public function loop() { //this function is triggered as often as possible (at least one time per second!). Maybe you need it to do timed events + //please don't trigger any blocking functions here... that would cause an extreme lagg! + } + + public function recive_privmsg($user, $channel, $message) { + //We've got a privmsg... + $exp=explode(" ",$message); + if($exp[0] == "hi") { + $this->uplink->privmsg($this->example_bot, $channel, "Hallo ".$user->getNick()); // We send a message back - documentation is following + } + if($exp[0] == "-users") { + $user_str = ""; + foreach($channel->getUsers() as $chan_user) { + $extra=""; + $privs = $channel->getUserPrivs($chan_user); + if(($privs & P10_Channel::USERPRIV_VOICE)) $extra= '+'; + if(($privs & P10_Channel::USERPRIV_OPED)) $extra= '@'; + $user_str .= " " . $extra . $chan_user->getNick(); + } + $this->uplink->notice($this->example_bot, $user, "User in ".$channel->getName().":".$user_str); + } + } + + function recive_quit($user, $reason) { + if($user === $this->example_bot) { //maybe we got killed??? + $this->load($this->uplink); + } + } + +} + +?> \ No newline at end of file