Top

mIRC Channel Protection Bot


mIRC Code
+ 6 likes
Please Register to submit score.
Bookmark and Share
Average Score  9.5 (of 8 scores)
Date Added  Dec 29, 2008
Last Updated  Oct 07, 2009
Tags  bot  channel  mirc  protection 

Introduction

add into a new remote file in a clean mirc

About:
this is a multi server multi channel bot,
it will provide you with a user system for your channels and protect each user accordingly.
to begin youll have too add yourself as botowner and set your bots trigger

in the bot type
/addowner Your-Nick
** You must be on the same channel and network as the bot

then
/set %trigger !
** or any trigger you choose

then your ready to set it up for a chanel.
first add your server to autojoin with ?addserver add server
then a channel to autojoin with ?autojoin add network #channel

now your ready to set yourself as the channel owner by typing
!addowner nick channel
** again the nick must be on the channel at the time of adding.
** its best if the bot is the real channel owner, and you get your status from the bot.

now type
!commands
and take a look through the commands and have fun :-)

** COMMANDS
?about bot/nick
?act channel message
?addowner nick channel
?addadmin nick
?addop nick
?addhelper nick
?addvoice nick
?autojoin add/del/list network channel
?badnick add/del nick
?ban add/del nick reason
?baninfo total/nick
?bigflood on/off/status # ( eg: ?bigflood on 200 ) ( 200 characters per message sent )
?botmaster nick
?checknick nick
?clonescanner on/off
?commands
?cycle channel
?dns nick/address
?flood on/off/status #:# ( eg: ?flood on 10:3 )( 10 lines in 3 seconds )
?flyby on/off/status
?global messsage
?greet on/off message
?ircop scan channel
?kick nick reason
?kill
?lastseen nick
?modelock list/modes
?protect on off
?reboot
?relay on channel_1 channel_2
?remember info_here ( the first word of your info, will be the trigger to retrieve the info )
?rules
?say channel message
?set nick/password nick/password
?server add/del server
?spam on/off/status
?stats nick ( or: ?stats reset nick )
?topiclock on/off topic
?trigger trigger
/addowner nick ( Must be on the same channel )


** NOTE
this bot recognises by nick and address, so if your hostmask changes alot
this would most likely not be a good bot for you

** Made on IrCQNet
** works with anope type services

this is still a work in progress so im open to suggestion
although im tryin to keep away from such commands as !op !deop etc etc

Grab the Code

;?about bot/nick
;?act channel message
;?addowner nick channel
;?addadmin nick 
;?addop nick 
;?addhelper nick
;?addvoice nick 
;?autojoin add/del/list network channel
;?badnick add/del nick
;?ban add/del nick reason
;?baninfo total/nick
;?bigflood on/off/status # ( eg: ?bigflood on 200 ) ( 200 characters per message sent )
;?botmaster nick
;?checknick nick
;?clonescanner on/off
;?commands
;?cycle channel
;?dns nick/address
;?flood on/off/status #:# ( eg: ?flood on 10:3 )( 10 lines in 3 seconds )
;?flyby on/off/status
;?forget info_here
;?global messsage
;?greet on/off message
;?ircop scan channel
;?kick nick reason
;?kill
;?lastseen nick
;?modelock list/modes
;?protect on off
;?reboot
;?relay on channel_1 channel_2
;?remember info_here ( the first word of your info, will be the trigger to retrieve the info )
;?remuser nick channel
;?rules
;?say channel message
;?set nick/password nick/password
;?server add/del server
;?spam on/off/status
;?stats nick ( or: ?stats reset nick )
;?topiclock on/off topic
;?trigger trigger
;/addowner nick ( Must be on the same channel )
/* 
On Load/Unload Events 
*/
on 1:load: { set %botstartdate $fulldate | echo -s 04,01**** Loaded %logo.l SassIRC 12,01m04,01I04,01R08,01C Channel Protection Bot %logo.r Coded By %logo.l PuNkTuReD %logo.r }
on 1:unload: { echo -s 04,01**** Unloaded %logo.l SassIRC 12,01m04,01I04,01R08,01C Channel Protection Bot %logo.r Coded By %logo.l PuNkTuReD %logo.r }
/* 
On Start/Exit Events 
*/
on *:start: { 
  if (!$hget(Badwords)) { hmake Badwords 20 }
  if ($exists(Badwords.hsh)) { hload Badwords Badwords.hsh } 
  if (!$hget(AutoJoin)) { hmake AutoJoin 20 }
  if ($exists(AutoJoin.hsh)) { hload AutoJoin AutoJoin.hsh } 
  if (!$hget(Servers)) { hmake Servers 20 }
  if ($exists(Servers.hsh)) { hload Servers Servers.hsh } 
  set -u5 %a 1
  set -u5 %b $hget(Servers,0).item
  while %a <= %b {
    if (%a == 1) { server $hget(Servers,%a).item | inc %a }
    else { server -m $hget(Servers,%a).item | inc %a }
  }
  else { haltdef }
}
on *:exit: { 
  if ($hget(Servers)) { hsave -o Servers Servers.hsh }
  if ($hget(AutoJoin)) { hsave -o AutoJoin AutoJoin.hsh }
  if ($hget(Badwords)) { hsave -o Badwords Badwords.hsh }

/* 
On Connect Event 
*/
on *:connect: { nick %botnick | identify %botpass | join $hget(Autojoin,$network) }
/* 
On Join/Part/Quit Events 
*/
on *:join:#: {
  set $+(%,$nick,totaljoin) $calc($($+(%,$nick,totaljoin),2) + 1)
  if ($($+(%,$chan,flyby),2) == on) { set -u60 $+(%,join,$chan,$nick) $nick }
  if (%serverrelay == on) && ($chan == %rchan) { relayevent $network $nick joined # }
  if (%clonescanner == on) && ($ialchan($strip($address($nick,2)),$chan,0) > 1) { .msg $chan %logo.l $nick %logo.r is a clone. %logo.l $ialchan($strip($address($nick,2)),$chan,0) %logo.r Active connections. From %logo.l $strip($address($nick,2)) %logo.r } 
  if (%relay == on) && ($chan == %chan1) { msg %chan2 Join %logo.l $nick %logo.r }
  if ($nick == $me) && ($chan == $gettok($readini(users.ini,modelock,$chan),1,32)) { .msg $chan %logo.l ModeLock Enforcer 04,01%logo.r | .msg $chan %logo.l Enforcing Modes %logo.r $gettok($readini(users.ini,modelock,$chan),2-,32) | mode $chan $gettok($readini(users.ini,modelock,$chan),2-,32) }
  if ($nick == $gettok($readini(badnicks.ini,$chan,$nick),1,32)) { ban -ku300 $chan $nick 2 Bad Nick. }
  if ($($+(%,greet,$chan),2) == on) { msg $chan $($+(%,joingreet,$chan),2) }
  if ($strip($address($nick,2)) == $gettok($readini($+($network,users.ini),botmaster,$nick),2,32)) { .msg $chan %logo.l Bot Master %logo.r04,01 $nick has joined. }
  if ($strip($address($nick,2)) == $gettok($readini($+($network,users.ini),$chan,$nick),1,32)) && ($gettok($readini($+($network,users.ini),$chan,$nick),2,32) == owner) { .msg $chan %logo.l $chan 04,01Owner %logo.r  $+ $nick has joined. | mode $chan +qov $nick $nick $nick | halt }
  if ($strip($address($nick,2)) == $gettok($readini($+($network,users.ini),$chan,$nick),1,32)) && ($gettok($readini($+($network,users.ini),$chan,$nick),2,32) == admin) { .msg $chan %logo.l $chan 04,01Admin %logo.r  $+ $nick has joined. | mode $chan +aov $nick $nick $nick | halt }
  if ($strip($address($nick,2)) == $gettok($readini($+($network,users.ini),$chan,$nick),1,32)) && ($gettok($readini($+($network,users.ini),$chan,$nick),2,32) == op) { .msg $chan %logo.l $chan 04,01Op %logo.r  $+ $nick has joined. | mode $chan +ov $nick $nick | halt }
  if ($strip($address($nick,2)) == $gettok($readini($+($network,users.ini),$chan,$nick),1,32)) && ($gettok($readini($+($network,users.ini),$chan,$nick),2,32) == helper) { .msg $chan %logo.l $chan 04,01Helper %logo.r  $+ $nick has joined. | mode $chan +hv $nick $nick | halt }
  if ($strip($address($nick,2)) == $gettok($readini($+($network,users.ini),$chan,$nick),1,32)) && ($gettok($readini($+($network,users.ini),$chan,$nick),2,32) == voice) { .msg $chan %logo.l $chan 04,01Voice %logo.r  $+ $nick has joined. | mode $chan +v $nick | halt }
}
on *:part:#: {
  set $+(%,$nick,totalparts) $calc($($+(%,$nick,totalparts),2) + 1)
  if (%serverrelay == on) && ($chan == %rchan) { relayevent $network $nick parted # }
  if ($($+(%,join,$chan,$nick),2) == $nick) && ($($+(%,$chan,flyby),2) == on) { $iif($+(%,flyby,$chan),inc $+(%,flyby,$chan),set $+(%,flyby,$chan) 1) | ban -u300 $chan $nick 2 Fly-By Protect | .msg $chan %logo.l $($+(%,join,$chan,$nick),2) %logo.r was Fly-By %logo.l $($+(%,flyby,$chan),2) %logo.r Since $($+(%,botstartdate),2) }
  if (%relay == on) && ($chan == %chan1) { msg %chan2 Part %logo.l $nick %logo.r } 
  if (!$read(lastseen.txt, w, * $+ $nick- $+ *)) { write lastseen.txt %logo.l $nick %logo.r was last seen leaving %logo.l $chan %logo.r On %logo.l $fulldate %logo.r }
  else { write -dw $+ * $+ $nick $+ * lastseen.txt | write lastseen.txt %logo.l $nick %logo.r was last seen leaving %logo.l $chan %logo.r On %logo.l $fulldate %logo.r }
}
on 1:quit: {
  chkflyby
  set $+(%,$nick,totalquits) $calc($($+(%,$nick,totalquits),2) + 1)
  if (*.split isin $strip($1-)) {
    if (!%ns) { ame 4,1%logo.l NetSplit Detected 4,1%logo.r | set -u180 %ns 1 }
  }
  if (%relay == on) { msg %chan2 Quit - %logo.l $nick %logo.r }  
  if (!$read(lastseen.txt, w, * $+ $nick $+ *)) { write lastseen.txt %logo.l $nick %logo.r was last seen leaving %logo.l $network %logo.r On %logo.l $fulldate %logo.r }
  else { write -dw $+ * $+ $nick $+ * lastseen.txt | write lastseen.txt %logo.l $nick %logo.r was last seen leaving %logo.l $network %logo.r On %logo.l $fulldate %logo.r }
  if (%serverrelay == on) {
    var %a = $comchan($nick,0)
    while (%a) {
      if ($comchan($nick,%a) == %rchan) { relayevent $network $nick quit: $iif(($1-),$1-,No Quit Message) | dec %a }
      else { dec %a }
    }
  }
}
/* 
On Nick Event 
*/
on *:nick: {
  if (%relay == on) && ($chan == %chan1) { msg %chan2 %logo.l $nick %logo.r is now %logo.l $newnick %logo.r } 
  if ($nick == $gettok($readini(users.ini,botmaster,$nick),1,32)) { writeini users.ini botmaster $newnick $newnick $gettok($readini(users.ini,botmaster,$nick),2,32) | remini users.ini botmaster $nick } 
  var %a = 1
  var %b = $comchan($newnick,0)
  while %a <= %b { 
    if ($read(abuse.txt, w, $newnick $+ *)) { .msg $comchan($newnick,%a) $gettok($read(abuse.txt, w, $newnick $+ *),2-,32) }
    if ($newnick == $gettok($readini(badnicks.ini,$comchan($newnick,%a),$newnick),1,32)) { ban -ku300 $comchan($newnick,%a) $newnick 2 Bad Nick }
    if ($gettok($readini($+($network,users.ini),$comchan($newnick,%a),$nick),2,32) == owner) { writeini $+($network,users.ini) $comchan($newnick,%a) $newnick $gettok($readini(users.ini,$comchan($newnick,%a),$nick),1,32) owner | remini $+($network,users.ini) $comchan($newnick,%a) $nick }
    if ($gettok($readini($+($network,users.ini),$comchan($newnick,%a),$nick),2,32) == admin) { writeini $+($network,users.ini) $comchan($newnick,%a) $newnick $gettok($readini(users.ini,$comchan($newnick,%a),$nick),1,32) admin | remini $+($network,users.ini) $comchan($newnick,%a) $nick }
    if ($gettok($readini($+($network,users.ini),$comchan($newnick,%a),$nick),2,32) == op) { writeini $+($network,users.ini) $comchan($newnick,%a) $newnick $gettok($readini(users.ini,$comchan($newnick,%a),$nick),1,32) op | remini $+($network,users.ini) $comchan($newnick,%a) $nick }
    if ($gettok($readini($+($network,users.ini),$comchan($newnick,%a),$nick),2,32) == helper) { writeini $+($network,users.ini) $comchan($newnick,%a) $newnick $gettok($readini(users.ini,$comchan($newnick,%a),$nick),1,32) helper | remini $+($network,users.ini) $comchan($newnick,%a) $nick }
    if ($gettok($readini($+($network,users.ini),$comchan($newnick,%a),$nick),2,32) == voice) { writeini $+($network,users.ini) $comchan($newnick,%a) $newnick $gettok($readini(users.ini,$comchan($newnick,%a),$nick),1,32) voice | remini $+($network,users.ini) $comchan($newnick,%a) $nick }
    else { inc %a } 
} }
/* 
On dns Event 
*/
on 1:dns: {
  var %n = $dns(0)
  .msg %targ %logo.l DNS %logo.r Found %logo.l %n %logo.r Addresse(s) for %logo.l $dns(%n).addr %logo.r
  while (%n > 0) { .msg %targ %logo.l DNS %logo.r Address: %logo.l $dns(%n).addr %logo.r Ip: %logo.l $dns(%n).ip %logo.r | dec %n
} }
/* 
On Topic Event 
*/
on 1:topic:#: {
  if ($nick == ChanServ) || ($nick == Pazuzu) { halt }
  if ($nick == $me) || ($gettok($readini($+($network,users.ini),$chan,$nick),2,32) == owner) { set $+(%,topic,$3) $1- | halt }
  if ($($+(%,topiclock,$chan),2) == on) { .msg $chan %logo.l Enforcing Topic %logo.r $($+(%,topic,$chan),2) | topic $chan $($+(%,topic,$chan),2) }
}
/* 
On Mode Event 
*/
on *:mode:#: {
  if ($($+(%,protect,$chan),2) == on) {
    if ($chan == $gettok($readini(users.ini,modelock,$chan),1,32)) { 
      if ($nick == ChanServ) || ($nick == Pazuzu) { halt }
      if ($nick == $me) || ($gettok($readini($+($network,users.ini),$chan,$nick),2,32) == owner) { halt }
      else { mode $chan $replace($1-,+,-) | .msg $chan %logo.l Enforcing Modes %logo.r $gettok($readini(users.ini,modelock,$chan),2-,32) | mode $chan $gettok($readini(users.ini,modelock,$chan),2-,32) }
} } }
/* 
On Ban/Unban Events 
*/
on *:ban:#: { set $+(%,$nick,totalbans) $calc($($+(%,$nick,totalbans),2) + 1) | write banned.txt %logo.l $chan %logo.r Ban %logo.l $banmask %logo.r was banned by %logo.l $nick %logo.r on %logo.l $fulldate %logo.r }
on *:unban:#: { write -dw $+ * $+ $2 $+ * banned.txt }
/* 
On Kick Event 
*/
on *:kick:#: { 
  set $+(%,$nick,totalkicks) $calc($($+(%,$nick,totalkicks),2) + 1) 
  if ($chan == %rchan) { relayevent $network $nick kicked $knick from # }
  if ($($+(%,protect,$chan),2) == on) {  
    if ($strip($address($nick,2)) == $gettok($readini($+($network,users.ini),$chan,$nick),1,32)) && ($gettok($readini($+($network,users.ini),$chan,$nick),2,32) == admin) { halt }
    if ($strip($address($nick,2)) == $gettok($readini($+($network,users.ini),$chan,$nick),1,32)) && ($gettok($readini($+($network,users.ini),$chan,$nick),2,32) == owner) { halt }
    if ($address($knick,2) == $gettok($readini($+($network,users.ini),$chan,$knick),1,32)) && ($gettok($readini($+($network,users.ini),$chan,$knick),2,32) == op) { remini $+($network,users.ini) $chan $nick | invite $nick $chan | io | .msg $chan %logo.l $nick %logo.r You may not kick a channel op. | .msg $chan %logo.l $nick %logo.r you are now being stripped of your %logo.l Op %logo.r status. | mode -o $nick }
    if ($address($knick,2) == $gettok($readini($+($network,users.ini),$chan,$knick),1,32)) && ($gettok($readini($+($network,users.ini),$chan,$knick),2,32) == admin) { remini $+($network,users.ini) $chan $nick | invite $nick $chan | io | .msg $chan %logo.l $nick %logo.r You may not kick a channel admin. | .msg $chan %logo.l $nick %logo.r you are now being stripped of your %logo.l Op %logo.r status. | mode -o $nick }
    if ($address($knick,2) == $gettok($readini($+($network,users.ini),$chan,$knick),1,32)) && ($gettok($readini($+($network,users.ini),$chan,$knick),2,32) == owner) { remini $+($network,users.ini) $chan $nick | invite $nick $chan | io | .msg $chan %logo.l $nick %logo.r You may not kick a channel owner. | .msg $chan %logo.l $nick %logo.r you are now being stripped of your %logo.l Op %logo.r status. | mode -o $nick }
} }
/* 
On Op/Deop Events 
*/
on *:op:#: { 
  if ($($+(%,protect,$chan),2) == on) {
    if (%relay == on) && ($chan == %chan1) { .msg %chan2 Op %logo.l $opnick %logo.r by %logo.l $nick %logo.r } 
    if ($nick == $me) || ($nick == chanserv) || ($nick == Pazuzu) { halt }
    if ($address($opnick,2) == $gettok($readini($+($network,users.ini),$chan,$opnick),1,32)) && ($gettok($readini($+($network,users.ini),$chan,$opnick),2,32) == op) { halt }
    if ($address($opnick,2) == $gettok($readini($+($network,users.ini),$chan,$opnick),1,32)) && ($gettok($readini($+($network,users.ini),$chan,$opnick),2,32) == admin) { halt }
    if ($address($opnick,2) == $gettok($readini($+($network,users.ini),$chan,$opnick),1,32)) && ($gettok($readini($+($network,users.ini),$chan,$opnick),2,32) == owner) { halt }
    if ($strip($address($nick,2)) == $gettok($readini($+($network,users.ini),$chan,$nick),1,32)) && ($gettok($readini($+($network,users.ini),$chan,$nick),2,32) == admin) { halt }
    if ($strip($address($nick,2)) == $gettok($readini($+($network,users.ini),$chan,$nick),1,32)) && ($gettok($readini($+($network,users.ini),$chan,$nick),2,32) == owner) { halt }
    else { io | .msg $chan %logo.l $opnick %logo.r is not a %logo.l Op %logo.r in this channel. | mode $chan -o $opnick | .msg $chan %logo.l $nick %logo.r you are now being stripped of your %logo.l Op %logo.r status. | remini $+($network,users.ini) $chan $nick | mode $chan -o $nick }
} }
on *:deop:#: {
  if ($+(%,protect,$chan)) {
    if (%relay == on) && ($chan == %chan1) { .msg %chan2 DeOp %logo.l $opnick %logo.r by %logo.l $nick %logo.r } 
    if ($nick == $me) { halt }
    if ($strip($address($nick,2)) == $gettok($readini($+($network,users.ini),$chan,$nick),1,32)) && ($gettok($readini($+($network,users.ini),$chan,$nick),2,32) == admin) { halt }
    if ($strip($address($nick,2)) == $gettok($readini($+($network,users.ini),$chan,$nick),1,32)) && ($gettok($readini($+($network,users.ini),$chan,$nick),2,32) == owner) { halt }
    if ($address($opnick,2) == $gettok($readini($+($network,users.ini),$chan,$opnick),1,32)) && ($gettok($readini($+($network,users.ini),$chan,$opnick),2,32) == owner) { remini $+($network,users.ini) $chan $nick | io | .msg $chan You may not deop a channel owner, You are now being stripped of your Op status. | mode $chan +o $opnick | mode $chan -o $nick }
    if ($address($opnick,2) == $gettok($readini($+($network,users.ini),$chan,$opnick),1,32)) && ($gettok($readini($+($network,users.ini),$chan,$opnick),2,32) == admin) { remini $+($network,users.ini) $chan $nick | io | .msg $chan You may not deop a channel admin, You are now being stripped of your Op status. | mode $chan +o $opnick | mode $chan -o $nick }
    if ($address($opnick,2) == $gettok($readini($+($network,users.ini),$chan,$opnick),1,32)) && ($gettok($readini($+($network,users.ini),$chan,$opnick),2,32) == op) { remini $+($network,users.ini) $chan $nick | io | .msg $chan You may not deop a channel op, You are now being stripped of your Op status. | mode $chan +o $opnick | mode $chan -o $nick }
} }
/* 
On Help/Dehelp Events 
*/
on *:help:#: { 
  if ($+(%,protect,$chan)) {
    if (%relay == on) && ($chan == %chan1) { .msg %chan2 Help %logo.l $hnick %logo.r by %logo.l $nick %logo.r } 
    if ($nick == $me) || ($nick == chanserv) || ($nick == Pazuzu) { halt }
    if ($gettok($readini($+($network,users.ini),$chan,$hnick),2,32) == helper) || ($gettok($readini($+($network,users.ini),$chan,$hnick),2,32) == op) { halt }
    if ($gettok($readini($+($network,users.ini),$chan,$hnick),2,32) == admin) || ($gettok($readini($+($network,users.ini),$chan,$hnick),2,32) == owner) { halt }
    if ($strip($address($nick,2)) == $gettok($readini($+($network,users.ini),$chan,$nick),1,32)) && ($gettok($readini($+($network,users.ini),$chan,$nick),2,32) == op) { halt }
    if ($strip($address($nick,2)) == $gettok($readini($+($network,users.ini),$chan,$nick),1,32)) && ($gettok($readini($+($network,users.ini),$chan,$nick),2,32) == admin) { halt }
    if ($strip($address($nick,2)) == $gettok($readini($+($network,users.ini),$chan,$nick),1,32)) && ($gettok($readini($+($network,users.ini),$chan,$nick),2,32) == owner) { halt }
    if ($gettok($readini($+($network,users.ini),$chan,$hnick),2,32) != helper) { io | .msg $chan %logo.l $hnick %logo.r is not a %logo.l Helper %logo.r in this channel. | mode $chan -h $hnick | .msg $chan %logo.l $nick %logo.r you are now being stripped of your %logo.l Op %logo.r status. | remini $+($network,users.ini) $chan $nick | mode $chan -o $nick }
} }
on *:dehelp:#: {
  if ($+(%,protect,$chan)) {
    if (%relay == on) && ($chan == %chan1) { msg %chan2 DeHelp %logo.l $hnick %logo.r by %logo.l $nick %logo.r } 
    if ($nick == $me) { halt }
    if ($strip($address($nick,2)) == $gettok($readini($+($network,users.ini),$chan,$nick),1,32)) && ($gettok($readini($+($network,users.ini),$chan,$nick),2,32) == op) { halt }
    if ($strip($address($nick,2)) == $gettok($readini($+($network,users.ini),$chan,$nick),1,32)) && ($gettok($readini($+($network,users.ini),$chan,$nick),2,32) == admin) { halt }
    if ($strip($address($nick,2)) == $gettok($readini($+($network,users.ini),$chan,$nick),1,32)) && ($gettok($readini($+($network,users.ini),$chan,$nick),2,32) == owner) { halt }
    if ($address($hnick,2) == $gettok($readini($+($network,users.ini),$chan,$hnick),1,32)) && ($gettok($readini($+($network,users.ini),$chan,$hnick),2,32) == owner) { io | .msg $chan You may not dehelp a channel owner, You are now being stripped of your Op status. | mode $chan +h $hnick | remini $+($network,users.ini) $chan $nick | mode $chan -o $nick }
    if ($address($hnick,2) == $gettok($readini($+($network,users.ini),$chan,$hnick),1,32)) && ($gettok($readini($+($network,users.ini),$chan,$hnick),2,32) == admin) { io | .msg $chan You may not dehelp a channel admin, You are now being stripped of your Op status. | mode $chan +h $hnick | remini $+($network,users.ini) $chan $nick | mode $chan -o $nick }
    if ($address($hnick,2) == $gettok($readini($+($network,users.ini),$chan,$hnick),1,32)) && ($gettok($readini($+($network,users.ini),$chan,$hnick),2,32) == op) { io | .msg $chan You may not dehelp a channel op, You are now being stripped of your Op status. | mode $chan +h $hnick | remini $+($network,users.ini) $chan $nick | mode $chan -o $nick }
    if ($address($hnick,2) == $gettok($readini($+($network,users.ini),$chan,$hnick),1,32)) && ($gettok($readini($+($network,users.ini),$chan,$hnick),2,32) == helper) { io | .msg $chan You may not dehelp a channel helper, You are now being stripped of your Op status. | mode $chan +h $hnick | remini $+($network,users.ini) $chan $nick | mode $chan -o $nick }
} }
/* 
On Voice/Devoice Events 
*/
on *:voice:#: { 
  if ($+(%,protect,$chan)) {
    if (%relay == on) && ($chan == %chan1) { msg %chan2 Voice %logo.l $vnick %logo.r by %logo.l $nick %logo.r }
    if ($nick == $me) || ($nick == chanserv) || ($nick == Pazuzu) { halt } 
    if ($gettok($readini($+($network,users.ini),$chan,$vnick),2,32) == voice) || ($gettok($readini($+($network,users.ini),$chan,$vnick),2,32) == helper) || ($gettok($readini($+($network,users.ini),$chan,$vnick),2,32) == op) { halt }
    if ($gettok($readini($+($network,users.ini),$chan,$vnick),2,32) == admin) || ($gettok($readini($+($network,users.ini),$chan,$vnick),2,32) == owner) { halt }
    if ($strip($address($nick,2)) == $gettok($readini($+($network,users.ini),$chan,$nick),1,32)) && ($gettok($readini($+($network,users.ini),$chan,$nick),2,32) == helper) { halt }
    if ($strip($address($nick,2)) == $gettok($readini($+($network,users.ini),$chan,$nick),1,32)) && ($gettok($readini($+($network,users.ini),$chan,$nick),2,32) == op) { halt }
    if ($strip($address($nick,2)) == $gettok($readini($+($network,users.ini),$chan,$nick),1,32)) && ($gettok($readini($+($network,users.ini),$chan,$nick),2,32) == admin) { halt }
    if ($strip($address($nick,2)) == $gettok($readini($+($network,users.ini),$chan,$nick),1,32)) && ($gettok($readini($+($network,users.ini),$chan,$nick),2,32) == owner) { halt } 
    if ($gettok($readini($+($network,users.ini),$chan,$vnick),2,32) != voice) { io | .msg $chan %logo.l $vnick %logo.r is not a %logo.l Voice %logo.r in this channel. | mode $chan -v $vnick | .msg $chan %logo.l $nick %logo.r you are now being stripped of your %logo.l Op %logo.r status. | remini $+($network,users.ini) $chan $nick | mode $chan -o $nick }
} }
on *:devoice:#: {
  if ($+(%,protect,$chan)) {
    if (%relay == on) && ($chan == %chan1) { msg %chan2 DeVoice %logo.l $vnick %logo.r by %logo.l $nick %logo.r } 
    if ($nick == $me) { halt }
    if ($strip($address($nick,2)) == $gettok($readini($+($network,users.ini),$chan,$nick),1,32)) && ($gettok($readini($+($network,users.ini),$chan,$nick),2,32) == helper) { halt }
    if ($strip($address($nick,2)) == $gettok($readini($+($network,users.ini),$chan,$nick),1,32)) && ($gettok($readini($+($network,users.ini),$chan,$nick),2,32) == op) { halt }
    if ($strip($address($nick,2)) == $gettok($readini($+($network,users.ini),$chan,$nick),1,32)) && ($gettok($readini($+($network,users.ini),$chan,$nick),2,32) == admin) { halt }
    if ($strip($address($nick,2)) == $gettok($readini($+($network,users.ini),$chan,$nick),1,32)) && ($gettok($readini($+($network,users.ini),$chan,$nick),2,32) == owner) { halt }
    if ($address($vnick,2) == $gettok($readini($+($network,users.ini),$chan,$vnick),1,32)) && ($gettok($readini($+($network,users.ini),$chan,$vnick),2,32) == owner) { io | .msg $chan You may not devoice a channel owner, You are now being stripped of your Op status. | mode $chan +v $vnick | remini $+($network,users.ini) $chan $nick | mode $chan -o $nick }
    if ($address($vnick,2) == $gettok($readini($+($network,users.ini),$chan,$vnick),1,32)) && ($gettok($readini($+($network,users.ini),$chan,$vnick),2,32) == admin) { io | .msg $chan You may not devoice a channel admin, You are now being stripped of your Op status. | mode $chan +v $vnick | remini $+($network,users.ini) $chan $nick | mode $chan -o $nick }
    if ($address($vnick,2) == $gettok($readini($+($network,users.ini),$chan,$vnick),1,32)) && ($gettok($readini($+($network,users.ini),$chan,$vnick),2,32) == op) { io | .msg $chan You may not devoice a channel op, You are now being stripped of your Op status. | mode $chan +v $vnick | remini $+($network,users.ini) $chan $nick | mode $chan -o $nick }
    if ($address($vnick,2) == $gettok($readini($+($network,users.ini),$chan,$vnick),1,32)) && ($gettok($readini($+($network,users.ini),$chan,$vnick),2,32) == helper) { io | .msg $chan You may not devoice a channel helper, You are now being stripped of your Op status. | mode $chan +v $vnick | remini $+($network,users.ini) $chan $nick | mode $chan -o $nick }
    if ($address($vnick,2) == $gettok($readini($+($network,users.ini),$chan,$vnick),1,32)) && ($gettok($readini($+($network,users.ini),$chan,$vnick),2,32) == voice) { io | .msg $chan You may not devoice a channel voice, You are now being stripped of your Op status. | mode $chan +v $vnick | remini $+($network,users.ini) $chan $nick | mode $chan -o $nick }
} }
/* 
On Notice Event 
*/
on *:notice:*:*: {
  if ($me * is already in use* isin $strip($1-)) { .msg nickserv ghost %botnick %botpass }
  if (Ghost with your nick has been killed* isin $strip($1-)) { .nick %botnick | .identify %botpass }
  if (STATUS isin $strip($1-)) { 
    if (0 isin $strip($1-)) { .msg %targ %logo.l %targnick %logo.r No such user online, or not registered. }
    if (1 isin $strip($1-)) { .msg %targ %logo.l %targnick %logo.r User not recognised as nick owner. }
    if (2 isin $strip($1-)) { .msg %targ %logo.l %targnick %logo.r User recognised as nick owner via Access List only. }
    if (3 isin $strip($1-)) { .msg %targ %logo.l %targnick %logo.r User recognised as nick owner via Identify command. }
} }


