diff options
Diffstat (limited to 'cannon.py')
-rw-r--r-- | cannon.py | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/cannon.py b/cannon.py new file mode 100644 index 0000000..3af725e --- /dev/null +++ b/cannon.py @@ -0,0 +1,30 @@ +#!/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)) |