Mark’s IRC API Library 一个php编写的IRC API库
Formats data for sending to an IRC network. This library does not handle * actual connecting to the IRC server or parsing the IRC servers output. * * The raw_send method can be used to send data to the IRC in formats that are * either not standard, or not yet implemented here. I know there is a lot more * to implement, and I plan to do so as time goes on.
<?php /** * Mark's IRC API Library * * Formats data for sending to an IRC network. This library does not handle * actual connecting to the IRC server or parsing the IRC servers output. * * The raw_send method can be used to send data to the IRC in formats that are * either not standard, or not yet implemented here. I know there is a lot more * to implement, and I plan to do so as time goes on. * * @author Mark LaDoux * @copyright Copyright © 2012, Mark LaDoux * @version 1.0.0 * @link http://markladoux.com/ */ class IRC { /** * Library version * * @access protected * @var string */ protected $_version = '1.0.0'; /** * Connection socket * * @access protected * @var object */ protected $_socket; /** * Constructor * * configures the class for use * * @access public * @param object * @return void */ public function __construct($socket) { $this->_socket = $socket; } /** * version * * Reports the libraries version * * @access public * @return string */ public function version() { return $this->_version; } /** * say * * send a message to the target * * @access public * @param string $target * @param string $message * @return void */ public function say($target, $message) { $data = "PRIVMSG {$target} :{$message}"; $this->raw_send($data); } /** * emote * * send an emote to the target ( equiv to IRC client /me does something ) * * @access public * @param string $target * @param string $message * @return void */ public function emote($target, $message) { $data = chr(1)."ACTION {$message}".chr(1); $this->say($target, $data); } /** * ctcp * * send a ctcp to the target * * @access public * @param string $target * @param string $message * @return void */ public function ctcp($target, $message) { $data = chr(1).$message.chr(1); $this->say($target, $data); } /** * notice * * send a notice to the target * * @access public * @param string $target * @param string $message * @return void */ public function notice($target, $message) { $data = "NOTICE {$target} :{$message}"; $this->raw_send($data); } /** * set_nick * * change user nick name * * @access public * @param string * @return void */ public function set_nick($nick) { $data = "NICK {$nick}"; $this->raw_send($data); } /** * set_user * * prepare user ident string * * @access public * @param string * @return void */ public function set_user($nick) { $data = "USER $nick $nick $nick $nick :$nick"; $this->raw_send($data); } /** * send_pass * * Identify with nickserv * * @access public * @param string * @return void */ public function send_pass($password) { $this->say('nickserv', "IDENTIFY {$password}"); } /** * disconnect * * Terminates IRC connection. Does not terminate reset process in the case * you have implemented a reconnect function * * @access public * @param string|null * @return void */ public function disconnect($message = NULL) { $data = ($message !== NULL) ? "QUIT :{$message}" : "QUIT"; $this->raw_send($data); } /** * enter_channel * * enter an IRC channel * * @access public * @param string * @return void */ public function enter_channel($channel) { $data = ($channel[0] == '#') ? "JOIN {$channel}" : "JOIN #{$channel}"; $this->raw_send($data); } /** * leave_channel * * leaves an IRC channel * * @access public * @param string * @return void */ public function leave_channel($channel) { $data = ($channel[0] == '#') ? "PART {$channel}" : "PART #{$channel}"; $this->raw_send($data); } /** * raw_send * * Sends raw commands to the IRC server. I left it a public function for * hackability reasons. Makes it easier to add custom commands for * non-standard servers, or to test new features without having to edit * the class directly every time. Of course you could always just extend * the class. * * @access public * @return void */ public function raw_send($data) { fwrite($this->_socket, $data."\n"); } }