/* 
On Notify/UnNotify Events 
*/
on 1:notify: { 
  set $+(%,ticks,$network,$nick) 0
  $+(.timer,ticks,$network,$nick) 0 1 inc $($+(%,ticks,$network,$nick),1) 1
}
on 1:unotify: { 
  echo -a $nick was online for: $duration($($+(%,ticks,$network,$nick),2))
  $+(.timer,ticks,$network,$nick) off
  set $+(%,tickstotal,$network,$nick) $calc($($+(%,tickstotal,$network,$nick),2) + $($+(%,ticks,$network,$nick),2))
}
/*
Rawmode
*/
on *:rawmode:%rchan: { 
  if (%serverrelay == on) { relayevent $network $nick sets mode $1 on $2 } 
}
/* 
On Action Event 
*/
on *:action:*:*: { 
  set $+(%,$nick,totalmsg) $calc($($+(%,$nick,totalmsg),2) + 1)
  set $+(%,$nick,totalchar) $calc($len($1-) + $($+(%,$nick,totalchar),2))
  set $+(%,$nick,totalword) $calc($numtok($1-,32) + $($+(%,$nick,totalword),2))
  if (%serverrelay == on) && ($chan == %rchan) { relayevent $network $+($chr(60),$nick) $1- }
  if (%relay == on) && ($chan == %chan1) { msg %chan2 %logo.l $nick %logo.r $1- } 
}
/* 
On Text Event 
*/
on *:text:*:*: {
  set $+(%,$nick,totalmsg) $calc($($+(%,$nick,totalmsg),2) + 1)
  set $+(%,$nick,totalchar) $calc($len($1-) + $($+(%,$nick,totalchar),2))
  set $+(%,$nick,totalword) $calc($numtok($1-,32) + $($+(%,$nick,totalword),2))
  if (%serverrelay == on) && ($chan == %rchan) { relayevent $network $+($chr(60),$nick,$chr(62)) $1- }
  ;
  ; Flood Catcher ( #:# Lines:Seconds )
  ;
  if ($($+(%,$chan,flood),2) == on) { 
    set -u $+ $+(%,$chan,floodin),2) $+(%,$nick,flood) 1 
    if ($($+(%,$nick,flood),2) >= $($+(%,$chan,floodlines),2)) { unset $+(%,$nick,flood) | ban -ku300 $chan $nick 2 Flooding. | .notice $nick You have been banned from %logo.l $chan %logo.r for Flooding. } 
  } 
  ;
  ; Flood Catcher ( Long Messages )
  ;
  if ($($+(%,$chan,bflood),2) == on) { 
    if ($len($strip($1-)) >= $($+(%,$chan,bigflood),2)) { ban -ku300 $chan $nick 2 Flooding. | .notice $nick You have been banned from %logo.l $chan %logo.r for Flooding. } 
  } 
  ;
  ; single server relay
  ;
  if (%relay == on) && ($chan == %chan1) { msg %chan2 %logo.l $nick %logo.r $1- } 
  if (!$read(info.txt, w,$1 $+ *)) { haltdef }
  if ($read(info.txt, w,$1 $+ *)) { if ($1) && (!$2) { .msg $chan $read(info.txt, w,$1 $+ *) } }

  if ($($+(%,trigger,$nick),2) == 3) {
    if ($strip($address($nick,2)) == $gettok($readini($+($network,users.ini),botmaster,$nick),2,32)) { unset $+(%,trigger,$nick) }
    else { .msg $chan %logo.l $nick %logo.r You are being ignored for 5 minutes, for trigger abuse. | ignore -u300 $nick | halt }
  }

  ;
  ; Public Commands
  ;
  if ($+(%trigger,about) == $strip($1)) {
    .timer 1 1 .notice $nick %logo.l SassIRC 12,01m04,01I04,01R08,01C Channel Protection Bot %logo.r Coded By %logo.l PuNkTuReD %logo.r
    .timer 1 4 .notice $nick Is currently being used on %logo.l $hget(Servers,0).item %logo.r server(s) in a total of %logo.l $+(%,totchans),2) %logo.r Channel(s), Last Reboot: %logo.l $uptime(server,2) %logo.r ago.
    .timer 1 7 .notice $nick %logo.l $+(%trigger,commands) %logo.r to see a list of available commands. 
  }
  if ($+(%trigger,checknick) == $strip($1)) {
    if (!$2) { eis | .msg $chan ?checknick command: ?checknick nick }
    else { set -u10 %targ $chan | set -u10 %targnick $2 | .msg nickserv status $2 }
  }
  if ($+(%trigger,commands) == $strip($1)) {
    .notice $nick 04,01**** %logo.l Bot Master %logo.r commands are 04,01Red. %logo.l Channel Owner %logo.r commands are 07,01Orange. %logo.l Public %logo.r commands are 08,01Yellow.
    ; Bot Master Commands
    if ($strip($address($nick,2)) == $gettok($readini($+($network,users.ini),botmaster,$nick),2,32)) {
      .notice $nick 04,01?act nick/channel message - 04,01?addowner nick channel - 04,01?autojoin add/del/list network channel - 04,01?botmaster nick - 04,01?clonescanner on/off - 04,01?cycle channel - 
      .notice $nick 04,01?global messsage - 04,01?kill - 04,01?reboot - 04,01?relay on/off channel_1 channel_2 - 04,01?remember info_here - 04,01?say nick/channel message - 04,01?set nick/password nick/password - 04,01?server add/del server - 
    }
    ; Channel Owner Commands
    if ($strip($address($nick,2)) == $gettok($readini($+($network,users.ini),$chan,$nick),1,32)) && ($gettok($readini($+($network,users.ini),$chan,$nick),2,32) == owner ) { 
      .notice $nick 07,01?addadmin nick - 07,01?addop nick - 07,01?addhelper nick - 07,01?addvoice nick - 07,01?badnick add/del nick - 07,01?ban add/del nick reason - 07,01?baninfo total/banmask - 
      .notice $nick 07,01?bigflood on/off/status # - 07,01?flood on/off/status #:# - 07,01?flyby on/off/status - 07,01?greet on/off message - 07,01?kick nick reason - 07,01?modelock list/modes - 07,01?protect on/off - 07,01?spam on/off/status - 07,01?topiclock on/off topic - 
    }
    ; Public Commands
    .notice $nick 08,01?about - 08,01?checknick nick - 08,01?commands - 08,01?dns nick/address - 08,01?ircop scan channel - 08,01?lastseen nick - 08,01?stats nick - 08,01?rules -
  }
  if ($+(%trigger,dns) == $strip($1)) {
    if (!$2) { eis | .msg $chan ?dns command: ?dns address }
    if ($2) { set -u5 %targ $chan | .dns $2 }
  }
  if ($+(%trigger,ircop) == $strip($1)) {
    if (!$3) { eis | .msg $chan ?ircop command: ?ircop scan #channel }
    if ($2 == scan) { 
      if ($me ison $3) { set -u10 %msgchan $chan | set -u10 %chkchan1 $3 | ircopscan %chkchan1 }
      else { .msg $chan %logo.l $nick %logo.r I can only scan channels i am on. }
  } }
  if ($+(%trigger,lastseen) == $strip($1)) {
    if (!$2) { eis | .msg $chan ?lastseen command: ?lastseen nick | halt }
    if ($2) { 
      if ($2 ison $chan) { .msg $chan %logo.l Last Seen04,01 $2 %logo.r is on %logo.l $chan %logo.r already %logo.l $nick %logo.r }
      else {
        if ($2 == $gettok($read(lastseen.txt, w,* $+ $2- $+ *),2,32)) { .msg $chan %logo.l Last Seen04,01 $2 %logo.r $read(lastseen.txt, w,* $+ $2- $+ *) } 
        else { .msg $chan %logo.l Last Seen %logo.r I have No Records for $2  }
      }
  } }
  if ($+(%trigger,rules) == $strip($1)) {
    .timer 1 1 .msg $chan $iif($($+(%,protect,$chan),2) == on,$(%logo.l  Channel is being protected %logo.r ),) $iif($($+(%,protect,$chan),2) == on,Status protection (@ % +,Op Hop Voice) ,)
    .timer 1 4 .msg $chan $iif($chan == $gettok($readini(users.ini,modelock,$chan),1,32),$(%logo.l  Mode Lock %logo.r ),) $iif($chan == $gettok($readini(users.ini,modelock,$chan),1,32), $gettok($readini(users.ini,modelock,$chan),2-,32) ,)
    .timer 1 7 .msg $chan $iif($($+(%,topiclock,$chan),2) == on,$(%logo.l  Topic lock %logo.r ),) $iif($($+(%,topiclock,$chan),2) == on,$($+(%,topic,$chan),2) ,)
    .timer 1 10 .msg $chan $iif($($+(%,greet,$chan),2) == on,$(%logo.l  Greet Message %logo.r ),) $iif($($+(%,greet,$chan),2) == on,$($+(%,joingreet,$chan),2) ,)
    .timer 1 13 .msg $chan $iif($($+(%,sp,$chan),2) == on,$(%logo.l  Spam Protect %logo.r ),) $iif($($+(%,$chan,flyby),2) == on,$(%logo.l  Fly-By Protect %logo.r ),) $iif($($+(%,$chan,flood),2) == on,$(%logo.l  Flood Protect %logo.r ),) $iif($($+(%,$chan,bflood),2) == on,$(%logo.l  Big Flood Protect %logo.r ),)
  }
  if ($+(%trigger,stats) == $strip($1)) {
    if (!$2) { eis | .msg $chan ?stats command: ?stats nick | .msg $chan Or: ?stats reset nick | halt }
    if ($2) { 
      if ($2 == reset) && ($strip($address($nick,2)) == $gettok($readini($+($network,users.ini),botmaster,$nick),2,32)) { unset $+(%,$3,*) | .msg $chan %logo.l Stats for04,01 $3 %logo.r Have Been Reset. | halt }
      else {
        if ($($+(%,$2,totaljoin),2)) {
          if ($strip($address($nick,2)) == $gettok($readini($+($network,users.ini),botmaster,$nick),2,32)) {
            .msg $chan %logo.l Stats for04,01 $2 %logo.r Total Joins: %logo.l $iif($($+(%,$2,totaljoin),2),$($+(%,$2,totaljoin),2),0) %logo.r Total Parts: %logo.l $iif($($+(%,$2,totalparts),2),$($+(%,$2,totalparts),2),0) %logo.r Total Quits: %logo.l $iif($($+(%,$2,totalquits),2),$($+(%,$2,totalquits),2),0) %logo.r Total Bans: %logo.l $iif($($+(%,$2,totalbans),2),$($+(%,$2,totalbans),2),0) %logo.r Total Kicks: %logo.l $iif($($+(%,$2,totalkicks),2),$($+(%,$2,totalkicks),2),0) %logo.r Total Messages Sent: %logo.l $iif($($+(%,$2,totalmsg),2),$($+(%,$2,totalmsg),2),0) %logo.r Total Letters: %logo.l $iif($($+(%,$2,totalchar),2),$($+(%,$2,totalchar),2),0) %logo.r Total Words: %logo.l $iif($($+(%,$2,totalword),2),$($+(%,$2,totalword),2),0) %logo.r Total Online Time %logo.l $duration($calc($($+(%,ticks,$network,$2),2) + $($+(%,tickstotal,$network,$2),2)))  %logo.r 
            halt
          }
          if ($strip($address($nick,2)) == $gettok($readini($+($network,users.ini),$chan,$nick),1,32)) && ($gettok($readini($+($network,users.ini),$chan,$nick),2,32) == owner) {
            .msg $chan %logo.l Stats for04,01 $2 %logo.r Total Joins: %logo.l $iif($($+(%,$2,totaljoin),2),$($+(%,$2,totaljoin),2),0) %logo.r Total Parts: %logo.l $iif($($+(%,$2,totalparts),2),$($+(%,$2,totalparts),2),0) %logo.r Total Quits: %logo.l $iif($($+(%,$2,totalquits),2),$($+(%,$2,totalquits),2),0) %logo.r Total Bans: %logo.l $iif($($+(%,$2,totalbans),2),$($+(%,$2,totalbans),2),0) %logo.r Total Kicks: %logo.l $iif($($+(%,$2,totalkicks),2),$($+(%,$2,totalkicks),2),0) %logo.r Total Messages Sent: %logo.l $iif($($+(%,$2,totalmsg),2),$($+(%,$2,totalmsg),2),0) %logo.r Total Letters: %logo.l $iif($($+(%,$2,totalchar),2),$($+(%,$2,totalchar),2),0) %logo.r Total Words: %logo.l $iif($($+(%,$2,totalword),2),$($+(%,$2,totalword),2),0) %logo.r Total Online Time %logo.l $duration($calc($($+(%,ticks,$network,$2),2) + $($+(%,tickstotal,$network,$2),2)))  %logo.r
            halt
          }
          if ($strip($address($nick,2)) == $gettok($readini($+($network,users.ini),$chan,$nick),1,32)) && ($gettok($readini($+($network,users.ini),$chan,$nick),2,32) == admin) { 
            .msg $chan %logo.l Stats for04,01 $2 %logo.r Total Joins: %logo.l $iif($($+(%,$2,totaljoin),2),$($+(%,$2,totaljoin),2),0) %logo.r Total Parts: %logo.l $iif($($+(%,$2,totalparts),2),$($+(%,$2,totalparts),2),0) %logo.r Total Quits: %logo.l $iif($($+(%,$2,totalquits),2),$($+(%,$2,totalquits),2),0) %logo.r Total Bans: %logo.l $iif($($+(%,$2,totalbans),2),$($+(%,$2,totalbans),2),0) %logo.r Total Kicks: %logo.l $iif($($+(%,$2,totalkicks),2),$($+(%,$2,totalkicks),2),0) %logo.r Total Messages Sent: %logo.l $iif($($+(%,$2,totalmsg),2),$($+(%,$2,totalmsg),2),0) %logo.r Total Letters: %logo.l $iif($($+(%,$2,totalchar),2),$($+(%,$2,totalchar),2),0) %logo.r Total Words: %logo.l $iif($($+(%,$2,totalword),2),$($+(%,$2,totalword),2),0) %logo.r Total Online Time %logo.l $duration($calc($($+(%,ticks,$network,$2),2) + $($+(%,tickstotal,$network,$2),2)))  %logo.r
            halt
          }
          if ($strip($address($nick,2)) == $gettok($readini($+($network,users.ini),$chan,$nick),1,32)) && ($gettok($readini($+($network,users.ini),$chan,$nick),2,32) == op) {
            .msg $chan %logo.l Stats for04,01 $2 %logo.r Total Joins: %logo.l $iif($($+(%,$2,totaljoin),2),$($+(%,$2,totaljoin),2),0) %logo.r Total Parts: %logo.l $iif($($+(%,$2,totalparts),2),$($+(%,$2,totalparts),2),0) %logo.r Total Quits: %logo.l $iif($($+(%,$2,totalquits),2),$($+(%,$2,totalquits),2),0) %logo.r Total Bans: %logo.l $iif($($+(%,$2,totalbans),2),$($+(%,$2,totalbans),2),0) %logo.r Total Kicks: %logo.l $iif($($+(%,$2,totalkicks),2),$($+(%,$2,totalkicks),2),0) %logo.r Total Messages Sent: %logo.l $iif($($+(%,$2,totalmsg),2),$($+(%,$2,totalmsg),2),0) %logo.r Total Letters: %logo.l $iif($($+(%,$2,totalchar),2),$($+(%,$2,totalchar),2),0) %logo.r Total Words: %logo.l $iif($($+(%,$2,totalword),2),$($+(%,$2,totalword),2),0) %logo.r Total Online Time %logo.l $duration($calc($($+(%,ticks,$network,$2),2) + $($+(%,tickstotal,$network,$2),2)))  %logo.r
            halt
          }
          if ($strip($address($nick,2)) == $gettok($readini($+($network,users.ini),$chan,$nick),1,32)) && ($gettok($readini($+($network,users.ini),$chan,$nick),2,32) == helper) {
            .msg $chan %logo.l Stats for04,01 $2 %logo.r Total Joins: %logo.l $iif($($+(%,$2,totaljoin),2),$($+(%,$2,totaljoin),2),0) %logo.r Total Parts: %logo.l $iif($($+(%,$2,totalparts),2),$($+(%,$2,totalparts),2),0) %logo.r Total Quits: %logo.l $iif($($+(%,$2,totalquits),2),$($+(%,$2,totalquits),2),0) %logo.r Total Bans: %logo.l $iif($($+(%,$2,totalbans),2),$($+(%,$2,totalbans),2),0) %logo.r Total Kicks: %logo.l $iif($($+(%,$2,totalkicks),2),$($+(%,$2,totalkicks),2),0) %logo.r Total Messages Sent: %logo.l $iif($($+(%,$2,totalmsg),2),$($+(%,$2,totalmsg),2),0) %logo.r Total Letters: %logo.l $iif($($+(%,$2,totalchar),2),$($+(%,$2,totalchar),2),0) %logo.r Total Words: %logo.l $iif($($+(%,$2,totalword),2),$($+(%,$2,totalword),2),0) %logo.r Total Online Time %logo.l $duration($calc($($+(%,ticks,$network,$2),2) + $($+(%,tickstotal,$network,$2),2)))  %logo.r
            halt
          }
          else { .msg $chan %logo.l Stats for04,01 $2 %logo.r Total Joins: %logo.l $iif($($+(%,$2,totaljoin),2),$($+(%,$2,totaljoin),2),0) %logo.r Total Parts: %logo.l $iif($($+(%,$2,totalparts),2),$($+(%,$2,totalparts),2),0) %logo.r Total Quits: %logo.l $iif($($+(%,$2,totalquits),2),$($+(%,$2,totalquits),2),0) %logo.r Total Bans: %logo.l $iif($($+(%,$2,totalbans),2),$($+(%,$2,totalbans),2),0) %logo.r Total Kicks: %logo.l $iif($($+(%,$2,totalkicks),2),$($+(%,$2,totalkicks),2),0) %logo.r Total Messages Sent: %logo.l $iif($($+(%,$2,totalmsg),2),$($+(%,$2,totalmsg),2),0) %logo.r Total Letters: %logo.l $iif($($+(%,$2,totalchar),2),$($+(%,$2,totalchar),2),0) %logo.r Total Words: %logo.l $iif($($+(%,$2,totalword),2),$($+(%,$2,totalword),2),0) %logo.r }
        }
        else { .msg $chan %logo.l Stats for04,01 $2 %logo.r No stats Recorded. } 
      } 
  } }
  ;
  ; Bot Master Commands
  ;
  if ($strip($address($nick,2)) == $gettok($readini($+($network,users.ini),botmaster,$nick),2,32)) {
    if ($+(%trigger,act) == $strip($1)) {
      if (!$3) { eis | .msg $chan ?act command: ?act nick/#channel message }
      if ($3) { .describe $chan %logo.l $me %logo.r $3- | .describe $2 $3- }
    }
    if ($+(%trigger,addowner) == $strip($1)) {
      if (!$3) { eis | .msg $chan ?addowner command: ?addowner nick #channel }
      if ($3) { notify $2 | writeini $+($network,users.ini) $3 $2 $address($2,2) owner | .msg $chan Added %logo.l $2 %logo.r as %logo.l $3 %logo.r Owner. }
    }
    if ($+(%trigger,autojoin) == $strip($1)) {
      if (!$2) { eis | .msg $chan ?autojoin command: ?autojoin add/del/list network #channel }
      if ($2 == add) { $iif(%totchans == $null,set %totchans 1,set %totchans $calc(%totchans + 1)) | hadd -m AutoJoin $3 $iif($hget(Autojoin,$3),$+($hget(Autojoin,$3),$chr(44),$4-),$+($4-,$chr(44))) | .msg $chan Added %logo.l $4 %logo.r to %logo.l $3 %logo.r Autojoin channel(s), I will join on my next reboot. }
      if ($2 == del) { 
        set %totchans $calc(%totchans - 1)
        hadd AutoJoin $3 $remtok($hget(Autojoin,$3),$4-,1,44) 
        .msg $chan Deleted %logo.l $4 %logo.r from %logo.l $3 %logo.r Autojoin channel(s), I will leave on my next reboot. 
      }
      if ($2 == list) { 
        if (!$3) { eis | .msg $chan ?autojoin command: ?autojoin list network }
        else { .msg $chan I auto join these channel(s) on $+($3,:) %logo.l $hget(Autojoin,$3) %logo.r }
    } }
    if ($+(%trigger,badnick) == $strip($1)) {
      if (!$4) { eis | .msg $chan ?badnick command: ?badnick add/del nick | halt }
      if ($2 == add) { writeini badnicks.ini $chan $3 $3 | .msg $chan %logo.l Bad Nick04,01 $3 %logo.r Added to bad nicks list for %logo.l $chan %logo.r | halt }
      if ($2 == del) { remini badnicks.ini $chan $3 | .msg $chan %logo.l Bad Nick04,01 $3 %logo.r Removed from bad nicks list for %logo.l $chan %logo.r | halt }
    }
    if ($+(%trigger,baninfo) == $strip($1)) {
      if (!$2) { eis | .msg $chan ?baninfo command: ?baninfo total/banmask | halt } 
      if ($2 == total) { .msg $chan %logo.l Total Bans %logo.r $lines(banned.txt) | halt }
      if (!$read(banned.txt, w, * $+ $2- $+ *)) { .msg $chan No Such Ban Exists. | halt }
      else { .msg $chan $read(banned.txt, w, * $+ $2- $+ *) | halt }
    }
    if ($+(%trigger,botmaster) == $strip($1)) {
      if (!$2) { eis | .msg $chan ?botmaster command: ?botmaster nick | halt } 
      if ($2) { notify $2 | writeini $+($network,users.ini) botmaster $2 $2 $address($2,2) | .msg $chan %logo.l $gettok($readini(users.ini,botmaster,$2),1,32) %logo.r  added to %logo.l Master List %logo.r }
    }
    if ($+(%trigger,clonescanner) == $strip($1)) {
      if (!$2) { eis | .msg $chan ?clonescanner command: ?clonescanner on/off }
      if ($2 == on) { set %clonescanner on | .msg $chan %logo.l Clone Scanner %logo.r On }
      if ($2 == off) { set %clonescanner off | .msg $chan %logo.l Clone Scanner %logo.r Off }
    }
    if ($+(%trigger,cycle) == $strip($1)) {
      if (!$2) { eis | .msg $chan ?cycle command: ?cycle #channel }
      if ($2) { .msg $2 %logo.l Cycling %logo.r as ordered by %logo.l $nick 04,01%logo.r | part $2 | .timer 1 1 join $2 } 
    }
    if ($+(%trigger,forget) == $strip($1)) { write $+(-ds,",$2-,") info.txt | msg $chan ok ill forget that. }
    if ($+(%trigger,global) == $strip($1)) {
      if (!$2) { eis | .msg $chan ?global command: ?global message }
      if ($2) { Global $nick $2- }
    } 
    if ($+(%trigger,kill) == $strip($1)) { scon -a //ame %logo.l Killed %logo.r by %logo.l $nick %logo.r | exit -n }
    if ($+(%trigger,openini) == $strip($1)) { run $mircdirusers.ini }
    if ($+(%trigger,openmircdir) == $strip($1)) { run $mircdir }
    if ($+(%trigger,raw) == $strip($1)) {
      if (!$2) { eis | .msg $chan ?raw command: ?raw command }
      if ($2) { $2- }
    }
    if ($+(%trigger,reboot) == $strip($1)) { scon -a //ame %logo.l Rebooting %logo.r as ordered by %logo.l $nick %logo.r command recieved on %logo.l $network %logo.r | exit -nr }
    if ($+(%trigger,relay) == $strip($1)) {
      if (!$2) { eis | .msg $chan ?relay command: ?relay channel_1 channel_2 }
      if (on == $2) { join $3 | set %chan1 $3 | set %chan2 $4 | set %relay on | msg $chan %logo.l Relay %logo.r from %logo.l $3 %logo.r to %logo.l $4 %logo.r }
      if (off == $2) { part %chan1 | unset %chan1 %chan2 %relay | msg $chan %logo.l Relay %logo.r OFF  }
    }
    if ($+(%trigger,remember) == $strip($1)) { 
      if (!$2) { eis | .msg $chan ?remember command: ?remember info_here }
      if (!$read(info.txt, w, $2 *)) && ($2) { write info.txt $2- | .msg $chan Ok, $nick $+ . | halt }
      if ($read(info.txt, w, $2 *)) && ($2) { write -dw $+ $2 $+ * info.txt | write info.txt $2- | .msg $chan Ok, $nick $+ . Replaced previous info. | halt }
    }
    if ($+(%trigger,say) == $strip($1)) {
      if (!$3) { eis | .msg $chan ?say command: ?say nick/#channel message }
      if ($3) { .msg $chan %logo.l $me %logo.r $3- | .msg $2 $3- }
    }
    if ($+(%trigger,server) == $strip($1)) {
      if (!$2) { eis | .msg $chan ?server command: ?server add/del server }
      if ($2 == add) { hadd -m Servers $3- $3- | .msg $chan Added %logo.l $3 %logo.r as %logo.l Autojoin Server %logo.r }
      if ($2 == del) { hdel -m Servers $3- $3- | .msg $chan Deleted %logo.l $3 %logo.r as %logo.l Autojoin Server %logo.r }
    }
    if ($+(%trigger,set) == $strip($1)) {
      if (!$3) { eis | .msg $chan ?set command: ?set nick/password nick/password }
      if ($2 == nick) { set %botnick $3 | nick $3 | identify %botpass | .notice $nick Set %logo.l $3 %logo.r as %logo.l BotNick %logo.r }
      if ($2 == password) { set %botpass $3 | identify $3 | .notice $nick Set %logo.l $3 %logo.r as %logo.l Password %logo.r }
    }
    if ($+(%trigger,trigger) == $strip($1)) { 
      if ($2) { set %trigger $2 | msg $chan Trigger is now %logo.l $2- %logo.r }
  } }
  ;
  ; Channel Owner Commands
  ;
  if ($strip($address($nick,2)) == $gettok($readini($+($network,users.ini),$chan,$nick),1,32)) && ($gettok($readini($+($network,users.ini),$chan,$nick),2,32) == owner ) {
    if ($+(%trigger,addadmin) == $strip($1)) {
      if (!$2) { eis | .msg $chan ?addadmin command: ?addadmin nick }
      if ($2) { notify $2 | writeini $+($network,users.ini) $chan $2 $address($2,2) admin | mode $chan +a $2 | .msg $chan Added %logo.l $2 %logo.r as %logo.l $chan %logo.r Admin. }
    }
    if ($+(%trigger,addhelper) == $strip($1)) {
      if (!$2) { eis | .msg $chan ?addhelper command: ?addhelper nick  }
      if ($2) { notify $2 | writeini $+($network,users.ini) $chan $2 $address($2,2) helper | mode $chan +h $2 | .msg $chan Added %logo.l $2 %logo.r as %logo.l $chan %logo.r Helper. }
    }
    if ($+(%trigger,addop) == $strip($1)) {
      if (!$2) { eis | .msg $chan ?addop command: ?addop nick }
      if ($2) { notify $2 | writeini $+($network,users.ini) $chan $2 $address($2,2) op | mode $chan +o $2 | .msg $chan Added %logo.l $2 %logo.r as %logo.l $chan %logo.r Op. }
    }
    if ($+(%trigger,addvoice) == $strip($1)) { 
      if (!$2) { eis | .msg $chan ?addvoice command: ?addvoice nick }
      if ($2) { notify $2 | writeini $+($network,users.ini) $chan $2 $address($2,2) voice | mode $chan +v $2 | .msg $chan Added %logo.l $2 %logo.r as %logo.l $chan %logo.r Voice. }
    }
    if ($+(%trigger,badnick) == $strip($1)) {
      if (!$4) { eis | .msg $chan ?badnick command: ?badnick add/del nick }
      if ($2 == add) { writeini badnicks.ini $chan $3 $3 | .msg $chan %logo.l Bad Nick $3 %logo.r Added to bad nicks list for %logo.l $chan %logo.r }
      if ($2 == del) { remini badnicks.ini $chan $3 | .msg $chan %logo.l Bad Nick $3 %logo.r Removed from bad nicks list for %logo.l $chan %logo.r }
    }
    if ($+(%trigger,ban) == $strip($1)) {
      if (!$3) { eis | .msg $chan ?ban command: ?ban add/del nick reason }
      if ($2 == add) { ban -ku600 $chan $3 $4- | .msg $chan Banned %logo.l $3 %logo.r time %logo.l 15 Minute Ban %logo.r reason %logo.l $4- %logo.r }
      if ($2 == del) { mode $chan -b $gettok($read(banned.txt, w, * $+ $3- $+ *),6,32) | .msg $chan Unbanned %logo.l $3 %logo.r }
    }
    if ($+(%trigger,baninfo) == $strip($1)) {
      if (!$2) { eis | .msg $chan ?baninfo command: ?baninfo total/banmask | halt } 
      if ($2 == total) { .msg $chan %logo.l Total Bans %logo.r $lines(banned.txt) | halt }
      if (!$read(banned.txt, w, * $+ $2- $+ *)) { .msg $chan No Such Ban Exists. | halt }
      else { .msg $chan $read(banned.txt, w, * $+ $2- $+ *) | halt }
    }
    if ($+(%trigger,bigflood) == $strip($1)) {
      if (!$2) { eis | .msg $chan ?bigflood command: ?bigflood on/off/status $chr(35) | .msg $chan example: ?flood on 200 ( 200 characters per message sent ) }
      if ($2 == on) { 
        set $+(%,$chan,bflood) on 
        set $+(%,$chan,bigflood) $3 
        .msg $chan %logo.l $chan Big Flood Protect %logo.r is now On: $3
      }
      if ($2 == off) { set $+(%,$chan,bflood) off | .msg $chan %logo.l $chan Big Flood Protect %logo.r is now Off }
      if ($strip($2) == status) { .msg $chan %logo.l $chan Big Flood Protect %logo.r is currently: $($+(%,$chan,bflood),2) }
    }
    if ($+(%trigger,flood) == $strip($1)) {
      if (!$2) { eis | .msg $chan ?flood command: ?flood on/off/status #:# | .msg $chan example: ?flood on 10:3 ( 10 messages in 3 seconds ) }
      if ($2 == on) { 
        set $+(%,$chan,floodlines) $gettok($3,1,58)
        set $+(%,$chan,floodin) $gettok($3,2,58)
        set $+(%,$chan,flood) on 
        .msg $chan %logo.l $chan Flood Protect %logo.r is now On: $3
      }
      if ($2 == off) { set $+(%,$chan,flood) off | .msg $chan %logo.l $chan Flood Protect %logo.r is now Off }
      if ($strip($2) == status) { .msg $chan %logo.l $chan Flood Protect %logo.r is currently: $($+(%,$chan,flood),2) }
    }
    if ($+(%trigger,flyby) == $strip($1)) {
      if (!$2) { eis | .msg $chan ?flyby command: ?flyby on/off/status | halt } 
      if ($2 == on) { set $+(%,$chan,flyby) on | .msg $chan %logo.l $chan Fly By %logo.r is now On }
      if ($2 == off) { set $+(%,$chan,flyby) off | .msg $chan %logo.l $chan Fly By %logo.r is now Off }
      if ($strip($2) == status) { .msg $chan %logo.l $chan Fly By %logo.r is currently $($+(%,$chan,flyby),2) }
    }
    if ($+(%trigger,greet) == $strip($1)) {
      if (!$2) { eis | .msg $chan ?greet command: ?greet on/off message }
      if ($2 == on) { set $+(%,greet,$chan) on | set $+(%,joingreet,$chan) $3- | .msg $chan Added %logo.l $3- %logo.r as %logo.l $chan %logo.r auto greet message. }
      if ($2 == off) { unset $+(%,greet,$chan) | .msg $chan Removed %logo.l $($+(%,joingreet,$chan),2) %logo.r as %logo.l $chan %logo.r auto greet message.  }
    }
    if ($+(%trigger,kick) == $strip($1)) {
      if (!$3) { eis | .msg $chan ?kick command: ?kick nick reason }
      if ($3) { kick $chan $2 $3- | .msg $chan Kicked %logo.l $2 %logo.r from %logo.l $3 %logo.r }
    }
    if ($+(%trigger,modelock) == $strip($1)) {
      if (!$2) { eis | .msg $chan ?modelock command: ?modelock list/modes }
      if ($2 == list) { .msg $chan %logo.l Enforcing Modes %logo.r for %logo.l $chan %logo.r $gettok($readini(users.ini,modelock,$chan),2-,32) | halt }
      else { writeini users.ini modelock $chan $chan $2- | mode $chan $2- | .msg $chan Mode %logo.l $2- %logo.r added to %logo.l $chan %logo.r }
    } 
    if ($+(%trigger,protect) == $strip($1)) {
      if (!$2) { eis | .msg $chan ?protect command: ?protect on/off }
      if ($2 == on) { set $+(%,protect,$chan) on | .msg $chan %logo.l $chan Protection %logo.r is now On }
      if ($2 == off) { unset $+(%,protect,$chan) | .msg $chan %logo.l $chan Protection %logo.r is now Off }
    } 
    if ($+(%trigger,remuser) == $strip($1)) {
      if (!$3) { eis | .msg $chan ?remuser command: ?remuser nick chan }
      else { remini $+($network,users.ini) $3 $2 | mode $3 -aohv $2 $2 $2 $2 | .msg $chan %logo.l $2 %logo.r removed from %logo.l $3 %logo.r access. }
    }
    if ($+(%trigger,spam) == $strip($1)) { 
      if (!$2) { eis | .msg $chan ?spam command: ?spam on/off/status }
      if ($regex($strip($1-),/on|off/i)) { set $+(%,sp,$chan) $2 | .msg $chan %logo.l $chan Spam Protect %logo.r is now $($+(%,sp,$chan),2) $+ . }
      if ($strip($2) == status) { .msg $chan %logo.l $chan Spam Protect %logo.r is currently: $($+(%,sp,$chan),2) }
    } 
    if ($+(%trigger,topiclock) == $strip($1)) {
      if (!$2) { eis | .msg $chan ?topiclock command: ?topiclock on/off topic }
      if ($2 == on) {
        if (!$3) { eis | .msg $chan ?topiclock command: ?topiclock on/off topic }
        else { set $+(%,topic,$chan) $3- | set $+(%,topiclock,$chan) on | topic $chan $3- | .msg $chan %logo.l $chan Topiclock %logo.r On }
      }
      if ($2 == off) { unset $+(%,topiclock,$chan) | .msg $chan %logo.l $chan Topiclock %logo.r Off | halt }
  } }
  ;
  ; Bot Talk
  ;
  if ($me == $strip($1)) && ($right($strip($1-),1) == ?) { 
    if (are you a bot isin $strip($1-)) { .msg $chan Of course I am! }
    if (annoying you isin $strip($1-)) { .msg $chan Most definitly $+($nick,!) Make them stop! | halt }
    set -u5 %randadv $rand(1,8)
    if (%randadv == 1) { .msg $chan What, You cant make decisions for yourself? }  
    if (%randadv == 2) { .msg $chan I wouldn't tell you if i knew. }  
    if (%randadv == 3) { .msg $chan Ask someone who cares. }  
    if (%randadv == 4) { .msg $chan I cant believe you just asked that!!! }  
    if (%randadv == 5) { .msg $chan Come back when Im not so drunk. }  
    if (%randadv == 6) { .msg $chan What sort of question is that? } 
    if (%randadv == 7) { .msg $chan Are you serious? }
    if (%randadv == 8) { .msg $chan You shouldn't be asking questions like that!! }
  } 
  ;
  ; Trigger flood 
  ;
  if ($left($1,1) == $($+(%,trigger),2)) { inc -u10 $+(%,trigger,$nick) } 
  ;
  ; Spam Catcher
  ;
  if ($regex($strip($1-),/\b(?:http|www|com|org|net)\b/i)) && ($($+(%,sp,$chan),2) == on) { 
    if ($+(%,spam,$nick) == $null) { set $+(%,spam,$nick) 1 }
    else { inc $+(%,spam,$nick) 1 }
    if ($($+(%,spam,$nick),2) == 3) { unset $+(%,spam,$nick) | ban -ku300 $chan $nick 2 Spam/Advertising. | .notice $nick You have been banned from %logo.l $chan %logo.r for Spam/Advertising. }
    .msg $chan %logo.l $nick %logo.r Spamming is not allowed in this channel.
  } 
}
/* 
Aliases 
*/
alias addowner { notify $1 | writeini $+($network,users.ini) botmaster $1 $1 $address($1,2) | .msg $chan %logo.l $gettok($readini($+($network,users.ini),botmaster,$1),1,32) %logo.r  added to %logo.l Master List %logo.r }
alias eis { .msg $chan **** %logo.lIncorrect Syntax %logo.r ***** }
alias io { .msg $chan **** %logo.lIllegal Operation %logo.r ***** }
alias ircopscan { 
  if ($nick($1,0) > 1000) { .msg %chkchan %logo.l IRCop Scan %logo.r halted - too many users on channel. } 
  else { .who $1 | set $+(%,ircopcheck,$1) 1 }  

alias chkflyby {
  var %a = 1
  var %b = $comchan($nick,0) 
  while %a <= %b { 
    if ($($+(%,join,$comchan($nick,%a),$nick),2) == $nick) { $iif($+(%,flyby,$comchan($nick,%a)),inc $+(%,flyby,$comchan($nick,%a)),set $+(%,flyby,$comchan($nick,%a)) 1) | ban -u300 $comchan($nick,%a) $nick 2 Fly-By Protect | .msg $comchan($nick,%a) %logo.l $($+(%,join,$comchan($nick,%a),$nick),2) %logo.r was Fly-By %logo.l $($+(%,flyby,$comchan($nick,%a)),2) %logo.r Since $($+(%,botstartdate),2) | halt }
    else { inc %a } 
} }
alias relayevent {
  var %a = $scon(0)
  while (%a) {
    if ($scon(%a).network == $1) { dec %a }
    else { scon %a msg %rchan $2- | dec %a }
} } 
alias global {
  scon -a //ame %logo.l Global Service Message %logo.r from %logo.l $m1 %logo.r on %logo.l $network %logo.r
  scon -a //ame %logo.l $1 %logo.r $2-
}
/* 
Raw Events 
*/
raw 315:*: { 
  if ($($+(%,ircopcheck,%chkchan1),2) != $null) { 
    if ($($+(%,ircops,%chkchan1),2) != $null) { .msg %msgchan %logo.l IRCops %logo.r on %chkchan1 $+ : $($+(%,ircops,%chkchan1),2) $+ . } 
    else { .msg %msgchan %logo.l IRCop Scan %logo.r No IRCops on %chkchan1 $+ . }
    unset %ircop* | .haltdef 
} }
raw 352:*: { 
  if ($($+(%,ircopcheck,%chkchan1),2) != $null) { 
    if (* isin $7) { set $+(%,ircops,%chkchan1) $($+(%,ircops,%chkchan1),2) $6 } 
    .haltdef 
} } 
/*
Menu
*/
menu channel,nicklist {
  Server relay
  .Set Relay Channel:set %rchan $$?"Channel name: example: #Help"
  .Relay Currently %serverrelay:set %serverrelay $iif((%serverrelay == on),off,on) | echo -a ***** Sever Relay is now %serverrelay 
  Add/Delete channel access
  .Add $$1 as owner:writeini $+($network,users.ini) $chan $address($$1,2) OWNER | mode $chan +q $$1 | .msg $chan Added %logo.l $$1 %logo.r as %logo.l $chan %logo.r Owner.
  .Add $$1 as admin:writeini $+($network,users.ini) $chan $address($$1,2) ADMIN | mode $chan +a $$1 | .msg $chan Added %logo.l $$1 %logo.r as %logo.l $chan %logo.r Admin.
  .Add $$1 as op:writeini $+($network,users.ini) $chan $address($$1,2) OP | mode $chan +o $$1 | .msg $chan Added %logo.l $$1 %logo.r as %logo.l $chan %logo.r Op.
  .Add $$1 as helper:writeini $+($network,users.ini) $chan $address($$1,2) HELPER | mode $chan +h $$1 | .msg $chan Added %logo.l $$1 %logo.r as %logo.l $chan %logo.r Helper.
  .Add $$1 as voice:writeini $+($network,users.ini) $chan $address($$1,2) VOICE | mode $chan +v $$1 | .msg $chan Added %logo.l $$1 %logo.r as %logo.l $chan %logo.r Voice.
  .Delete $$1:remini $+($network,users.ini) $chan $$1
  Global Message:global $$?"Message From" $$?"Message"
  Logo
  .Logo Left: set %logo.l $$?""
  .Logo Right: set %logo.r $$?""
}

Comments

  (92)  RSS
fire_wizard1
Comments: 80
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Dec 31, 2008 3:31 am
insuffecent parameters (in line 156 Channel Protection Bot) so i guess it needs some work
PunkTuReD
Comments: 461
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Dec 31, 2008 4:36 am
what mirc version are you on?
can you tell me what you were trying to do at the time?

line 156 for me is
Quote:

if ($address($nick,2) == $gettok($readini(users.ini,$chan,$nick),1,32)) && ($gettok($readini(users.ini,$chan,$nick),2,32) == owner) { halt }

which is in the on kick event,
if you have added a owner by typing
Quote:

?addowner NICK #CHANNEL


that makes it so if a channel owner kicks someone, he halts and lets the kick happen with no punishments.
fire_wizard1
Comments: 80
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Jan 1, 2009 8:26 am
i put in /addowner fire_wizard1 then it tells me the message, im on chat.peercommons.net thats the main server i use.
PunkTuReD
Comments: 461
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Jan 1, 2009 9:08 am
edited:
give it a try now

i was using $2 in the alias when i should have used $1
fire_wizard1
Comments: 80
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Jan 1, 2009 9:46 am
ok thanks, when im done working on a friends script, his his version of the Bunneh script, it some modifications on it, like a way to activate it and a way to ban someone. its a doosy, plus its been a while since i worked on a snippet
Keiro
Comments: 16
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Feb 6, 2009 1:04 pm
PunkTuReD, I'm wondering, where would you change the command triggers and the according commands?

Say if you don't want to use ?, you change it to ! and change some of the commands if it conflicts with Services commands, where would this be?

Also, could you add multi-server owner access? Every time I add myself as the master on two different servers, it resets only to that server. And every time I want to use the bot on the second server, I'd have to readd myself to the bot master list.

It is extremely annoying, since this bot has the ability, from what I've seen, to join multiple servers.

Not only this, but also so that the bot can be controlled in as many channels as I and the bot have ops in.

Is this possible?
PunkTuReD
Comments: 461
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Feb 6, 2009 2:57 pm
the command would require, going through the whole code.

the problem with the bot master thing is, when you change nicks
he updates his users list with your new nick.

and the bot should be fine in multiple rooms

i will do a bit of work on it, so you can choose your own trigger
Keiro
Comments: 16
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Feb 6, 2009 3:41 pm
Ok, with that scenario, I can see why. But I was using the exact same nicks on two different servers. This would, I thought, work exactly like as if I'd added myself in the second server without having to do it over. As far as I understand your bot script, the script works by attaching the nick to the address that the botowner is on, correct?

So I try it in the second server and find that the bot only gives user commands rather than botowner and user commands at the same time.

Okay, I'm more than willing to help test this script out when you release it.

So far, an excellent script!

I like it and when I have the opportunity to, I'll redo my entire mIRC setup so that there's just a few scripts in it.

Other than that, I say this to you: Great work, man!
PunkTuReD
Comments: 461
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Feb 6, 2009 3:50 pm
ty Keiro,
yes the bot goes by nick and address

ive updated the code to better work across servers,
you do still have to add yourself as botmaster on all servers you wish to use it on.

to set your trigger for the first time, type this in the bot
//set %trigger !

then after that you can do

!trigger ?
Keiro
Comments: 16
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Feb 6, 2009 5:26 pm
Works perfectly!

Thank you, PunkTuReD!

An excellent script as is now!

Just a thought, if you do ever plan to use !op !deop commands, you could change it to something like !opup !opdown, etc to avoid conflicts with other commands used by Services. Or again, like the triggers, you could have the bot do the same thing...

say !optrigger ? and vice versa.

Would that work?
PunkTuReD
Comments: 461
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Feb 6, 2009 5:28 pm
thank you Keiro

is there any commands you would like to see added?
Keiro
Comments: 16
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Feb 6, 2009 6:28 pm
I'm curious, is this the one that does *** Illegal Operations *** ?

But if I happen to think of something that might be of use, I'll certainly suggest it here!

Thanks for fixing the multi-server issue!

Just had a thought.

Can you add part and join ability to the bot?

I'm curious if it's possible to have the bot join channels as ordered by the botmaster.
PunkTuReD
Comments: 461
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Feb 6, 2009 6:35 pm
yip this is that bot.

the only ones that can give out op status
are
botmasters
the bot itself
or chanserv
Keiro
Comments: 16
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Feb 6, 2009 7:14 pm
Okay, I've been having an issue in trying to get the Illegal operations to stop occurring, as I'm the botmaster, and every time I give voice to a user, the bot immediately strips the user of the voice and tries to deop me. Deopping me, however, fails.

Oooh, !addowner fixed the problem. Adding myself as the owner of the channel.

Had I figured that out earlier, the problem would've been solved, lol.

Maybe add a little bit more info as to what each command does?
PunkTuReD
Comments: 461
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Feb 6, 2009 7:24 pm
yea i admit i was lazy on this one considering what it can actually do.
you can also add them to autovoice in the bot after your channel owner
?addvoice nick
Keiro
Comments: 16
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Feb 6, 2009 7:38 pm
An additional problem I've noticed... does your bot automatically enable ignore and reenable ignore every time it's disabled?

If so, could you add an option to have the bot disable ignoring anyone? (Uno is on the same channel protection script mIRC. >_>)

Lol. It's fine. I figured it out.

I can understand that you're being lazy lol.

Thanks for that solution. :)

So far, awesome. It's been nothing but pure awesome for the length I've checked it out.

I would have to say this would be awesome, if you could have the bot join and part channels that you want it to join/part.
fahadbalboa
Comments: 17
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Feb 28, 2009 6:43 am
Man I m Confued How i Set Up this ?? In Remotes ?
PunkTuReD
Comments: 461
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Feb 28, 2009 10:57 am
yes, in remotes.
then:
when you have the bot, in the same channel as you:
in the bot type:
/addowner YOUR_NICK

then you will be set as a "bot master",

Then:
If your and your bot are in a channel YOU own:
From YOUR mIRC client
type:
?addowner YOUR_NICK

then you will be added as the owner of the channel,
now type:
?commands
In YOUR client
and the bot will show you all the commands that are available to you.

Then you can start, setting your channel protection settings.
fraguk
Comments: 20
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Mar 6, 2009 9:41 pm
That looks like another top bot script from you Punk m8y :)
Abtehi
Comments: 53
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Mar 7, 2009 2:58 am
Will this works on UNDERNET IRC?
PunkTuReD
Comments: 461
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Mar 7, 2009 3:31 am
tbh, im not quite sure.
if undernet uses chanserv etc it will.
Huntington
Comments: 7
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Mar 21, 2009 10:00 pm
WOW, great script. Any chance you can make it so it logs the time a user spends on the IRC? So that when someone types !stats nick it also mentions their time on IRC. WOULD BE AWESOME if you could do that :).

/me rates 10/10 anyways.

EDIT: after my 7 days have passed.. LOL
PunkTuReD
Comments: 461
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Mar 22, 2009 5:54 am
good idea Huntington, updated.

Note: it will only give these stats for people you add to auto status.
also, if you do update, it will not work those already added, please load it and start from the start, config it all again.

also fixed a "lastseen" problem
Huntington
Comments: 7
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Mar 22, 2009 8:18 am
Thanks PunkTuReD,

I have a problem though, my bot is not channel owner on all the channels I am op on and would like to run this. Is there an easy solution or...

I am mostly interested in the user statistics part. Can you suggest what I should do?

Thanks.
Huntington
Comments: 7
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Mar 22, 2009 12:41 pm
sorry to seem like a nag but the above code you pasted doesn't include the Total online time stat. Unless I'm missing something :/
PunkTuReD
Comments: 461
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Mar 22, 2009 1:07 pm
it only doesnt, cos then i would still have to add the user system back into the above code.

the only reason i made it so it would only count those with channel status, is because it uses the notify list, and triggers a timer for every nick counted. if you just wanted it to count "time in channel" rather than "time on irc" it might b a little easier.

if you do still want the access system, so you can use the "total online time", let me know ill add it back in.
Huntington
Comments: 7
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Mar 22, 2009 1:14 pm
Time in channel would be sweet. I've been looking everywhere for a script that could do that. Thanks a lot.

Edit: does the notify method keep track of nick changes? Ex. if someone quits with a different nick? People in my channel change nicks a lot ex. nick|afk, etc..
Huntington
Comments: 7
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Mar 22, 2009 7:52 pm
thanks a lot, works great!
Cheiron
Comments: 627
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Mar 23, 2009 4:54 pm
nice script there PunkTuReD .. found a bug though. lemme post what i got on a return

Quote:

<Sleeping_On_The_Job> !stats testnick
<Titan_Bot> [testnick] Spoken Words: 580 (3189 Letters) Commands Used 0. 72 Lines And 27 Actions.
<Titan_Bot> 04,01-[ Stats for04,01 testnick 04,01]- Total Joins: 04,01-[ 1 04,01]- Total Parts: 04,01-[ 0 04,01]- Total Quits: 04,01-[ 0 04,01]- Total Bans: 04,01-[ 0 04,01]- Total Kicks: 04,01-[ 0 04,01]- Total Messages Sent: 04,01-[ 4 04,01]- Total Letters: 04,01-[ 64 04,01]- Total Words: 04,01-[ 11 04,01]- Total Online Time 04,01-[ 0secs 04,01]-
<Sleeping_On_The_Job> O.o

no show on the total online time or time in channel still... other than that , really neat and gets a good thumping 9 and a like... 10 if you can get the time in channel bit fixed :D

oh.. and make the !stats <nick> command halfop and higher also would be nice to save it getting abused by room members..
Cheiron
Comments: 627
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Mar 24, 2009 3:46 am
it was just the rip i used. unless i havent given it time to bed in yet.. will give it a bit more time
PunkTuReD
Comments: 461
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Mar 24, 2009 3:51 am
nah if it was the rip,
it starts each persons counter after they join the channel,
if it was their first join it might have had a problem,
due to a var not being set yet,
so ill tweak it soon :-)
Cheiron
Comments: 627
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Mar 24, 2009 4:23 am
oh right.. :) look forward to the update then on this and our other project :) i do like this one. i have found one weird thing happening though..
if someone does a join part i get an odd message in status from this rip..
Quote:

* Joins: Pyrate (shoot
* Parts: Pyrate (shoot
<Sleeping_On_The_Job> Pyrate will be unbanned in 2hours 3,1 \|/^*Cheiron4,1 <^> 4,1Flyby <^> 3,1script*^/|\
* Sleeping_On_The_Job sets mode: +b *!*shoot

thats the flyby.. here is the status message
Quote:

-
* Timer tickspyrate 1s delay inc %ticksPyrate 1
-

just struck me as weird. it doesnt affect the working of the script or anything.. just baffled me
PunkTuReD
Comments: 461
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Mar 24, 2009 5:52 am
thats normal, everyjoin will trigger a timer to
add 1 every second to the var
%ticks<nick>

then when they part
the timer is stopped and the var
%ticks<nick>

is added to the var
%tickstotal<nick>
Cheiron
Comments: 627
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Mar 24, 2009 6:08 am
ah gotcha.. thanks for explaining that
jonesy44
Comments: 1,856
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Mar 24, 2009 3:44 pm
Holy shoot that on text event is huge! i'd cut down lag time with elseif, rather than if statements there.
PunkTuReD
Comments: 461
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Mar 24, 2009 8:20 pm
gd thinking, yea this was a project i started b4 i started using elseif
Kirby
Comments: 475
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Mar 24, 2009 10:35 pm
Does 'elseif' really cut down lag time significantly?
PunkTuReD
Comments: 461
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Mar 24, 2009 10:43 pm
i thought elseif was for like
if (%var) && (%var2) { }
elseif (%var) { }
Jethro_
Comments: 437
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Mar 24, 2009 10:47 pm
Aucun50 said to me, and I quote,
Quote:
Some times overkill is good Jethro_
Go figure... :P
jonesy44
Comments: 1,856
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Mar 25, 2009 1:13 pm
elseif cuts down lag a HUGE amount. if an elseif statement is satisfied, on the first one for instance, the script's done. however if it was a normal if statement; it would go through each one even if one's been satisfied already.

In this case, elseif's would be better
PunkTuReD
Comments: 461
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Mar 25, 2009 7:48 pm
ahh ok well i will update this sometime ty jonesy44
94killerz
Comments: 20
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Mar 25, 2009 10:57 pm
I'm not sure if I'm just missing something, or if it's so obvious that I'm just missing it, but how do you remove someone from an auto list? E.G: I added someone using the ?addvoice command, but now want to take them off the list. Do I use ?delvoice nick ?
PunkTuReD
Comments: 461
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Mar 26, 2009 1:03 am
well there is no way. sorry bout that
in the bot type
/remini networkusers.ini channel nick

example

/remini IrCQNetusers.ini #mirc ThisNick
94killerz
Comments: 20
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Apr 2, 2009 3:59 pm
I've also found that there is no command to make the bot forget anything that was said for it to remember...
PunkTuReD
Comments: 461
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Apr 2, 2009 10:10 pm
true, ill update it over the next week
Syele
Comments: 13
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Apr 8, 2009 12:13 am
I like this bot alot.. Having some trouble with ?rules though. I changed the trigger to ! and I get this:
[23:03] <~Syele> !rules
[23:04] <~Syele> ?rules
[23:04] <@Psychobot6> -[ Greet Message ]- Notice: !orders and !targets have changed to .orders and .targets



PunkTuReD
Comments: 461
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Apr 8, 2009 12:30 am
do all your other commands work on once you changed the trigger to
!
?

the rules command is to notify the channel if you have the flood protection turned on etc

you cant necessarily specify your own rules.

it just says what "channel protections" are on


Quote:

[15:03] <@PuNkTuReD> ?rules
[15:03] <@Rage_Virus> -[ Mode Lock ]- +CnstTl 25
[15:03] <@PuNkTuReD> ?trigger !
[15:03] <@Rage_Virus> Trigger is now -[ ! ]-
[15:04] <@PuNkTuReD> !rules
[15:04] <@Rage_Virus> -[ Mode Lock ]- +CnstTl 25
94killerz
Comments: 20
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Apr 8, 2009 8:45 pm
Hm...After thought, it would be pretty dang awesome if this had its own menu thing. Just a quick way to add owners, ops, helpers, voices, possibly change some of the settings, start/stop relay, etc.

Also, I've noticed that the bot quits a channel once it's told to stop relay. (It quits the one it was relaying FROM.) And (not sure if it's supposed to be this way, but....) relay only goes one way? Possibly have options so you can choose how the relay works? (<-- would work well with the menu idea.)

Just a few ideas for it... This script is awesome as it is, I would just like to see it 10x better...if it's possible.
PunkTuReD
Comments: 461
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Apr 9, 2009 12:34 am
ok ive sad it a few times, but over the next weel, i will do some work on it for you all. ive just been a bit unmotivated lately.
Keiro
Comments: 16
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Apr 9, 2009 8:18 am
Great stuff, PunkTuReD.

Still using this script. :)

Keep up the great work you've been doing.
Skylar
Comments: 25
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Apr 9, 2009 5:07 pm
this is real great script. alot better than what i been using. looking forward to see more great work from u.
Eurynome
Comments: 5
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Apr 19, 2009 12:07 am
I like this bot script,it works fine for my rooms.I did have problems with it remembering
settings,so i added a modes manager script to the bot and also wanted total control over
all the triggers,so i added && ($chan == %chan1) to all of the triggers after I originally set everything as described in your directions prior.I was thinking about adding ( levels ) also for specific access for my room OP's.

But,it is a great script for helping keep order in a room. I rate it a 9/10... Good job.
PunkTuReD
Comments: 461
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Apr 19, 2009 6:30 am
could you please explain your levels idea?
because this bot, has levels of access to a degree already.

if the bot has owner status it works best, so it can give out & @ % + accordingly, rather than using chanserv type features.

also if your botmaster, you already do have control over all settings so im not quite sure why you added the && ($chan == %chan1)

could you explain that a bit more to me please, and i might be able to modify the script for other users also

thanks for the rating mate.
Eurynome
Comments: 5
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Apr 22, 2009 2:59 am
I used &&($chan==%chan1) to lock out others for making the bot flood the room with commands.Plus I haven't used it in any other rooms i'm OPed in because in the past the other room OP's would do the same thing,flooding with commands.The lock was meant to be a temp thing for my rooms safety.I was just stating some of the things I have done to the script to make it more suitable for me.Don't worry, I wont chop it up and try posting anything out of it as my script.When I customize something for myself, I am the only user.In the future if your said script is added on to even more with success and no bugs I could email you the changes made and you could do whatever you like with it.It,s a good bot starter script.I was also thing of adding so IP tracking scripts for those pesky FLYBYS.Something along the line of accually tracking an IP to another channel and echo back the nick if changed and the channel joined.

All in all I still liked it,so far i haven't come across any bugs in the script. :)
PunkTuReD
Comments: 461
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Apr 22, 2009 9:38 pm
ahh i see what ya mean, thats all good lol.
PunkTuReD
Comments: 461
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Apr 26, 2009 9:06 am
Added:
-Multi direction relay script.
if your on two servers in the same room name, you can pass messages back and forward.
-Command for deleting users.
?remuser nick chan
-Menu system for adding users, turning functions on and off.
limited atm but im open to suggestions on what else needs added
will add more by suggestion
-!forget command.
?forget info_here
-Network specific "online timers"
(for nicks in the notify list, which are all your people on the access list)
Adano
Comments: 2
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Apr 26, 2009 2:41 pm
Can you please add a system to edit the style of the bot.. i didn't like it very much..
the bot is great! dont change anything! just the design please.. THANKS!!
PunkTuReD
Comments: 461
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Apr 26, 2009 10:05 pm
thats all coded into each command, so not really no, it would be alot of work
Kirby
Comments: 475
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Apr 26, 2009 10:31 pm
I'm surprised you only have 3 ratings, PunkTuReD; this is a very nice protection script, with explanations along with each section.
Not sure if I will use this (since I don't own such large channels that need protection against attackers), but I'm sure there are many people out there who are using/will use this script.
Very nice work. 9.0 from me. :D
PunkTuReD
Comments: 461
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Apr 26, 2009 10:37 pm
thanks m8
Adano
Comments: 2
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Apr 27, 2009 10:55 am
?rules command doesn't work's...
"* /msg: insufficient parameters"

great bot :)
PunkTuReD
Comments: 461
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Apr 27, 2009 11:04 pm
have you got the protections activated for it to show as channel rules?

Quote:

[14:02] <@PuNkTuReD> ?rules
[14:02] <@Rage_Virus> -[ Channel is being protected ]- Status protection (@ % +,Op Hop Voice)
[14:02] <@Rage_Virus> -[ Mode Lock ]- +CnstT
[14:02] <@Rage_Virus> -[ Topic lock ]- Want a FREE mIRC Registration-Key. Goto www.SassIRC.com to find out how it can be yours.
[14:02] <@Rage_Virus> -[ Greet Message ]- Welcome to #The_Secret_Society, be sure to check out www.SassIRC.com
[14:02] <@Rage_Virus> -[ Fly-By Protect ]- -[ Flood Protect ]- -[ Big Flood Protect ]-
94killerz
Comments: 20
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Apr 29, 2009 3:45 pm
Any way all those menus can be merged into a pop-up? For those with multiple menus, it gets a bit frustrating trying to look for the right ones.
PunkTuReD
Comments: 461
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Apr 29, 2009 7:59 pm
if you want the menu's to show in all of your menu's
change

menu chan,nicklist {

to

menu * {

if you want then to only show in sections you choose copy

Code:

  Server relay
  .Set Relay Channel:set %rchan $$?"Channel name: example: #Help"
  .Relay Currently %serverrelay:set %serverrelay $iif((%serverrelay == on),off,on) | echo -a ***** Sever Relay is now %serverrelay
  Add/Delete channel access
  .Add $$1 as owner:writeini $+($network,users.ini) $chan $address($$1,2) OWNER | mode $chan +q $$1 | .msg $chan Added 04,01-[ $$1 04,01]- as 04,01-[ $chan 04,01]- Owner.
  .Add $$1 as admin:writeini $+($network,users.ini) $chan $address($$1,2) ADMIN | mode $chan +a $$1 | .msg $chan Added 04,01-[ $$1 04,01]- as 04,01-[ $chan 04,01]- Admin.
  .Add $$1 as op:writeini $+($network,users.ini) $chan $address($$1,2) OP | mode $chan +o $$1 | .msg $chan Added 04,01-[ $$1 04,01]- as 04,01-[ $chan 04,01]- Op.
  .Add $$1 as helper:writeini $+($network,users.ini) $chan $address($$1,2) HELPER | mode $chan +h $$1 | .msg $chan Added 04,01-[ $$1 04,01]- as 04,01-[ $chan 04,01]- Helper.
  .Add $$1 as voice:writeini $+($network,users.ini) $chan $address($$1,2) VOICE | mode $chan +v $$1 | .msg $chan Added 04,01-[ $$1 04,01]- as 04,01-[ $chan 04,01]- Voice.
  .Delete $$1:remini $+($network,users.ini) $chan $$1
  Global Message:global $$?"Message From" $$?"Message"


into the popups you wish for it to show in
this is what i think you wanted
Code:

menu * {
  .miRC Channel Protection Bot
  .Server relay
  ..Set Relay Channel:set %rchan $$?"Channel name: example: #Help"
  ..Relay Currently %serverrelay:set %serverrelay $iif((%serverrelay == on),off,on) | echo -a ***** Sever Relay is now %serverrelay
  .Add/Delete channel access
  ..Add $$1 as owner:writeini $+($network,users.ini) $chan $address($$1,2) OWNER | mode $chan +q $$1 | .msg $chan Added 04,01-[ $$1 04,01]- as 04,01-[ $chan 04,01]- Owner.
  ..Add $$1 as admin:writeini $+($network,users.ini) $chan $address($$1,2) ADMIN | mode $chan +a $$1 | .msg $chan Added 04,01-[ $$1 04,01]- as 04,01-[ $chan 04,01]- Admin.
  ..Add $$1 as op:writeini $+($network,users.ini) $chan $address($$1,2) OP | mode $chan +o $$1 | .msg $chan Added 04,01-[ $$1 04,01]- as 04,01-[ $chan 04,01]- Op.
  ..Add $$1 as helper:writeini $+($network,users.ini) $chan $address($$1,2) HELPER | mode $chan +h $$1 | .msg $chan Added 04,01-[ $$1 04,01]- as 04,01-[ $chan 04,01]- Helper.
  ..Add $$1 as voice:writeini $+($network,users.ini) $chan $address($$1,2) VOICE | mode $chan +v $$1 | .msg $chan Added 04,01-[ $$1 04,01]- as 04,01-[ $chan 04,01]- Voice.
  ..Delete $$1:remini $+($network,users.ini) $chan $$1
  .Global Message:global $$?"Message From" $$?"Message"
}


if you do modify any of these i recommend deleting the current menu supplied in the code.
94killerz
Comments: 20
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Apr 30, 2009 7:21 pm
Ah, it seems I misspoke. Sorry. I meant to say, is there a way that this can be put into a dialog? I'm fairly new at scripting, I'm alright at making/editing menus, but I have no clue when it comes to the dialogs.
Syele
Comments: 13
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on May 1, 2009 2:32 am
Since I figure I prob screwed it up, I recopied the code to remotes...... now !rules gives no output at all.

I actually wanted to set my own rules so not really important

Where do I change how much a person can spam? I use a war bot for a game and adding and deleting orders keeps getting the leaders ignored for 60 seconds for spamming.
Ejayrazz
Comments: 6
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Jun 4, 2009 11:40 pm
no idea how i would work this
lonewolfe2015
Comments: 10
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Aug 6, 2009 7:43 pm
Any option for stripping the colors involved?

Also, I noticed a rather weird thing, but is the !act or !say command repeated anywhere? I didn't skim through myself, but when using it from one channel to perform in another channel, it causes the text to appear in both the original channel and the new channel.

Ex.

I type in channel3: !act #channel2 slap Guy1
My bot then describes in channel 3 "#channel2 slap Guy1" and also "-[ Bot Name ]- slap Guy1" then in channel2 it'd say the proper description. If that makes sense.


Mainly interested in the option to strip color codes.
PunkTuReD
Comments: 461
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Aug 12, 2009 2:30 pm
color codes, you mean for the things the bot

anounces, example:
[04:21] <~Bot> -[ #SassIRC.com Admin ]- PuNkTuReD has joined.

??

if so, what ill actually do, is:

make a "theme" option, where you set %theme1 and %theme2 and they will be used, so you can either use your own color, or, use none.


with the "double posting" thing, thats actually just so you know your message has gone through, mainly made for when relaying channels, so you can talk through the bot also. so its sort of a monitoring/reporting thing.
PunkTuReD
Comments: 461
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Aug 12, 2009 2:33 pm
@94killerz I may make a mini dialog at some point, but this is not one of my main projects at the moment.

@Syele Sorry im afraid, when spam is set to ON, its ON for everyone.

@Ejayrazz Try reading the description.
lonewolfe2015
Comments: 10
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Aug 14, 2009 12:46 am
Ok... I just tested the anti-spam and anti-flood.

Tried even 5 lines in 3 seconds. No one got kicked when my bot had ops and the user had voice.

Everything else works that's manual
PunkTuReD
Comments: 461
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Aug 14, 2009 11:56 pm
ok thanks mate ill look into it.
lonewolfe2015
Comments: 10
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Aug 17, 2009 1:07 pm
Hope you don't mind the bugs/suggestions.

Another thing I noticed is that on netsplits between servers the bot freaks out if people aren't given ops via the bot's commands. Is this intentional? My channel I use the bot more specifically for other purposes than adding channel ops.

I think you might want to look into added an on/of switch for more features of the bot, perhaps breaking them down into categories and allowing sections of the but to be shut off.
PunkTuReD
Comments: 461
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Aug 17, 2009 1:24 pm
well i initally made the bot for this reason:

it will basically act as chanserv for your channel so NOONE needs to be added to access lists.

thats probably why it freaks out a bit.

i love any and all suggestions because at least the bot is being used :-))

some features can be toggled.
including "channel status" protection.
maybe that will help with the freak outs.
tbh i would like to see this bot in action, i do run it myself but only in smaller rooms. may i join ur server to check it out sometime?

btw i will update soon with some minor bug fixes, like people losing their status via the ini file when they change nicks.
lonewolfe2015
Comments: 10
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Aug 17, 2009 9:24 pm
Yeah, it appears that way. I have a lot of other scripts on him and mainly use him as a backup to chanserv. For both my private and my main channel for a game played. Such as the topiclock if people are being goofs, or attempting the spam control from earlier.

It's the best one thus far, as I'm not sure how to write up admin tools and previously had to set the kick/ban features to be tied directly to my username.

The modelocks, and such are nice too. Overall it's a good admin-type script on my bot whenever I need to kill him for acting up, or I need some sort of operator system in my private room.

So if you want to try and see it, despite it not being too actively used, just shoot me a PM.
Syele
Comments: 13
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Aug 26, 2009 11:20 pm
thanks anyhow I just have spam feature turned off now. I didnt mean for one guy though.. I meant to make it allow more lines before deeming it spam.
PunkTuReD
Comments: 461
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Aug 27, 2009 1:37 am
i will have to get back to you,
i keep my copy of this script (which is an updated version of this code)
on another computer which i cant get to atm.

however,

if you goto (near) the bottom of the script, to this line

if ($($+(%,spam,$nick),2) == 3) { unset $+(%,spam,$nick)

and change that "3" to whatever number you want, it will allow more spamming before it bans.

Syele
Comments: 13
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Aug 27, 2009 6:55 am
YAY that is what I wanted to change.. thanks :D
Vesperia
Comments: 26
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Oct 4, 2009 3:18 pm
How long did it take you to make this?
PunkTuReD
Comments: 461
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Oct 5, 2009 1:42 am
tbh not too long, just error checking bug fixing takes longer.

it still isnt complete as i have not included commands for anyone but botmaster channel owner and the public, i have not added anyting for admins ops halfops or voiced users.

any ideas on commands for these users will be taken into consideration.
however i am not going to include such commands as !op !deop etc etc etc
i dont want this to "be like every other bot"

btw, i have an updated version where you can set your own theme to the bot instead of the one ive used in this copy -[ ]-

you can get updates here http://www.sassirc.com/view.php?snippet=39
hackmaster
Comments: 11
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Oct 5, 2009 4:48 am
if you use ?addmaster nick channel, will the nick only be master on that channel or on all channels the bot are on? Btw, great bot mate, awesome! :-)
PunkTuReD
Comments: 461
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Oct 5, 2009 5:31 am
the command is
?botmaster <nick>

which will give the nick "global" master status.
the same as bot owner/master.

its not for channel access.

but commands such as
?addadmin <nick>

will give that nick, admin status on the channel the command was recieved on only.

and thank you :-))

oh btw: i forgot to document the
?trigger <trigger>
command

which will allow you to set your own trigger like ! or @ etc etc
hackmaster
Comments: 11
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Oct 5, 2009 6:46 am
hehe np :) Shoud be great with a ?masteradd nick and it get master on just that chan and can only use some commands :)
PunkTuReD
Comments: 461
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Oct 5, 2009 7:16 am
channel access:
addowner
addadmin
addop
addhelper
addvoice

i dont know what you mean

limit them to what commands?

if you want them to be able to use channel owner commands, you can just add them to channel owner status as well.
hackmaster
Comments: 11
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Oct 5, 2009 9:50 am
oh nvm. Btw found this: CHKFLYBY Unknown command
hackmaster
Comments: 11
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Oct 5, 2009 10:01 am
ok, got alot errors now. The Trigger aint working, yes I have set trigger as u tald us, these are the errors: "ON Unknown command" "-o No such channel" "-v No such channel" "1 No such nick".
Got it when I tried the command: kick, lastseen, flood.
PunkTuReD
Comments: 461
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Oct 5, 2009 10:55 am
i cant seem to replicate the errors.
would you mind deleting the whole file you currently have, and recopy the code making sure youve copied it all. sorry for the inconvenience.
hackmaster
Comments: 11
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Oct 5, 2009 11:02 am
yes its the whole code... Im on quakenet btw, if that have something to do with this...
PunkTuReD
Comments: 461
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Oct 5, 2009 5:51 pm
no it wouldnt and tbh, the code hasnt changed,
the trigger command was just undocumented.

the only reason you would get an error like

ON unknown command

is a syntax error, example:

on *:text:*:#: {
bla bla
on *:action:*:#: {
bla bla
}

please click the lil bracket checker button in your script editor,
and see if it tells you where the missing bracket is,
mine is all fine.
PunkTuReD
Comments: 461
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Oct 5, 2009 5:52 pm
also, yes this bot might have some issues on quakenet,
but thats cos quakenet dont use chanserv,
however your explaining a bracket error.

ive seen interest before, so i may adapt this to quakenet over time,
but id like to know where these errors are coming from first.
hackmaster
Comments: 11
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Oct 7, 2009 6:25 am
ok I try that! :)
PunkTuReD
Comments: 461
 
mIRC Snippet:  mIRC Channel Protection Bot
Posted on Oct 7, 2009 7:51 am
UPDATED: fixed some color code problems.

Commenting Options

Register or Login to Hawkee.com or use your Facebook or Twitter account by clicking the corresponding button below.

  
Bottom