convert to/standardize docstrings a bit.
this got boring fast, so it's only half done
This commit is contained in:
		
							parent
							
								
									247719814e
								
							
						
					
					
						commit
						acca8723b3
					
				| @ -24,13 +24,11 @@ from extlib import irclib | ||||
| from Module import Module | ||||
| 
 | ||||
| class Alias(Module): | ||||
|     """ | ||||
|     Allows for commands to be aliased as !command, circumventing bot addressing stuff. | ||||
|     """ | ||||
| 
 | ||||
|     """Alias commands as !command, circumventing bot addressing stuff.""" | ||||
| 
 | ||||
|     def do(self, connection, event, nick, userhost, replypath, what, admin_unlocked): | ||||
|         """ | ||||
|         See if there is an alias ("!command") in the text, and if so, translate it into | ||||
|         """See if there is an alias ("!command") in the text, and if so, translate it into | ||||
|         an internal bot command and run it. | ||||
|         """ | ||||
| 
 | ||||
| @ -99,8 +97,8 @@ class Alias(Module): | ||||
|         except NoSectionError: pass | ||||
| 
 | ||||
|     def try_recursion(self, connection, event, nick, userhost, replypath, what, admin_unlocked): | ||||
|         """ | ||||
|         Scan message for subcommands to execute and use as part of this command. | ||||
|         """Scan message for subcommands to execute and use as part of this command. | ||||
| 
 | ||||
|         Upon seeing a line intended for this module, see if there are subcommands | ||||
|         that we should do what is basically a text replacement on. The intent is to | ||||
|         allow things like the following: | ||||
|  | ||||
| @ -1,18 +1,20 @@ | ||||
| # Countdown - track and display time until events | ||||
| # Copyright (C) 2010  Brian S. Stephan | ||||
| # | ||||
| # This program is free software: you can redistribute it and/or modify | ||||
| # it under the terms of the GNU General Public License as published by | ||||
| # the Free Software Foundation, either version 3 of the License, or | ||||
| # (at your option) any later version. | ||||
| # | ||||
| # This program is distributed in the hope that it will be useful, | ||||
| # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
| # GNU General Public License for more details. | ||||
| # | ||||
| # You should have received a copy of the GNU General Public License | ||||
| # along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||
| """ | ||||
| Countdown - track and display time until events | ||||
| Copyright (C) 2010  Brian S. Stephan | ||||
| 
 | ||||
| This program is free software: you can redistribute it and/or modify | ||||
| it under the terms of the GNU General Public License as published by | ||||
| the Free Software Foundation, either version 3 of the License, or | ||||
| (at your option) any later version. | ||||
| 
 | ||||
| This program is distributed in the hope that it will be useful, | ||||
| but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
| GNU General Public License for more details. | ||||
| 
 | ||||
| You should have received a copy of the GNU General Public License | ||||
| along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||
| """ | ||||
| 
 | ||||
| from ConfigParser import NoOptionError, NoSectionError | ||||
| from datetime import datetime | ||||
| @ -24,11 +26,13 @@ from extlib import irclib | ||||
| 
 | ||||
| from Module import Module | ||||
| 
 | ||||
| # Class that adds a countdown item to the bot | ||||
| 
 | ||||
| class Countdown(Module): | ||||
| 
 | ||||
|     """Class that adds a countdown item to the bot.""" | ||||
| 
 | ||||
|     def do(self, connection, event, nick, userhost, replypath, what, admin_unlocked): | ||||
|         """Add/retrieve countdown items.""" | ||||
| 
 | ||||
|         whats = what.split(' ') | ||||
|         if whats[0] == 'countdown' and len(whats) >= 2: | ||||
|             if whats[1] == 'add' and len(whats) >= 4: | ||||
|  | ||||
| @ -1,18 +1,20 @@ | ||||
| # Dice - roll dice when asked, intended for RPGs | ||||
| # Copyright (C) 2010  Brian S. Stephan | ||||
| # | ||||
| # This program is free software: you can redistribute it and/or modify | ||||
| # it under the terms of the GNU General Public License as published by | ||||
| # the Free Software Foundation, either version 3 of the License, or | ||||
| # (at your option) any later version. | ||||
| # | ||||
| # This program is distributed in the hope that it will be useful, | ||||
| # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
| # GNU General Public License for more details. | ||||
| # | ||||
| # You should have received a copy of the GNU General Public License | ||||
| # along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||
| """ | ||||
| Dice - roll dice when asked, intended for RPGs | ||||
| Copyright (C) 2010  Brian S. Stephan | ||||
| 
 | ||||
