Completed
Push — master ( 3fb799...a93322 )
by Matt
01:03
created

Seen.handle()   A

Complexity

Conditions 4

Size

Total Lines 14

Duplication

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