message(SMARTIRC_TYPE_CHANNEL, $channel, $user.': Ah...No!'); } return $nick_admin; } class bot { function parse(&$irc, &$data) { $recip = $data->channel; $msgToMe = false; $msgPrefix = 'nothing'; $msg = $data->message; global $triggers; foreach ($triggers as $prefix) { if ( substr($msg, 0, strlen($prefix)) == $prefix ) { $msgToMe = true; $msgwithoutident = substr($msg, strlen($prefix)); } } if ($msgToMe == true) { $msg_parts = explode(' ', $msgwithoutident, 2); echo date("H:i:s")." - ".$data->nick." @ ".$recip." =>"; foreach ($msg_parts as $stuff) { echo " ".$stuff.""; } echo "\n"; include("functions.php"); } else { //Store the message with a time and date $dataf = new FFDB("data.txt"); $array = $dataf->get_table($recip); $array[] = array("user" => $data->nick, "time" => strtotime("now"), "msg" => $data->message); $dataf->write_table($recip,$array); } } function action(&$irc, &$data) { $recip = $data->channel; $msg = "*".substr($data->message, 7, -1); $dataf = new FFDB("data.txt"); $array = $dataf->get_table($recip); $array[] = array("user" => $data->nick, "time" => strtotime("now"), "msg" => $msg); $dataf->write_table($recip,$array); } function part(&$irc, &$data) { $recip = $data->channel; $msg = $data->nick." left at ".date('m/d/Y h:m:s e',strtotime("now")).""; $irc->message(SMARTIRC_TYPE_CHANNEL, $recip, $msg); $datap = new FFDB("data_users.txt"); $arrayp = $datap->get_table($recip); $arrayp[] = array("user" => $data->nick, "left" => strtotime("now")); echo $data->nick." left at ".strtotime("now")."\n"; $datap->write_table($recip,$arrayp); } function join(&$irc, &$data) { $recip = $data->channel; $msg = $data->nick." joined at ".date('m/d/Y h:m:s e',strtotime("now")).""; $irc->message(SMARTIRC_TYPE_CHANNEL, $recip, $msg); $data_users = new FFDB("data_users.txt"); $users = $data_users->get_table($recip); foreach ($users as $id_users => $n_users) { if ($users[$id_users]['user'] == $data->nick) { $data_msg = new FFDB("data.txt"); $messages = $data_msg->get_table($recip); $i = 0; foreach ($messages as $id => $n_messages) { if ($messages[$id]['time'] > $users[$id_users]['left'] && $messages[$id]['time'] < strtotime("now")) { //echo "Msg time: ".$messages[$id]['time']." Left time: ".$users[$id_users]['left']." Now: ".strtotime("now")." I: $i\n"; echo "Content: ".$messages[$id]['msg']."\n"; echo "Msg: ".$messages[$id]['time']."\n"; echo "Left: ".$users[$id_users]['left']."\n"; echo "Now: ".strtotime("now")."\n"; echo "--------------------------\n"; if ($i < 5) { $msg = "[".date('m/d/Y h:m:s e',$messages[$id]['time'])."] <".$messages[$id]['user'].">: ".$messages[$id]['msg'].""; $irc->message(SMARTIRC_TYPE_CHANNEL, $recip, $msg); unset($messages[$id]['msg']); $i++; } } } unset($messages[$id]); break; } } } } $bot = new bot(); $irc = &new Net_SmartIRC(); $irc->registerActionhandler(SMARTIRC_TYPE_CHANNEL|SMARTIRC_TYPE_QUERY, '.*', $bot, 'parse'); $irc->registerActionhandler(SMARTIRC_TYPE_ACTION, '.*', $bot, 'action'); //$irc->registerActionhandler(SMARTIRC_TYPE_PART, '.*', $bot, 'part'); //$irc->registerActionhandler(SMARTIRC_TYPE_JOIN, '.*', $bot, 'join'); $irc->setUseSockets(TRUE); $irc->setChannelSyncing(TRUE); $irc->setSenddelay(500); echo date("H:i:s")." - Connecting to irc.freenode.net:6667...\n"; $irc->connect('irc.freenode.net', 6667); $irc->login($bot_name, $bot_real_name, 0, 'Net_SmartIRC', $bot_password); foreach ($channels as $chan) { echo date("H:i:s")." - Joining channel $chan...\n"; //Set mili to 0 $dataf = new FFDB("data.txt"); $array = $dataf->get_table($chan); $array['mili'] = time()+microtime(true); $dataf->write_table($chan,$array); } $irc->join($channels); echo date("H:i:s")." - Listening...\n"; $irc->listen(); echo date("H:i:s")." - Disconnecting...\n"; $irc->disconnect(); ?>