| This program is free software: you can redistribute it and/or modify | ||||
| it under the terms of the GNU General Public License as published by | ||||
| the Free Software Foundation, either version 3 of the License, or | ||||
| (at your option) any later version. | ||||
| 
 | ||||
| This program is distributed in the hope that it will be useful, | ||||
| but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
| GNU General Public License for more details. | ||||
| 
 | ||||
| You should have received a copy of the GNU General Public License | ||||
| along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||
| """ | ||||
| 
 | ||||
| import math | ||||
| import re | ||||
| @ -25,10 +27,10 @@ from Module import Module | ||||
| import ply.lex as lex | ||||
| import ply.yacc as yacc | ||||
| 
 | ||||
| # Rolls dice, for RPGs mostly | ||||
| 
 | ||||
| class Dice(Module): | ||||
| 
 | ||||
|     """Roll simple or complex dice strings.""" | ||||
| 
 | ||||
|     tokens = ['NUMBER', 'TEXT'] | ||||
|     literals = ['#', '/', '+', '-', 'd', ';'] | ||||
| 
 | ||||
| @ -56,9 +58,11 @@ class Dice(Module): | ||||
| 
 | ||||
|     output = "" | ||||
| 
 | ||||
|     # Takes the parsed dice string for a single roll (eg 3/4d20) and performs | ||||
|     # the actual roll. Returns a string representing the result | ||||
|     def roll_dice(self, keep, dice, size): | ||||
|         """Takes the parsed dice string for a single roll (eg 3/4d20) and performs | ||||
|         the actual roll. Returns a string representing the result. | ||||
|         """ | ||||
| 
 | ||||
|         a = range(dice) | ||||
|         for i in range(dice): | ||||
|             a[i] = random.randint(1, size) | ||||
| @ -82,10 +86,14 @@ class Dice(Module): | ||||
|          | ||||
|         return (total, outstr) | ||||
| 
 | ||||
|     # Processes rolls coming from the parser. This generates the inputs | ||||
|     # for the roll_dice() command, and returns the full string representing | ||||
|     # the whole current dice string (the part up to a semicolon or end of line) | ||||
|     def process_roll(self, trials, mods, comment): | ||||
|         """Processes rolls coming from the parser. | ||||
| 
 | ||||
|         This generates the inputs for the roll_dice() command, and returns | ||||
|         the full string representing the whole current dice string (the part | ||||
|         up to a semicolon or end of line). | ||||
|         """ | ||||
| 
 | ||||
|         output = "" | ||||
|         repeat = 1 | ||||
|         if trials != None: | ||||
| @ -129,18 +137,22 @@ class Dice(Module): | ||||
|             output = "%s: %s" % (comment.strip(), output) | ||||
|         return output | ||||
| 
 | ||||
|     # General idea I had when creating this grammar: A roll string is a chain | ||||
|     # of modifiers, which may be repeated for a certain number of trials. It can | ||||
|     # have a comment that describes the roll | ||||
|     # Multiple roll strings can be chained with semicolon | ||||
|     def p_roll_r(self, p): | ||||
|         """Chain rolls together.""" | ||||
| 
 | ||||
|         # General idea I had when creating this grammar: A roll string is a chain | ||||
|         # of modifiers, which may be repeated for a certain number of trials. It can | ||||
|         # have a comment that describes the roll | ||||
|         # Multiple roll strings can be chained with semicolon | ||||
| 
 | ||||
|         'roll : roll ";" roll' | ||||
|         global output | ||||
|         p[0] = p[1] + "; " + p[3] | ||||
|         output = p[0] | ||||
| 
 | ||||
|     # The basic roll string | ||||
|     def p_roll(self, p): | ||||
|         """Parse a basic roll string.""" | ||||
| 
 | ||||
|         'roll : trial modifier comment' | ||||
|         global output | ||||
|         mods = [] | ||||
| @ -151,8 +163,9 @@ class Dice(Module): | ||||
|         p[0] = self.process_roll(p[1], mods, p[3]) | ||||
|         output = p[0] | ||||
| 
 | ||||
|     # Trial is optional so have a rule without it | ||||
|     def p_roll_no_trials(self, p): | ||||
|         """Parse a roll string without trials.""" | ||||
| 
 | ||||
|         'roll : modifier comment' | ||||
|         global output | ||||
|         mods = [] | ||||
| @ -164,6 +177,8 @@ class Dice(Module): | ||||
|         output = p[0] | ||||
| 
 | ||||
|     def p_comment(self, p): | ||||
|         """Parse a comment.""" | ||||
| 
 | ||||
|         '''comment : TEXT | ||||
|                    |''' | ||||
|         if len(p) == 2: | ||||
| @ -172,6 +187,8 @@ class Dice(Module): | ||||
|             p[0] = None | ||||
| 
 | ||||
|     def p_modifier(self, p): | ||||
|         """Parse a modifier on a roll string.""" | ||||
| 
 | ||||
|         '''modifier : modifier "+" modifier | ||||
|                     | modifier "-" modifier''' | ||||
|         # Use append to prevent nested lists (makes dealing with this easier) | ||||
| @ -186,8 +203,9 @@ class Dice(Module): | ||||
|         else: | ||||
|             p[0] = [p[1], p[2], p[3]] | ||||
| 
 | ||||
|     # Return the left side before the "d", and the number of faces | ||||
|     def p_die(self, p): | ||||
|         """Return the left side before the "d", and the number of faces.""" | ||||
| 
 | ||||
|         'modifier : left NUMBER' | ||||
|         p[0] = (p[1], p[2]) | ||||
| 
 | ||||
| @ -195,8 +213,8 @@ class Dice(Module): | ||||
|         'modifier : NUMBER' | ||||
|         p[0] = p[1] | ||||
| 
 | ||||
|     # left is the number of dice we are rolling, and how many we are keeping | ||||
|     def p_left(self, p): | ||||
|         """Parse the number of dice we are rolling, and how many we are keeping.""" | ||||
|         'left : keep dice' | ||||
|         if p[1] == None: | ||||
|             p[0] = [None, p[2]] | ||||
| @ -233,8 +251,8 @@ class Dice(Module): | ||||
|         'dice : "d"' | ||||
|         p[0] = 1 | ||||
| 
 | ||||
|     # Provide the user with something (albeit not much) when the roll can't be parsed | ||||
|     def p_error(self, p): | ||||
|         """Provide the user with something (albeit not much) when the roll can't be parsed.""" | ||||
|         global output | ||||
|         output = "Unable to parse roll" | ||||
| 
 | ||||
|  | ||||
| @ -21,11 +21,12 @@ from extlib import irclib | ||||
| from Module import Module | ||||
| 
 | ||||
| class Echo(Module): | ||||
|     """ | ||||
|     Repeat provided text, for random internal use, mostly. | ||||
|     """ | ||||
| 
 | ||||
|     """Repeat provided text.""" | ||||
| 
 | ||||
|     def do(self, connection, event, nick, userhost, replypath, what, admin_unlocked): | ||||
|         """Repeat provided text.""" | ||||
| 
 | ||||
|         whats = what.split(' ') | ||||
|         if whats[0] == 'echo' and len(whats) >= 2: | ||||
|             return self.reply(connection, replypath, ' '.join(whats[1:])) | ||||
|  | ||||
| @ -23,6 +23,7 @@ from extlib import irclib | ||||
| from Module import Module | ||||
| 
 | ||||
| class EightBall(Module): | ||||
| 
 | ||||
|     """Return a random answer when asked a question.""" | ||||
| 
 | ||||
|     def __init__(self, config, server, modlist): | ||||
|  | ||||
| @ -1,18 +1,20 @@ | ||||
| # FactFile - display facts from a flat file upon request | ||||
| # Copyright (C) 2010  Brian S. Stephan | ||||
| # | ||||
| # This program is free software: you can redistribute it and/or modify | ||||
| # it under the terms of the GNU General Public License as published by | ||||
| # the Free Software Foundation, either version 3 of the License, or | ||||
| # (at your option) any later version. | ||||
| # | ||||
| # This program is distributed in the hope that it will be useful, | ||||
| # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
| # GNU General Public License for more details. | ||||
| # | ||||
| # You should have received a copy of the GNU General Public License | ||||
| # along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||
| """ | ||||
| FactFile - display facts from a flat file upon request | ||||
| Copyright (C) 2010  Brian S. Stephan | ||||
| 
 | ||||
| This program is free software: you can redistribute it and/or modify | ||||
| it under the terms of the GNU General Public License as published by | ||||
| the Free Software Foundation, either version 3 of the License, or | ||||
| (at your option) any later version. | ||||
| 
 | ||||
| This program is distributed in the hope that it will be useful, | ||||
| but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
| GNU General Public License for more details. | ||||
| 
 | ||||
| You should have received a copy of the GNU General Public License | ||||
| along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||
| """ | ||||
| 
 | ||||
