From WikiChip
Difference between revisions of "mirc/access levels"
< mirc

(Resequence to put Event Prefixes first since this is the name of the page)
m
Line 5: Line 5:
 
mIRC offers a lot of prefixes to slightly alter how the event activates.
 
mIRC offers a lot of prefixes to slightly alter how the event activates.
  
=== me prefix ===
+
=== * prefix ===
The 'me' prefix can be used to get an event to trigger only if you triggered it (only if $nick == $me)
+
The * prefix is the most commonly used prefix, and allows any user to activate the event regardless of their access level.
 +
 
 +
For example:
 +
<source lang="mIRC">
 +
on *:text:.calc *:#:{
 +
  notice $nick $2- = $calc($replace($2-, pi, $pi))
 +
}
 +
</source>
  
'''Note''': the me prefix is a bit special, it requires a new colon before others prefixes.
+
=== Numeric prefixes ===
 +
Numeric prefixes allow any user with an access level >= the prefix to activate the event.
  
 
For example:
 
For example:
 +
<source lang="mIRC">
 +
on +5:text:.h:#myChan:{
 +
  mode $chan +h $nick
 +
}
 +
</source>
 +
can be executed by any user with access level 5 or greater.
 +
 +
=== + prefix ===
 +
By default, the numeric prefix means that level and any level higher can trigger that event. Using the + prefix, you can limit the event to be exactly the level specified.
  
 +
For example:
 
<source lang="mIRC">
 
<source lang="mIRC">
on me:*:join:#support:{
+
on +5:text:.h:#myChan:{
   msg $chan Hello $chan $+ , I need help!
+
   mode $chan +h $nick
}</source>
+
}
 +
</source>
 +
will only work for users with access level of exactly 5. Any user with higher access level will not activate that event.
  
 
=== ! prefix ===
 
=== ! prefix ===
Line 21: Line 41:
  
 
For example:
 
For example:
 
 
<source lang="mIRC">
 
<source lang="mIRC">
 
on !1:join:#support:{
 
on !1:join:#support:{
Line 27: Line 46:
 
}
 
}
 
</source>
 
</source>
 
+
will never get activated by you joining #support, only other people.
The event above will never get activated by you joining #support, only other people.
 
  
 
=== @ prefix===
 
=== @ prefix===
Line 34: Line 52:
  
 
For example:
 
For example:
 
 
<source lang="mIRC">
 
<source lang="mIRC">
 
on @10:text:.op:#myChan:{
 
on @10:text:.op:#myChan:{
Line 40: Line 57:
 
}
 
}
 
</source>
 
</source>
 
+
will only work if you are an operator in #myChan at the time the user typed ".o".
The code above will only work if you are an operator in #myChan at the time the user typed ".o".
 
  
 
=== & prefix ===
 
=== & prefix ===
Line 55: Line 71:
  
 
The second event will trigger upon recieving any msg sent via query ''except'' '''!test''', because the first event calls the ''haltdef'' command upon receiving '''!test'''.
 
The second event will trigger upon recieving any msg sent via query ''except'' '''!test''', because the first event calls the ''haltdef'' command upon receiving '''!test'''.
 
=== * prefix ===
 
This prefix can be used to allow any user to activate the event regardless of their access level.
 
 
For Example:
 
 
<source lang="mIRC">
 
on *:text:.calc *:#:{
 
  notice $nick $2- = $calc($replace($2-, pi, $pi))
 
}
 
</source>
 
 
=== + prefix ===
 
By default, the numeric prefix means that level and any level higher can trigger that event. Using the + prefix, you can limit the event to be exactly the level specified.
 
 
For example:
 
 
<source lang="mIRC">
 
on +5:text:.h:#myChan:{
 
  mode $chan +h $nick
 
}
 
</source>
 
 
The code above will only work for users with access level of exactly 5. Any user with higher access level will not activate that event.
 
  
 
=== $ prefix ===
 
=== $ prefix ===
Line 105: Line 97:
 
}
 
}
 
</source>
 
</source>
 +
 +
=== me prefix ===
 +
The 'me' prefix can be used to get an event to trigger when you meet the criteria (only if $nick == $me). The 'me' prefix is a bit special; it requires a new colon before others prefixes.
 +
 +
For example:
 +
<source lang="mIRC">
 +
on me:*:join:#support:{
 +
  msg $chan Hello $chan $+ , I need help!
 +
}</source>
 +
 +
'''Note:''' Many events are '''not''' triggered when you meet the criteria and you need to code a separate 'me' event to handle it.
  
 
== User list ==
 
== User list ==

Revision as of 09:17, 27 September 2017

Access levels in mIRC are a mechanism by which events can be restricted to certain user levels or named groups. Almost all events have a level parameter that specifies the event's access level.

Event prefixes

mIRC offers a lot of prefixes to slightly alter how the event activates.

* prefix

The * prefix is the most commonly used prefix, and allows any user to activate the event regardless of their access level.

For example:

on *:text:.calc *:#:{
  notice $nick $2- = $calc($replace($2-, pi, $pi))
}

Numeric prefixes

Numeric prefixes allow any user with an access level >= the prefix to activate the event.

For example:

on +5:text:.h:#myChan:{
  mode $chan +h $nick
}

can be executed by any user with access level 5 or greater.

+ prefix

By default, the numeric prefix means that level and any level higher can trigger that event. Using the + prefix, you can limit the event to be exactly the level specified.

For example:

on +5:text:.h:#myChan:{
  mode $chan +h $nick
}

will only work for users with access level of exactly 5. Any user with higher access level will not activate that event.

! prefix

The exclamation mark prefix can be used to prevent an event from being activated by you (if ($nick != $me)).

For example:

on !1:join:#support:{
  msg $chan Hello $nick $+ , do you need help?
}

will never get activated by you joining #support, only other people.

@ prefix

The @ symbol can be used as a prefix to indicate that the event can only be activated if you are an operator in the channel. You can think of it as "if ($me isop $chan) {"

For example:

on @10:text:.op:#myChan:{
  mode $chan +o-v $nick $nick
}

will only work if you are an operator in #myChan at the time the user typed ".o".

& prefix

The & prefix can be used to prevent the event from being executed if the previous event called the /haltdef or /halt commands (if $halted is $true).

For example, given the following two on TEXT events placed in separate files...

script1.mrc

on *:TEXT:!test:?:haltdef

script2.mrc

on &*:TEXT:*:?:echo -ga I triggered because $!halted == $halted $+ !

The second event will trigger upon recieving any msg sent via query except !test, because the first event calls the haltdef command upon receiving !test.

$ prefix

This event prefix means the matchtext of the event is a regular expression, the delimiter are required.

on $*:text:/^([!@.])test$/:#myChan:{
  msg $chan $nick triggered test with $regml(1)
}

Named access levels

Sometimes it's beneficial to give an access group a name instead of a numeric value. A good example is bot admins, friends, or even channel members. You can define such groups using the normal /guser and /auser commands:

/guser BotAdmin Mike123 2
/guser BotAdmin Joe73 2
/guser BotAdmin Dave12 2

With that you can use the named group level in events, for example:

on BotAdmin:text:!example:#:{
  msg $chan Hello Bot Admin!
}

me prefix

The 'me' prefix can be used to get an event to trigger when you meet the criteria (only if $nick == $me). The 'me' prefix is a bit special; it requires a new colon before others prefixes.

For example:

on me:*:join:#support:{
  msg $chan Hello $chan $+ , I need help!
}

Note: Many events are not triggered when you meet the criteria and you need to code a separate 'me' event to handle it.

User list

The list of users and their access is stored in the "users" tab of the script editor. Only a single address is stored per line and must follow the following syntax:

<levels>:<address> <additional info>

Access levels are comma-delimited values that define the levels of the user. Although usually, the levels are numeric, you can use a name instead like "botAdmin" or "friends".

The <additional info> parameter is an optional parameter that can be used to store some additional information about the user or other useful miscellaneous data.

10,20:some!one@example.com
friend:dan!z@some.isp.net high school friend

Adding/Removing users

There are two commands that can be used to add a user to the access list, /auser and /guser. They follow this syntax:

/auser [-a] <levels> <name|address> [info]
/guser [-a] <levels> <name> [addressType] [info]

Both /auser and /guser do the same thing, they add a specific user to the user list with the access levels specified (Comma delimited). The -a switch can be used to simply add additional access levels to an existing user, otherwise all the old levels gets replaced with the new ones. The fundamental difference between /auser and /guser is that /guser can be used to look up the address of a user while /auser requires you to provide it beforehand.

;Add joe (address mask type 2), access level 'friend'
/guser friend joe 2 neighbor

The /ruser command can be used to remove a user completely from the access list or simply remove one of his levels.

/ruser [levels] <name|address> [type]

For example:

/ruser madman 2
/ruser 2,10 foobar

The user info parameter can be changed at any time using the /iuser command:

/iuser <name|address> [info]

Usage

The <level> parameter of an event is used to indicate which level/group can activate that event. For example:

on 10:text:.hello:#:{
  msg $chan Hello $nick $+ !
}

Notice the access level defined is 10. In this case any user in your access list level 10 or above will trigger this event.