quarta-feira, 23 de maio de 2007

Cliente de IRC em Java

Na verdade neste artigo não faremos um cliente de IRC, faremos um simple bot. Mas, a biblioteca que apresento também serve para fazer clientes de IRC, é a PircBot (Java IRC Bot Framework). Para funcionar você pode utilizar um servidor de IRC já existente, ou instalar um na sua máquina. No caso eu preferi intalar um, e utilizei o UnrealIRCd, que possui versões para Windows e Linux.

O UnrealIRCd é um bom servidor de IRC pois é fácil, na medida do possível, de configurar. Isso porque as mensagens de erro dele são bem explicativa, dizendo até mesmo em qual linha do arquivo de configuração há uma entrada incorreta ou faltando.

Depois de escolher servidor criamos uma classe extendendo org.jibble.pircbot.PircBot, essa classe representará o usuário que criamos para se conectar no IRC. A idéia é fazer um usuário que desconecte do IRC quando receber uma mensagem "Sai vagabundo" de qualquer pessoa em qualquer sala.
public class BotVagabundo extends PircBot
{
public BotVagabundo(String nome)
{
this.setName(nome);
}

@Override protected void onMessage(String channel, String sender, String login, String hostname, String message)
{
System.out.println("Recebi em [" + channel + "] do usuario [" + sender + "] a mensagem [" + message + "]");

if("Sai vagabundo".equals(message))
{
this.disconnect();
this.dispose();
}
}
}

O método PircBot.setName(String) define o nick do usuário. O método onMessage, é acionado quando alguma mensagem é recebida, seja num dos canais em que ele se encontra ou em um chat privado.

Agora vamos ver como se faz para conectar esse usuário no IRC:
BotVagabundo bot = new BotVagabundo("Chapun");

bot.setVerbose(true);
bot.connect("irc.chapun.com");
bot.joinChannel("#brasil");

bot.sendMessage("#brasil", "Eu sou um bot");

No caso eu não só fiz o bot conectar no servidor irc.chapun.com (coloquei o meu servidor local com este host) como fiz ele entrar no canal #brasil e enviar uma mensagem informando que é um bot.

Viu como é fácil?

Além disso, o PircBot tem diversas outras opções, como pegar a lista de canais, lista de usuários em um canal, kikar um usuário... Vale o tempo perdido dar uma olhada no site dele.

Nenhum comentário:

Postar um comentário