All pastes #839761 Raw Edit

Miscellany

public text v1 · immutable
#839761 ·published 2007-12-31 05:45 UTC
rendered paste body
on *:text:!ban $nick*:#: {
  if ($me !isop $chan || $nick !isop $chan) halt
  if (!$4 || $3 !isnum || $3 < 0) { .notice $nick Invalid ban format. !+ban ADDRESS TIME(Seconds) REASON  -- For a Never ending ban, use 0 for Time. | halt }
  if (*?!*?*@?* !iswm $2 || $count($2,!) > 1 || $count($2,@) > 1 || ** isin $2) {
    .notice $nick Error, Invalid address. Use the format: *!*@*     eg: !+ban bearruler!*@*.40E7B703.A8CC573C.IP 600 Learn some manners
    halt
  }
  ban_c $2 $chan  
  if ($ban_($+($chan,.,$2))) { .notice $nick The address $2 is already banned | halt }
  hadd ban $+($chan,.,$2) $iif($3 == 0,0,$calc($ctime + $int($3))) $nick $4-
  .notice $nick The address $2 was added to # $+ 's ban list, expiring $iif($3 == 0,Never,in $duration($int($3))) $+ . Reason: $4-
  ban_kba $2 $chan
}
on *:text:!unban $nick*:#: {
  if ($me !isop $chan || $nick !isop $chan) halt
  if (!$2) { .notice $nick Invalid unban format. !-ban ADDRESS | halt }
  ban_c $2 $chan  
  if (!$ban_($+($chan,.,$2))) {
    .notice $nick The address $2 is not banned
    halt
  }
  hdel ban $+($chan,.,$2)
  .notice $nick $2 was unbanned from #
  mode # -b $2
}
alias +ban {
  if (!$4 || $3 !isnum || $3 < 0) { echo -a - Ban - Invalid ban format. /+ban #CHANNEL ADDRESS TIME(Seconds) REASON  -- For a Never ending ban, use 0 for Time. | halt }
  if ($me !isop $1) halt  
  if (*?!*?*@?* !iswm $2 || $count($2,!) > 1 || $count($2,@) > 1 || ** isin $2) {
    echo -a - Ban - Error, Invalid address. Use the format: *!*@*     eg: /+ban #bearruler bearruler!*@*.40E7B703.A8CC573C.IP 600 Learn some manners
    halt
  }
  ban_c $2 $1  
  if ($ban_($+($1,.,$2))) { echo -a - Ban - The address $2 is already banned | halt }
  hadd ban $+($1,.,$2) $iif($3 == 0,0,$calc($ctime + $int($3))) $me $4-
  echo -a - Ban - The address $2 was added to $1 $+ 's ban list, expiring $iif($3 == 0,Never,in $duration($int($3))) $+ . Reason: $4-
  ban_kba $2 $1
}
alias -ban {
  if (!$2) { echo -a - Ban -  Invalid unban format. /-ban #CHANNEL ADDRESS | halt }  
  if ($me !isop $1) halt
  ban_c $2 $1  
  if (!$ban_($+($1,.,$2))) {
    echo -a - Ban -  The address $2 is not banned
    halt
  }
  hdel ban $+($1,.,$2)
  echo -a - Ban - $2 was unbanned from #
  mode $1 -b $2
}
on *:text:!baninfo*:#: {
  if ($me !isop # || $nick !isop #) halt
  if (!$2) { .notice $nick Format: !baninfo ADDRESS (in form *!*@*) | halt }
  ban_c $2 $chan  
  if (!$ban_($+($chan,.,$2))) .notice $nick No information on the ban of $2 on #
  else .notice $nick  $+ $2 was banned by $ban_b($+($chan,.,$2)) for the reason $ban_r($+($chan,.,$2)) $+ . It expires $iif($ban_t($+($chan,.,$2)) == 0,: Never,in: $duration($calc($v1 - $ctime)))
}
alias baninfo {
  if ($me !isop $1) halt
  if (!$2) {   echo -a - Ban - Format: /baninfo #CHANNEL ADDRESS (in form *!*@*) | halt }
  ban_c $2 $1  
  if (!$ban_($+($chan,.,$2)))   echo -a - Ban - No information on the ban of $2 on $1
  else echo -a - Ban - $nick  $+ $2 was banned by $ban_b($+($1,.,$2)) for the reason $ban_r($+($1,.,$2)) $+ . It expires $iif($ban_t($+($1,.,$2)) == 0,: Never,in: $duration($calc($v1 - $ctime)))
}
alias ban_rem {
  hdel ban $2 $+ . $+ $1
  ban -r $2 $1
}
alias ban_ return $hget(ban,$1-)
alias ban_t return $gettok($hget(ban,$1-),1,32)
alias ban_b return $gettok($hget(ban,$1-),2,32)
alias ban_r return $gettok($hget(ban,$1-),3-,32)
alias ban_c if ($ctime > $ban_t($+($2,.,$1)) && $v2 != 0) ban_rem $1 $2
on *:start: {
  hmake ban 500
  if ($isfile(ban.hsh)) hload ban ban.hsh
  .timer 0 600 hsave ban ban.hsh
}
on *:exit: hsave ban ban.hsh
on *:join:#: {
  if ($me !isop $chan) halt
  updatenl
  var %a = 1,%c
  while $hget(ban,%a).item {
    %c = $v1
    if ($gettok(%c,1,46) == $chan && $gettok(%c,2-,46) iswm $address($nick,5)) {
      ban_kba $gettok(%c,2-,46) $chan
      halt
    }
    inc %a
  }
}

on *:nick: {
  var %a = 1,%c = 0
  while $comchan($newnick,%a) {
    if ($comchan($newnick,%a).op) %c = 1
    inc %a
  }
  if (%c = 0) halt 
  updatenl
  %a = 1
  while $hget(ban,%a).item {
    %c = $v1
    if ($newnick ison $gettok(%c,1,46) && $gettok(%c,2-,46) iswm $address($newnick,5)) {
      ban_kba $gettok(%c,2-,46) $gettok(%c,1,46)
      halt
    }
    inc %a
  }
}
alias ban_kba {
  ban_c $1 $2
  if (!$ban_t($+($2,.,$1)) && $v1 != 0) halt
  ban -u $+ $iif($ban_t($+($2,.,$1)) == 0 || $calc($v1 - $ctime) > 300,300,$v1) $2 $1
  var %a = 1
  while $ialchan($1,$2,%a).nick {
    kick $2 $v1 Banned by: $ban_b($+($2,.,$1)) because: $ban_r($+($2,.,$1)) $+ . Expires $iif($ban_t($+($2,.,$1)) == 0, $+ : Never,in: $duration($calc($v1 - $ctime)))
    inc %a
  }
}