Gå til innhold

Enkelt IRC - bot :)


Anbefalte innlegg

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 :p 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 av cDavid
Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...