cDavid Skrevet 13. desember 2006 Del Skrevet 13. desember 2006 (endret) Enkelt IRC - bot lagd i php. Kommer med konfigurasjons filen winhack.ini. <?php /** * WinHack* enkelt irc bot.. * David.. * GoldenEYE på EFnet :P * med hjelp fra Erlend^se og XeruX på EfNet * [email protected] */ $file = 'WinHack.ini'; $ini = parse_ini_file("$file", true); //function sendmeld - fputs - function sendmeld($tekst, $sck){ $bufer = fputs($sck, $tekst . "\r\n"); echo "[".date("H:i:s")."]"."<" . $tekst . "\r\n"; } //koble til set_time_limit(0); $forbind = fsockopen($ini['winhack']['server'], $ini['winhack']['port']); if($forbind){ //ident - NICK - USER sendmeld("NICK " .$ini["winhack"]["nick"], $forbind); sendmeld("USER " .$ini["winhack"]["nick"]." ".$ini["winhack"]["hostname"]." ".$ini["winhack"]["servername"]." :".$ini["winhack"]["realname"], $forbind); //bucle while while(!feof($forbind)){ $ini = parse_ini_file("$file", true); $bufer = fgets($forbind, 512); echo "[".date("H:i:s")."]".">" . $bufer . "\r\n"; $replace = array("\r", "\n", ":"); $bufer = str_replace($replace, "", $bufer); $delt = explode(" ", $bufer, 4); $nick = explode("!", $delt[0]); //PING if($delt[0] == 'PING'){ sendmeld('PONG ' . $delt[1], $forbind); //kommand } if(isset($delt[1])){ switch ($delt[1]){ case '004': sendmeld("JOIN " .$ini["winhack"]["kanal"], $forbind); break; case '475': sendmeld("JOIN " .$ini["winhack"]["kanal"]." ".$ini["winhack"]["kanal_pass"], $forbind); break; case 'JOIN': if($ini["config"]["join_mode"] == "on"){ $partmsg = str_replace("[kanal]", $delt[2], $ini["config"]["join_msg"]); sendmeld("PRIVMSG ".$nick[0]." :".$partmsg, $forbind); } if(in_array($nick[1], array_merge($admin, $op))){ sendmeld("MODE ".$delt[2]." +o ".$nick[0], $forbind); }else{ $voice = str_replace(" ","", $ini["winhack"]["voice"]); $voices = explode(",", $voice); if(in_array($nick[1], $voices)){ sendmeld("MODE ".$delt[2]." +v ".$nick[0], $forbind); } } break; case 'PART': if($ini["config"]["part_mode"] == "on"){ $partmsg = str_replace("[kanal]", $delt[2], $ini["config"]["part_msg"]); sendmeld("PRIVMSG ".$nick[0]." :".$partmsg, $forbind); } break; default: $admins = str_replace(" ","", $ini["winhack"]["admin"]); $ops = str_replace(" ","", $ini["winhack"]["op"]); $admin = explode(",", $admins); $op = explode(",", $ops); if(isset($nick[1])){ if(in_array($nick[1], array_merge($admin, $op))){ switch ($delt[1]){ case 'PRIVMSG': $cmd = explode(" ", $delt[3], 2); if (isset($cmd[0])){ $com = $cmd[0]; if($com{0} == "!"){ $com = explode("!", $com); if(isset($cmd[1])){ switch ($com[1]){ case 'mode': $exp = explode(" ", $cmd[1]); sendmeld("MODE ".$delt[2]." ".$exp[0]." ".$exp[1], $forbind); break; case 'join': if(in_array($nick[1], $admin)){ $exp = explode(" ", $cmd[1]); if(isset($exp[1])){ sendmeld("JOIN ".$exp[0]." ".$exp[1], $forbind); }else{ sendmeld("JOIN ".$exp[0], $forbind); } } break; case 'part': if(in_array($nick[1], $admin)){ $exp = explode(" ", $cmd[1], 2); sendmeld("PART ".$exp[0], $forbind); $flr = explode(" ", $exp[1]); foreach($flr as $flrs){ sendmeld("PART ".$flrs, $forbind); } } break; case 'op': sendmeld("MODE ".$delt[2]." +o ".$cmd[1], $forbind); $exp = explode(" ", $cmd[1], 2); if(isset($exp[1])){ $flr = explode(" ", $exp[1]); foreach($flr as $flrs){ sendmeld("MODE ".$delt[2]." +o ".$flrs, $forbind); } } break; case 'deop': sendmeld("MODE ".$delt[2]." -o ".$cmd[1], $forbind); $exp = explode(" ", $cmd[1], 2); if(isset($exp[1])){ $flr = explode(" ", $exp[1]); foreach($flr as $flrs){ sendmeld("MODE ".$delt[2]." -o ".$flrs, $forbind); } } break; case 'voice': sendmeld("MODE ".$delt[2]." +v ".$cmd[1], $forbind); $exp = explode(" ", $cmd[1], 2); if(isset($exp[1])){ $flr = explode(" ", $exp[1]); foreach($flr as $flrs){ sendmeld("MODE ".$delt[2]." +v ".$flrs, $forbind); } } break; case 'devoice': sendmeld("MODE ".$delt[2]." -v ".$cmd[1], $forbind); $exp = explode(" ", $cmd[1], 2); if(isset($exp[1])){ $flr = explode(" ", $exp[1]); foreach($flr as $flrs){ sendmeld("MODE ".$delt[2]." -v ".$flrs, $forbind); } } break; case 'kick': $exp = explode(" ", $cmd[1], 2); if(isset($exp[1])){ sendmeld("KICK ".$delt[2]." ".$exp[0]." :".$exp[1], $forbind); }else{ sendmeld("KICK ".$delt[2]." ".$exp[0], $forbind); } break; case 'ban': sendmeld("MODE ".$delt[2]." +b ".$cmd[1], $forbind); break; case 'deban': sendmeld("MODE ".$delt[2]." -b ".$cmd[1], $forbind); break; case 'msg': $exp = explode(" ", $cmd[1], 2); if(isset($exp[1])){ sendmeld("PRIVMSG ".$exp[0]." :".$exp[1], $forbind); } break; case 'key': sendmeld("MODE ".$delt[2]." +k ".$cmd[1], $forbind); break; case 'limit': sendmeld("MODE ".$delt[2]." +l ".$cmd[1], $forbind); break; case 'topic': sendmeld("TOPIC ".$delt[2]." :".$cmd[1], $forbind); break; } }else{ switch ($com[1]){ case 'invite': sendmeld("MODE ".$delt[2]." +i ", $forbind); break; case 'deinvite': sendmeld("MODE ".$delt[2]." -i ", $forbind); break; case 'moderate': sendmeld("MODE ".$delt[2]." +m ", $forbind); break; case 'demoderate': sendmeld("MODE ".$delt[2]." -m ", $forbind); break; case 'private': sendmeld("MODE ".$delt[2]." +p ", $forbind); break; case 'deprivate': sendmeld("MODE ".$delt[2]." -p ", $forbind); break; case 'secret': sendmeld("MODE ".$delt[2]." +s ", $forbind); break; case 'desecret': sendmeld("MODE ".$delt[2]." -s ", $forbind); break; case 'dekey': sendmeld("MODE ".$delt[2]." -k ", $forbind); break; case 'delimit': sendmeld("MODE ".$delt[2]." -l ", $forbind); break; case 'part': if(in_array($nick[1], $admin)){ sendmeld("PART ".$delt[2], $forbind); } break; } } } } break; } } } } } } fclose ($forbind); } ?> Winhack.ini : [winhack] ; Nicket og hostname til adminstrator'en av WinHack ; En admin har tilgang til alle kommand'ene ; Du kan ha flere enn en admin ved å sette de med koma og mellomrom ; Admin - blir op auto så lenge bot'en er op ; Det er det som står etter ! du skal taste her.. ; f.eks "[email protected], [email protected]" ... videre admin = "" ; Operatører og Voice ; Operatørene og Voice har tilgang til de aller fleste kommand'ene ; Blir op eller voice auto så lenge bot'en er op, ja ; Du kan sette flere med koma og mellomrom, husk at det er det som er etter ! du skal taste her op = "" voice = "" ; Server og port nummer server = "irc.homelien.no" port = "5190" ; Kanal og (passord hvis det trenges) kanal = "#kanal" kanal_pass = "" ; Nick nick = "WinHack" ; Username (hostname + servername + realname er valgfritt) sett - helst user = WinHack hostname = "-" servername = "-" realname = "David" ; ;;;;;;;;;;;;;;; ;konfigurasjon; ;;;;;;;;;;;;;;; ; [config] ; Join melding ; Send en melding til nicket som joiner kanalen ; Du kan f.eks skrive "Velkommen til [kanal]." ; [kanal] er kanalen nicket joiner, du må ikke endre "[kana]". join_msg = "Velkommen til [kanal]." ; Velg om du vil sende en hils når noen joiner kanalen eller ikke ; on\ join_mode = "on" ; Part melding ; Send en melding til nicket som går ut fra kanalen ; Du kan f.eks skrive "Takk for besøkek på [kanal]." ; [kanal] er kanalen nicket stakk fra, du må ikke endre "[kanal]". part_msg = "Takk for besøket på [kanal]." ; Velg om du vil sende Part melding eller ikke ; mode on\ part_mode = "on" ********************************************************************* Husk å legge filen i samma mape som bot'en. Du må ikke endre det som står i [] eller foran "=". Ellers, så kan du gjøre alt du vil med bot'en ... Skal du endre navnet på WinHack.ini filen må du også endre variablen : $file = 'WinHack.ini'; der du ersatter WinHack med det nye navnet.. jaja du vet sikkert.. Lag en mape med f.eks navnet "bot", legge php koden inni (f.eks) "winhack.php". Lag en fil med navnet (f.eks) winhack.ini og legge konfigurasjon teksten jeg la der oppe.. Husk at du må ha php installert da.. Når du skal starte bot'en gjør du det fra cmd. Start -> kjør -> cmd tast: "cd c:\php\bot" <-- der du har installert php og der bot'en ligger, dermed taster du "php winhach.php" og ferdig Hvis det ikke funker så bare tast feilmeldingen her eller ta kontakt på irc eller e-post som ligger oppe der.. i koden. Kommandoene : Alle kommandoene begynner med "!". Admin - op - !mode (mode) #kanal/nick <-- uten paranteser, f.esk: !mode +o Nick Bare admin - !join #kanal <-- trenger du passord taster du bare passordet etter #kanal, f.eks: !join #kanal passord Bare admin - !part #kanal <-- part kanal, du kan "part" flere kanaler ved å sette de etter verandre f.eks: !part #kanal #kanal1 #kanal2 !part <-- om kommandoen står alene går den ut fra kanalen du har tastet !part i Admin - op - !op Nick <-- mode +o !deop Nick <-- mode -o !voice Nick <--mode +v !devoice Nick <-- mode -v !kick Nick Grunn <-- kick - du kan sette grunnen etter nicket !ban Nick <-- mode +b !deban Nic <-- mode -b !msg Nick/#kanal <-- send en melding til nick/eller kanal, kan bare msg en kanal on bot'en allerede er inni !key passord <-- mode +k - sett passord !limit antall <-- mode +l - limit nick til - antall - i kanalen !topic topic <-- topic - sett topic !invite <-- mode +i - sett til inviti mode - bare de inviterte !deinvite <-- mode -i - vekk med inviti mode !moderate <-- mode +m !demoderate <-- mode -m !private <-- mode +p !deprivate <-- mode -p !secret <-- mode +s !desecret <-- mode -s !dekey <-- mode -k - vekk med pass til kanalen !delimite <-- mode -l - vekk med limi mode Er vist alt Endret 14. februar 2007 av cDavid Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå