+2

Criando um simples IRC BOT

criado por Doug em 08/01/2003 2:35pm
Precisei fazer um pequeno bot de IRC e como não encontrei muita coisa (básica) sobre o assunto, estou deixando este artigo aqui para quem se interessar. Irei mostrar como criar um bot muito simples que somente entrará no canal e responderá a alguns comandos.

Você pode pegar o fonte inteiro deste script no site: http://www.douglaslaurence.com.br
Visite também:
http://www.php.net - para entender as funções.
http://rfc-editor.org/ - para entender o funcionamento do irc.

Para começarmos, vamos então criar a conexão com o IRC utilizando uma socket genérica:

<?php
$fp = fsockopen ("irc.telemar.com.br", 6667, $errno, $errstr, 30); // criando socket e conectando
if (!$fp) { // em caso de falha na conexao
    die("$errstr ($errno)<br>\n"); // exibir as variaveis de erro
}
?>

Isso é o suficiente para conectarmos. Vamos agora escolher o nick, entrar no canal e enviar uma mensagem:

<?php
fputs($fp, "USER $nick_do_bot 2 3 :$nome_do_bot\r\n");
fputs($fp, "NICK $nick_do_bot $ident_do_bot\r\n");
fputs($fp, "JOIN #php \r\n");
fputs($fp, "PRIVMSG #php : meu primeiro bot\r\n");
?>

Bem tranquilo até ai né? Vamos fazer agora o bot responder a alguns comandos, somente dois. Um deles é 'oi bot' e o outro é 'tchau bot':

<?php
while (!feof($fp)) { // se nao chegar ao fim da conexao
    $msg = str_replace("\n", "", str_replace("\r", "", fgets ($fp,2048)));
    // se for alterar essa linha, atente-se ao tamanho da string do comando
    if (substr($msg, -9) == 'tchau bot') { // comando 'tchau bot' (9 caracteres)
        fputs($fp, "QUIT : tchauuuuu .. fechando socket\r\n"); // dando um quit
    // se for alterar essa linha, atente-se ao tamanho da string do comando
    } else if (substr($msg, -6) == 'oi bot') { // comando 'oi bot' (6 caracteres)
        fputs($fp, "PRIVMSG #php : oi chefe, como vai?\r\n"); // mandando msg ao canal de resposta
    }
    echo $msg.'<br />';
}
fclose($fp); // fechando conexao
?>

Pronto! Bem tranquilo né. Agora você tem que montar o código e jogar num web server (que suporte php, é lógico) e então, para acionar o bot é só acessar a página. Ex. http://URL_SERVER/bot.php
Nao se esqueca de trocar as variaveis de nick, ident, nome e canal ai do codigo.

Abraços,
Douglas

Comentários:

Mostrando 1 - 10 de 18 comentários
Aqui deu permissao negada (13)

Porque ?
08/04/2006 7:36am (~10 anos atrás)

andre felipe disse:
ola amigos eu trabalho em um rede mindforge.org e eu estava precisando de um bot para colocar no meu canal e para ajduar so um programa p2p mais nao sei como fazer esse bot direito pq nao entendo muito de programacao e queria que voces em explicasem melhor como fazer isso so como eu falei nao entendo nada de programacao e queria esse bot para ajudar as pessoas com o programa p2p tipow ( kickar, banir, status, e principalmente comandos de ajuda ) tipo !ajuda e aparecesse os comandos derecionado pelo --> ! <-- e isso amigos seria grato a todos e Feliz Ano Novo a Todos ou mandem pelo email ou aqui mesmo topico
27/12/2005 10:10am (~11 anos atrás)

Japo Nego disse:
Queria acesso a um servidor de homepages que suporte php.
Alguem sabe ond eu consigo, preferencialmente FREE ;(
26/04/2005 12:26pm (~11 anos atrás)

Vixiado disse:
desculpem desde ja a minha pergunta, pois em php nao percebo nada... mas aqui vai ela: na 2ª parte do code onde dix:
<?php
fputs($fp, "USER $nick_do_bot 2 3 :$nome_do_bot\r\n");
fputs($fp, "NICK $nick_do_bot $ident_do_bot\r\n");
fputs($fp, "JOIN #php \r\n");
fputs($fp, "PRIVMSG #php : meu primeiro bot\r\n");
?>

---------
eu tenho de mudar o $nick_do_bot para o nome do meu bot? exemplo: $LordX ?? é isso?
o $ident_do_bot é a password do nickname? expliquem ai melhor o que tenho de mudar, dando um pekeno exemplo se nao for pedir muito...
outra coisa... onde ta o comando que ira, apos o o bot se conectar, que faz o nickserv identify???

como dixe no principo da mensagem, desculpem a pergunta, mas estou mesmo a zeros em php =(
14/02/2004 4:53pm (~12 anos atrás)

Rodrigo Braun disse:
Sempre da a senguinte mensaguem, como eu conserto isso??

NOTICE AUTH :*** Checking Ident
NOTICE AUTH :*** No Ident response
:server.140b 461 * USER :Not enough parameters
:server.140b 431 :No nickname given
ERROR :Closing Link: [unknown@200.203.165.32] (Connection Timed Out)
07/02/2004 6:47pm (~13 anos atrás)

André Taiar disse:
isso significa que o fputs nesse caso serve pra enviar comandos que normalmente seriam digitados pelo usuario?? legal!
09/11/2003 2:25pm (~13 anos atrás)

to iniciando agora em php podem me explicar pq esse erro ?
nao mudei nada no script. o que devo mudar pra dar certo ? ex. onde coloco o nick do bot e senha ?

Warning: fsockopen, pfsockpen, show_source, php_uname, ini_alter, ini_restore, ini_set, getrusage, get_current_user, set_time_limit, getmyuid, getmypid, dl, leak, listen, chown, chmod, chgrp, realpath, tmpfile, link() has been disabled for security reasons in /home/webcindario/owcomunidade/teste/bot.php on line 2
()
18/10/2003 9:58am (~13 anos atrás)

Rafael Rebelo disse:
Opa.. nao sei se alguem le esses comentarios ainda...
Mas pensei um pouco *grande* e fiz um BOT legal em PHP+mySQL..
Ele tem as seguintes funcoes:
Adicionar/Deletar canal via web;
Configurar esse canais;
Configuracoes de canais:
*Flood (linha/tempo);
*Repeat (linha/tempo);
*Propaganda de URL;
*Propaganda de canais;
Sistema de info, adicionadas via web;
Sistema de *filmadora* (ele gera um html com as ultimas 20 linhas dos canais, ex: www.itajaiagora.com.br/mirc.gif)

Ele é totalmente configuravel...
Não é pesado.. pois tentei *reciclar* ao maximo as variaveis (usar a mesma para varias coisas, quando nao precisava guardar *pra sempre* o valor dela)

Dai estou pensando em qual licensa vou usar para disponibilizar o BOT para download...

Mas.. alguem se interessa?
12/08/2003 5:54pm (~13 anos atrás)

Doug disse:
Diego Tenfen, o Cristian respondeu sua dúvida, é interessante que você procure por literaturas sobre a linguagem.
Elvani e Badboi, certamente seus BOTs caem por 'ping timeout', pois não enviam respostas ao pedido ICMP (PING) do servidor. Para resolver isso, procurem nos comentários pelo script do nosso amigo Cristian que envia resposta ao servidor (PONG).
Cristian, obrigado novamente!
Renato, o HPG não roda PHP!!! Normalmente os usuários utilizam páginas com extensão .php apenas para não ficar abrindo aqueles banners! Mas scripts PHP não são processados lá! Tente outros hosts! (sugiro: host.sk).
[]'s doug
16/02/2003 11:32am (~13 anos atrás)

Primeiro vou supor que vc tenha acesso a um servidor de homepages que suporte php... Acho q sim pq senão não sei nem o q vc tá procurando como fazer um bot em php, vai no google e procura por eggdrop e bot.
PEga os tres pedaços de codigo ali em cima, e cola em um arquivo cahamdo bot.php
Muda o servidor, o nick do bot, etc, de acordo com sua vontade.
Poe o bot no seu servidor
Depois acessa a homepage bot.php
O q falta explicar?
Mas se seu objetivo é apenas fazer um bot, e não aprender obre sockets e php, já vou dizendo.... nesse caso é perda de tempo fazer esse bot. Procura sobre eggdrop se quer um bot bom...
05/02/2003 2:49pm (~14 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)