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

Seen   A

Complexity

Total Complexity 9

Size/Duplication

Total Lines 29
Duplicated Lines 0 %
Metric Value
dl 0
loc 29
rs 10
wmc 9

3 Methods

Rating   Name   Duplication   Size   Complexity  
A post_init() 0 9 3
A mem_store_init() 0 3 2
A handle() 0 14 4
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