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
}
}
}