PHP IRC BOT und BNC Login

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Decryptor, 22. Dezember 2013 .

Schlagworte:
  1. 22. Dezember 2013
    Zuletzt bearbeitet: 22. Dezember 2013
    Hallo, würde gerne einen IRC Bot umsetzen, PHP wäre hierbei das Ziel, das ganze soll so minimal wie möglich sein, im großen funktioniert der und macht auch das was er soll, nur wie bekomme ich ihn nun dazu auf einem bnc zu conecten.

    Meine Versuche in die Richtung Enden immer damit, da er meint das ich kein Pass mit übergebe also habe ich folgendes versucht:

    $this->send_data('/OUTE PASS', 'mein pass');

    was aber ebenfalls nicht zum erfolg führt


    Code:
    <?php
    
    //So the bot doesnt stop.
    
    set_time_limit(0);
    
    ini_set('display_errors', 'on');
    
    
    //Example connection stuff.
    
    $config = array(
    'server' => 'server',
    'port' => 'port',
    'nick' => 'Decryptor',
    'name' => 'Decryptor',
    'pass' => 'Passwort',
    'Ident' => 'Decryptor',
    'USERID' => 'Decryptor',
    'chan' => '#test2',
    );
    
    
    class IRCBot {
     var $socket;
     var $ex = array();
    
     function __construct($config)
     {
     $this->socket = fsockopen($config['server'], $config['port']);
     $this->login($config);
     $this->main();
     $this->send_data('JOIN', '#chat');
     }
    
    
     function login($config)
     {
     $this->send_data('USERID', $config['nick']);
     $this->send_data('USER', $config['nick'], $config['nick'].' :'.$config['name']);
     $this->send_data('NICK', $config['nick']);
     sleep(6);
     $this->send_data('JOIN', $config['chan']);
     }
    
    
     function main()
     {
    
     $data = fgets($this->socket, 128);
     flush();
     $this->ex = explode(' ', $data);
     if($this->ex[0] == 'PING')
     {
     $this->send_data('PONG', $this->ex[1]); //Plays ping-pong with the server to stay connected.
     }
     $command = str_replace(array(chr(10), chr(13)), '', $this->ex[3]);
    
     echo $this->ex[0];
    
     if(preg_match("/Decryptor/", $this->ex[0]))
     {
     switch($command) //List of commands the bot responds to from a user.
     {
     case ':!quit':
     $this->send_data('QUIT', 'acidavengers.co.uk made Bot');
     break;
     case ':nix':
     print_r($this);
     break;
     }
     }
     $this->main();
     }
    
     function send_data($cmd, $msg = null) //displays stuff to the broswer and sends data to the server.
     {
     if($msg == null)
     {
     fputs($this->socket, $cmd."\r\n");
     echo "$cmd \n";
     } else {
     fputs($this->socket, $cmd.' '.$msg."\r\n");
     echo "$cmd, $msg \n";
     }
     }
    }
    $bot = new IRCBot($config);
    
    ?>
    
    
    
     
  2. 22. Dezember 2013
    AW: PHP IRC BOT und BNC Login

    Wo hast du das eingefügt? Hast du mal den Traffic mitgeloggt und geschaut, ob alles passt?
     
  3. 22. Dezember 2013
    Zuletzt bearbeitet: 22. Dezember 2013
    AW: PHP IRC BOT und BNC Login

    vmware debian, wegen loggen mal schauen, wenn ich normal über nen irc ohne pw gehe funzt es ja
     
  4. 22. Dezember 2013
    AW: PHP IRC BOT und BNC Login

    Mit wo meine ich wo im Code. Außerdem benötigen alle anderen Commands im Sckipt kein "/" am Anfang. Ich habe das IRC Protokoll nicht im Kopf (und bin auch zu faul jetzt die passenden Stellen im RFC dazu zu suchen) aber an das Protokoll musst du dich schon halten. Wenn du den benötigten Traffic kennst (wovon ich mal ausgehe) würde ich einfach den vom Script gesendeten Traffic mitloggen. Dann siehst du ja recht schnell wo das Problem liegt.
     
  5. 22. Dezember 2013
    Zuletzt bearbeitet: 23. Dezember 2013
    AW: PHP IRC BOT und BNC Login

    stimmt, hatte aber auch mehere variaten ausprobiert, ich hatte es direkt nach dem Login, aber tat sich trotzdem nichts, naja morgen nochmal schauen

    edit:

    hab nun den Fehler:

    Die User Anmeldung ist Murks, und laut Ref muss man bevor man den nick schickt erstmal ein PASS pw schicken, dann fuktioniert das ganze auch
     
  6. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.