rendered paste bodyfrom Modules.Handlers import BaseHandler, onEventfrom Modules import Eventsimport random, reclass RPG(BaseHandler): dice = re.compile('[0-9]*d[0-9]+') letter = re.compile('[a-zA-Z]') @onEvent(Events.MessageEvent) def handleMessage(self, proto, event): if event.dest[0] != '#': event.dest = event.src cmd = event.msg.split(' ') if cmd[0] == '^roll': event = Events.MessageEvent(None, event.dest, []) for expr in ' '.join(cmd[1:]).split(','): for dice in self.dice.findall(expr): num, sides = dice.split('d', 1) if num == '': num = 1 num, sides = int(num), int(sides) total = 0 for i in range(num): total += random.randrange(1, sides+1) expr = expr.replace(dice, str(total)) try: if self.letter.search(expr): raise Exception event.msg.append(str(eval(expr))) except: event.msg.append('error') event.msg = ', '.join(event.msg) proto.sendEvent(event) elif cmd[0] == '^dice': event = Events.MessageEvent(None, event.dest, []) for dice in ' '.join(cmd[1:]).split(','): num, sides = dice.split('d', 1) num, sides = int(num), int(sides) total = [] for i in range(num): total.append(str(random.randrange(1, sides+1))) event.msg.append(' '.join(total)) event.msg = ', '.join(event.msg) proto.sendEvent(event) def reload(self): try: import Modules mod = reload(Modules.Handlers.RPG_) newself = mod.RPG() return newself except: import traceback traceback.print_exc() return self