summaryrefslogtreecommitdiff
path: root/cannon.py
blob: 55d9f00e5ab363059cf02d4c3ce8af8386e43971 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#!/usr/bin/python

import re
import os


class Cannon(object):
    def __init__(self):
        self.firecount = {}

    def onRecv(self, IRC, line, data):
        if data is 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))