SHARE
TWEET

Untitled

a guest May 19th, 2017 47 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <?php
  2. /*
  3. WatchMan an IRC Bot which welcomes every new member which joins the channel.
  4. Load list of bad words from the file bad.txt and matches it with the users message,
  5. if it contains that word,and the user is not one in the list of Channel Operator,they
  6. are kicked out!
  7. */
  8.  
  9. function load_file($name,$arr)
  10. {
  11.  $fd=fopen($name,"r");
  12.  
  13.  if(!$fd)
  14.  exit("Can't open file $name");
  15.  
  16.  while(!feof($fd))
  17.     $arr[] = rtrim(fgets($fd, 4096));
  18.  
  19.    fclose($fd);
  20. }
  21.  
  22. //removes trailing : from the msg beginning
  23. function del_trail($data)  
  24. {
  25.  $str=$data;
  26.  
  27.  if($data[0]==':'){
  28.  $str="";
  29.  
  30.  for($i=1;$i<strlen($data);$i++)
  31.     $str.=$data[$i];
  32. }
  33.  return $str;
  34. }
  35.  
  36. //gets the nickname from the combination of host,nick,user
  37. function getNick($data)
  38. {
  39.  $tmp=del_trail($data);
  40.  $len=strlen($data);
  41.  $nick="";
  42.  
  43.   for($i=0;$i<$len;$i++){
  44.    if($tmp[$i]=='!' || $tmp[$i]=='@')break;
  45.       $nick.=$tmp[$i];
  46.   }
  47.  return $nick;
  48. }
  49.  
  50. //When op changes nick they are added in the op list by this function
  51. function addCOP($old_mod,$new_mod,$list)
  52. {
  53.  for($i=0;$i<count($list);$i++)
  54.   if($old_mod==$list[$i])break;
  55.    
  56.      $list[$i]=$new_mod;
  57. }
  58.  
  59.  set_time_limit(0);
  60.  
  61.  $chan="#codemasters";
  62.  $server="irc.dal.net";
  63.  $port="6667";
  64.  $my_nick="WatchMan";
  65.  $cop=array("pathfinder",$my_nick);  //this list contains the names of chanops
  66.  load_file("bad.txt",&$word);        //bad words file
  67.  
  68.  $socket=fsockopen("$server",$port);
  69.  
  70.  if(!$socket)
  71.  exit("Initialization Error");
  72.  
  73.  fputs($socket,"USER WatchMan pathfinder Gate $my_nick :$my_nick\r\n");
  74.  fputs($socket,"NICK $my_nick\r\n");
  75.  fputs($socket,"JOIN $chan\r\n");
  76.  
  77.     while($text = fgets($socket)) {
  78.        
  79.         $flag=0;
  80.     flush();
  81.     $rd=explode(' ',$text);
  82.        
  83.     if($rd[0]=='PING')
  84.      fputs($socket,"PONG :$server\r\n");
  85.    
  86.     if($rd[1]=='PRIVMSG'){
  87.      $flag=0;
  88.      $rd[3]=del_trail($rd[3]);  
  89.  
  90.          for($i=3;$i<count($rd);$i++){  
  91.           $rd[$i]=strtolower($rd[$i]);
  92.           $rd[$i]=rtrim($rd[$i],"\r\n");    //strip out CRLF
  93.  
  94.        for($j=0;$j<count($word);$j++){
  95.  
  96.          if($rd[$i]==$word[$j]) {
  97.               $flag=1;
  98.               break;
  99.             }
  100.  
  101.           }
  102.  
  103.           if($flag==1)break;
  104.         }
  105.  
  106.          if($flag==1){
  107.          $nick=getNick($rd[0]);
  108.            
  109.          for($i=0;$i<count($cop);$i++){
  110.            if($nick==$cop[$i]){
  111.                 $flag=0;             //don't kick chanops
  112.             break;
  113.         }
  114.       }
  115.          if($flag==1)
  116.          fputs($socket,"KICK $chan $nick :Using obnoxious bad words!\r\n");
  117.    }
  118.  }
  119.  
  120.     elseif($rd[1]=='NICK'){
  121.  
  122.     $flag=0;
  123.     $nick=getNick($rd[0]);
  124.        
  125.     for($i=0;$i<count($cop);$i++)
  126.        if($nick==$cop[$i]){
  127.        $flag=1;
  128.        break;
  129.      }
  130.  
  131.     if($flag==1){
  132.      $mod=del_trail($rd[2]);
  133.      addCOP($nick,$mod,&$cop);
  134.      print($cop[0]);
  135.         }
  136.       }    
  137.  
  138.     elseif($rd[1]=='JOIN'){
  139.  
  140.         $nick=getNick($rd[0]);
  141.     if($nick!=$my_nick)     //it happens to greet itself!..stopping it here to do so
  142.          fputs($socket,"PRIVMSG $chan :WatchMan Welcomes $nick to $chan.:)\r\n");
  143.  
  144.      }
  145.      
  146.     elseif($rd[1]=='KICK'){
  147.         $rd[4]=rtrim(del_trail($rd[4]));
  148.         $rd[3]=rtrim($rd[3]);
  149.         if($rd[3]==$my_nick){
  150.          print("I was kicked by $rd[4]");
  151.          exit(1);
  152.         }
  153.       }
  154.  
  155.     }
  156.     flush();
  157. ?>
RAW Paste Data
Top