Mailinglisten-Archive |
Hi,
> 1) du hast nicht so die Ahnung von IRC, das kann vorkommen
> IRC ist ein verbindungsorientiertes TCP-Protokoll, HTTP
> dagegen ist verbindungs- und statuslos, d.h. rein mit PHP
> über Webseiten wird das nichts, dazu brauchst du noch irgendwo
<?php
# Include the IRC layer
include("phpIRC.inc.php3");
include("phpIRC.php3");
$wanted_nick = "";
$wanted_server = "";
$wanted_port = 6667;
$wanted_channel = "";
$irc_default_realname = "#bonn infobot | running apache/php | roxic";
$mysql_host = "";
$mysql_user = "";
$mysql_pass = "";
$mysql_database = "";
$mysql_table = "phpbot_query";
$db = mysql_pconnect("$mysql_host","$mysql_user","$mysql_pass");
$db = mysql_select_db("");
# privmsg_callback()
function privmsg_callback($code, $nick, $identd, $host, $destination, $text)
{
if ($text == "01937141") {
irc_disconnect("Ich gehe !");
}
elseif ($text == "quit"){
irc_privmsg("#bonn", "$nick will mich rauswerfen ! *heul*");
}
else {
irc_privmsg($nick, "alles scheisse");
}
}
function channel_callback($code, $nick, $identd, $host, $destination, $text)
{
if (eregi("http://(.*)", $text, $out)) {
$year = date("Y");
$month = date("m");
$day = date("d");
$hour = date("H");
$minute = date("i");
$http = "http://$out[1]";
$db = mysql_query("INSERT INTO bonn_urls (url, nick, identd, host,
year, month, day, hour, minute) VALUES ('$http', '$nick', '$identd',
'$host', '$year', '$month', '$day', '$hour', '$minute')");
}
elseif (eregi("^!whois (.*)", $text, $out))
{
$lookup = $out[1];
$whois = "whois.geektools.com";
$fp = fsockopen($whois, 43, &$errno, &$errstr, 30);
if (!$fp)
printf("Error: %s (%s)", $errstr, $errno);
}
else
$lookup .= "\n";
fputs($fp, $lookup);
while(!feof($fp))
{
$line = fgets($fp, 128);
if (!eregi("^%", $line))
{
if (!eregi("GeekTools", $line))
if (!eregi("copyrighted", $line))
if (!eregi("212.227.109.51",
$line))
sleep(1);
irc_privmsg($nick,
$line);
}
}
}
}
}
fclose($fp);
irc_privmsg($nick, "== EOF == roxic 2000 == Running Apache/Php");
sleep(30);
} }
elseif (eregi("^!learn (.*) = (.*)", $text, $out)) {
$year = date("Y");
$month = date("m");
$day = date("d");
$hour = date("H");
$minute = date("i");
$wort = $out[1];
$beschreibung = $out[2];
$db = mysql_query("SELECT * from bonn_learn where wort = '$wort'");
$row = mysql_fetch_array($db);
if ($row["wort"] != "") {
irc_privmsg($destination, "$wort gibts schon");
}
else {
$db = mysql_query("INSERT INTO bonn_learn (wort, beschreibung, nick,
identd, host, year, month, day, hour, minute) VALUES ('$wort',
'$beschreibung', '$nick', '$identd', '$host', '$year', '$month', '$day',
'$hour', '$minute')");
irc_privmsg($destination, "$wort gespeichert ...");
}
}
elseif (eregi("^!(.*)", $text, $out)) {
$wort = $out[1];
$db = mysql_query("SELECT * from bonn_learn where wort like '$wort'
LIMIT 0, 30 ");
$row = mysql_fetch_array($db);
if ($row == "") {
irc_privmsg($destination, "$wort kennich nich");
}
else
{
$wort = $row["wort"];
$beschreibung = $row["beschreibung"];
irc_privmsg($destination, "$wort = $beschreibung
(".$row["nick"].")");
}
}
}
ignore_user_abort(1);
set_time_limit(0);
error_reporting(63);
// initialize IRC layer
if(!irc_init())
die("Initialization error.<br>");
// turn on debugging
irc_set_debug_mode(0);
// set our nick
irc_change_nick($wanted_nick);
// try to connect to server
if(!irc_connect($wanted_server, $wanted_port))
die("Connection error.<br>");
// join a channel
$channel_handle = irc_join($wanted_channel);
// in case the join failed -> quit
// the join will NOT fail in case the channel is invite-only or
// a similar reason exists preventing us from getting in!
if(!$channel_handle)
die("Join error.<br>");
irc_add_callback(IRCCB_ONPRIVMSG, "privmsg_callback");
irc_add_callback(IRCCB_ONCHANNELMSG, "channel_callback");
// ok, this is the main loop - we don't give a break condition
// here, so this will not return until we get disconnected.
// the only possibility to gain control again is via callbacks.
irc_idle(IRC_NOBREAK);
?>
Freundliche Gruesse,
Sebastian Nohn
--
NeT&Trade GmbH email : s.nohn_(at)_nettrade.de
TechnoPark der GMD www : http://www.nettrade.de/
Rathausallee 10 tel : +49 22 41 - 20 40 33
53757 Sankt Augustin fax : +49 22 41 - 20 40 34
Germany mobile: +49 173 - 59 64 377
php::bar PHP Wiki - Listenarchive