forked from errbotio/err-stalkerbot
-
Notifications
You must be signed in to change notification settings - Fork 0
/
stalkerBot.py
54 lines (44 loc) · 1.54 KB
/
stalkerBot.py
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
from errbot.utils import format_timedelta
from datetime import datetime
from errbot import botcmd, BotPlugin
import logging
log = logging.getLogger(__name__)
class StalkerBot(BotPlugin):
def activate(self):
super(StalkerBot, self).activate()
if 'presence' not in self:
self['presence'] = {}
def callback_message(self, mess):
message = mess.body
if not message:
return
username = mess.frm.nick
log.debug("Recording presence of %s", username)
presence = self['presence']
presence[username] = {
'time': datetime.now(),
'msg': message,
}
self['presence'] = presence
@botcmd
def seen(self, mess, args):
""" find out when someone last said something """
requester = mess.frm.nick
username = str(args)
presence = self['presence']
log.debug('{0} looking for {1}'.format(requester, username))
if username == requester:
return 'I can see you now'
if username == '':
return 'Hmm... seen whom?'
try:
last_seen = presence[username]['time']
last_msg = presence[username]['msg']
return 'I last saw {0} {1} ago (on {2}) which said "{3}"'.format(
username,
format_timedelta(datetime.now() - last_seen),
datetime.strftime(last_seen, '%A, %b %d at %H:%M'),
last_msg
)
except KeyError:
return 'I have no record of %s' % args