#!/usr/bin/env python ### # Copyright (c) 2002, Jeremiah Fincher # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # * Redistributions of source code must retain the above copyright notice, # this list of conditions, and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright notice, # this list of conditions, and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the name of the author of this software nor the name of # contributors to this software may be used to endorse or promote products # derived from this software without specific prior written consent. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. ### __revision__ = "$Id$" import fix import os import sys import sets import os.path import logging ### # Directions: # # Boolean values should be either True or False. ### ### # Directories. ### logDir = 'logs' confDir = 'conf' dataDir = 'data' installDir = os.path.dirname(os.path.dirname(sys.modules[__name__].__file__)) pluginDirs = [os.path.join(installDir, s) for s in ('src', 'plugins')] ### # Files. ### userfile = 'users.conf' channelfile = 'channels.conf' ### # minimumLogPriority: The minimum priority that will be logged. Defaults to # logging.INFO, which is probably a good value. Can also # be usefully set to logging.{DEBUG,WARNING,ERROR,CRITICAL} ### minimumLogPriority = logging.INFO ### # stdoutLogging: Determines whether or not the bot logs to stdout. ### stdoutLogging = True ### # colorizedStdoutLogging: Determines whether or not the bot logs colored logs # to stdout. ### colorizedStdoutLogging = True ### # logTimestampFormat: A format string defining how timestamps should be. Check # the Python library reference for the "time" module to see # what the various format specifiers mean. ### logTimestampFormat = '[%d-%b-%Y %H:%M:%S]' ### # humanTimestampFormat: A format string defining how timestamps should be # formatted for human consumption. Check the Python # library reference for the "time" module to see what the # various format specifiers mean. ### humanTimestampFormat = '%I:%M %p, %B %d, %Y' ### # throttleTime: A floating point number of seconds to throttle queued messages. # (i.e., messages will not be sent faster than once per # throttleTime units.) ### throttleTime = 1.0 ### # snarfThrottle: A floating point number of seconds to throttle snarfed URLs, # in order to prevent loops between two bots. ### snarfThrottle = 10.0 ### # allowEval: True if the owner (and only the owner) should be able to eval # arbitrary Python code. ### allowEval = False ### # replyWhenNotCommand: True if you want the bot reply when someone apparently # addresses him but there is no command. Otherwise he'll # just remain silent. ### replyWhenNotCommand = True ### # replyWithPrivateNotice: True if replies to a user in a channel should be # noticed to that user instead of sent to the channel # itself. replyWithPrivateNotice = False ### # requireRegistration: Oftentimes a plugin will want to record who added or # changed or messed with it last. Supybot's user database # is an excellent way to determine who exactly someone is. # You may, however, want something a little less # "intrustive," so you can set this variable to False to # tell such plugins that they should use the hostmask when # the user isn't registered with the user database. ### requireRegistration = False ### # enablePipeSyntax: Supybot allows nested commands; generally, commands are # nested via [square brackets]. Supybot can also use a # syntax more similar to Unix pipes. What would be (and # still can be; the pipe syntax doesn't disable the bracket # syntax) "bot: bar [foo]" can now by "bot: foo | bar" # This variable enables such syntax. ### enablePipeSyntax = False ### # showOnlySyntax : Supybot normally returns the full help whenever a user # misuses a command. If this option is set to True, the bot # will only return the syntax of the command (the first line # of the docstring) rather than the full help. ### showOnlySyntax = False ### # defaultCapabilities: Capabilities allowed to everyone by default. You almost # certainly want to have !owner and !admin in here. ### defaultCapabilities = sets.Set(['-owner', '-admin']) ### # reply%s: Stock replies for various reasons. ### replyError = 'An error has occurred and has been logged.' replyNoCapability = 'You don\'t have the "%s" capability.' replySuccess = 'The operation succeeded.' replyIncorrectAuth = 'Your hostmasks don\'t match or your password is wrong.' replyNoUser = 'I can\'t find that user in my database.' replyNotRegistered = 'You must be registered to use this command.' replyInvalidArgument = 'I can\'t send \\r, \\n, or \\0 (\\x00).' replyRequiresPrivacy = 'That can\'t be done in a channel.' replyEvalNotAllowed = 'You must enable conf.allowEval for that to work.' replyPossibleBug = 'This may be a bug. If you think it is, please file a bug '\ 'report at ' ### # errorReplyPrivate: True if errors should be reported privately so as not to # bother the channel. ### errorReplyPrivate = False ### # telnetEnable: A boolean saying whether or not to enable the telnet REPL. # This will allow a user with the 'owner' capability to telnet # into the bot and see how it's working internally. A lifesaver # for development. ### telnetEnable = False telnetPort = 31337 ### # poll: the length of a polling term. # If asyncore drivers are all you're using, feel free to make # this arbitrarily large -- be warned, however, that all other # drivers are just sitting around while asyncore waits during # this poll period (including the schedule). It'll take more # CPU, but you probably don't want to set this more than 0.01 # when you've got non-asyncore drivers to worry about. ### poll = 1 ### # maxHistory: Maximum number of messages kept in an Irc object's state. ### maxHistory = 1000 ### # pingInterval: Number of seconds between PINGs to the server. # 0 means not to ping the server. ### pingInterval = 120 ### # nickmods: List of ways to 'spice up' a nick so the bot doesn't run out of # nicks if all his normal ones are taken. ### nickmods = ['%s^', '^%s^', '__%s__', '%s_', '%s__', '__%s', '^^%s^^', '{%s}', '[%s]', '][%s][', '}{%s}{', '}{}%s', '^_^%s', '%s^_^', '^_^%s^_^'] ### # defaultAllow: Are commands allowed by default? ### defaultAllow = True ### # defaultIgnore: True if users should be ignored by default. # It's a really easy way to make sure that people who want to # talk to the bot register first. (Of course, they can't # register if they're ignored. We'll work on that.) ### defaultIgnore = False ### # ignores: Hostmasks to ignore. ### ignores = [] ### # prefixChars: A string of chars that are valid prefixes to address the bot. ### prefixChars = '@' ### # validPrefixChars: A string of chars that are allowed to be used as # prefixChars. ### validPrefixChars = '`~!@#$%^&*()_-+=[{}]\\|\'";:,<.>/?' ### # detailedTracebacks: A boolean describing whether or not the bot will give # *extremely* detailed tracebacks. Be cautioned, this eats # a lot of log file space. ### detailedTracebacks = True ### # driverModule: A string that is the module where the default driver for the # bot will be found. ### driverModule = 'socketDrivers' #driverModule = 'asyncoreDrivers' #driverModule = 'twistedDrivers' ############################### ############################### ############################### # DO NOT EDIT PAST THIS POINT # ############################### ############################### ############################### version ='0.75.0' commandsOnStart = [] # This is a dictionary mapping names to converter functions for use in the # Owner.setconf command. def mybool(s): """Converts a string read from the user into a bool, fuzzily.""" if s.capitalize() == 'False' or s == '0': return False elif s.capitalize() == 'True' or s == '1': return True else: raise ValueError, 'invalid literal for mybool()' def mystr(s): """Converts a string read from the user into a real string.""" while s and s[0] in "'\"" and s[0] == s[-1]: s = s[1:-1] return s types = { 'logDir': mystr, 'confDir': mystr, 'dataDir': mystr, #'pluginDirs': (list, str), 'userfile': mystr, 'channelfile': mystr, 'logTimestampFormat': mystr, 'humanTimestampFormat': mystr, 'throttleTime': float, 'snarfThrottle': float, #'allowEval': mybool, 'replyWhenNotCommand': mybool, 'replyWithPrivateNotice': mybool, 'requireRegistration': mybool, 'enablePipeSyntax': mybool, 'replyError': mystr, 'replyNoCapability': mystr, 'replySuccess': mystr, 'replyIncorrectAuth': mystr, 'replyNoUser': mystr, 'replyNotRegistered': mystr, 'replyInvalidArgument': mystr, 'replyRequiresPrivacy': mystr, 'replyEvalNotAllowed': mystr, 'errorReplyPrivate': mybool, #'telnetEnable': mybool, #'telnetPort': int, 'poll': float, #'maxHistory': int, 'pingInterval': float, #'nickmods': (list, str), 'defaultAllow': mybool, 'defaultIgnore': mybool, #'ignores': (list, str), 'prefixChars': mystr, 'detailedTracebacks': mybool, 'driverModule': mystr, 'showOnlySyntax': mybool, } if os.name == 'nt': colorizedStdoutLogging = False # vim:set shiftwidth=4 tabstop=8 expandtab textwidth=78: