SkipIRC - Channel Operator Guide

SkipIRC - Guide for Chat and Channel Operators


SkipIRC is in many ways an incremental iteration on the IRC experience we were used to with synIRC. While many settings, commands, and modes work like-for-like, there are nonetheless a number of new or modified features as well. This guide is aimed at channel operators that want to know about new settings that may be feature enhancements or ways to deal with problem users.

Migrating from synIRC

To retrieve your access list in a channel you own, type /cs access #channel list on synIRC, and you will receive a list of nicknames and their corresponding access level. You can then enter the same permissions in your new channel on SkipIRC using the same syntax as previous, e.g., /cs aop #channel add user.

New Features

The following is a thorough but not guaranteed to be exhaustive list of new channel modes. You can receive a full list of channel modes by entering /helpop chmodes from any chat window.

Allow Invites: +A


/mode #channel +A

Lets you extend the ability to /invite other users to an invite-only (+i) channel to all users rather than the default of hops and above.


/mode #channel +b A:*!*

The above will prevent a single host from sending invites.



/mode #channel +B kick:5:75

Lets you automatically take action against users that cross a defined threshold of uppercase letters in text.

kick may be substituted for ban, block, mute, or kickban.

5 in the above example is the minimum length of message to trigger the action.

75 in the above example is the percentage of the message that needs to be in caps for the action to trigger.

Sample Interactions:

(Note the all-caps message doesn't actually get relayed to the channel at all.)

[14:51:46] * bluesoul sets mode: +B kick:8:75
[14:53:26] * baduser (resu.elpmaxe|resudab#resu.elpmaxe|resudab) has joined #channel
[14:53:32] * baduser was kicked by (Your message exceeded the 75% upper case character threshold for #channel)

[14:54:34] * bluesoul sets mode: +B block:8:75
[14:54:46] * baduser (resu.elpmaxe|resudab#resu.elpmaxe|resudab) has joined #channel
(baduser attempted to type SPAM SPAM SPAM SPAM but received a notice from the system reading "*** Cannot send to channel #channel")

[14:54:46] * baduser (resu.elpmaxe|resudab#resu.elpmaxe|resudab) has joined #channel
[14:57:00] * bluesoul sets mode: +B mute:8:75
[14:57:10] * sets mode: +b m:*!*@example.user

As far as I can determine, mute, ban, and kickban are all permanent until you remove them! So this may not be advised. The recommended action for most channels is kick or block.

Auditorium mode: +u


/mode #channel +u

Makes it so non-ops cannot see any other users in the channel except channel ops and above. Channel ops and above can see all users. Unprivileged users will not see joins, parts, quits, or kicks. Bans, mode changes, and messages are visible. You may use this mode in conjunction with moderated (+m) mode. IRCOps can see all users.

None assignable by ops. Global exceptions, if we choose to do so, can be hardcoded in the server config.

Auto-privilege by host: +w


/mode #channel +w o:*!*

Allows all users connecting from a certain hostmask to receive a specified privilege level in the channel, as opposed to setting it via account with /cs xop.

o in the above example can be replaced with the typical assortment of vhoaq, though you cannot specify a level higher than you hold in a channel.

Sample Usage:

[15:22:09] * bluesoul sets mode: +w o:*!*@example.user
[15:22:16] * baduser (resu.elpmaxe|resudab#resu.elpmaxe|resudab) has joined #channel
[15:22:16] * sets mode: +o baduser


A lot of clients will struggle to show this list later, mIRC has no idea what to do with a +w mode. You can retrieve the full list by entering /mode #channel w.

Ban exceptions: +e

/mode #channel +e *!*

Allow a specific hostmask to join despite being in the scope of a larger banmask.

Sample Usage:

[15:30:58] * bluesoul sets mode: +b *!*@*
[15:31:04] * Guest61648 was kicked by bluesoul (bluesoul)
[15:31:21] * bluesoul sets mode: +e *!*
[15:31:38] * Guest61648 (ten.enoelbac.epc.aas8ir-PCS|egnuoleht#ten.enoelbac.epc.aas8ir-PCS|egnuoleht) has joined #channel

Ban redirects: +b #


/mode #channel +b *!*@example.user#banned-channel

When a user matching the banmask attempts to join #channel, they instead join #banned-channel.

Sample Usage:

[15:22:16] * baduser (resu.elpmaxe|resudab#resu.elpmaxe|resudab) has joined #channel
[15:34:26] * bluesoul sets mode: +b *!*@example.user#banned-channel
[15:34:31] * baduser was kicked by bluesoul (bluesoul)
(baduser enters /join #channel here)
[15:34:40] * baduser (resu.elpmaxe|resudab#resu.elpmaxe|resudab) has joined #banned-channel

You cannot combine a timed ban with a redirect. It can be one or the other, but not both.

Channel History: +H


/mode #channel +H 50:3d

Provides joining users messages that were sent by users before they joined, up to a certain amount or certain time period.

50 can be replaced with a smaller number of lines to send the user on joining the channel. 50 is currently the hard cap.

3d can be replaced with how far back the history can extend, using {s} for seconds, {m} for minutes, {h} for hours, {d} for days}, {w} for weeks}, and {y} for years. The number of lines in the first argument takes priority.

Sample usage:

[15:37:45] <~bluesoul> test message
[15:42:46] <Guest61648> testing chat history
[15:42:51] * testuser (resu.elpmaxe|resutset#resu.elpmaxe|resutset) has joined #channel

testuser sees:
15:42 *** baduser (resu.elpmaxe|resudab#resu.elpmaxe|resudab) has joined the channel
15:42 <~bluesoul> test message
15:42 <Guest61648> testing chat history

Users with the bot usermode +B set will not receive history messages.

Bypass Invite List: +I


/mode #channel +I *

Allows a hostmask to join an invite-only (+i) channel without having to be on an xop list or invite themselves with /cs invite

Sample Usage:

[09:46:50] * bluesoul sets mode: +i
[09:47:03] * bluesoul sets mode: +I *!*@example.user
[09:47:08] * exampleuser (resu.elpmaxe|esuelpmaxe#resu.elpmaxe|esuelpmaxe) has joined #channel

There are so many other ways to let people into a +i channel that this one is definitely for niche uses.

Suppress Part Messages: +b p


/mode #channel +b p:*

Prevents part messages from a hostmask from being shown.

Sample Usage:

[09:50:08] * exampleuser (resu.elpmaxe|esuelpmaxe#resu.elpmaxe|esuelpmaxe) has left #channel ("spam spam spam spam")
[09:50:25] * bluesoul sets mode: +b p:*@example.user
[09:50:30] * exampleuser (resu.elpmaxe|esuelpmaxe#resu.elpmaxe|esuelpmaxe) has joined #channel
[09:50:40] * exampleuser (resu.elpmaxe|esuelpmaxe#resu.elpmaxe|esuelpmaxe) has left #channel

Mute Hostmask: +b m:


/mode #channel +b m:*

Blocks matching users from being able to speak, without having to kick them or put the entire channel in moderated (+m) mode.

Sample Usage:

[09:53:56] * exampleuser (resu.elpmaxe|esuelpmaxe#resu.elpmaxe|esuelpmaxe) has joined #channel
[09:54:02] <exampleuser> spam spam spam spam
[09:54:15] * bluesoul sets mode: +b m:*@example.user
(Here, exampleuser tries to send "spam spam spam spam" and it does not go through. However, they can see that the mute ban was placed on them.)

Force-part user: /remove


/remove baduser #channel No spamming.

Allows for users to be forcefully removed from channels. This also obeys the No Kicks chanmode +Q. This is largely syntactic sugar for doing the same thing as a kick, the only real difference is that some clients will highlight kick messages differently from parts, so it can be less disruptive to the channel at large.

Sample Usage:

[09:59:09] * baduser (resu.elpmaxe|esuelpmaxe#resu.elpmaxe|esuelpmaxe) has joined #channel
[09:59:44] <baduser> spam spam spam spam
[10:04:28] bluesoul removed baduser from the channel
[10:04:28] * baduser (resu.elpmaxe|esuelpmaxe#resu.elpmaxe|esuelpmaxe) has left #channel

baduser sees:
10:06 bluesoul removed baduser from the channel
10:06 *** bluesoul removed you from #channel with the message: No spamming.

Some clients use /remove for their own purposes, mIRC will use it to remove log files. You can work around this by replacing /remove with /raw remove (note the lack of slash).

Block repeating lines: +E


/mode #channel +E *2:8:5:10

Allows highly customizable action to be taken for repeating or similar messages in a channel.

The * indicates that a violating user will be banned. A ~ will instead simply block the messages, and omitting this character entirely will kick the user.
The 2 is how many lines need to repeat for the action to trigger.
The 8 is how many seconds maximum for the number of repeated lines to trigger an action.
The 5 is the percentage of difference between the messages.
The 10 is how many messages of backlog to take into consideration for this to match. This is across the channel, not a particular user.

Only the 2nd and 3rd arguments are needed, e.g., /mode #channel +E 2:8 will kick a user for 2 identical lines within 8 seconds, using the default backlog length of 20 lines.

Sample Usage:

[10:15:44] * bluesoul sets mode: +E *2:8:5:10
[10:15:51] * baduser (resu.elpmaxe|esuelpmaxe#resu.elpmaxe|esuelpmaxe) has joined #channel
[10:18:23] <baduser> spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam
[10:18:25] <baduser> spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spom
[10:18:28] * sets mode: +b *!*@example.user
[10:18:28] * baduser was kicked by (Repeat flood)

Please note that the ban option never removes bans later, they will need to be manually removed if you want them to go away.

Timed Bans: /tban


/tban #channel 1w *!*

Purpose: Set timed bans that will automatically expire when the expiration time passes.


Any combination of stuff in the format 1y2w3d4h5m6s will work, where the letters represent years, weeks, days, hours, minutes, and seconds respectively.

Sample Usage:

[10:25:18] * baduser (resu.elpmaxe|esuelpmaxe#resu.elpmaxe|esuelpmaxe) has joined #channel
[10:25:31] <baduser> spam spam spam spam
[10:26:48] * bluesoul sets mode: +b *!*
[10:26:48] Timed ban *!* added by bluesoul on #channel lasting for 1w.
[10:28:50] * baduser was kicked by bluesoul (come back in a week)

Be aware this needs a full hostmask to work, in the format username!ksam.tsoh|tnedi#ksam.tsoh|tnedi, you cannot get away with *@host.mask. *!*@host.mask is fine. Power-users may wish to assign aliases here for common durations and reasons.

Please also note that timed bans are not compatible with redirect bans. A ban can do one or the other, but not both.

Block users from server: +b s


/mode #channel +b

Blocks users connecting from a particular server from joining. I wouldn't really set this without an exceedingly good reason, in which case you should be alerting ircops in #help immediately.

Sample Usage:

[10:33:49] * bluesoul sets mode: +b
(baduser tries to join and sees "Cannot join #channel - You have been banned from the channel.")

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License