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

(Event prefixes)
(^ prefix)
 
(17 intermediate revisions by 9 users not shown)
Line 1: Line 1:
{{mIRC Guide}}
+
{{mirc title|Access Levels}}
 
'''Access levels''' in [[mIRC]] are a mechanism by which events can be restricted to certain user levels or named groups. Almost all [[On events - mIRC|events]] have a level parameter that specifies the event's access level.
 
'''Access levels''' in [[mIRC]] are a mechanism by which events can be restricted to certain user levels or named groups. Almost all [[On events - mIRC|events]] have a level parameter that specifies the event's access level.
  
Line 9: Line 9:
 
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".
 
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 <info> parameter is an optional parameter that can be used to store some additional information about the user or other useful miscellaneous data.
+
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
 
  10,20:some!one@example.com
 
  friend:dan!z@some.isp.net high school friend
 
  friend:dan!z@some.isp.net high school friend
  
== Adding/Removing users ==
+
=== Adding users ===
 
There are two commands that can be used to add a user to the access list, {{mIRC|/auser}} and {{mIRC|/guser}}. They follow this syntax:
 
There are two commands that can be used to add a user to the access list, {{mIRC|/auser}} and {{mIRC|/guser}}. They follow this syntax:
  
Line 29: Line 29:
 
</source>
 
</source>
  
 +
=== Removing users ===
 
The {{mIRC|/ruser}} command can be used to remove a user completely from the access list or simply remove one of his levels.
 
The {{mIRC|/ruser}} command can be used to remove a user completely from the access list or simply remove one of his levels.
  
Line 35: Line 36:
 
</source>
 
</source>
  
=== For example: ===
+
For example:
 
<source lang="mIRC">
 
<source lang="mIRC">
 
/ruser madman 2
 
/ruser madman 2
Line 41: Line 42:
 
</source>
 
</source>
  
 +
=== Changing users' info ===
 
The user info parameter can be changed at any time using the {{mIRC|/iuser}} command:
 
The user info parameter can be changed at any time using the {{mIRC|/iuser}} command:
  
Line 47: Line 49:
 
</source>
 
</source>
  
=== Usage ===
+
== Event prefixes ==
The <level> parameter of an event is used to indicate which level/group can activate that event. For example:
+
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:
 
<source lang="mIRC">
 
<source lang="mIRC">
on 10:text:.hello:#:{
+
on *:text:!time:#:{
   msg $chan Hello $nick $+ !
+
  notice $nick the time for me is $time
 +
}
 +
</source>
 +
 
 +
=== Numeric prefixes ===
 +
Numeric prefixes allow any user with an access level >= the prefix to activate the event.
 +
 
 +
For example:
 +
<source lang="mIRC">
 +
on +5:text:.h:#myChan:{
 +
   mode $chan +h $nick
 
}
 
}
 
</source>
 
</source>
 +
can be executed by any user with access level 5 or greater.
 +
 +
=== ^ prefix ===
  
Notice the access level defined is 10. In this case any user in your access list level 10 or above will trigger this event.
+
By default, your event are triggered after mIRC has processed this event itself. For example if someone talks to you in a query, mIRC will display the text in that window, triggers the various beep and flash option if any, and only then trigger on text.
  
== Event prefixes ==
+
The ^ prefix tells mIRC to process your event before it processes the event itself. This prefix typically only works with IRC event but here is a full list of supported events: {{mIRC|on action}}, {{mIRC|on ban}}, {{mIRC|on chat}}, {{mIRC|on dehelp}}, {{mIRC|on deop}}, {{mIRC|on devoice}}, {{mIRC|on help}}, {{mIRC|on invite}}, {{mIRC|on join}}, {{mIRC|on kick}}, {{mIRC|on mode}}, {{mIRC|on nick}}, {{mIRC|on notice}}, {{mIRC|on op}}, {{mIRC|on open}}, {{mIRC|on part}}, {{mIRC|on ping}}, {{mIRC|on text}}, {{mIRC|on unban}}, {{mIRC|on usermode}}, {{mIRC|on voice}}, {{mIRC|on quit}}, {{mIRC|on serv}}, {{mIRC|on servermode}}, {{mIRC|on serverop}}, {{mIRC|on snotice}}, {{mIRC|on tabcomp}}, {{mIRC|on topic}}, {{mIRC|on wallops}}.
mIRC offers a lot of prefixes to slightly alter how the event activates.
 
  
=== me prefix ===
+
This prefix, coupled with {{mIRC|/halt}} or {{mIRC|/haltdef}}, allows you to display your own message for a given event, or it allows you to prevent a query window from opening with {{mIRC|on open}}, or to prevent a nick completion in {{mIRC|on tabcomp}}
The 'me' prefix can be used to get an event to trigger only if you triggered it (if ($nick == $me)
 
  
'''Note''': the me prefix is a bit special, it requires a new semi colon before others prefixes.
+
=== + 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:
 
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 77: Line 96:
  
 
For example:
 
For example:
 
 
<source lang="mIRC">
 
<source lang="mIRC">
 
on !1:join:#support:{
 
on !1:join:#support:{
Line 83: Line 101:
 
}
 
}
 
