Source code for pyircbot.modules.GameBase

#!/usr/bin/env python
"""
.. module:: GameBase
    :synopsis: A codebase for making IRC games

.. moduleauthor:: Dave Pedu <dave@davepedu.com>

"""

from pyircbot.modulebase import ModuleBase, ModuleHook


[docs]class GameBase(ModuleBase): def __init__(self, bot, moduleName): ModuleBase.__init__(self, bot, moduleName) self.hooks = [ModuleHook("PRIVMSG", self.gotMsg)] # Load attribute storage self.attr = self.bot.getBestModuleForService("attributes") # Load doge RPC self.doge = self.bot.getBestModuleForService("dogerpc") # Dict of #channel -> game object self.games = {}
[docs] def gotMsg(self, args, prefix, trailing): prefixObj = self.bot.decodePrefix(prefix) # Ignore messages from users not logged in if not self.attr.getKey(prefixObj.nick, "loggedinfrom"): # TODO Send them a hint? return else: if args[0][0] == "#": # create a blank game obj if there isn't one (and whitelisted ? ) if not args[0] in self.games and (not self.config["channelWhitelistOn"] or (self.config["channelWhitelistOn"] and args[0][1:] in self.config["channelWhitelist"])): self.games[args[0]] = gameObj(self, args[0]) # Channel message self.games[args[0]].gotMsg(args, prefix, trailing) else: # Private message # self.games[args[0]].gotPrivMsg(args, prefix, trailing) pass
[docs] def ondisable(self): self.log.info("GameBase: Unload requested, ending games...") for game in self.games: self.games[game].gameover()
[docs]class gameObj: def __init__(self, master, channel): self.master = master self.channel = channel
[docs] def gotPrivMsg(self, args, prefix, trailing): prefix = self.master.bot.decodePrefix(prefix) pass
[docs] def gotMsg(self, args, prefix, trailing): prefix = self.master.bot.decodePrefix(prefix) pass
# senderIsOp = self.master.attr.getKey(prefix.nick, "op")=="yes"
[docs] def gameover(self): pass
[docs]class playerObj: def __init__(self, game, nick): self.game = game self.nick = nick