2010-10-02 6 views
1

J'essaye d'écrire un ircBot en Java pour un peu de pratique. J'utilise this exemple de code comme base. J'essaye de comprendre comment l'obtenir pour lire le texte de ma console afin que je puisse réellement parler aux gens avec le bot. Il y a la boucle while qui prend en charge l'entrée de l'ircserver et la crache en console et répond aux PINGs. Je suppose que je dois avoir un autre thread qui prend l'entrée de l'utilisateur, puis utilise le même BufferedWriter pour le cracher sur l'ircserver à nouveau, mais je ne peux pas comprendre cela. Toute aide serait géniale!Création d'un client irc en Java

+0

Vous devriez publier le code que vous avez fait jusqu'à présent (seulement la partie pertinente) pour PING/PONG –

+0

Je ne suis pas sûr de la pratique que vous voulez et cela ne répond pas à la question mais ... si vous êtes essayer d'écrire un bot irc, vous devriez vraiment jeter un oeil à l'aide de http://www.jibble.org/pircbot.php ou http://jerklib.sourceforge.net/ – whaley

+0

Essayez ** [JawaBot 2.x] (http://code.google.com/p/jawabot/)** - application autonome connectable avec IRC et UI Web qui vise à mettre plusieurs fonctionnalités sous un même bot tout en conservant la structure du code. ** Mavenized **. –

Répondre

1

Dans le code auquel vous avez lié, les instances 'reader' et 'writer' sont en effet connectées respectivement aux extrémités entrantes et sortantes du socket bidirectionnel que vous avez établi avec le serveur IRC.

Afin d'obtenir des informations de la part de l'utilisateur, vous avez en effet un nouveau thread qui prend les commandes de l'utilisateur d'une manière ou d'une autre et agit sur celles-ci. Le modèle le plus basique consisterait naturellement à utiliser System.in pour cela, de préférence en l'enveloppant de manière à pouvoir récupérer les entrées de ligne complètes de l'utilisateur et les analyser en tant que commande.

Pour lire des lignes entières de System.in que vous pourriez faire quelque chose comme ceci:

BufferedReader bin = new BufferedReader(new InputStreamReader(System.in)); 
String line; 
while ((line = bin.readLine()) != null) { 
    // Do stuff 
} 

Vous pouvez également envisager d'utiliser l'une des bibliothèques CLI qui est là pour Java, comme JLine

0

Si vous voulez vraiment vous faire une faveur, je recommande (après l'avoir largement utilisé) passer à pircbot. Pircbot est vraiment une bibliothèque merveilleuse et vous permettra de faire fonctionner un bot IRC en quelques minutes. Découvrez quelques exemples sur le site, c'est super facile à utiliser.

+0

Je recommande contre PircBot. Il a une conception API malheureuse dont votre application va rapidement se développer. Plutôt JawaBot ou PircBotX. –