Neue Antwort schreiben 
 
Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
IRC Bot umgehen
Benjamin92 Offline
tauscht CMOS-Batterie per TeamViewer

Beiträge: 7.787
Registriert seit: Jul 2008
Beitrag #1
IRC Bot umgehen
Ich suche ein Programm, das automatisch alle 59 Minuten einen Beitrag in einem IRC macht. Sinn der Sache ist, dort wird man gekickt, wenn man 60 Minuten idelt. Hättet ihr da eine Idee? Wäre dankbar für eure Hilfe.
25.05.2010 14:52
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
niwax Offline
Hardcore-Coder

Beiträge: 3.822
Registriert seit: Dec 2009
Beitrag #2
IRC Bot umgehen
Schreib dir deinen IRC-Client oder lad dir einen OpenSource-Client runter und bau die Funktion ein


25.05.2010 15:02
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Benjamin92 Offline
tauscht CMOS-Batterie per TeamViewer

Beiträge: 7.787
Registriert seit: Jul 2008
Beitrag #3
IRC Bot umgehen
Gibts da nicht ne fertige Lösung?
25.05.2010 15:03
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
niwax Offline
Hardcore-Coder

Beiträge: 3.822
Registriert seit: Dec 2009
Beitrag #4
IRC Bot umgehen
Weis nicht. Vielleicht kannste ja irgendwo im Menü von irgendnem Client ne automatische Statusmeldung einschalten, die dann das erledigt oder so


25.05.2010 15:11
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
friedrichheinze Offline
...und Kondensatoren.

Beiträge: 2.838
Registriert seit: Jul 2008
Beitrag #5
IRC Bot umgehen
IRC Clients zu schreiben ist sehr einfach :) das kriegst du auch so hin.
25.05.2010 16:00
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Blue-Fox Offline
nothing to see here

Beiträge: 2.749
Registriert seit: Jul 2008
Beitrag #6
IRC Bot umgehen
Du hast nicht zufällig irgendwo eine Anleitung, oder?
25.05.2010 16:25
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
niwax Offline
Hardcore-Coder

Beiträge: 3.822
Registriert seit: Dec 2009
Beitrag #7
IRC Bot umgehen
Unter .net sind das nur noch ein paar Codezeilen, man muss dann nur noch die jeweiligen Protokolle etwas kennen.
EDIT: Hier mal in verschiedenen Programmiersprachen:
http://www.tutorials.de/forum/c-c-tutori...ieren.html
http://www.coding-board.de/board/showthread.php?t=1064
http://board.raidrush.ws/showthread.php?t=98318
Das letzte scheint gut zu sein (und nach VB.net portierbar, was das alles sehr erleichtert)
Und noch das: http://www.visual-basic-forum.de/wiki_irc_client.html


(Dieser Beitrag wurde zuletzt bearbeitet: 25.05.2010 16:31 von niwax.)
25.05.2010 16:27
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
friedrichheinze Offline
...und Kondensatoren.

Beiträge: 2.838
Registriert seit: Jul 2008
Beitrag #8
IRC Bot umgehen
Hm. Hab mal in Java so was Bot-mäßiges geschrieben.

Code:
package bot;
import java.io.*;
import java.net.*;
import java.util.regex.*;

public class Bot {
    private final String server = "irc.euirc.net";
    private final int port = 6667;    
    private final String nick = "euterhut";
    private final String hostname = "IHaveNoIdeaWhatThisDoes";
    private final String servername = "IHaveNoIdeaWhatThisDoes";
    private final String realname = "Fritz";
    private final String channel = "#kirschmet";

    private Socket irc;
    private BufferedWriter out;
    private BufferedReader in;

    private boolean running;
    private boolean joined;
    
    /**
     * Connect to the given IRC server.
     **/
    private void connect() throws IOException {
        System.out.println("Connecting...");
        irc = new Socket(server, port);
        out = new BufferedWriter(new OutputStreamWriter(irc.getOutputStream(), "UTF-8"));
        in = new BufferedReader(new InputStreamReader(irc.getInputStream(), "UTF-8"));
        out.write("NICK " + nick + "\n");
        out.write("USER " + nick + " " + hostname + " " + servername + " " + realname + "\n");
        out.flush();
        joined = false;
        running = true;
        System.out.println("Connected.");
    }
    
    /**
     * The most important method. Handles PING requests and everything else.
     **/
    private void communicate() throws IOException {
        // loop forever
        while(running) {
            // New message coming in!
            if(in.ready()) {
                /* This is called every time a message arrives. */
                /* NOTE: Could also be server messages, PINGs etc… */
                String line = in.readLine();
                // Respond to PING so that we don't get disconnected
                if(isPing(line)) {
                    doPing(line.substring(5));
                }

                // Join if we haven't joined the channel yet
                if(!joined && isConnected(line)) {
                    join();
                }
                
                // Output the line for debugging purposes
                System.out.println(line);
            }            
            /* This is called approximately all 100 milliseconds, probably less often. */
            /* Adjust to your liking. */
            /* Note that it has to be called very often to check for new PING requests. */            
            wait(100);
            // SPAM THE CHANNEL FOR GREAT JUSTICE!
            if(joined) say("Hello!");
        }
    }
    
    /**
     * Super-Awesome waiting method, yeah!
     */
    private void wait(int milliseconds) {
        try {
            Thread.sleep(milliseconds);
        } catch (InterruptedException e) {
            System.err.println("Sleeping thread interrupted.");
        }
    }
    
    /**
     * Determines whether the given message is a confirmation
     * that you have successfully connected to the IRC server.
     */
    private boolean isConnected(String line) {
        Pattern p = Pattern.compile("End of /MOTD command.", Pattern.CASE_INSENSITIVE);
        Matcher m = p.matcher(line);
        return m.find();
    }
    
    /**
     * Join the given channel.
     */
    private void join() throws IOException {
        System.out.println("Joining channel...");
        out.write( "JOIN " + channel + "\n" );
        out.flush();
        joined = true;
        System.out.println("Joined channel.");
    }
    
    /**
     * Figure out if an incoming message is a PING request.
     */
    private boolean isPing(String line) {
        Pattern p = Pattern.compile("^PING", Pattern.CASE_INSENSITIVE);
        Matcher m = p.matcher(line);
        return m.find();
    }
    
    /**
     * Respond to a PING message. Necessary so you don't get disconnected.
     */
    private void doPing(String receiver) throws IOException {
        out.write("PONG " + receiver + "\n");
        out.flush();
        System.out.println("Responded to ping.");
    }
    
    /**
     * Broadcast a message to the whole channel
     */
    private void say(String msg) throws IOException {
        System.out.println("Saying '" + msg + "'");
        out.write("PRIVMSG " + channel + " :" + msg + "\n");
        out.flush();
    }

    
    /**
     * The main method. Nothing fancy here...
     */
    public static void main(String[] args) {
        Bot bot = new Bot();
        try {
            bot.connect();
            bot.communicate();
        } catch (IOException e) {
            System.err.println("Error :(\n" + e.getMessage());
        }
    }
}
(Dieser Beitrag wurde zuletzt bearbeitet: 25.05.2010 20:34 von friedrichheinze.)
25.05.2010 17:08
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
chiaki Offline
Die Pommesfee

Beiträge: 12.534
Registriert seit: Jul 2008
Beitrag #9
IRC Bot umgehen
ein hoch auf java :)
25.05.2010 20:34
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Spit Offline
fetter klempner

Beiträge: 26.837
Registriert seit: Jul 2008
Beitrag #10
IRC Bot umgehen
eudahut
25.05.2010 20:35
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Neue Antwort schreiben 


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 3 Gast/Gäste