Completed
Push — master ( 129bae...54f276 )
by Matt
01:05
created

Seen.post_init()   A

Complexity

Conditions 3

Size

Total Lines 9

Duplication

Lines 0
Ratio 0 %
Metric Value
cc 3
dl 0
loc 9
rs 9.6666
1
from event import Event
2
from util import __prettyDate as prettydate
3
from util import strip_nick
4
from datetime import datetime
5
6
class UserHistory():
7
  def __init__(self, user=None, timestamp=None):
8
    self.user = user
9
    self.timestamp = timestamp
10
11
try:
12
  from basemodule import BaseModule
13
except ImportError:
14
  from modules.basemodule import BaseModule
15
16
class Seen(BaseModule):
17
  def mem_store_init(self):
18
    if not "seen" in self.bot.mem_store:
19
      self.bot.mem_store['seen'] = dict()
20
21
  def post_init(self):
22
    self.interests = ['__privmsg__']  # should be first event in the listing.. so lines being added is a priority
23
    for event in self.events:
24
      if event._type in self.interests:
25
        event.subscribe(self)
26
27
    self.help = ".seen <nickname>. describes when the bot last saw <nickname> active in channel"  
28
29
    self.mem_store_init()
30
    
31
  def handle(self, event):
32
    self.mem_store_init()
33
34
    if event.msg.startswith(".seen"):
35
      try:
36
        nick = strip_nick(event.msg.split()[1].lower()) # store all nicks in lowercase
37
      except IndexError:
38
        return
39
      if nick in (n.lower() for n in self.bot.mem_store['seen']):
40
        self.say(event.channel, "Last saw " + nick + " " + prettydate(self.bot.mem_store['seen'][nick]))
41
      else:
42
        self.say(event.channel, "haven't seen " + nick)
43
44
    self.bot.mem_store['seen'][strip_nick(event.user).lower()] = datetime.now()
45
46