1
# Description: tracks when a nick is last seen
2
# Author: Wijnand 'tehmaze' Modderman
3
# Website: http://tehmaze.com
6
from gozerbot.callbacks import callbacks
7
from gozerbot.commands import cmnds
8
from gozerbot.datadir import datadir
9
from gozerbot.pdod import Pdod
10
from gozerbot.persistconfig import PersistConfig
14
cfg.define('tz', '+0100')
18
Pdod.__init__(self, os.path.join(datadir, 'seen'))
20
def handle_seen(self, bot, ievent):
22
ievent.missing('<nick>')
24
nick = ievent.args[0].lower()
25
if not self.data.has_key(nick):
26
alts = [x for x in self.data.keys() if nick in x]
31
alts = ', '.join(alts[:10]) + ' + %d others' % nums
33
alts = ', '.join(alts)
34
ievent.reply('no logs for %s, however, I remember seeing: %s' % (nick, alts))
36
ievent.reply('no logs for %s' % nick)
38
text = self.data[nick]['text'] and ': %s' % self.data[nick]['text'] or ''
39
ievent.reply('%s was last seen on %s at %s, %s%s' % (nick, self.data[nick]['bot'],
40
self.data[nick]['time'].strftime('%a, %d %b %Y %H:%M:%S '+cfg.get('tz')),
41
self.data[nick]['what'], text))
43
def privmsgcb(self, bot, ievent):
44
self.data[ievent.nick.lower()] = {
45
'time': datetime.datetime.now(),
46
'text': ievent.origtxt,
48
'channel': ievent.channel,
52
def joincb(self, bot, ievent):
53
self.data[ievent.nick.lower()] = {
54
'time': datetime.datetime.now(),
57
'channel': ievent.channel,
58
'what': 'joining %s' % ievent.channel,
61
def partcb(self, bot, ievent):
62
self.data[ievent.nick.lower()] = {
63
'time': datetime.datetime.now(),
66
'channel': ievent.channel,
67
'what': 'parting %s' % ievent.channel,
70
def quitcb(self, bot, ievent):
71
self.data[ievent.nick.lower()] = {
72
'time': datetime.datetime.now(),
75
'channel': ievent.channel,
81
return len(self.data.keys())
86
callbacks.add('PRIVMSG', seen.privmsgcb)
87
callbacks.add('JOIN', seen.joincb)
88
callbacks.add('PART', seen.partcb)
89
callbacks.add('QUIT', seen.quitcb)
90
cmnds.add('seen', seen.handle_seen, ['ANON', 'USER'])