aIRC — File Browser

aIRCv0.8.69 / aIRCv0.8.69 / script / events.mrc

events.mrc — 10.21 KB — Download this file

;/**********************************************************************
; *
; * aIRC
; * Events
; *
; **********************************************************************/
;

ON *:MODE:#:{
  if ($nick == $me) || (%++service) || (m isincs %++flags) || (n isincs  %++flags) || (b isincs %++flags) { return }
  _enforce.modes $chan $1-
  if ($result) && ($_flood.main(1,0,2,0,30,$_nospaces(__enforcemodes,$chan),l)) && ($me isop $chan) && ($nick ison $chan) { deop $chan $nick }
}
ON *:TOPIC:#:{
  if ($1- != $null) { _recent.add topic 20 $replace($1-,$chan,<CHAN>) }
  if ($nick == $me) || (%++service) || (m isincs %++flags) || (n isincs  %++flags) || (b isincs %++flags) { return }
  _enforce.topic $chan $1-
  if ($result) && ($_flood.main(1,0,2,0,30,$_nospaces(__enforcetopic,$chan),l)) && ($nick ison $chan) { deop $chan $nick }
}
ON *:INVITE:#:{
  if ($istok(%c.inviteme.c,$chan,32)) { .timer -o 1 0 join $chan }
}
ON ^*:OPEN:?:{ _prot.bugnick }
ON *:OPEN:?:{ _onopen.query $nick }
ON *:KICK:#:{
  if ($knick == $me) {
    %c.reial.c = $remtok(%c.reial.c,$chan,1,32)
    if (%c.reial.c == $null) { unset %c.reial.c }
  }
  else { _checkemptychan $chan }
}
ON *:DCCSERVER:*:{ _prot.bugnick }
ON *:JOIN:#:{
  if ($nick == $me) {
    _setd junk _onmeop $chan
    _synchtime.set 0 $chan
    %c.inviteme.c = $remtok(%c.inviteme.c,$chan,32)
    if (%c.inviteme.c == $null) { unset %c.inviteme.c }
  }
  else {
    var %nomsg = 0
    if (%++handle != $null) {
      var %last = $_getuserfield(%++handle,$_nospaces(laston.,$chan)),%infoline
      if ($_rchini(greet,$chan)) && ($_getsetup(script,use-info)) && ((%last == $null) || ($calc($ctime - %last) > $_getsetup(script,wait-info))) {
        var %infoline.g = $_getuserfield(%++handle,infoline.default),%infoline.c = $_getuserfield(%++handle,$_nospaces(infoline.,$chan)),%infoline
        if (@* iswm %infoline.g) && (@* !iswm %infoline.c) { %infoline = %infoline.g }
        elseif (%infoline.c != $null) || (%infoline.g != $null) { %infoline  = $ifmatch }
        if (%infoline != $null) {
          if ($_inputcom(@,$ifmatch) != $null) {
            _puthelp $chan c& msg $chan [[ $+ $nick $+ ]] $ifmatch
            inc %nomsg
          }
        }
      }
    }
    if ($me isop $chan) {
      if ($_prot.chansetting(cuenforcebans,30,1,$chan)) && (o !isincs %++flags) && (f !isincs %++flags) {
        if ($fulladdress isban $chan) {
          var %ifmatch = $ifmatch,%banmask = $ibl(%chan,%ifmatch),%banner = $gettok($ibl(%chan,%ifmatch).by,1,33)
          .timerENFORCEBAN $+  , $+ $chan $+ , $+ %banmask $+ , $+ $nick 1 $r(3,5) _prot.enforceban $chan %banmask %banner $nick $fulladdress
          return
        }
      }
      if (o isincs %++flags) && ((a isincs %++flags) || ($_rchini(autoop,$chan))) { pop 5 $chan $nick }
      elseif (f !isincs %++flags) && ($_matchban($fulladdress,$chan)) {
        var %hostmask = $gettok($ifmatch,2,32),%seton = $gettok($ifmatch,4,32),%duration = $gettok($ifmatch,5,32),%reason = $gettok($ifmatch,8-,32),%bantime = $calc(%seton + %duration - $ctime)
        if (%bantime > 9999999) { %bantime = 9999999 }
        if (%duration) {
          if (%bantime > 0) {
            if ($_ischanban(%hostmask,$chan)) { .timer_UNBAN $+ $chan $+ , $+ %hostmask 1 %bantime _raw.unban $chan %hostmask }
            else { kb -u $+ %bantime %chan %hostmask %reason }
          }
          else { -ban %hostmask $chan }
        }
        elseif ($_not($_ischanban(%hostmask,$chan))) {
          kb $chan %hostmask %reason
          return
        }
        elseif ($ialchan(%chan,%hostmask,0)) { kick $chan %hostmask %reason }
      }
      elseif (k isincs %++flags) { _autokickloser %++handle $nick $chan }
      elseif ($nick !isop $chan) && (q !isincs %++flags) && (($_rchini(freevoice,$chan)) || ((v isincs %++flags) && ((g isincs %++flags) || ($_rchini(autovoice,$chan))))) { pvoice 5 $chan $nick }
    }
    if (%nomsg == 0) && (b !isincs %++flags) && (k !isincs %++flags) && (d !isincs %++flags) {
      var %line = $_rchinitxt(_msgonjoin,$chan),%on = $gettok(%line,1,32)
      if (%on) { _automsghtchan $chan $nick _automsg.onjoinpart %line }
    }
  }
}
ON *:PART:#:{
  if ($nick == $me) {
    %c.reial.c = $remtok(%c.reial.c,$chan,1,32)
    if (%c.reial.c == $null) { unset %c.reial.c }
    %c.inviteme.c = $remtok(%c.inviteme.c,$chan,1,32)
    if (%c.inviteme.c == $null) { unset %c.inviteme.c }
  }
  else {
    _checkemptychan $chan
    if ($comchan($nick,0) <= 1) { _ircoplist.del $nick }
    if (b !isincs %++flags) && (k !isincs %++flags) && (d !isincs %++flags) {
      var %line = $_rchinitxt(_msgonpart,$chan),%on = $gettok(%line,1,32)
      if (%on) { _automsghtchan $chan $nick _automsg.onjoinpart %line }
    }
  }
}
ON *:QUIT:{
  var %i = $comchan($nick,0),%chan,%tmp,%chans,%seenstorechans,%seenchans
  if ($_seen.addonver) { %seenstorechans = $_seen.getchans(storechans) }
  _ircoplist.del $nick
  %tmp = $nick $+ %chan
  while (%i) {
    %chan = $comchan($nick,%i)
    _checkemptychan %chan
    if (%++isnetsplit) && ($nick isop %chan) { set -u [ $+ [ %wait-split ] ] %+netsplitwasop. [ $+ [ %tmp ] ] 1 }
    _idle.del %chan $nick
    %chans = %chans %chan
    if (%seenstorechans != $null) && ((%seenstorechans == *) || ($istok(%seenstorechans,%chan,44))) { %seenchans = $addtok(%seenchans,%chan,44) }
    dec %i
  }
  %chans = $replace(%chans,$chr(32),$chr(44))
  if (%++isnetsplit) {
    %tmp = $1 $+ $chr(44) $+ $2
    .timernetsplitserver. [ $+ [ %tmp ] ] 1 2 info.a Possible Netsplit between $^'($1) and $^'($2)
    _netsplit.addnick $nick $address $1 $2 $ctime %chans
    if (%seenchans != $null) { _seen.add $nick $fulladdress %seenchans 7 -1 }
  }
  elseif (%seenchans != $null) { _seen.add $nick $fulladdress %seenchans 3 -1 $1- }
}
ON *:NICK:{
  _ircoplist.chnick $nick $newnick
  if ($nick == $me) { %.myaddress = $newnick $+ ! $+ $address }
  var %i = $comchan($newnick,0),%chan,%seenstorechans,%seenchans
  if ($_seen.addonver) { %seenstorechans = $_seen.getchans(storechans) }
  while (%i) {
    %chan = $comchan($newnick,%i)
    _idle.ren %chan $nick $newnick
    if (%seenstorechans != $null) && ((%seenstorechans == *) || ($istok(%seenstorechans,%chan,44))) { %seenchans = $addtok(%seenchans,%chan,44) }
    dec %i
  }
  if (%seenchans != $null) {
    _seen.add $nick $fulladdress %seenchans 4 -1 $newnick
    _seen.add $newnick $newnick $+ ! $+ $address %seenchans 5 -1 $nick
  }
}
ON *:TEXT:*:#:{ _remotechantext $1- }
ON *:ACTION:*:#:{ _remotechantext $1- }
ON *:NOTICE:*:#:{ _remotechantext $1- }
alias _remotechantext {
  if ($_wordisinstring($me,$1-)) {
    if ($_rchini(_warnyournick,$chan)) { echo -eist $^*** < $+ $nick $+ : $+ $chan $+ > $1- }
  }
}
ON *:DEOWNER:#:{ _ondeop }
ON *:DEOP:#:{ _ondeop }
alias _ondeop {
  _~checkemptychanoff $chan
  if ($me isop $chan) && ($nick != $me) && ($nick != $opnick) && (m !isincs %++flags) && (b !isincs %++flags) {
    if (($_rchini(protectops,$chan)) && (o isincs %++flags2)) || (($_rchini(protectfriends,$chan)) && (f isincs %++flags2) && (d !isincs %++flags2) && (($_not($_prot.chansetting(cubitchmode,19,1,$chan))) || (o isincs %++flags2))) {
      _puthelp $nick & _qnotice $nick $_evaltext($replace($_defmsg(dontdeopfriend),<NICK>,$opnick))
      op $chan $opnick
    }
  }
}
ON *:OWNER:#:{ _onop }
ON *:OP:#:{ _onop }
ON *:SERVEROP:#:{ _onop }
alias _onop {
  if ($opnick == $me) {
    if ($_rchini(_updateial,$chan) >= 1) { _scanial.auto $chan }
    if ($_rchini(_updatebanlist,$chan) >= 1) { _updatebanlist $chan }
    _enforce.topic $chan
    _enforce.modes $chan
    _autolimit.chan $chan
    var %last = $_get(junk,_onmeop,$chan)
    if (%last > $ctime) {
      %last = $ctime - 5
      _setd junk _onmeop $chan %last
    }
    if ($calc($ctime - %last) < 10) { return }
    _setd junk _onmeop $chan $ctime
    _opcheck $chan
  }
  elseif ($nick != $me) && ($me isop $chan) && (d isincs %++flags2) && (m !isincs %++flags) { deop $opnick }
}
ON *:BAN:#:{
}
ON *:UNBAN:#:{
  if ($me isop $chan) {
    var %line,%hostmask,%seton,%duration,%bantime
    if ($_isban($banmask,$chan)) {
      %line = $read -nl $+ $ifmatch $_baninifile
      %hostmask = $gettok(%line,2,32)
      %seton = $gettok(%line,4,32)
      %duration = $gettok(%line,5,32)
      %bantime = $calc(%seton + %duration - $ctime)
      if (%bantime > 9999999) { %bantime = 9999999 }
      if ($nick == $me) { info.w $chan $banmask is in my permban list.  You need to use /-ban' if you want it gone for good. }
      elseif ($gettok(%l,7,32)) {
        ; sticky ban?
        info.w $chan Enforcing ban: $^'($banmask) (sticky)
        if (%duration) && (%bantime > 0) { ban -u $+ %bantime $chan $banmask }
        else { ban $chan $banmask }
      }
      elseif ($_not($_rchini(dynamicbans,$chan))) {
        if (o isincs %++flags) { _puthelp $nick & _qnotice $nick $banmask is in my permban list.  You need to use .-ban' in dcc chat if you want it gone for good. }
        elseif (%duration) && (%bantime > 0) { ban -u $+ %bantime $chan $banmask }
        else { ban $chan $banmask }
      }
    }
  }
}
CTCP *:DCC:?:{
  if (%+dcc.badcc) {
    error.a Invalid DCC $2 request from $nick $^bp($address) - Invalid $^b($upper(%+dcc.badcc))
    halt
  }
  elseif ($2 == CHAT) {
    if ($halted) { halt }
    elseif ($nick == $me) {  }
    elseif (C isincs %++flags) {
      .timer -o 1 0 .creq $iif($_minio(0,20),+m,-m) $creq
      .creq +m auto
    }
    elseif (N isincs %++flags) {
      echo $colour(ctcp) -est $^*** DCC Chat request from $nick rejected [ignoring DCCs from $nick $+ ]
      halt
    }
    elseif ($creq == ignore) {
      echo $colour(ctcp) -est $^*** DCC Chat request from $nick rejected
      halt
    }
  }
  elseif ($2 == SEND) {
    if ($_dccignore(%+dcc.file)) { }
    elseif (N isincs %++flags) && ($nick != $me) {
      echo $colour(ctcp) -est $^*** DCC Send request from $nick rejected [ignoring DCCs from $nick $+ ]
      halt
    }
    elseif ($halted) { halt }
    elseif (S isincs %++flags) && ($nick != $me) {
      .timer -o 1 0 .sreq $iif($_minio(0,16),+m,-m) $sreq
      .sreq +m auto
    }
    elseif ($sreq == ignore) {
      echo $colour(ctcp) -est $^*** DCC Send request from $nick rejected
      halt
    }
  }
}