### # Copyright (c) 2010, quantumlemur # Copyright (c) 2020, oddluck # 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. ### import supybot.conf as conf import supybot.registry as registry def configure(advanced): # This will be called by supybot to configure this module. advanced is # a bool that specifies whether the user identified himself as an advanced # user or not. You should effect your configuration by manipulating the # registry as appropriate. from supybot.questions import expect, anything, something, yn conf.registerPlugin("TimeBomb", True) TimeBomb = conf.registerPlugin("TimeBomb") # This is where your configuration variables (if any) should go. For example: # conf.registerGlobalValue(TimeBomb, 'someConfigVariableName', # registry.Boolean(False, """Help for someConfigVariableName.""")) conf.registerGlobalValue( TimeBomb, "colors", registry.SpaceSeparatedListOfStrings( [ "AliceBlue", "AntiqueWhite", "Aqua", "Aquamarine", "Azure", "Beige", "Bisque", "Black", "BlanchedAlmond", "Blue", "BlueViolet", "Brown", "BurlyWood", "CadetBlue", "Chartreuse", "Chocolate", "Coral", "CornflowerBlue", "Cornsilk", "Crimson", "Cyan", "DarkBlue", "DarkCyan", "DarkGoldenRod", "DarkGray", "DarkGreen", "DarkKhaki", "DarkMagenta", "DarkOliveGreen", "DarkOrange", "DarkOrchid", "DarkRed", "DarkSalmon", "DarkSeaGreen", "DarkSlateBlue", "DarkSlateGray", "DarkTurquoise", "DarkViolet", "DeepPink", "DeepSkyBlue", "DimGray", "DodgerBlue", "FireBrick", "FloralWhite", "ForestGreen", "Fuchsia", "Gainsboro", "GhostWhite", "Gold", "GoldenRod", "Gray", "Green", "GreenYellow", "HoneyDew", "HotPink", "IndianRed", "Indigo", "Ivory", "Khaki", "Lavender", "LavenderBlush", "LawnGreen", "LemonChiffon", "LightBlue", "LightCoral", "LightCyan", "LightGoldenRodYellow", "LightGrey", "LightGreen", "LightPink", "LightSalmon", "LightSeaGreen", "LightSkyBlue", "LightSlateGray", "LightSteelBlue", "LightYellow", "Lime", "LimeGreen", "Linen", "Magenta", "Maroon", "MediumAquaMarine", "MediumBlue", "MediumOrchid", "MediumPurple", "MediumSeaGreen", "MediumSlateBlue", "MediumSpringGreen", "MediumTurquoise", "MediumVioletRed", "MidnightBlue", "MintCream", "MistyRose", "Moccasin", "NavajoWhite", "Navy", "OldLace", "Olive", "OliveDrab", "Orange", "OrangeRed", "Orchid", "PaleGoldenRod", "PaleGreen", "PaleTurquoise", "PaleVioletRed", "PapayaWhip", "PeachPuff", "Peru", "Pink", "Plum", "PowderBlue", "Purple", "Red", "RosyBrown", "RoyalBlue", "SaddleBrown", "Salmon", "SandyBrown", "SeaGreen", "SeaShell", "Sienna", "Silver", "SkyBlue", "SlateBlue", "SlateGray", "Snow", "SpringGreen", "SteelBlue", "Tan", "Teal", "Thistle", "Tomato", "Turquoise", "Violet", "Wheat", "White", "WhiteSmoke", "Yellow", "YellowGreen", ], """The set of possible timebomb wire colors""", ), ) conf.registerGlobalValue( TimeBomb, "shortcolors", registry.SpaceSeparatedListOfStrings( [ "red", "orange", "yellow", "green", "blue", "purple", "pink", "black", "brown", "gray", "white", ], """The set of possible timebomb wire colors when there are few wires""", ), ) conf.registerChannelValue( TimeBomb, "randomExclusions", registry.SpaceSeparatedListOfStrings( [], """A list of nicks who should be excluded from being randombombed""", ), ) conf.registerChannelValue( TimeBomb, "exclusions", registry.SpaceSeparatedListOfStrings( [], """A list of nicks who should be completely excluded from being bombed""", ), ) conf.registerChannelValue( TimeBomb, "allowBombs", registry.Boolean( False, """Determines whether timebombs are allowed in the channel.""", ), ) conf.registerChannelValue( TimeBomb, "bombHistory", registry.SpaceSeparatedListOfStrings( [], """Timestamps, senders and victims for previous bombs in the channel""" ), ) conf.registerChannelValue( TimeBomb, "rateLimitTime", registry.Integer( 1800, """Time in seconds for which previous bombs are remembered and count towards the rate limit""", ), ) conf.registerChannelValue( TimeBomb, "rateLimitSender", registry.Float( 5.0, """Mean bombs/hour allowed in the past rateLimitTime from each host""" ), ) conf.registerChannelValue( TimeBomb, "rateLimitVictim", registry.Float( 3.0, """Mean bombs/hour allowed in the past rateLimitTime targeting a particular nick""", ), ) conf.registerChannelValue( TimeBomb, "rateLimitTotal", registry.Float(9.0, """Total mean bombs/hour allowed in the past rateLimitTime"""), ) conf.registerChannelValue( TimeBomb, "minWires", registry.PositiveInteger( 2, """Determines the minimum number of wires a timebomb will have.""", ), ) conf.registerChannelValue( TimeBomb, "maxWires", registry.PositiveInteger( 4, """Determines the maximum number of wires a timebomb will have.""", ), ) conf.registerChannelValue( TimeBomb, "minTime", registry.PositiveInteger( 45, """Determines the minimum time of a timebomb timer, in seconds.""", ), ) conf.registerChannelValue( TimeBomb, "maxTime", registry.PositiveInteger( 70, """Determines the maximum time of a timebomb timer, in seconds.""", ), ) conf.registerChannelValue( TimeBomb, "minRandombombTime", registry.PositiveInteger( 60, """Determines the minimum time of a randombomb timer, which should in general be greater than the minimum targeted bomb time, to allow someone who's not paying attention to respond.""", ), ) conf.registerChannelValue( TimeBomb, "maxRandombombTime", registry.PositiveInteger( 120, """Determines the maximum time of a randombomb timer, which should in general be greater than the maxiumum targeted bomb time, to allow someone who's not paying attention to respond.""", ), ) conf.registerChannelValue( TimeBomb, "showArt", registry.Boolean( False, """Determines whether an ASCII art bomb should be shown on detonation, or a simple message.""", ), ) conf.registerChannelValue( TimeBomb, "bombActiveUsers", registry.Boolean( True, """Determines whether only active users should be randombombed""", ), ) conf.registerChannelValue( TimeBomb, "joinIsActivity", registry.Boolean( False, """Determines whether channel joins should count as activity for randombombs""", ), ) conf.registerChannelValue( TimeBomb, "allowSelfBombs", registry.Boolean(False, """Allow the bot to bomb itself?"""), ) conf.registerChannelValue( TimeBomb, "idleTime", registry.PositiveInteger( 30, """The number of minutes before someone is counted as idle for randombombs, if idle-checking is enabled.""", ), ) conf.registerChannelValue( TimeBomb, "showCorrectWire", registry.Boolean( False, """Determines whether the correct wire will be shown when a bomb detonates.""", ), ) conf.registerGlobalValue( TimeBomb, "debug", registry.Boolean( False, """Determines whether debugging info will be shown.""", ), ) # vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79: