<?php
//////////////////////Chatbot voor Mastaline Chatbox///////////////////////////
/////////////////////////////Made by Stijn/////////////////////////////////////
//Eerst zorgen we er voor dat het script oneindig mag doorlopen.
ini_set("max_time_limit",0);
//En dan gaan we instellingen definiëren:
//Eerst de Chatserver:
$bot['server'] = "mlchatserv.mine.nu";
//De poort van de Sjetserver:
$bot['poort'] = "1337";
//Dan het IP waar je deze bot op draait.
//Vind je zo: start, uitvoeren, cmd, ping <www.jouwwebsite.com>
$bot['hostname'] = "213.93.210.112"; //ppx: ga ff moeilijk doen ofzo. =P
//De nickname van de bot:
$bot['nick'] = "testbot";
//Wachtwoord als je bot een account heeft. Laat leeg als ie niet heeft:
$bot['loginpass'] = "";
//De tekstkleur van de bot:
$bot['kleur'] = "7995408";
//De versie:
$bot['versie'] = "MLC013B";
//Nu maken we ff enkele functies aan:
function sockwrite($data){
global $bot;
socket_write($bot['socket'],$data."\r\n");
}
function zendbericht($bericht)
{
global $bot;
sockwrite("MSG ".$bot['kleur']." ".$bericht."@@@");
usleep(2000);
}
function privebericht($bericht, $nick)
{
sockwrite("PMG ".$nick." ".$bericht."@@@");
}
function bericht($bericht)
{
echo $bericht."<br />
";
flush();
}
//Socket aanmaken:
if (!$bot['socket']=socket_create(AF_INET,SOCK_STREAM,SOL_TCP)) {
die("De socket kon niet worden aangemaakt.");
}
//Socket vastbinden aan botserver:
if (!@socket_bind($bot['socket'],$bot['hostname'])) {
die("Kon de verbinding niet koppelen aan <b>".$bot['hostname']."</b>. Misschien fout?");
}
//En verbinden met de sjetserver:
if (!@socket_connect($bot['socket'],$bot['server'],$bot['poort'])) {
die("Kon geen verbinding maken met de server: <b>".$bot['server']."</b>. Misschien fout?");
}
//En dan gaan we inloggen :-)
//Eerst moeten we de versie van onze client sturen.
sockwrite("VER ".$bot['versie']."@@@");
//Gebruikersnaam en/of wachtwoord sturen:
if (!empty($bot['loginpass']))
{
socket_write($bot['socket'], "USR ".$bot['nick']."@@@".chr(13));
socket_write($bot['socket'], "PWD ".$bot['loginpass']."@@@\r\n");
} else {
sockwrite("USR ".$bot['nick']."@@@");
}
echo "<hr />
Alle logindata is verstuurd!";
flush();
$msgi = 0;
//En dan starten we nu de main while: deze loopt elke keer als ie een berichtje binnenkrijgt. :-)
while ($data=socket_read($bot['socket'],65000,PHP_BINARY_READ))
{
//Ik tel graag het hoeveelste berichtje er binnen gekomen is: :+
$msgi++;
//De eerste 3 letters van bericht is een commando.
$commando = substr($data, 0, 3);
if ($commando == "ERR")
{
bericht ("ERR commando");
bericht("<font color="red">".$data."</font>");
} elseif ($commando == "MSG")
{
//Iemand zei iets!
$exploded = explode(" ", $data);
$enickcommand = explode(" ", $exploded[0]);
$nick = $enickcommand[1];
$kleur = $exploded[1];
$array = explode("@@@", $exploded[2]);
$bericht = $array[count($array) - 2];
bericht ("Bericht van ".$nick.": ".$bericht);
if ($bericht == "hoi")
{
//Als iemand hoi zegt, moeten we iets terugzeggen!
zendbericht("Hoi, ".$nick);
}
} elseif ($commando == "LEA")
{
//Iemand gaat buiten
$exploded = explode(" ", $data);
$exploded2 = explode("@@@", $exploded[1]);
$nick = $exploded2[count($exploded2) - 2];
zendbericht ("Bye, ".$nick."!");
} elseif ($commando == "USR")
{
//Iemand komt binnen
$exploded = explode(" ", $data);
$exploded2 = explode("@@@", $exploded[1]);
$nick = $exploded2[count($exploded2) - 2];
zendbericht ("Welkom, ".$nick."!");
} elseif ($commando == "PNG")
{
//Onno speelt graag pingpong.
$exploded = explode(" ", $data);
$exploded2 = explode("@@@", $exploded[1]);
$ping = $exploded2[count($exploded2) - 2];
if ($ping == "ping")
{
//Als Onno ping doet, moeten wij Pong doen eh :+ Logisch toch?
sockwrite("PNG pong@@@");
}
} elseif ($commando == "MEG")
{
//Iemand zei /me!
$exploded = explode(" ", $data);
$enickcommand = explode(" ", $exploded[0]);
$nick = $enickcommand[1];
$bericht = "";
for ($i = 0; $i < count($enickcommand) - 1; $i++)
{
if ($i > 0)
{
$bericht .= $enickcommand[$i]." ";
}
}//for
bericht ("/me van ".$nick.": ".$bericht);
//Hier reageert de bot niet echt op (tenzij jij dat bij maakt)
//Wat ie zei, zit in $bericht
} elseif ($commando == "PMG")
{
//We krijgen een privebericht! =O
$exploded = explode(" ", $data);
$enickcommand = explode(" ", $exploded[0]);
$nick = $enickcommand[1];
$array = explode("@@@", $exploded[1]);
$bericht = $array[count($array) - 2];
bericht ("Privebericht van ".$nick.": ".$bericht);
if ($bericht == "hoi")
{
//als iemand hoi zegt, gaan we antwoorden hé :-)
privebericht("Hoiii! Alles goed?", $nick);
}
} elseif ($commando == "NOT")
{
//Er komt een notice binnen (een berichtje dat enkel admins en de server kan versturen)
bericht("Notice: ".$data);
} elseif($commando == "STA")
{
//Er komt een statuswijziging binnen.
//STA -1: Iemand komt online
//STA 1: Iemand wordt Admin
//STA 2: Iemand gaat offline
//STA 4: Iemand wordt bot
bericht ("STAtus: ".$data);
} else {
//Sja... Als er iets onbekend binnenkomt, moeten we een fout geven eh!
bericht ("Onbekend commando! ".$data);
}
}//while moet ook afgesloten worden
echo "De bot is gestopt! Er zijn ".$msgi." berichtjes binnengekomen! =D";
?>