/* * Example configuration file for BotServ. */ /* * First, create the service. If you do not want to have a 'BotServ', but do want the ability to have * ChanServ assigned to channels for the use of fantasy commands, you may delete the below 'service' block. * * Note that deleting a 'service' block for a pseudoclient that is already online will not remove the * client, the client becomes no different from a normal service bot, so you will have to use botserv/bot * to manually delete the client. * * You may then want to map some of the below commands to other services, like placing botserv/bot on * OperServ so you can delete the below client, and mapping assign and unassign to ChanServ so users are * able to control whether or not ChanServ is in the channel. You may also want to map botserv/set/nobot * to OperServ so you can restrict who can assign the other core service clients. */ service { /* * The name of the BotServ client. * If you change this value, you probably want to change the client directive in the configuration for the botserv module too. */ nick = "BotServ" /* * The username of the BotServ client. */ user = "services" /* * The hostname of the BotServ client. */ host = "ircservices.{{ external_domain }}" /* * The realname of the BotServ client. */ gecos = "Bot Service" /* * The modes this client should use. * Do not modify this unless you know what you are doing. * * These modes are very IRCd specific. If left commented, sane defaults * are used based on what protocol module you have loaded. * * Note that setting this option incorrectly could potentially BREAK some, if * not all, usefulness of the client. We will not support you if this client is * unable to do certain things if this option is enabled. */ #modes = "+o" /* * An optional comma separated list of channels this service should join. Outside * of log channels this is not very useful, as the service will just idle in the * specified channels, and will not accept any types of commands. * * Prefixes may be given to the channels in the form of mode characters or prefix symbols. */ #channels = "@#services,#mychan" } /* * Core BotServ module. * * Provides essential functionality for BotServ. */ module { name = "botserv" /* * The name of the client that should be BotServ. * * This directive is optional. */ client = "BotServ" /* * The default bot options for newly registered channels. Note that changing these options * will have no effect on channels which are already registered. The list must be separated * by spaces. * * The options are: * - dontkickops: Channel operators will be protected against BotServ kicks * - dontkickvoices: Voiced users will be protected against BotServ kicks * - greet: The channel's BotServ bot will greet incoming users that have set a greet * in their NickServ settings * - fantasy: Enables the use of BotServ fantasy commands in the channel * * This directive is optional, if left blank, there will be no defaults. */ defaults = "greet fantasy" /* * The minimum number of users there must be in a channel before the bot joins it. The best * value for this setting is 1 or 2. This can be 0, the service bots will not part unless * specifically unassigned, and will keep the channel open. */ minusers = 1 /* * The bots are currently not affected by any modes or bans when they try to join a channel. * But some people may want to make it act like a real bot, that is, for example, remove all * the bans affecting the bot before joining the channel, remove a ban that affects the bot * set by a user when it is in the channel, and so on. Since it consumes a bit more CPU * time, you should not enable this on larger networks. * * This directive is optional. */ #smartjoin = yes /* * Modes to set on service bots when they join channels, comment this out for no modes * * This directive is optional. */ botmodes = "ao" /* * User modes to set on service bots. Read the comment about the service:modes directive * on why this can be a bad idea to set. */ #botumodes = "i" } /* * Core BotServ commands. * * In Anope modules can provide (multiple) commands, each of which has a unique command name. Once these modules * are loaded you can then configure the commands to be added to any client you like with any name you like. * * Additionally, you may provide a permission name that must be in the opertype of users executing the command. * * Sane defaults are provided below that do not need to be edited unless you wish to change the default behavior. */ /* Give it a help command. */ command { service = "BotServ"; name = "HELP"; command = "generic/help"; } /* * bs_assign * * Provides the commands: * botserv/assign - Used to assign BotServ bots to channels * botserv/unassign - Used to unassign BotServ bots * botserv/set/nobot - Used to prohibit channels from being assigned BotServ bots. * * Used for assigning and unassigning bots to channels. */ module { name = "bs_assign" } command { service = "BotServ"; name = "ASSIGN"; command = "botserv/assign"; } command { service = "BotServ"; name = "UNASSIGN"; command = "botserv/unassign"; } command { service = "BotServ"; name = "SET NOBOT"; command = "botserv/set/nobot"; permission = "botserv/set/nobot"; } /* * bs_autoassign * * Allows service bots to be automatically assigned to channels upon registration. */ #module { name = "bs_autoassign" /* * Automatically assign ChanServ to channels upon registration. */ bot = "ChanServ" } /* * bs_badwords * * Provides the command botserv/badwords. * * Used for controlling the channel badword list. */ module { name = "bs_badwords" /* * The maximum number of entries a single bad words list can have. */ badwordsmax = 32 /* * If set, BotServ will use case sensitive checking for badwords. * * This directive is optional. */ #casesensitive = yes } command { service = "BotServ"; name = "BADWORDS"; command = "botserv/badwords"; } /* * bs_bot * * Provides the command botserv/bot. * * Used for administrating BotServ bots. */ module { name = "bs_bot" } command { service = "BotServ"; name = "BOT"; command = "botserv/bot"; permission = "botserv/bot"; } /* * bs_botlist * * Provides the command botserv/botlist. * * Used for listing all available bots. */ module { name = "bs_botlist" } command { service = "BotServ"; name = "BOTLIST"; command = "botserv/botlist"; } /* * bs_control * * Provides the commands botserv/act and botserv/say. * * Used for making the bot message a channel. */ module { name = "bs_control" } command { service = "BotServ"; name = "ACT"; command = "botserv/act"; } command { service = "BotServ"; name = "SAY"; command = "botserv/say"; } /* * bs_info * * Provides the command botserv/info. * * Used for getting information on bots or channels. */ module { name = "bs_info" } command { service = "BotServ"; name = "INFO"; command = "botserv/info"; } /* * bs_kick * * Provides the commands: * botserv/kick - Dummy help wrapper for the KICK command. * botserv/kick/amsg - Configures BotServ's AMSG kicker. * botserv/kick/badwords - Configures BotServ's badwords kicker. * botserv/kick/bolds - Configures BotServ's bold text kiceker. * botserv/kick/caps - Configures BotServ's capital letters kicker. * botserv/kick/colors - Configures BotServ's color kicker. * botserv/kick/flood - Configures BotServ's flood kicker. * botserv/kick/italics - Configures BotServ's italics kicker. * botserv/kick/repeat - Configures BotServ's repeat kicker. * botserv/kick/reverses - Configures BotServ's reverse kicker. * botserv/kick/underlines - Configures BotServ's reverse kicker. * botserv/set/dontkickops - Used for preventing BotServ from kicking channel operators. * botserv/set/dontkickvoices - Used for preventing BotServ from kicking voices. * * Used for configuring what bots should kick for. */ module { name = "bs_kick" /* * The amount of time that data for a user is valid in BotServ. If the data exceeds this time, * it is reset or deleted depending on the case. Do not set it too high, otherwise your * resources will be slightly affected. */ keepdata = 10m /* * If set, the bots will use a kick reason that does not state the word when it is kicking. * This is especially useful if you have young people on your network. * * This directive is optional. */ gentlebadwordreason = yes } command { service = "BotServ"; name = "KICK"; command = "botserv/kick"; } command { service = "BotServ"; name = "KICK AMSG"; command = "botserv/kick/amsg"; } command { service = "BotServ"; name = "KICK BADWORDS"; command = "botserv/kick/badwords"; } command { service = "BotServ"; name = "KICK BOLDS"; command = "botserv/kick/bolds"; } command { service = "BotServ"; name = "KICK CAPS"; command = "botserv/kick/caps"; } command { service = "BotServ"; name = "KICK COLORS"; command = "botserv/kick/colors"; } command { service = "BotServ"; name = "KICK FLOOD"; command = "botserv/kick/flood"; } command { service = "BotServ"; name = "KICK ITALICS"; command = "botserv/kick/italics"; } command { service = "BotServ"; name = "KICK REPEAT"; command = "botserv/kick/repeat"; } command { service = "BotServ"; name = "KICK REVERSES"; command = "botserv/kick/reverses"; } command { service = "BotServ"; name = "KICK UNDERLINES"; command = "botserv/kick/underlines"; } command { service = "BotServ"; name = "SET DONTKICKOPS"; command = "botserv/set/dontkickops"; } command { service = "BotServ"; name = "SET DONTKICKVOICES"; command = "botserv/set/dontkickvoices"; } /* * bs_set * * Provides the commands: * botserv/set/private - Used to prohibit specific BotServ bots from being assigned to channels. */ module { name = "bs_set" } command { service = "BotServ"; name = "SET"; command = "botserv/set"; } command { service = "BotServ"; name = "SET BANEXPIRE"; command = "botserv/set/banexpire"; } command { service = "BotServ"; name = "SET PRIVATE"; command = "botserv/set/private"; permission = "botserv/set/private"; } /* * greet * * Provides the commands: * botserv/set/greet - Used for enabling or disabling BotServ's greet messages in a channel. * nickserv/set/greet, nickserv/saset/greet - Used for changing a users greet message, which is displayed when they enter channels. */ module { name = "greet" } command { service = "BotServ"; name = "SET GREET"; command = "botserv/set/greet"; } command { service = "NickServ"; name = "SET GREET"; command = "nickserv/set/greet"; } command { service = "NickServ"; name = "SASET GREET"; command = "nickserv/saset/greet"; permission = "nickserv/saset/greet"; } /* * GREET privilege. * * Used by 'greet'. * * Users with this privilege have their greet shown when they join channels. */ privilege { name = "GREET" rank = 40 level = 5 flag = "g" xop = "AOP" } /* * fantasy * * Allows 'fantaisist' commands to be used in channels. * * Provides the commands: * botserv/set/fantasy - Used for enabling or disabling BotServ's fantasist commands. */ module { name = "fantasy" /* * Defines the prefixes for fantasy commands in channels. One of these characters will have to be prepended * to all fantasy commands. If you choose "!", for example, fantasy commands will be "!kick", * "!op", etc. This directive is optional, if left out, the default fantasy character is "!". */ #fantasycharacter = "!." } command { service = "BotServ"; name = "SET FANTASY"; command = "botserv/set/fantasy"; } /* * Fantasy commands * * Fantasy commands can be executed in channels that have a BotServ bot by prefixing the * command with one of the fantasy characters configured in botserv's fantasycharacter * directive. * * Sane defaults are provided below that do not need to be edited unless you wish to change the default behavior. */ fantasy { name = "ACCESS"; command = "chanserv/access"; } fantasy { name = "AKICK"; command = "chanserv/akick"; } fantasy { name = "AOP"; command = "chanserv/xop"; } fantasy { name = "BAN"; command = "chanserv/ban"; } fantasy { name = "CLONE"; command = "chanserv/clone"; } fantasy { name = "DEHALFOP"; command = "chanserv/modes"; } fantasy { name = "DEOP"; command = "chanserv/modes"; } fantasy { name = "DEOWNER"; command = "chanserv/modes"; } fantasy { name = "DEPROTECT"; command = "chanserv/modes"; } fantasy { name = "DEVOICE"; command = "chanserv/modes"; } fantasy { name = "DOWN"; command = "chanserv/down"; } fantasy { name = "ENFORCE"; command = "chanserv/enforce"; } fantasy { name = "ENTRYMSG"; command = "chanserv/entrymsg"; } fantasy { name = "FLAGS"; command = "chanserv/flags"; } fantasy { name = "HALFOP"; command = "chanserv/modes"; } fantasy { name = "HELP"; command = "generic/help"; prepend_channel = false; } fantasy { name = "HOP"; command = "chanserv/xop"; } fantasy { name = "INFO"; command = "chanserv/info"; prepend_channel = false; } fantasy { name = "INVITE"; command = "chanserv/invite"; } fantasy { name = "K"; command = "chanserv/kick"; } fantasy { name = "KB"; command = "chanserv/ban"; } fantasy { name = "KICK"; command = "chanserv/kick"; } fantasy { name = "LEVELS"; command = "chanserv/levels"; } fantasy { name = "LIST"; command = "chanserv/list"; prepend_channel = false; } fantasy { name = "LOG"; command = "chanserv/log"; } fantasy { name = "MODE"; command = "chanserv/mode"; } fantasy { name = "MUTE"; command = "chanserv/ban"; kick = no; mode = "QUIET"; } fantasy { name = "OP"; command = "chanserv/modes"; } fantasy { name = "OWNER"; command = "chanserv/modes"; } fantasy { name = "PROTECT"; command = "chanserv/modes"; } fantasy { name = "QOP"; command = "chanserv/xop"; } fantasy { name = "SEEN"; command = "chanserv/seen"; prepend_channel = false; } fantasy { name = "SOP"; command = "chanserv/xop"; } fantasy { name = "STATUS"; command = "chanserv/status"; } fantasy { name = "SUSPEND"; command = "chanserv/suspend"; permission = "chanserv/suspend"; } fantasy { name = "SYNC"; command = "chanserv/sync"; } fantasy { name = "TOPIC"; command = "chanserv/topic"; } fantasy { name = "UNBAN"; command = "chanserv/unban"; } fantasy { name = "UNSUSPEND"; command = "chanserv/unsuspend"; permission = "chanserv/suspend"; } fantasy { name = "UP"; command = "chanserv/up"; } fantasy { name = "VOICE"; command = "chanserv/modes"; } fantasy { name = "VOP"; command = "chanserv/xop"; }