da mir netirc zu überladen und ircg zu teuer ist, habe ich nun selbst einen php irc bot programmiert... der connect zum server klappt wunderbar, register und nickset klappen auch, und der timestamp aus den pings wird einfach mit explode rausgefiltert und mit pong zurückgesendet, sowie modt werden abgefangen und anschließend wird der gewünschte channel gejoint...
wer sich mit raw connects ins irc auskennt (a la telnet und co) wird wissen, dass dort nicht wie in mIRC und co sachen wie "<Name> hallo" ankommen, sondern eher syntaktische sachen wie ":name!~meinident@mein.isp.de PRIVMSG #channel :hallo" ankommen...
seit längerer zeit beschäftige ich mich damit, dieses sauber zu unterteilen... perfekt wäre ein array der in etwa so aussieht
empfangenes['name'] = "name"
empfangenes['ident] = "meinident"
empfangenes['isp'] = "mein.isp.de"
empfangenes['action'] = "PRIVMSG"
empfangenes['channel'] = "#channel"
empfangenes['text'] = "hallo"
warum ich das so genau beschreibe? ich brauche hilfe, eventuell tip(p)s wie dies am besten zu lösen ist... mit explode bin ich gehscheitert, da, wenn trennzeichen im text vorkamen, eben diese dann auch abgetrennt wurden etc... blabla
jemand ne idee?
hier der gehirnbrand den ich bis jetzt zu stande gebracht habe...
jaja, nicht sehr toll und sicher, aber für den anfang reichts erstmal imo... geht ja nur ums logging, soll kein talkbot werden...
wer sich mit raw connects ins irc auskennt (a la telnet und co) wird wissen, dass dort nicht wie in mIRC und co sachen wie "<Name> hallo" ankommen, sondern eher syntaktische sachen wie ":name!~meinident@mein.isp.de PRIVMSG #channel :hallo" ankommen...
seit längerer zeit beschäftige ich mich damit, dieses sauber zu unterteilen... perfekt wäre ein array der in etwa so aussieht
empfangenes['name'] = "name"
empfangenes['ident] = "meinident"
empfangenes['isp'] = "mein.isp.de"
empfangenes['action'] = "PRIVMSG"
empfangenes['channel'] = "#channel"
empfangenes['text'] = "hallo"
warum ich das so genau beschreibe? ich brauche hilfe, eventuell tip(p)s wie dies am besten zu lösen ist... mit explode bin ich gehscheitert, da, wenn trennzeichen im text vorkamen, eben diese dann auch abgetrennt wurden etc... blabla
jemand ne idee?
hier der gehirnbrand den ich bis jetzt zu stande gebracht habe...
PHP-Code:
<?php
$socket=fsockopen("irc.server.de",6667);
while($string=fgets($socket))
{
if (stristr($string,"ident"))
{
break;
}
}
fputs($socket,"user bot 0 0 bot\n");
fputs($socket,"nick botname\n");
$pingreply=fgets($socket);
$pingstamp=explode(" :",$pingreply);
fputs($socket,"PONG :".$pingstamp[1]."\n");
while(true)
{
if (stristr(fgets($socket),"End of /MOTD command."))
{
break;
}
}
fputs($socket,"join #channel\n");
while($string=fgets($socket))
{
//
//
// hier bräuchte ich die string zerlegung :)
// von $string ;)
//
//
// ...erstmal temporäre unsaubere abfrage nach einer privmsg
// nur damit der bot wenigstens anständig disconnected falls ich will
if (stristr($string,"privmsg"))
{
// wenn jemand quit sagt...
if (stristr($string,"quit"))
{
fputs($socket,"quit\n");
}
}
// pings mit pong beantworten...
if (stristr($string,"ping"))
{
$pongsrv=explode(" :",$string);
fputs($socket,"PONG :".$pongsrv[1]."\n");
}
}
?>
Kommentar