</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 90: Line 107:
  
 
For example:
 
For example:
 
 
<source lang="mIRC">
 
<source lang="mIRC">
 
on @10:text:.op:#myChan:{
 
on @10:text:.op:#myChan:{
Line 96: Line 112:
 
}
 
}
 
</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 ===
The '''& prefix''' can be used to prevent the event from being executed if the previous event called the {{mIRC|/haltdef }} or {{mIRC|/halt}} commands.
+
The '''& prefix''' can be used to prevent the event from being executed if the previous event called the {{mIRC|/haltdef }} or {{mIRC|/halt}} commands (if $halted is $true).
  
=== * prefix ===
+
For example, given the following two on TEXT events placed in separate files...
This prefix can be used to allow any user to activate the event regardless of their access level.
 
  
For Example:
+
<cite>script1.mrc</cite>
 +
<source lang="mIRC">on *:TEXT:!test:?:haltdef</source>
  
<source lang="mIRC">
+
<cite>script2.mrc</cite>
on *:text:.calc *:#:{
+
<source lang="mIRC">on &*:TEXT:*:?:echo -ga I triggered because $!halted == $halted $+ !</source>
  notice $nick $2- = $calc($replace($2-, pi, $pi))
 
}
 
</source>
 
  
=== + prefix ===
+
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'''.
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:
+
=== $ prefix ===
 +
This event prefix means the matchtext of the event is a regular expression, the delimiter are required.
  
 
<source lang="mIRC">
 
<source lang="mIRC">
on +5:text:.h:#myChan:{
+
on $*:text:/^([!@.])test$/:#myChan:{
   mode $chan +h $nick
+
   msg $chan $nick triggered test with $regml(1)
 
}
 
}
 
</source>
 
</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.
 
  
 
=== Named access levels ===
 
=== Named access levels ===
Line 143: Line 153:
 
</source>
 
</source>
  
[[Category:mIRC]]
+
=== 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.
 +
 
 +
[[Category:mIRC|access levels]]

Latest revision as of 15:44, 5 January 2019

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.

User list[edit]

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 users[edit]

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

Removing users[edit]

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

Changing users' info[edit]

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

/iuser <name|address> [info]

Event prefixes[edit]

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

* prefix[edit]

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:!time:#:{
  notice $nick the time for me is $time
}

Numeric prefixes[edit]

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[edit]

By default, your event are triggered after mIRC has processed this event itself. For example if someone talks to you in a query, mIRC will display the text in that window, triggers the various beep and flash option if any, and only then trigger on text.

The ^ prefix tells mIRC to process your event before it processes the event itself. This prefix typically only works with IRC event but here is a full list of supported events: on action, on ban, on chat, on dehelp, on deop, on devoice, on help, on invite, on join, on kick, on mode, on nick, on notice, on op, on open, on part, on ping, on text, on unban, on usermode, on voice, on quit, on serv, on servermode, on serverop, on snotice, on tabcomp, on topic, on wallops.

This prefix, coupled with /halt or /haltdef, allows you to display your own message for a given event, or it allows you to prevent a query window from opening with on open, or to prevent a nick completion in on tabcomp

+ prefix[edit]

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[edit]

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[edit]

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[edit]

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[edit]

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[edit]

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[edit]

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.