-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathseen.rb
79 lines (71 loc) · 1.73 KB
/
seen.rb
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#!/usr/local/bin/ruby
require 'cinch'
require 'date'
require 'time'
require 'yaml'
class Seen
include Cinch::Plugin
@help="!seen"
match(/(.+)/,{:use_prefix => false})
def initialize(*args)
super
curdir = File.dirname(__FILE__);
@last=YAML.load_file( "#{curdir}/seen.yaml")
puts "@last is #{@last}"
if(@last==nil)
@last={}
end
end
def time_in_words(minutes)
case
when minutes < 1
"less than a minute"
when minutes < 50
if minutes > 1
"#{minutes} minutes"
else
"#{minutes} minute"
end
when minutes < 90
"about one hour"
when minutes < 1080
"#{(minutes / 60).round} hours"
when minutes < 1440
"one day"
when minutes < 2880
"about one day"
else
"#{(minutes / 1440).round} days"
end
end
def execute(m,arg)
if(m.bot.nick != "homebrewbot")
if(m.bot.user_list.find("homebrewbot"))
return 0
else
m.bot.nick="homebrewbot"
end
end
if( arg =~ /^!seen (.+)$/ )
curtime=Time.now()
if @last[$1.downcase] != nil
oldtime=Time.parse(@last[$1.downcase][0])
timediff=curtime-oldtime
# puts timediff
if timediff<60
timediff=0
else
timediff=(timediff/60).to_i
end
m.reply "#{$1} was last seen #{time_in_words(timediff)} ago saying: #{@last[$1.downcase][1]}"
else
m.reply "I haven't seen #{$1} since I last joined the channel"
end
else
@last[m.user.nick.downcase]=[Time.now.strftime("%Y-%m-%d %H:%M:%S"),arg]
File.open( 'seen.yaml', 'w' ) do |out|
YAML.dump( @last, out )
end
end
end
end