kingless Posted December 17, 2006 at 06:54 PM Report #70981 Posted December 17, 2006 at 06:54 PM Como estou de férias decidi criar um bot de irc para os viciados em IRC 🙂 o bot por enquanto tem poucos comandos mas depois se pode adicionar. 🙂 Comandos: Entrar num canal: !join #canal Sair de um canal: !part #canal <mensagem> Desconectar do IRC: !quit <mensagem> <?php echo "<pre>"; //Para se ver o código direitinho no browser set_time_limit(0); error_reporting(0); class phpBot { /* Servidor do Bot */ var $servidor = "diemen.nl.eu.undernet.org"; /* Porta do Servidor */ var $porta = "6667"; /* Canal para o bot entrar */ var $canal = "#phpbot"; /* Nick do bot */ var $nick = "phpbot"; /* O nome do Bot */ var $nome = "PHP Scan Bot by kingless"; /* Username do Admin do Bot */ var $admin = "kingless.users.undernet.org"; var $rodando = false; var $con = null; var $irc = ''; var $ircd = array(); var $partMsg = "PHP Bot by Kingless"; var $quitMsg = "PHP Bot by Kingless <blastelf@gmail.com>"; function iniciar ( ) { $this->con = fsockopen( $this->servidor, $this->porta, $errno, $errstr, 30); if (!$this->con) { echo "Não foi possivel conectar: $errstr ($errno)\x0a"; } else { $headers = "USER $this->nick $this->servidor $this->servidor : $this->nome\x0d\x0a"; $headers.= "NICK $this->nick $this->servidor\x0d\x0a"; fwrite( $this->con, $headers ); while(!feof( $this->con )) { $this->irc = trim(fgets( $this->con, 4096 )); print date("[d/m @ H:i:s]")."<- ". $this->irc ."\x0a"; if(substr( $this->irc, 0, 6 ) == "PING :") { fwrite( $this->con, "PONG :". substr( $this->irc, 6 )."\x0d\x0a" ); if(!$this->rodando) { fwrite( $this->con, "JOIN $this->canal\x0d\x0a" ); $this->rodando = true; } } $this->ircd = explode(" ", $this->irc, 4 ); $this->ircd['nick'] = substr($this->ircd[0], 1, strpos($this->ircd['0'], "!")-1); $pos1 = strpos($this->ircd[0], "!"); $pos2 = strpos($this->ircd[0], "@"); $this->ircd['identd'] = substr($this->ircd[0], $pos1+1, $pos2-$pos1-1); $this->ircd['hostname'] = substr($this->ircd[0], strpos($this->ircd[0], "@")+1); $this->ircd['user_host'] = substr($this->ircd[0],1); $this->ircd['canal'] = $this->ircd[2]; $this->ircd['msg'] = substr( $this->ircd[3], 1 ); if(ereg( '^\!join[[:space:]]\#[a-z0-9_]+$', $this->ircd['msg'] )) { $canal = explode( " ", $this->ircd['msg'] ); $this->exec_cmd( "JOIN ". $canal[1] ); } if(ereg( '^\!part[[:space:]]?\#?[a-z0-9_]?', $this->ircd['msg'] )) { $canal = explode( " ", $this->ircd['msg'] ); $num = count( $canal ); $msg = ''; for($x = 2; $x < count( $canal ); $x++ ) { $msg .= $canal[$x]."\x09"; } $partMsg = str_replace( " ", "\x09", $this->partMsg ); $msg = empty($msg) ? $partMsg : trim( $msg ); $canal = empty($canal[1]) ? $this->ircd['canal'] : $canal[1]; $this->exec_cmd( "PART $canal $msg" ); } if(ereg( '^\!quit$', $this->ircd['msg'] )) { $quitMsg = str_replace( " ", "\x09", $this->quitMsg ); $this->exec_cmd( "QUIT ". $quitMsg ); } if(eregi( '^!op[[:space:]]?([a-z0-9\-_\[]+)?', $this->ircd['msg'] )) { $nick = explode( ' ', $this->ircd['msg'] ); $nick = empty($nick[1]) ? $this->ircd['nick'] : $nick[1]; $this->exec_cmd( "MODE {$this->ircd['canal']} +o $nick" ); } if(eregi( '^!deop[[:space:]]?([a-z0-9\-_\[]+)?', $this->ircd['msg'] )) { $nick = explode( ' ', $this->ircd['msg'] ); $nick = empty($nick[1]) ? $this->ircd['nick'] : $nick[1]; $this->exec_cmd( "MODE {$this->ircd['canal']} -o $nick" ); } } } } function exec_cmd( $comando ) { if($this->rodando) { if($this->ircd['hostname'] == $this->admin) { fwrite( $this->con, "$comando\x0d\x0a" ); } } else { fwrite( $this->con, "$comando\x0d\x0a" ); } print (date("[d/m @ H:i:s]") ."-> ". $comando. "\x0d\x0a"); } function msg_canal( $texto ) { $this->exec_cmd( "PRIVMSG {$this->ircd['canal']} $texto\x0d\x0a" ); } } $phpBot = new phpBot(); $phpBot->iniciar(); echo "</pre>"; //para se ver o código direitinho no código ?> 😄 ATENÇÃO: Aconselho a correrem o Bot pela linha de comandos e não pelo browser.
djthyrax Posted December 17, 2006 at 07:33 PM Report #70986 Posted December 17, 2006 at 07:33 PM parece-me bem. já tinha visto cenas dessas pelo PEAR: http://pear.php.net/package/Net_IRC http://pear.php.net/package/Net_SmartIRC 😄 Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!
kingless Posted December 17, 2006 at 07:35 PM Author Report #70987 Posted December 17, 2006 at 07:35 PM O php tambem tem > http://pt.php.net/ircg mas o mais interessante neste código é que fui eu que programei 😄 lol
djthyrax Posted December 17, 2006 at 07:39 PM Report #70993 Posted December 17, 2006 at 07:39 PM Mas isso é mais para buildar um gateway como se diz no tópico. Numa das classes que eu postei aí do PEAR, está um bot para IRC que me parece funcional mas nnc o experimentei 😄 Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!
Procrastinator Posted December 17, 2006 at 10:04 PM Report #71018 Posted December 17, 2006 at 10:04 PM Hey! Eu nunca corri nada pela linha de comandos vamos la ver se sei 😄 Obrigado por partilhares o codigo
djthyrax Posted December 17, 2006 at 10:29 PM Report #71022 Posted December 17, 2006 at 10:29 PM Acs, nada mais fácil. Em windows: start -> run -> cmd -> cd directoria\do\bot\ -> php ofile.php Em *nix: abrir consola -> cd directoria/do/bot -> php ofile.php 😄 Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!
Palmeira Posted December 17, 2006 at 10:41 PM Report #71025 Posted December 17, 2006 at 10:41 PM pra por exº aceder à quakenet com o bot, só tenho d mudar as variáveis referentes ao server d IRC ? é só isso ?? =) bom script, vai ajuda muita gente d certeza 😄 Twitter devART FaceBook
Procrastinator Posted December 17, 2006 at 10:44 PM Report #71026 Posted December 17, 2006 at 10:44 PM Acs, nada mais fácil. Em windows: start -> run -> cmd -> cd directoria\do\bot\ -> php ofile.php Em *nix: abrir consola -> cd directoria/do/bot -> php ofile.php 🙂 Obrigado 😄 Eu ja mexo em php ha uns tempos mas sempre no browser 🙂 obrigado mais uma vez
kingless Posted December 17, 2006 at 11:06 PM Author Report #71033 Posted December 17, 2006 at 11:06 PM pra por exº aceder à quakenet com o bot, só tenho d mudar as variáveis referentes ao server d IRC ? é só isso ?? =) bom script, vai ajuda muita gente d certeza 😄 Sim só precisas de mudar as variaveis..
Sota Posted December 17, 2006 at 11:17 PM Report #71039 Posted December 17, 2006 at 11:17 PM Por esta é que não esperava nunca imaginei que bots do IRC fossem feitos por php bom post 😄
djthyrax Posted December 18, 2006 at 12:01 AM Report #71048 Posted December 18, 2006 at 12:01 AM @Acs, eu comecei na linha de comandos e recentemente passei a workar + pa browser 🙂 @Sota, qq linguagem que suporte sockets pode-se ligar a uma rede IRC 😄 Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!
Procrastinator Posted December 18, 2006 at 12:13 AM Report #71049 Posted December 18, 2006 at 12:13 AM Começas-te na linha de comandos pk? É raro eu ver algo relacionado com a linha de comandos!! Tens ai algum tut q mostre exemplos de cenas para a linha de comandos??
kingless Posted December 18, 2006 at 12:16 AM Author Report #71050 Posted December 18, 2006 at 12:16 AM Eu nao começei na linha de comandos.. Só aconselhei a linha comandos para correr este bot xD http://pt.php.net/features.commandline
djthyrax Posted December 18, 2006 at 12:23 AM Report #71052 Posted December 18, 2006 at 12:23 AM era mesmo para mim 😄 Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!
djthyrax Posted December 18, 2006 at 12:25 AM Report #71053 Posted December 18, 2006 at 12:25 AM Começas-te na linha de comandos pk? É raro eu ver algo relacionado com a linha de comandos!! Tens ai algum tut q mostre exemplos de cenas para a linha de comandos?? Eu comecei por usar linha de comandos para bots. http://botdom.24bps.com/ <- colaborei em praticamente todos os bots aí presentes (Secret Dave, David Ferreira, viva(-os-torresmos), dj(thyrax)) 😄Tb existe algo que só descobri agora que é o stdin versão PHP 🙂http://www.vivaolinux.com.br/dicas/verDica.php?codigo=211 🙂 Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!
kingless Posted December 18, 2006 at 01:02 AM Author Report #71056 Posted December 18, 2006 at 01:02 AM Ainda bem que ja colaboraste 😉 assim vais poder me ajudar aqui numa duvida que tenho 😉 Como é que coloco cores no mIRC utilizando PHP ? 😉
djthyrax Posted December 18, 2006 at 01:09 AM Report #71057 Posted December 18, 2006 at 01:09 AM Repara bem no link que postei. Aqui são dAmn bots e não IRC bots 🙂 Anyway, já vi algures como fazer isso, mas já foi há muito tempo. Googla 😄 Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!
kingless Posted December 18, 2006 at 01:14 AM Author Report #71059 Posted December 18, 2006 at 01:14 AM eu sei colocar cores estava no gozo 😉🙂 Qual é a diferença entre dAmn bots e IRC bots ?
djthyrax Posted December 18, 2006 at 01:25 AM Report #71064 Posted December 18, 2006 at 01:25 AM Qual é a diferença entre dAmn bots e IRC bots ? dAmn bots são bots para a deviantART messaging network (dAmn) que funciona num protocolo proprietário que pode ser estudado aqui. É uma especie de IRC mas com tags html, integração com o site, etc. que assenta em JavaScript e Flash. 🙂 Existe um gateway dAmn<->IRC chamado Frabjous feito pelo doofsmack. Esse caramelo fez em conjunto com o twexler o 1º bot para o dAmn em PHP (que está uma valente m**** 😄 ) Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!
kingless Posted December 18, 2006 at 01:27 AM Author Report #71065 Posted December 18, 2006 at 01:27 AM thanks 🙂
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now