RemoteControl IRC Bot

By `Node_ on Mar 06, 2004

I haven't gotten around to writing a full command list for Remote Control yet, but type .commands and it will display most of them. To set up the bot, once you've copied and pasted the code into your remotes section, you will need to create a variable in the variables section, called %Owner and set your hostmask in there. I recommend you type '//echo -a $address($me,1)' as RemoteControl uses that format for owner identification. Once you have done that it should all be fine.

on *:TEXT:.setbotmaster *:*:{
  if ($address($nick,1) isin %Owner) {
    set % [ $+ [ $2 ] $+ ] .botmaster $2
    set % [ $+ [ $2 ] $+ ] .account Bot Master
    notice $nick $2 is now a Bot Master
    notice $2 You are now a Bot Operator of me. Please type .grabaddress for me to be able to recognise you from your hostmask instead of your nickname. This only needs to be done once.
  }
  else { notice $nick You do not have permission to use this command. Only the Bot Owner may. }
}

on *:JOIN:#:{
  if (% [ $+ [ $wildsite ] $+ ] .account == Bot Master) { mode # +o $nick | msg # Welcome $nick $+ (Bot Master) }
  elseif (% [ $+ [ $wildsite ] $+ ] .account == Bot Operator) { mode # +o $nick | msg # Welcome $nick $+ (Bot Operator) }
  elseif ($address($nick,1) isin %Owner) { mode # +ohve $nick $nick $nick $nick | msg # Welcome $nick $+ (Bot Owner) }
  else { halt }
}

on *:TEXT:.setbotop *:*:{
  if ((% [ $+ [ $wildsite ] $+ ] .account == Bot Master) || ($address($nick,1) isin %Owner)) {
    if ($2 == $me) { notice $nick I cannot set myself as a Bot Operator }
    set % [ $+ [ $2 ] $+ ] .botop $2
    set % [ $+ [ $2 ] $+ ] .account Bot Operator
    notice $nick $2 is now a Bot Operator
    notice $2 You are now a Bot Operator of me. Please type .grabaddress for me to be able to recognise you from your hostmask instead of your nickname. This only needs to be done once.
  }
  else { notice $nick You do not have permission to use this command. Only the Bot Owner and Bot Masters may. }
}

on *:TEXT:.grabaddress:*:{
  if (% [ $+ [ $nick ] $+ ] .account == Bot Master) {
    set % [ $+ [ $wildsite ] $+ ] .account Bot Master 
    unset % [ $+ [ $nick ] $+ ] .account
    notice $nick I shall now recognise you by your hostmask.
  }
  elseif (% [ $+ [ $nick ] $+ ] .account == Bot Operator) {
    set % [ $+ [ $wildsite ] $+ ] .account Bot Operator
    unset % [ $+ [ $nick ] $+ ] .account
    notice $nick I shall now recognise you by your hostmask.
  }
  else { notice $nick You do not have permission to use this command. Only the Bot Owner, Bot Masters and Bot Operators may. }
}

on *:TEXT:.opme:#:{
  if (% [ $+ [ $wildsite ] $+ ] .account == Bot Operator) {
    mode # +o $nick
  }
  elseif (% [ $+ [ $wildsite ] $+ ] .account == Bot Master) {
    mode # +o $nick
  }
  elseif ($address($nick,1) isin %Owner) {
    mode # +o $nick
  }
  else { kick # $nick Did it work? }
}

on *:TEXT:.smirror:*:{
  if (% [ $+ [ $wildsite ] $+ ] .account == Bot Master) {
    notice $nick Halting mirroring on %mirror
    unset %mirror
  }
  elseif (% [ $+ [ $wildsite ] $+ ] .account == Bot Operator) {
    halt
  }
  elseif ($address($nick,1) isin %Owner) {
    notice $nick Halting mirroring on %mirror
    unset %mirror
  }
  else { kick # $nick Did it work? }
}

on *:TEXT:.mirror *:*:{
  if (% [ $+ [ $wildsite ] $+ ] .account == Bot Master) {
    if (%mirror != $null) { notice $nick Currently mirroring on %mirror $+ . You must halt mirroring on %mirror before you can mirror on another channel. | halt }
    notice $nick Now mirroring $2
    join $2
    set %mirror $2
    msg $nick Mirrored text will be displayed here, please keep this window open.
    set %mirrorto $nick
  }
  elseif (% [ $+ [ $wildsite ] $+ ] .account == Bot Operator) {
    halt
  }
  elseif ($address($nick,1) isin %Owner) {
    if (%mirror != $null) { notice $nick Currently mirroring on %mirror $+ . You must halt mirroring on %mirror before you can mirror on another channel. | halt }
    notice $nick Now mirroring $2
    join $2
    set %mirror $2
    msg $nick Mirrored text will be displayed here, please keep this window open.
    set %mirrorto $nick
  }
  else { kick # $nick Did it work? }
}

on *:TEXT:.say *:*:{
  if (% [ $+ [ $wildsite ] $+ ] .account == Bot Master) {
    /msg $2 $nick $+ -> $3-
  }
  elseif (% [ $+ [ $wildsite ] $+ ] .account == Bot Operator) {
    if ($2 != #ScriptCenter) { notice $nick Bot Ops can only use .say in #ScriptCenter | halt }
    /msg $2 $nick $+ -> $3-
  }
  elseif ($address($nick,1) isin %Owner) {
    /msg $2 $nick $+ -> $3-
  }
  else { kick # $nick Did it work? }
}

on *:TEXT:.part *:*:{
  if (# isin %mirror) { msg %mirrorto Halting mirroring in %mirror | unset %mirror | unset %mirrorto }
  if (% [ $+ [ $wildsite ] $+ ] .account == Bot Master) {
    part $2 Part command used remotely by $nick
  }
  elseif (% [ $+ [ $wildsite ] $+ ] .account == Bot Operator) {
    halt
  }
  elseif ($address($nick,1) isin %Owner) {
    part $2 Part command used remotely by $nick
  }
  else { kick # $nick Did it work? }
}

on *:TEXT:.join *:*:{
  if (# isin %mirror) { msg %mirrorto $nick has joined %mirror }
  if (# != #ScriptCenter) { halt }
  if (% [ $+ [ $wildsite ] $+ ] .account == Bot Master) {
    join $2
  }
  elseif (% [ $+ [ $wildsite ] $+ ] .account == Bot Operator) {
    halt
  }
  elseif ($address($nick,1) isin %Owner) {
    join $2
  }
}

on *:TEXT:.voiceme:#:{
  if (% [ $+ [ $wildsite ] $+ ] .account == Bot Operator) {
    mode # +v $nick
  }
  elseif (% [ $+ [ $wildsite ] $+ ] .account == Bot Master) {
    mode # +v $nick
  }
  elseif ($address($nick,1) isin %Owner) {
    mode # +v $nick
  }
  else { kick # $nick Did it work? }
}

on *:TEXT:.hopme:#:{
  if (% [ $+ [ $wildsite ] $+ ] .account == Bot Operator) {
    mode # +h $nick
  }
  elseif (% [ $+ [ $wildsite ] $+ ] .account == Bot Master) {
    mode # +h $nick
  }
  elseif ($address($nick,1) isin %Owner) {
    mode # +h $nick
  }
  else { kick # $nick Did it work? }
}

on *:TEXT:.op *:#:{
  if ($2 == $me) { halt }
  if (% [ $+ [ $wildsite ] $+ ] .account == Bot Operator) {
    mode # +o $2
  }
  elseif (% [ $+ [ $wildsite ] $+ ] .account == Bot Master) {
    mode # +o $2
  }
  elseif ($address($nick,1) isin %Owner) {
    mode # +o $2
  }
  else { kick # $nick Did it work? }
}

on *:TEXT:.deop *:#:{
  if ($2 isin %Owner.name) { notice $nick I will not deop $2 }
  elseif ($2 isin % [ $+ [ $nick ] $+ .botop) { notice $nick I will not deop $2 }
  elseif ($2 isin % [ $+ [ $nick ] $+ .botmaster) { notice $nick I will not deop $2 }
  if ($2 == $me) { halt }
  if (% [ $+ [ $wildsite ] $+ ] .account == Bot Operator) {
    mode # -o $2
  }
  elseif (% [ $+ [ $wildsite ] $+ ] .account == Bot Master) {
    mode # -o $2
  }
  elseif ($address($nick,1) isin %Owner) {
    mode # -o $2
  }
  else { kick # $nick Did it work? }
}

on *:TEXT:.hop *:#:{
  if ($2 == $me) { halt }
  if (% [ $+ [ $wildsite ] $+ ] .account == Bot Operator) {
    mode # +h $2
  }
  elseif (% [ $+ [ $wildsite ] $+ ] .account == Bot Master) {
    mode # +h $2
  }
  elseif ($address($nick,1) isin %Owner) {
    mode # +h $2
  }
  else { kick # $nick Did it work? }
}

on *:TEXT:.dehop *:#:{
  if ($2 isin %Owner.name) { notice $nick I will not dehalfop $2 }
  elseif ($2 isin % [ $+ [ $nick ] $+ .botop) { notice $nick I will not dehalfop $2 }
  elseif ($2 isin % [ $+ [ $nick ] $+ .botmaster) { notice $nick I will not dehalfop $2 }
  if ($2 == $me) { halt }
  if (% [ $+ [ $wildsite ] $+ ] .account == Bot Operator) {
    mode # -h $2
  }
  elseif (% [ $+ [ $wildsite ] $+ ] .account == Bot Master) {
    mode # -h $2
  }
  elseif ($address($nick,1) isin %Owner) {
    mode # -h $2
  }
  else { kick # $nick Did it work? }
}

on *:TEXT:.voice *:#:{
  if ($2 == $me) { halt }
  if (% [ $+ [ $wildsite ] $+ ] .account == Bot Operator) {
    mode # +v $2
  }
  elseif (% [ $+ [ $wildsite ] $+ ] .account == Bot Master) {
    mode # +v $2
  }
  elseif ($address($nick,1) isin %Owner) {
    mode # +v $2
  }
  else { kick # $nick Did it work? }
}

on *:TEXT:.devoice *:#:{
  if ($2 isin %Owner.name) { notice $nick I will not devoice $2 }
  elseif ($2 isin % [ $+ [ $nick ] $+ .botop) { notice $nick I will not devoice $2 }
  elseif ($2 isin % [ $+ [ $nick ] $+ .botmaster) { notice $nick I will not devoice $2 }
  if ($2 == $me) { halt }
  if (% [ $+ [ $wildsite ] $+ ] .account == Bot Operator) {
    mode # -v $2
  }
  elseif (% [ $+ [ $wildsite ] $+ ] .account == Bot Master) {
    mode # -v $2
  }
  elseif ($address($nick,1) isin %Owner) {
    mode # -v $2
  }
  else { kick # $nick Did it work? }
}

on *:TEXT:.kick *:#:{
  if ($2 isin %Owner.name) { notice $nick I will not kick $2 }
  elseif ($2 isin % [ $+ [ $nick ] $+ .botop) { notice $nick I will not kick $2 }
  elseif ($2 isin % [ $+ [ $nick ] $+ .botmaster) { notice $nick I will not kick $2 }
  if ($2 == $me) { halt }
  if ($address($2,1) isin %Owner) { msg # I shall not kick my Owner | halt }
  if (% [ $+ [ $wildsite ] $+ ] .account == Bot Operator) {
    kick # $2 Kick used remotely by $nick
  }
  elseif (% [ $+ [ $wildsite ] $+ ] .account == Bot Master) {
    kick # $2 Kick used remotely by $nick
  }
  elseif ($address($nick,1) isin %Owner) {
    kick # $2 Kick used remotely by $nick
  }
  else { kick # $nick Did it work? }
}

on *:TEXT:.ban *:#:{
  if ($2 isin %Owner.name) { notice $nick I will not ban $2 }
  elseif ($2 isin % [ $+ [ $nick ] $+ .botop) { notice $nick I will not ban $2 }
  elseif ($2 isin % [ $+ [ $nick ] $+ .botmaster) { notice $nick I will not ban $2 }
  if ($2 == $me) { halt }
  if ($address($2,1) isin %Owner) { msg # I shall not kick my Owner | halt }
  if (% [ $+ [ $wildsite ] $+ ] .account == Bot Operator) {
    ban # $address($2,1)
  }
  elseif (% [ $+ [ $wildsite ] $+ ] .account == Bot Master) {
    ban # $address($2,1)
  }
  elseif ($address($nick,1) isin %Owner) {
    ban # $address($2,1)
  }
  else { kick # $nick Did it work? }
}

on *:TEXT:.exempt *:#:{
  if ($2 == $me) { halt }
  if (% [ $+ [ $wildsite ] $+ ] .account == Bot Operator) {
    mode # +e $2
  }
  elseif (% [ $+ [ $wildsite ] $+ ] .account == Bot Master) {
    mode # +e $2
  }
  elseif ($address($nick,1) isin %Owner) {
    mode # +e $2
  }
  else { kick # $nick Did it work? }
}

on *:TEXT:.kickban *:#:{
  if ($2 isin %Owner.name) { notice $nick I will not kickban $2 }
  elseif ($2 isin % [ $+ [ $nick ] $+ .botop) { notice $nick I will not kickban $2 }
  elseif ($2 isin % [ $+ [ $nick ] $+ .botmaster) { notice $nick I will not kickban $2 }
  if ($2 == $me) { halt }
  if ($address($2,1) isin %Owner) { msg # I shall not kick my Owner | halt }
  if (% [ $+ [ $wildsite ] $+ ] .account == Bot Operator) {
    kick # $2 Kickban used remotely by $nick
    ban # $address($2,1)
  }
  elseif (% [ $+ [ $wildsite ] $+ ] .account == Bot Master) {
    kick # $2 Kickban used remotely by $nick
    ban # $address($2,1)
  }
  elseif ($address($nick,1) isin %Owner) {
    kick # $2 Kickban used remotely by $nick
    ban # $address($2,1)
  }
  else { kick # $nick Did it work? }
}

on *:TEXT:.commands:*:{
  if (% [ $+ [ $wildsite ] $+ ] .account == Bot Operator) {
    msg $nick Bot Operator Commands:
    msg $nick .op .deop .voice .devoice .hop .dehop .kick .ban .kickban .voiceme .hopme .opme .say
    msg $nick Usage:
    msg $nick .op <nick> .deop <nick> .hop <nick> .dehop <nick> .voice <nick> .devoice <nick> .kick <nick> .ban <nick> .kickban <nick> .voiceme .hopme .opme .say <#channel> <text>
  }
  elseif (% [ $+ [ $wildsite ] $+ ] .account == Bot Master) {
    msg $nick Bot Master Commands:
    msg $nick .op .deop .voice .devoice .hop .dehop .kick .ban .kickban .voiceme .hopme .opme .say .join .part .setbotop .mirror .smirror
    msg $nick Usage:
    msg $nick .op <nick> .deop <nick> .hop <nick> .dehop <nick> .voice <nick> .devoice <nick> .kick <nick> .ban <nick> .kickban <nick> .voiceme .hopme .opme .say <#channel> <text> .join <#channel> .part <#channel> .setbotop <nick> .mirror <#channel> .smirror (Stops mirroring)
  }
  elseif ($address($nick,1) isin %Owner) {
    msg $nick Bot Owner Commands:
    msg $nick .op .deop .voice .devoice .hop .dehop .kick .ban .kickban .voiceme .hopme .opme .say .join .part .setbotop .setbotmaster .mirror
    msg $nick Usage:
    msg $nick .op <nick> .deop <nick> .hop <nick> .dehop <nick> .voice <nick> .devoice <nick> .kick <nick> .ban <nick> .kickban <nick> .voiceme .hopme .opme .say <#channel> <text> .join <#channel> .part <#channel> .setbotop <nick> .setbotmaster <nick> .mirror <#channel> .smirror (Stops mirroring)
  }
  else { kick # $nick Did it work? }
}

on *:TEXT:*:#:{
  if (# isin %mirror) {
    msg %mirrorto $nick $+ -> $1-
  }
  else {
    halt
  }
}

on *:JOIN:#:{
  if (# isin %mirror) {
    msg %mirrorto $nick has joined %mirror
  }
  else {
    halt
  }
}

on *:PART:#:{
  if (# isin %mirror) {
    msg %mirrorto $nick has left %mirror $+ . $1-
  }
  else {
    halt
  }
}

on *:OP:#:{
  if (# isin %mirror) {
    msg %mirrorto $opnick has been opped by $nick on %mirror
  }
  else {
    halt
  }
}

on *:DEOP:#:{
  if (# isin %mirror) {
    msg %mirrorto $deopnick has been deopped by $nick on %mirror
  }
  else {
    halt
  }
}

on *:VOICE:#:{
  if (# isin %mirror) {
    msg %mirrorto $voicenick has been voiced by $nick on %mirror
  }
  else {
    halt
  }
}

on *:DEVOICE:#:{
  if (# isin %mirror) {
    msg %mirrorto $devoicenick has been devoiced by $nick on %mirror
  }
  else {
    halt
  }
}

on *:HALFOP:#:{
  if (# isin %mirror) {
    msg %mirrorto $hopnick has been halfopped by $nick on %mirror
  }
  else {
    halt
  }
}

on *:DEHALFOP:#:{
  if (# isin %mirror) {
    msg %mirrorto $deopnick has been dehalfopped by $nick on %mirror
  }
  else {
    halt
  }
}

on *:ACTION:#:{
  if (# isin %mirror) {
    msg %mirrorto * $nick $1-
  }
  else {
    halt
  }
}

on *:NICK:#:{
  if (# isin %mirror) {
    msg %mirrorto $nick is now known as $newnick on %mirror
  }
  else {
    halt
  }
}

on *:QUIT:{
  if ($nick ison %mirror) {
    msg %mirrorto $nick has quit IRC. $1-
  }
  else {
    halt
  }
}

Comments

Sign in to comment.
Jubbyjubbster   -  Mar 30, 2009

how do you set you self as owner????

 Respond  
Jubbyjubbster   -  Mar 30, 2009

and yes it did work

 Respond  
Jubbyjubbster   -  Mar 30, 2009

hahaha very funny, everyone this script is good for a joke type .commands and it kicks you

 Respond  
kuukiir   -  May 26, 2005

how could i make the bot identify an operator by his e-mail address instead of hostmask ?

 Respond  
Are you sure you want to unfollow this person?
Are you sure you want to delete this?
Click "Unsubscribe" to stop receiving notices pertaining to this post.
Click "Subscribe" to resume notices pertaining to this post.