| from ConfigParser import NoOptionError | ||||
| import os | ||||
| @ -23,11 +25,13 @@ from extlib import irclib | ||||
| 
 | ||||
| from Module import Module | ||||
| 
 | ||||
| # Returns a random fact/quote/whatever from one or more files | ||||
| 
 | ||||
| class FactFile(Module): | ||||
| 
 | ||||
|     """Return a random fact/quote/whatever from one or more files.""" | ||||
| 
 | ||||
|     def do(self, connection, event, nick, userhost, replypath, what, admin_unlocked): | ||||
|         """Search for a fact, or return a random one.""" | ||||
| 
 | ||||
|         whats = what.split(' ') | ||||
|         try: | ||||
|             filename = self.config.get(self.__class__.__name__, whats[0]) | ||||
|  | ||||
| @ -25,15 +25,14 @@ from extlib import irclib | ||||
| from Module import Module | ||||
| 
 | ||||
| class Facts(Module): | ||||
|     """ | ||||
|     Select a fact from the database. Facts are categorized by a name, | ||||
|     which may allow for random selection and so on. | ||||
| 
 | ||||
|     """Select a fact from the database. | ||||
| 
 | ||||
|     Facts are categorized by a name, which may allow for random selection and so on. | ||||
|     """ | ||||
| 
 | ||||
|     def db_init(self): | ||||
|         """ | ||||
|         Initialize database tables. | ||||
|         """ | ||||
|         """Initialize database tables.""" | ||||
| 
 | ||||
|         # init the database if module isn't registered | ||||
|         version = self.db_module_registered(self.__class__.__name__) | ||||
| @ -58,6 +57,8 @@ class Facts(Module): | ||||
|                 raise | ||||
| 
 | ||||
|     def do(self, connection, event, nick, userhost, replypath, what, admin_unlocked): | ||||
|         """Add or retrieve a fact from the database.""" | ||||
| 
 | ||||
|         whats = what.split(' ') | ||||
| 
 | ||||
|         if whats[0] == 'facts' and len(whats) >= 2: | ||||
|  | ||||
| @ -1,18 +1,20 @@ | ||||
| # GoogleTranslate - go out to google and translate sentences | ||||
| # Copyright (C) 2010  Brian S. Stephan | ||||
| # | ||||
| # This program is free software: you can redistribute it and/or modify | ||||
| # it under the terms of the GNU General Public License as published by | ||||
| # the Free Software Foundation, either version 3 of the License, or | ||||
| # (at your option) any later version. | ||||
| # | ||||
| # This program is distributed in the hope that it will be useful, | ||||
| # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
| # GNU General Public License for more details. | ||||
| # | ||||
| # You should have received a copy of the GNU General Public License | ||||
| # along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||
| """ | ||||
| GoogleTranslate - go out to google and translate sentences | ||||
| Copyright (C) 2010  Brian S. Stephan | ||||
| 
 | ||||
| This program is free software: you can redistribute it and/or modify | ||||
| it under the terms of the GNU General Public License as published by | ||||
| the Free Software Foundation, either version 3 of the License, or | ||||
| (at your option) any later version. | ||||
| 
 | ||||
| This program is distributed in the hope that it will be useful, | ||||
| but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
| GNU General Public License for more details. | ||||
| 
 | ||||
| You should have received a copy of the GNU General Public License | ||||
| along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||
| """ | ||||
| 
 | ||||
| from urllib2 import urlopen | ||||
| from urllib import urlencode | ||||
| @ -21,13 +23,19 @@ from extlib import irclib | ||||
| 
 | ||||
| from Module import Module | ||||
| 
 | ||||
| # Class that translates text via Google Translate. | ||||
| # | ||||
| # http://code.google.com/apis/ajaxlanguage/documentation/ | ||||
| 
 | ||||
| class GoogleTranslate(Module): | ||||
| 
 | ||||
|     """Class that translates text via Google Translate. | ||||
| 
 | ||||
|     http://code.google.com/apis/ajaxlanguage/documentation/ | ||||
|     """ | ||||
| 
 | ||||
|     def do(self, connection, event, nick, userhost, replypath, what, admin_unlocked): | ||||
|         """Query Google for weather info. | ||||
| 
 | ||||
