Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » PHP » IRC Bot mit PHP

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
23.01.2008, 22:20 Uhr
Karldin Shinowa
Professional Noob


Ich fange gerade an nen Bot für IRC zu coden. Vllt hat das einer auch schon mal gemacht. Eigentlich sollte er schon connecten können. tut er aber nicht. was mach ich falsch?



PHP 4:
<?php

class Bot
{
//LOW-LEVEL
    var $irc;//holds IRC Connection
    var $db;//holds Database Connection
    var $rawdata;
    var $data;
//BOT
    var $botNick;
    var $botPassword;
    var $botIdent;
    var $botRealname;
    var $quitmessage;
//SERVER
    var $serverAddress;
    var $serverPort;
    var $serverChannel;
//DB
    var $databaseHost;
    var $databaseUser;
    var $databasePassword;
    var $databaseName;

    function Bot()
    {
       set_time_limit(0);
    }



    function setBot($nick,$quitmessage)
    {
       $this->botNick=$nick;
       $this->botIdent=$nick;
       $this->botRealname="Bot".$nick;
       $this->quitmessage=$quitmessage;
    }

    function setServer($adress,$port,$channel)
    {
       $this->serverAdress=$adress;
       $this->serverPort=$port;
       $this->serverChannel=$channel;
    }

    function setDatabase($host,$user,$password,$name)
    {
       $this->databaseHost=$host;
       $this->databaseUser=$user;
       $this->databasePassword=$password;
       $this->databaseName=$name;
    }

    function connect()
    {
       //DATABASE
       $this->db = mysql_connect($this->databaseHost, $this->databaseUser, $this->databasePassword);
       mysql_select_db($this->databaseName, $this->db);

       //IRC-SERVER
       $this->irc = fsockopen($this->serverAdress,$this->serverPort, $err_num, $err_msg, 30);


       if (!$this->irc)
       {
          echo "Fehler aufgetreten beim verbinden mit ".$this->serverAdress;
          exit();
       }
       else
       {
          $this->send("USER ".$this->botIdent." ".$this->serverAdress." bla :".$this->botRealname);
          $this->send("NICK ".$this->botNick);
          $this->send("JOIN ".$this->serverChannel);
       }
    }

    function send($data)
    {
       echo'Sende '.$data.'<br>';
       fputs($this->irc, $data."\n");
    }

}

$channel= //"dsx";   , das Board zeigts irgendwie falsch an daher hier Kommentare, in meiner Datei is natürlich richtig
$MyBot=new Bot();
$MyBot->setBot('Loial','Cu Later');
$MyBot->setDatabase(...);
$MyBot->setServer('irc.sorcery.net','6667',$channel);

$MyBot->connect();
?>



Falls sich da wer auskennt wäre Hilfe toll. Was mach ich da falsch. Er sagt zwar das er alles ausführt, der Bot erscheint jedoch nie am server...
--
Ich will die Welt verbessern, doch Gott gibt mir nicht den Code.

Dieser Post wurde am 23.01.2008 um 22:25 Uhr von Karldin Shinowa editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
24.01.2008, 11:09 Uhr
FunnyDingo



Ich würde einen kleinen Teil deines Codes mal ändern. Und zwar die if-Abfrage nach dem fsockopen():

PHP 4:
if (!$this->irc)
{
    $this->errorMsg = "Fehler aufgetreten beim verbinden mit '" . $this->serverAdress .  "': " . $err_msg;
    return false;
}
else
{
  ...
  return true;
}
...
if (!$MyBot->connect())
    die($MyBot->errorMsg);



Kurze zusammenfassung:
Die Fehlermeldung wird in eine Variable geschrieben. Außerdem wird nun auch $err_msg mit ausgegeben. Der connect() Aufruf wurde in eine if-Abfrage gepackt und gibt im false-Falle die Fehlermeldung aus. Warum so? 1) Kannst du dann sehen was für ein Fehler aufgetreten ist (das ist für die Fehlersuche doch schon hilfreich) und 2) sollte eine solche Klasse kein echo(), die(), exit() o.ä. benutzen.

Wenn du die Änderung laufen lässt, solltest du sehen was er für ein Problem hat. Ich kanns leider nicht testen, da ich vom Firmenetzwerk aus kaum rauskomme.
--
"Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral." (John James Osborne)

Meine Website: http://www.funnydingo.de
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ PHP ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: