cinch-seen 0.0.2 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.travis.yml +4 -0
- data/README.md +6 -0
- data/Rakefile +6 -0
- data/cinch-seen.gemspec +11 -5
- data/lib/cinch/plugins/seen/seen.rb +27 -18
- data/lib/cinch/plugins/seen/version.rb +1 -1
- data/spec/cinch-seen_spec.rb +37 -0
- data/spec/spec_helper.rb +5 -0
- metadata +109 -23
data/.travis.yml
ADDED
data/README.md
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
# Cinch::Plugins::Seen
|
2
2
|
|
3
|
+
[](http://badge.fury.io/rb/cinch-seen)
|
4
|
+
[](https://gemnasium.com/bhaberer/cinch-seen)
|
5
|
+
[](https://travis-ci.org/bhaberer/cinch-seen)
|
6
|
+
[](https://coveralls.io/r/bhaberer/cinch-seen?branch=master)
|
7
|
+
[](https://codeclimate.com/github/bhaberer/cinch-seen)
|
8
|
+
|
3
9
|
Cinch Plugin to allow users to ask the bot when the last time it saw a given user was.
|
4
10
|
|
5
11
|
## Installation
|
data/Rakefile
CHANGED
data/cinch-seen.gemspec
CHANGED
@@ -16,10 +16,16 @@ Gem::Specification.new do |gem|
|
|
16
16
|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
17
17
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
18
18
|
gem.require_paths = ["lib"]
|
19
|
+
|
20
|
+
gem.add_development_dependency 'rake'
|
21
|
+
gem.add_development_dependency 'rspec'
|
22
|
+
gem.add_development_dependency 'coveralls'
|
19
23
|
|
20
|
-
gem.add_dependency 'cinch',
|
21
|
-
gem.add_dependency '
|
22
|
-
gem.add_dependency 'cinch-toolbox'
|
23
|
-
gem.add_dependency 'cinch-
|
24
|
-
gem.add_dependency '
|
24
|
+
gem.add_dependency 'cinch', '~> 2.0.5'
|
25
|
+
gem.add_dependency 'cinch-test', '~> 0.0.3'
|
26
|
+
gem.add_dependency 'cinch-toolbox', '~> 1.0.0'
|
27
|
+
gem.add_dependency 'cinch-cooldown', '~> 1.0.0'
|
28
|
+
gem.add_dependency 'time-lord', '~> 1.0.1'
|
29
|
+
gem.add_dependency 'cinch-storage', '~> 0.0.2'
|
30
|
+
gem.add_dependency 'cinch-cooldown', '~> 1.0.0'
|
25
31
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
|
+
require 'cinch'
|
2
3
|
require 'cinch-toolbox'
|
3
4
|
require 'cinch-storage'
|
4
5
|
require 'cinch-cooldown'
|
@@ -13,38 +14,46 @@ module Cinch::Plugins
|
|
13
14
|
self.help = "Use .seen <name> to see the last time that nick was active."
|
14
15
|
|
15
16
|
listen_to :channel
|
16
|
-
attr_accessor :storage
|
17
17
|
|
18
|
-
match /seen (
|
18
|
+
match /seen ([^\s]+)\z/
|
19
19
|
|
20
20
|
def initialize(*args)
|
21
21
|
super
|
22
22
|
@storage = CinchStorage.new(config[:filename] || 'yaml/seen.yml')
|
23
|
-
@storage.data
|
23
|
+
@storage.data ||= {}
|
24
24
|
end
|
25
25
|
|
26
26
|
def listen(m)
|
27
|
-
|
28
|
-
@storage.data[
|
29
|
-
|
30
|
-
|
31
|
-
@storage.save
|
32
|
-
end
|
27
|
+
channel = m.channel.name
|
28
|
+
@storage.data[channel] ||= Hash.new
|
29
|
+
@storage.data[channel][m.user.nick.downcase] = Time.now
|
30
|
+
@storage.synced_save(@bot)
|
33
31
|
end
|
34
32
|
|
35
33
|
def execute(m, nick)
|
36
|
-
if m
|
37
|
-
|
38
|
-
|
34
|
+
return if sent_via_pm?(m)
|
35
|
+
unless m.user.nick.downcase == nick.downcase
|
36
|
+
m.reply last_seen(m.channel.name, nick), true
|
39
37
|
end
|
38
|
+
end
|
40
39
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
40
|
+
private
|
41
|
+
|
42
|
+
def last_seen(channel, nick)
|
43
|
+
@storage.data[channel] ||= Hash.new
|
44
|
+
time = @storage.data[channel][nick.downcase]
|
45
|
+
|
46
|
+
if time.nil?
|
47
|
+
"I've never seen #{nick} before, sorry!"
|
48
|
+
else
|
49
|
+
"I last saw #{nick} #{time.ago.to_words}"
|
47
50
|
end
|
48
51
|
end
|
52
|
+
|
53
|
+
def sent_via_pm?(m)
|
54
|
+
return false unless m.channel.nil?
|
55
|
+
m.reply "You must use that command in the main channel."
|
56
|
+
true
|
57
|
+
end
|
49
58
|
end
|
50
59
|
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Cinch::Plugins::Seen do
|
4
|
+
|
5
|
+
include Cinch::Test
|
6
|
+
|
7
|
+
before(:each) do
|
8
|
+
@bot = make_bot(Cinch::Plugins::Seen, { :filename => '/dev/null' })
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'should allow users to see when users were last active' do
|
12
|
+
get_replies(make_message(@bot, 'hello, world!', { :nick => 'foo', :channel => '#bar' }))
|
13
|
+
sleep 1 # time-lord hack
|
14
|
+
msg = make_message(@bot, '!seen foo', { :nick => 'baz', :channel => '#bar' })
|
15
|
+
get_replies(msg).last.
|
16
|
+
should match(/baz: I last saw foo \d seconds? ago/)
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'should not respond to a users seen request for themselves' do
|
20
|
+
msg = make_message(@bot, '!seen foo', { :nick => 'foo', :channel => '#bar' })
|
21
|
+
get_replies(msg).
|
22
|
+
should be_empty
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'should inform users when a person has not been seen before' do
|
26
|
+
msg = make_message(@bot, '!seen foo', { :channel => '#bar' })
|
27
|
+
get_replies(msg).first.
|
28
|
+
should == "test: I've never seen foo before, sorry!"
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'should not let people make dumb jokes (or look for multiple people in one seen)' do
|
32
|
+
get_replies(make_message(@bot, '!seen your mom today', { :channel => '#bar' })).
|
33
|
+
should be_empty
|
34
|
+
get_replies(make_message(@bot, '!seen archer pam lana', { :channel => '#bar' })).
|
35
|
+
should be_empty
|
36
|
+
end
|
37
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cinch-seen
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 1.0.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,49 +9,49 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-07-01 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
|
-
name:
|
15
|
+
name: rake
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version:
|
22
|
-
type: :
|
21
|
+
version: '0'
|
22
|
+
type: :development
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
25
|
none: false
|
26
26
|
requirements:
|
27
27
|
- - ! '>='
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version:
|
29
|
+
version: '0'
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
|
-
name:
|
31
|
+
name: rspec
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|
33
33
|
none: false
|
34
34
|
requirements:
|
35
|
-
- - '
|
35
|
+
- - ! '>='
|
36
36
|
- !ruby/object:Gem::Version
|
37
|
-
version:
|
38
|
-
type: :
|
37
|
+
version: '0'
|
38
|
+
type: :development
|
39
39
|
prerelease: false
|
40
40
|
version_requirements: !ruby/object:Gem::Requirement
|
41
41
|
none: false
|
42
42
|
requirements:
|
43
|
-
- - '
|
43
|
+
- - ! '>='
|
44
44
|
- !ruby/object:Gem::Version
|
45
|
-
version:
|
45
|
+
version: '0'
|
46
46
|
- !ruby/object:Gem::Dependency
|
47
|
-
name:
|
47
|
+
name: coveralls
|
48
48
|
requirement: !ruby/object:Gem::Requirement
|
49
49
|
none: false
|
50
50
|
requirements:
|
51
51
|
- - ! '>='
|
52
52
|
- !ruby/object:Gem::Version
|
53
53
|
version: '0'
|
54
|
-
type: :
|
54
|
+
type: :development
|
55
55
|
prerelease: false
|
56
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
57
|
none: false
|
@@ -59,38 +59,118 @@ dependencies:
|
|
59
59
|
- - ! '>='
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: cinch
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ~>
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 2.0.5
|
70
|
+
type: :runtime
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ~>
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 2.0.5
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: cinch-test
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ~>
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: 0.0.3
|
86
|
+
type: :runtime
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ~>
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: 0.0.3
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: cinch-toolbox
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ~>
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: 1.0.0
|
102
|
+
type: :runtime
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ~>
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: 1.0.0
|
110
|
+
- !ruby/object:Gem::Dependency
|
111
|
+
name: cinch-cooldown
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
114
|
+
requirements:
|
115
|
+
- - ~>
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: 1.0.0
|
118
|
+
type: :runtime
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
122
|
+
requirements:
|
123
|
+
- - ~>
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: 1.0.0
|
126
|
+
- !ruby/object:Gem::Dependency
|
127
|
+
name: time-lord
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
129
|
+
none: false
|
130
|
+
requirements:
|
131
|
+
- - ~>
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
version: 1.0.1
|
134
|
+
type: :runtime
|
135
|
+
prerelease: false
|
136
|
+
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
138
|
+
requirements:
|
139
|
+
- - ~>
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: 1.0.1
|
62
142
|
- !ruby/object:Gem::Dependency
|
63
143
|
name: cinch-storage
|
64
144
|
requirement: !ruby/object:Gem::Requirement
|
65
145
|
none: false
|
66
146
|
requirements:
|
67
|
-
- -
|
147
|
+
- - ~>
|
68
148
|
- !ruby/object:Gem::Version
|
69
|
-
version:
|
149
|
+
version: 0.0.2
|
70
150
|
type: :runtime
|
71
151
|
prerelease: false
|
72
152
|
version_requirements: !ruby/object:Gem::Requirement
|
73
153
|
none: false
|
74
154
|
requirements:
|
75
|
-
- -
|
155
|
+
- - ~>
|
76
156
|
- !ruby/object:Gem::Version
|
77
|
-
version:
|
157
|
+
version: 0.0.2
|
78
158
|
- !ruby/object:Gem::Dependency
|
79
159
|
name: cinch-cooldown
|
80
160
|
requirement: !ruby/object:Gem::Requirement
|
81
161
|
none: false
|
82
162
|
requirements:
|
83
|
-
- -
|
163
|
+
- - ~>
|
84
164
|
- !ruby/object:Gem::Version
|
85
|
-
version:
|
165
|
+
version: 1.0.0
|
86
166
|
type: :runtime
|
87
167
|
prerelease: false
|
88
168
|
version_requirements: !ruby/object:Gem::Requirement
|
89
169
|
none: false
|
90
170
|
requirements:
|
91
|
-
- -
|
171
|
+
- - ~>
|
92
172
|
- !ruby/object:Gem::Version
|
93
|
-
version:
|
173
|
+
version: 1.0.0
|
94
174
|
description: Cinch Plugin to allow users to find out how long it's been since a user
|
95
175
|
was active
|
96
176
|
email:
|
@@ -100,6 +180,7 @@ extensions: []
|
|
100
180
|
extra_rdoc_files: []
|
101
181
|
files:
|
102
182
|
- .gitignore
|
183
|
+
- .travis.yml
|
103
184
|
- Gemfile
|
104
185
|
- LICENSE.txt
|
105
186
|
- README.md
|
@@ -108,6 +189,8 @@ files:
|
|
108
189
|
- lib/cinch-seen.rb
|
109
190
|
- lib/cinch/plugins/seen/seen.rb
|
110
191
|
- lib/cinch/plugins/seen/version.rb
|
192
|
+
- spec/cinch-seen_spec.rb
|
193
|
+
- spec/spec_helper.rb
|
111
194
|
homepage: https://github.com/bhaberer/cinch-seen
|
112
195
|
licenses: []
|
113
196
|
post_install_message:
|
@@ -132,4 +215,7 @@ rubygems_version: 1.8.24
|
|
132
215
|
signing_key:
|
133
216
|
specification_version: 3
|
134
217
|
summary: Cinch Plugin for Seen
|
135
|
-
test_files:
|
218
|
+
test_files:
|
219
|
+
- spec/cinch-seen_spec.rb
|
220
|
+
- spec/spec_helper.rb
|
221
|
+
has_rdoc:
|