PHP Forum - Coding Board
Juni 19, 2018, 08:47:19 *
Willkommen Gast. Bitte einloggen oder registrieren.

Einloggen mit Benutzername, Passwort und Sitzungslänge
News:
 
   Übersicht   Hilfe Suche Einloggen Registrieren  
Seiten: [1]
  Drucken  
Autor Thema: IRC Bot  (Gelesen 182 mal)
0 Mitglieder und 1 Gast betrachten dieses Thema.
Ph0xEn
Jr. Member
**
Beiträge: 62


Profil anzeigen E-Mail
« am: Februar 14, 2009, 07:55:04 »

Hier mal mein kleiner IRC - Bot...kann nicht viel aber es reicht ja vorerst mal....

Code:
package com.bot;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Date;
import java.util.Random;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class IrcBot {

/**
* @param args
* @author www.uncreativ.de 23. Januar 2009 23:10 Uhr
* @version 1.0
*/

BufferedWriter writer = null;
BufferedReader reader = null;
BufferedReader readConsole = null;
Socket irc = null;
Matcher ownership = null;
String line = null;

String nick = "Uncreativ.de - Bot";
String login = "uncreativ";
String server = "irc.seilen.de";
String channel = "#blablubChan";
int port = 6667;

String owner = "uncreativ";

static String chuckWitz[] = {
"Chuck Norris schläft bei Licht. Nicht weil er Angst vor der Dunkelheit hat, weil die Dunkelheit Angst vor ihm hat.",
"Chuck Norris hat bis Unendlich gezählt...schon zwei mal!",
"Wenn Chuck Norris Liegestützen macht, drückt er die Welt nach unten.",
"Chuck Norris kann eine Fünfminutenterrine in einer drei?ig Sekunden zubereiten.",
"Wenn Chuck Norris in den Himmel schaut, fangen die Wolken an zu schwitzen, manche nennen es auch Regen.",
"Chuck Norris hat sich aus dem Bauch seiner Mutter durch einen Roundhouse Kick befreit. Kurz darauf wuchs im ein Bart.",
"Chuck Norris liest keine Bücher: Er starrt sie so lange an, bis sie ihm freiwillig sagen was er wissen will.",
"Wenn Chuck Norris ins Wasser geht wird er nicht nass, sondern dass Wasser Chuck Norris.",
"Chuck Norris kann mit einer Lupe Feuer machen, und dass bei Dunkelheit.",
"Chuck Norris kann eine Drehtür zuschlagen.",
"Chuck Norris kann den Stuhl auf dem er sitzt hochheben.",
"Chuck Norris isst keinen Honig, er kaut Bienen!!",
"Wenn Chuck Norris teilt, bleibt kein Rest.",
"Chuck Norris war Kamikaze-Pilot? 12 mal",
"Was ist der Unterschied zwischen chuck norris und Gott? Gott kennt Gnade...",
"Es gibt feindliche Aliens , sie warten nur bis Chuck Norris gestorben ist damit sie angreifen können!",
"Chuck Norris ist eigentlich schon vor 10 Jahren gestorben , der Tod traut sich bloss nicht ihm bescheid zu sagen!",
"Es wurde mal behauptet, das Chuck Norris mal einen Kampf gegen einen Piraten verloren hätte, das ist natürlich eine Lüge die Chuck Norris selbst in die Welt gesetzt hat um noch mehr Piraten anzulocken.",
"Die Kinder schlafen nachts mit Supermanschlafanzügen...Superman schläft mit einem Chuck-Norris-Schlafanzug.",
"Chuck Norris hat als erster einer Meerjungfrau zwischen die beine gepackt",
"Chuck Norris ist so cool, dass die Schafe ihn zählen, wenn er ins Bett geht!",
"Chuck Norris sucht nicht - er findet.",
"Chuck Norris fährt keine Stra?enbahn - die Bahn fährt Chuck Norris.",
"Chuck Norris Tränen können Krebs heilen,doch Chuck Norris weint nicht.",
"Sido hat mal gefragt, wer Chuck Norris ist ....seitdem trägt Sido eine Maske.",
"Chuck Norris isst zu jeder Mahlzeit ein Steak - meistens vergisst er, vorher die Kuh zu schlachten.",
"Chuck Norris schläft mit einem Kopfkissen unter seiner Waffe.",
"Chuck Norris trägt keine Uhr - ER entscheidet wie spät es ist.",
};

public static void main(String[] args) {
IrcBot bot = new IrcBot();
bot.connect();
}

public void connect() {
try
{
irc = new Socket(server, port);
writer = new BufferedWriter(new OutputStreamWriter(irc.getOutputStream()));
reader = new BufferedReader(new InputStreamReader(irc.getInputStream()));
readConsole = new BufferedReader(new InputStreamReader(System.in));

//Beim Server anmelden
writer.write("NICK " + nick + "\n");
writer.write("USER " + login + " localhost " + server + " Ph0xEn's Bot\n");
writer.flush();

//Zum Channel verbinden
writer.write("JOIN " + channel + "\n");
writer.write("PRIVMSG " + channel + " :IRC BOT BY Ph0xEn online\n");
writer.flush();
System.out.println("Verbindung erfolgreich aufgebaut Bot im Channel " + channel);

//Consolen-Lese Thread
new Thread(new Runnable() {
public void run() {
while(true) {
readConsole();
}
}
}).start();

//Alle andere Funktionen Thread
new Thread(new Runnable() {
public void run() {
try
{
while((line = reader.readLine()) != null )
        {
System.out.println(line);
pingPong(line);
getOwner(line);
getTime(line);
kickUser(line);
getChuckWitz(line);
exitBot(line);

        }
}
catch (IOException e)
{
e.printStackTrace();
}
}
}).start();
}
catch (UnknownHostException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
}

public void pingPong(String line) {
//Regular Expressions für die suche nach dem Ping um dann ein Pong zurückzusenden
    Pattern pingRegex = Pattern.compile( "^PING", Pattern.CASE_INSENSITIVE );
    Matcher ping = pingRegex.matcher(line);
    if(ping.find())
    {
        try
        {
writer.write("PONG " + channel + "\n");
writer.flush();
System.out.println("Pong gesendet...");
}
        catch (IOException e)
        {
e.printStackTrace();
}
       
    }
}

public void getOwner(String line) {
//Nur der inhaber darf auch Server befehle ausführen!
    Pattern checkOwner = Pattern.compile("^:" + owner + "!"); //da muss die regex noch so angepasst werden das nur genau dieser name verwendet werden kann und nich z.B. Ph0xEn1 statt Ph0xEn
    ownership = checkOwner.matcher(line.subSequence(0, owner.length()+2));
}

public void exitBot(String line) {
//!exit - quit current irc room
    Pattern exitRegex = Pattern.compile("!exit", Pattern.CASE_INSENSITIVE);
    Matcher exit = exitRegex.matcher(line);
    if(exit.find() && ownership.find()) //Den Owner noch mal überpfüfen Ganz wichtig
    {
        try
        {
writer.write("PRIVMSG " + channel + " :Ciao Ladies!\n");
writer.write("QUIT " + channel + "\n");
        writer.flush();
        irc.close();
        System.exit(0);
}
        catch (IOException e)
        {
e.printStackTrace();
}
       
    }
}

public void getChuckWitz(String line) {
Pattern chuckRegEx = Pattern.compile("!chuck", Pattern.CASE_INSENSITIVE);
    Matcher chuck = chuckRegEx.matcher(line);
    if(chuck.find()) {
    try
    {
writer.write("PRIVMSG " + channel + " :" + chuckWitz[rand()] + "\n");
writer.flush();
}
    catch (IOException e)
    {
e.printStackTrace();
}
    }
}

public void kickUser(String line) {
//Benutzer Kicken
Pattern kickRegEx = Pattern.compile("!kick", Pattern.CASE_INSENSITIVE);
    Matcher kick = kickRegEx.matcher(line);
    if(kick.find() && ownership.find()) {
   
    try
    {
    String user = "";
    user = line.substring(line.indexOf(":!kick ") + 7, line.length());
writer.write("KICK " + channel + " :" + user +"\n");
writer.flush();
}
    catch (IOException e)
    {
e.printStackTrace();
}
    }
}

public void getTime(String line) {
//Zeit ausgeben
Pattern timeRegex = Pattern.compile("!time", Pattern.CASE_INSENSITIVE);
    Matcher time = timeRegex.matcher(line);
    if(time.find() && ownership.find() )
    {
        try
        {
        Date date = new Date();
            writer.write("PRIVMSG " + channel + " :" + date +"\n");
writer.flush();
}
        catch (IOException e)
        {
e.printStackTrace();
}
    }

}

public void readConsole() {
try
{
writer.write("PRIVMSG " + channel + " :" + readConsole.readLine() + "\n");
writer.flush();
}
catch (IOException e)
{
e.printStackTrace();
}
}

public int rand() {
Random r = new Random();
int randint = r.nextInt(chuckWitz.length);
return randint;
}
}


MfG
Gespeichert
Master of Puppets
Newbie
*
Beiträge: 1


Profil anzeigen E-Mail
« Antworten #1 am: Februar 18, 2009, 01:03:04 »

wo testest du deine irc bots ? gibt es server die die nich ganz so schnell oder vll sogar garnicht entdecken oder setzt du dir eigene auf ?
Gespeichert
whit3
Sr. Member
****
Beiträge: 324


892640
Profil anzeigen WWW E-Mail
« Antworten #2 am: Februar 18, 2009, 08:36:17 »

Das is kein Bot für ein BOTNET, sonder ein Protection Bot. So Lese ich das zumindest, sollte ich mich irren bitte berichtigen.
Gespeichert

Die "Szene"<
r3miX
Kurzfristige Teampause
Full Member
***
Beiträge: 105

Auf Anfrage
Profil anzeigen WWW E-Mail
« Antworten #3 am: Februar 18, 2009, 10:18:27 »

Hallo,

joar, auch mal schön das sich hier einige Java-Programmierer befinden.
Der Bot ist soweit ganz schön geworden ;>
Um Funktionen kann man ihn sehr leicht erweitern.
Java ist eh eine tolle Sprache.


r3miX.
Gespeichert


Ph0xEn
Jr. Member
**
Beiträge: 62


Profil anzeigen E-Mail
« Antworten #4 am: Februar 19, 2009, 07:04:08 »

Zitat von: r3miX;9678
Java ist eh eine tolle Sprache.
r3miX.

So siehts aus!

Und wie schon geasgt von whit3, es ist kein Botnet-Bot L&#228;chelnd

// Schön das mal was in der Java Section gepostet wird...^^

Mfg
Gespeichert
Seiten: [1]
  Drucken  
 
Gehe zu:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines | New Look by Nolt Prüfe XHTML 1.0 Prüfe CSS