#!/usr/bin/python import re, os class Cannon(object): def __init__(self): self.firecount={} def onRecv(self, IRC, line, data): if data==None: return (origin, ident, host, cmd, target, params, extinfo)=data if len(target) and target[0]=="#" and cmd=="PRIVMSG": channel=IRC.channel(target) matches=re.findall("^!fire\\s+(.*)$",extinfo) if matches: nickname=matches[0] if any([nickname.lower()==user.nick.lower() for user in channel.users]): user=IRC.user(nickname) if user in self.firecount.keys(): count=self.firecount[user]+1 else: count=1 self.firecount[user]=count if 10<=count%100<20: ordinal="th" elif count%10==1: ordinal="st" elif count%10==2: ordinal="nd" elif count%10==3: ordinal="rd" else: ordinal="th" channel.me("fires %s out of a cannon for the %d%s time."%(user.nick, count, ordinal)) else: channel.msg("%s: I cannot fire %s out of a cannon, as he or she is not here."%(origin, nickname))