|         Leaves the input alone to let google make the best guess. | ||||
|         """ | ||||
| 
 | ||||
|         whats = what.split(' ') | ||||
|         if whats[0] == 'translate' and len(whats) >= 4: | ||||
|             fromlang = whats[1] | ||||
|  | ||||
| @ -1,18 +1,20 @@ | ||||
| # IrcAdmin - handle normal IRC functions one would expect | ||||
| # Copyright (C) 2010  Brian S. Stephan | ||||
| # | ||||
| # This program is free software: you can redistribute it and/or modify | ||||
| # it under the terms of the GNU General Public License as published by | ||||
| # the Free Software Foundation, either version 3 of the License, or | ||||
| # (at your option) any later version. | ||||
| # | ||||
| # This program is distributed in the hope that it will be useful, | ||||
| # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
| # GNU General Public License for more details. | ||||
| # | ||||
| # You should have received a copy of the GNU General Public License | ||||
| # along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||
| """ | ||||
| IrcAdmin - handle normal IRC functions one would expect | ||||
| Copyright (C) 2010  Brian S. Stephan | ||||
| 
 | ||||
| This program is free software: you can redistribute it and/or modify | ||||
| it under the terms of the GNU General Public License as published by | ||||
| the Free Software Foundation, either version 3 of the License, or | ||||
| (at your option) any later version. | ||||
| 
 | ||||
| This program is distributed in the hope that it will be useful, | ||||
| but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
| GNU General Public License for more details. | ||||
| 
 | ||||
| You should have received a copy of the GNU General Public License | ||||
| along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||
| """ | ||||
| 
 | ||||
| from ConfigParser import NoOptionError | ||||
| import signal | ||||
| @ -22,10 +24,10 @@ from extlib import irclib | ||||
| 
 | ||||
| from Module import Module | ||||
| 
 | ||||
| # All kinds of miscellaneous irc stuff | ||||
| 
 | ||||
| class IrcAdmin(Module): | ||||
| 
 | ||||
|     """Support miscellaneous IRC stuff --- joining channels, changing the nick, etc.""" | ||||
| 
 | ||||
|     def register_handlers(self, server): | ||||
|         server.add_global_handler('welcome', self.on_connect) | ||||
|         server.add_global_handler('pubmsg', self.on_pubmsg) | ||||
| @ -40,8 +42,7 @@ class IrcAdmin(Module): | ||||
|         self.server.remove_global_handler('privmsg', self.on_privmsg) | ||||
| 
 | ||||
|     def on_connect(self, connection, event): | ||||
|         """handler for when the bot has connected to IRC | ||||
|         """ | ||||
|         """Set up handlers when the bot has connected to IRC.""" | ||||
| 
 | ||||
|         # user modes | ||||
|         try: | ||||
| @ -160,8 +161,8 @@ class IrcAdmin(Module): | ||||
|         return self.reply(connection, replypath, replystr) | ||||
| 
 | ||||
|     def sub_load_module(self, connection, event, nick, userhost, replypath, what, admin_unlocked): | ||||
|         """ | ||||
|         Load a module (in both the python and dr.botzo sense) if not already loaded. | ||||
|         """Load a module (in both the python and dr.botzo sense) if not | ||||
|         already loaded. | ||||
|         """ | ||||
| 
 | ||||
|         whats = what.split(' ') | ||||
| @ -189,9 +190,7 @@ class IrcAdmin(Module): | ||||
|             return self.reply(connection, replypath, 'Module ' + modname + ' not found.') | ||||
| 
 | ||||
|     def sub_unload_module(self, connection, event, nick, userhost, replypath, what, admin_unlocked): | ||||
|         """ | ||||
|         Attempt to unload and del a module if it's loaded. | ||||
|         """ | ||||
|         """Attempt to unload and del a module if it's loaded.""" | ||||
| 
 | ||||
|         whats = what.split(' ') | ||||
|         modname = whats[1] | ||||
| @ -216,8 +215,8 @@ class IrcAdmin(Module): | ||||
|         return self.reply(connection, replypath, 'Module ' + modname + ' is not loaded.') | ||||
| 
 | ||||
|     def sub_reload_module(self, connection, event, nick, userhost, replypath, what, admin_unlocked): | ||||
|         """ | ||||
|         Attempt to reload a module, by removing it from memory and then re-initializing it. | ||||
|         """Attempt to reload a module, by removing it from memory and then | ||||
|         re-initializing it. | ||||
|         """ | ||||
| 
 | ||||
|         whats = what.split(' ') | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user