Skip to main content

Setting up ChanServ

ChanServ provides channel registration services, which allows users to own channels. It is not required, but is strongly recommended.

Most networks will want Chanserv, however ff you would prefer for Atheme to provide basic channel management functionality, without full channel ownership, you can skip to Setting up CHANFIX, which offers an Efnet-style CHANFIX service.

ChanServ Block#

The chanserv{} block contains settings specific to the ChanServ service bot and related channel ownership/management settings.

A fully configured chanserv{} block may look like:

chanserv {    nick = "ChanServ";    user = "ChanServ";    host = "misconfigured.network";    real = "Channel Services";    reggroup = "!Services-Team";    maxchans = 5;    fantasy;    templates {        vop = "+AV";        hop = "+AHehitrv";        aop = "+AOehiortv";        sop = "+AOaefhiorstv";
        founder = "+AFORaefhioqrstv";    };    changets;    expire = 30;    maxchanacs = 0;    maxfounders = 4;    antiflood_enforce_method = quiet;    show_custom_metadata;    shorthelp = "REGISTER DROP OP DEOP AKICK FLAGS";};

Services Bot Options#

ChanServ supports all standard services bot options.

reggroup#

The group that will receive memos about channel registration requests when chanserv/moderate is loaded.

This may be left unset if your services setup does not use chanserv/moderate or does not use a group for this.

Example: reggroup = "!Services-Team";

maxchans#

This value sets the maximum amount of channels someone can register.

Example: maxchans = 5;

fantasy#

This value enables fantasy commands, such as:

<user> !op-- Mode #channel [+o user] by ChanServ

Fantasy commands can use a lot of CPU on higher volume networks and will only work if you have general:join_chans enabled as well.

To globally disable fantasy commands, you can unset this value, or leave it set to enable them.

Example: fantasy;

hide_xop#

Hides the XOP templates from sight. This is useful if you want to use XOP templates or have them available, but do not want the XOP templates to be displayed.

templates#

Defines what flags the global templates comprise. This setting manages both normal templates and the special XOP templates.

Historically, before Atheme popularized the more granular flags system, IRC services packages managed access levels through a series of broader templates โ€” VOP, HOP, AOP, and SOP; collectively referred to as XOP โ€” to assist users familiar with these legacy services packages, Atheme offers a handful of commands using XOP-style templates which apply a defined selection of flags.

For the special XOP templates:

  • These should all be different and not equal to the empty set (""), except that hop may be equal to vop to disable hop.
  • Each subsequent level should have more flags (+VHO are optional as these only apply automatic voice/half-op/op, no actual permissions).
  • For optimal functioning of /msg ChanServ FORCEXOP, aop should not have any of +sRf flags, hop should not have any of +sRfoOr, and vop should not have any of +sRfoOrhHt.
  • If this is not specified, the values of Atheme 0.3 are used, which are generally less intuitive than these.

Note: Changing these templates leaves the flags of the existing channel access entries unchanged, thus removing those entries from the view of /msg ChanServ XOP LIST. Usually, the channel founder can use /msg ChanServ FORCEXOP to update the entries to the new levels.

If you want to add a co-founder role, a recommendation is to remove the flags (+f) permission from the sop role, and define a co-founder role with flags permissions.

Example (with recommended XOP flags):

templates {    vop = "+AV";    hop = "+AHehitrv";    aop = "+AOehiortv";    sop = "+AOaefhiorstv";
    founder = "+AFORaefhioqrstv";};

Example of non-XOP templates:

templates {    member = "+Ai";    op = "+AOiortv";};

You can find more details about what permissions each flags supplies in the flag matrix.

deftemplates#

The default templates to set on new channels, as a space-separated list of name=+flags pairs.

Note: Currently, no syntax checking is done on this; it is your responsibility to make sure it is correct.

If you do not wish to apply default templates, you can leave this value comment out/unset.

Example: deftemplates = "MEMBER=+Ai OP=+AOiortv";

changets#

Change the channel timestamp to the registration time when someone recreates a registered channel, ensuring they are deopped and all their modes are undone.

Note: this involves ChanServ temporarily joining the channel.

When the channel was not recreated no deops will be done, apart from any applied by the SECURE option.

This also solves the "join-mode" problem where someone recreates a registered channel and then sets modes before they are deopped.

This is currently supported for charybdis, ratbox, bahamut, and inspircd 1.1+.

Example: changets;

trigger#

This setting allows you to change the trigger prefix for ChanServ's in-channel "fantasy" command feature.

If no setting is provided, the default is used, which is "!".

Other popular choices you could consider trying: ".", "~", "?", "`", "'".

Example: trigger = "!";

expire#

The number of days before inactive registrations are expired.

If unset or set to 0, channel registrations will not expire.

Example: expire = 30;

maxchanacs#

The maximum number of channel entries allowed in a channel's access list โ€” this includes both permission-granting entries and AKICKs โ€” set to 0 for unlimited entries.

Example: maxchanacs = 0;

maxfounders#

The maximum number of founders (flag +F) allowed in a channel.

Note: All founders have the exact same privileges and the list of founders is shown in various places.

Example: maxfounders = 4;

founder_flags#

The flags a user will get when they register a new channel. This must include at least F or it will be ignored.

If it is not set, Atheme will give the user all channel flags.

Example: founder_flags = "AFORefiorstv";

akick_time#

The default expiration time (in minutes) for AKICKs.

Comment this option out or set to zero for permanent AKICKs by default (this was the default option in older releases of Atheme).

Example: akick_time = 10;

antiflood_enforce_method#

The enforcement method to use for flood protection by default. This option may be overridden by channel staff.

Available options are: quiet, kickban, and akill.

Example: antiflood_enforce_method = quiet;

show_custom_metadata#

Unsetting this option will prevent user-set metadata (via SET PROPERTY) from showing in the INFO output. The TAXONOMY command will still function as usual, and INFO will point this out if channels have metadata set.

Example: show_custom_metadata;

shorthelp#

A list of commands that are displayed with their full description in the output of /msg ChanServ HELP. Commands not in this list will be listed, but not with their descriptions. All commands with descriptions are still listed in /msg ChanServ HELP COMMANDS regardless of the value set here.

If not set, this value defaults to "AKICK BAN CLEAR DEOP DEVOICE DROP FLAGS GETKEY INFO INVITE KICK KICKBAN OP QUIET REGISTER SET TOPIC UNBAN UNQUIET VOICE WHY".

If set to an empty string (shorthelp = "";), listing command descriptions in /msg ChanServ HELP will be disabled.

A command in this list will only be printed if the corresponding module is loaded and the user has permission to use it.

Examples:

  • Custom list: shorthelp = "REGISTER OP DEOP";
  • No list: shorthelp = "";
  • Default: #shorthelp = "";

Modules#

By loading or choosing not to load specific modules, you can customize what features your ChanServ instance offers. You can even disable ChanServ entirely if you choose to load none of these modules.

Note: ChanServ requires an authentication service, either a NickServ or UserServ configuration will do.

ModuleFeaturesNotes
modules/chanserv/mainCore components
modules/chanserv/accessSimplified ACL editing ACCESS command
modules/chanserv/akickAKICK command
modules/chanserv/banBAN and UNBAN commandsLoad this module or unban_self, do not load both.
modules/chanserv/unban_selfUNBAN command for the user onlyLoad ban or this module, do not load both.
modules/chanserv/bansearchBANSEARCH command
modules/chanserv/closeCLOSE command
modules/chanserv/cloneCLONE command
modules/chanserv/clearCLEAR command
modules/chanserv/clear_akicksCLEAR AKICKS command
modules/chanserv/clear_bansCLEAR BANS command
modules/chanserv/clear_flagsCLEAR FLAGS command
modules/chanserv/clear_usersCLEAR USERS command
modules/chanserv/countCOUNT command
modules/chanserv/dropDROP command
modules/chanserv/fflagsForced flags changes (FFLAGS command)
modules/chanserv/flagsFLAGS command
modules/chanserv/ftransferForced foundership transfers (FTRANSFER command)
modules/chanserv/getkeyGETKEY command
modules/chanserv/halfopHALFOP and DEHALFOP commands
modules/chanserv/helpHELP command
modules/chanserv/holdChannel expiry override (HOLD command)
modules/chanserv/infoINFO command
modules/chanserv/inviteINVITE command
modules/chanserv/kickKICK and KICKBAN commands
modules/chanserv/listLIST command
modules/chanserv/markMARK command
modules/chanserv/moderateModerate channel registrations (ACTIVATE, REJECT, and WAITING commands)This module also enables the reggroup configuration option.
modules/chanserv/opOP and DEOP commands
modules/chanserv/ownerOWNER and DEOWNER commands
modules/chanserv/protectPROTECT and DEPROTECT commandsThis is also sometimes considered the "admin" channel status.
modules/chanserv/quietQUIET commandThis module will only work on IRCds which support a quiet ban-like mode.
modules/chanserv/recoverChannel takeover recovery (RECOVER command)
modules/chanserv/registerREGISTER commandThis module is required if you wish for anyone to register channels.
modules/chanserv/set_emailSET EMAIL command
modules/chanserv/set_entrymsgSET ENTRYMSG command
modules/chanserv/set_fantasySET FANTASY command
modules/chanserv/set_gameservSET GAMESERV commandRequires GameServ to be enabled.
modules/chanserv/set_guardSET GUARD command
modules/chanserv/set_keeptopicSET KEEPTOPIC command
modules/chanserv/set_limitflagsSET LIMITFLAGS command
modules/chanserv/set_mlockSET MLOCK command
modules/chanserv/set_prefixSET PREFIX command
modules/chanserv/set_privateChannel info hiding (SET PRIVATE command)
modules/chanserv/set_propertySET PROPERTY command
modules/chanserv/set_pubaclSET PUBACL command
modules/chanserv/set_restrictedSET RESTRICTED command
modules/chanserv/set_secureSET SECURE command
modules/chanserv/set_topiclockSET TOPICLOCK command
modules/chanserv/set_urlSET URL command
modules/chanserv/set_verboseSET VERBOSE command
modules/chanserv/statusSTATUS command
modules/chanserv/syncSYNC command and SET NOSYNC command
modules/chanserv/successor_aclNamed Successor ACL flag (+S)
modules/chanserv/taxonomyChannel metadata viewer (TAXONOMY command)
modules/chanserv/templateTEMPLATE command
modules/chanserv/topicTOPIC and TOPICAPPEND commands
modules/chanserv/voiceVOICE and DEVOICE commands
modules/chanserv/whyWHY command
modules/chanserv/xopVOP/HOP/AOP/SOP commandsThis module provides emulation of the ircservices XOP scheme only.
modules/chanserv/antifloodFlood protectionThis module should be loaded last to ensure all automatic response options are functional.