cogbot 0.1.7 → 0.1.9
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -0
- data/Gemfile.lock +9 -9
- data/PLUGINS.md +65 -0
- data/README.md +12 -0
- data/cogbot.gemspec +2 -2
- data/config/cogbot.yml.defaults +3 -0
- data/lib/cogbot.rb +7 -7
- data/plugins/dice.rb +1 -1
- data/plugins/rss.rb +9 -5
- metadata +9 -8
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: e37f9c0fe6f36887ea2144035045663c66b64d04
|
|
4
|
+
data.tar.gz: f2071dfc2e77590f88dee1d7a6e0cf54d61c8730
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 1a4f4461bea0be58dd774d7c2bdc0aabea8f56c1da96a12d1192f7f72d6976c6a95df7b1c3a83a421ab322715ef118414aea22e6db6ea22cdead0f8265be34eb
|
|
7
|
+
data.tar.gz: d5f8993d643ef716c2b33fdec5d19575d0dd3320e6bf49b8e79be1fe07f0db93c8a57432446b27c19e8d399680f0d6e8faff61d34bea17fa1e845fee56c87888
|
data/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
Cogbot Changelog
|
|
2
2
|
===================
|
|
3
3
|
|
|
4
|
+
### v0.1.9 - 2016-06-01
|
|
5
|
+
- use title rather than url for rss caching
|
|
6
|
+
|
|
7
|
+
### v0.1.8 - 2016-04-07
|
|
8
|
+
- add a transform config for rss output
|
|
9
|
+
|
|
4
10
|
### v0.1.7 - 2016-03-28
|
|
5
11
|
- fix rss plugin polling configurable period
|
|
6
12
|
|
data/Gemfile.lock
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
cogbot (0.1.
|
|
4
|
+
cogbot (0.1.9)
|
|
5
5
|
cinch (= 2.3.1)
|
|
6
6
|
daemons (~> 1.2.3)
|
|
7
|
-
eventmachine (
|
|
7
|
+
eventmachine (~> 1.2.0.1)
|
|
8
8
|
eventmachine_httpserver (~> 0.2.1)
|
|
9
9
|
fortune_gem (~> 0.0.8)
|
|
10
10
|
json (~> 1.8.3)
|
|
11
11
|
nokogiri (~> 1.6.7.1)
|
|
12
12
|
thor (~> 0.19.1)
|
|
13
|
-
twitter (~> 5.
|
|
13
|
+
twitter (~> 5.16.0)
|
|
14
14
|
yajl-ruby (~> 1.2.1)
|
|
15
15
|
|
|
16
16
|
GEM
|
|
@@ -23,10 +23,10 @@ GEM
|
|
|
23
23
|
coderay (1.1.1)
|
|
24
24
|
daemons (1.2.3)
|
|
25
25
|
docile (1.1.5)
|
|
26
|
-
domain_name (0.5.
|
|
26
|
+
domain_name (0.5.20160310)
|
|
27
27
|
unf (>= 0.0.5, < 1.0.0)
|
|
28
28
|
equalizer (0.0.10)
|
|
29
|
-
eventmachine (1.0.
|
|
29
|
+
eventmachine (1.2.0.1)
|
|
30
30
|
eventmachine_httpserver (0.2.1)
|
|
31
31
|
faraday (0.9.2)
|
|
32
32
|
multipart-post (>= 1.2, < 3)
|
|
@@ -34,7 +34,7 @@ GEM
|
|
|
34
34
|
ruby_parser (~> 3.1, > 3.1.0)
|
|
35
35
|
sexp_processor (~> 4.4)
|
|
36
36
|
fortune_gem (0.0.8)
|
|
37
|
-
http (0.
|
|
37
|
+
http (1.0.4)
|
|
38
38
|
addressable (~> 2.3)
|
|
39
39
|
http-cookie (~> 1.0)
|
|
40
40
|
http-form_data (~> 1.0.1)
|
|
@@ -59,7 +59,7 @@ GEM
|
|
|
59
59
|
coderay (~> 1.1.0)
|
|
60
60
|
method_source (~> 0.8.1)
|
|
61
61
|
slop (~> 3.4)
|
|
62
|
-
rake (11.1.
|
|
62
|
+
rake (11.1.2)
|
|
63
63
|
ruby_parser (3.8.1)
|
|
64
64
|
sexp_processor (~> 4.1)
|
|
65
65
|
sexp_processor (4.7.0)
|
|
@@ -74,12 +74,12 @@ GEM
|
|
|
74
74
|
slop (3.6.0)
|
|
75
75
|
thor (0.19.1)
|
|
76
76
|
thread_safe (0.3.5)
|
|
77
|
-
twitter (5.
|
|
77
|
+
twitter (5.16.0)
|
|
78
78
|
addressable (~> 2.3)
|
|
79
79
|
buftok (~> 0.2.0)
|
|
80
80
|
equalizer (= 0.0.10)
|
|
81
81
|
faraday (~> 0.9.0)
|
|
82
|
-
http (
|
|
82
|
+
http (~> 1.0)
|
|
83
83
|
http_parser.rb (~> 0.6.0)
|
|
84
84
|
json (~> 1.8)
|
|
85
85
|
memoizable (~> 0.4.0)
|
data/PLUGINS.md
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
Cogbot plugins list
|
|
2
|
+
=======================
|
|
3
|
+
|
|
4
|
+
```
|
|
5
|
+
Plugin Command / Output
|
|
6
|
+
---------- -----------------------------------------------------------------
|
|
7
|
+
dice .roll
|
|
8
|
+
outputs "<user> rolls <x>" where x is between 1 and 100
|
|
9
|
+
|
|
10
|
+
exec .do <command>
|
|
11
|
+
exec <command> on the bot host
|
|
12
|
+
<command is restricted to the list:
|
|
13
|
+
- psaux
|
|
14
|
+
- df
|
|
15
|
+
- last
|
|
16
|
+
- free
|
|
17
|
+
- who
|
|
18
|
+
- uptime
|
|
19
|
+
- f (for fortune)
|
|
20
|
+
|
|
21
|
+
fortune .f
|
|
22
|
+
output a random fortune
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
google .g <searchterm>
|
|
26
|
+
output first result for a google search
|
|
27
|
+
|
|
28
|
+
manager .m list
|
|
29
|
+
lists loaded plugins
|
|
30
|
+
.m load <plugin>
|
|
31
|
+
load plugin <plugin>
|
|
32
|
+
.m unload <plugin>
|
|
33
|
+
unload plugin <plugin>
|
|
34
|
+
.m reload <plugin>
|
|
35
|
+
reload plugin <plugin>
|
|
36
|
+
uselful when changing plugin code
|
|
37
|
+
.m set <plugin> <option> <value>
|
|
38
|
+
makes possible to change option values for <plugin>
|
|
39
|
+
|
|
40
|
+
rubygems .r <searchterm>
|
|
41
|
+
searches on Rubygems API and returns the first 4 matches
|
|
42
|
+
|
|
43
|
+
shorturl .short <url>
|
|
44
|
+
returns a short url for <url> using tinyurl.com
|
|
45
|
+
|
|
46
|
+
stack .s <term>
|
|
47
|
+
overflow returns result of a search on <term> from stack overflow
|
|
48
|
+
|
|
49
|
+
tweet .t search <term>
|
|
50
|
+
returns the 3 first matching tweets matching <term>
|
|
51
|
+
|
|
52
|
+
urban .u <term>
|
|
53
|
+
finds the definition of <term> according to the Urban Dictionary
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
Listeners Action
|
|
57
|
+
-------------- --------------------------------------------------------------
|
|
58
|
+
gitlistener for github webhooks, advertises the aggregate addition,
|
|
59
|
+
modification and deletion from commits
|
|
60
|
+
|
|
61
|
+
trellolistener listens to Trello webhooks and announces any kind of change
|
|
62
|
+
|
|
63
|
+
rss polls multiple RSS feeds and announces new items
|
|
64
|
+
to multiple channels
|
|
65
|
+
```
|
data/README.md
CHANGED
|
@@ -70,6 +70,18 @@ Trello plugin has some config too, for knowing where to announce the trello chan
|
|
|
70
70
|
|
|
71
71
|
Then in Trello, using the API, you can set a hook to send events to http://ip:port/trellolistener
|
|
72
72
|
|
|
73
|
+
For RSS plugin you can specify multiple listener for multiple channels:
|
|
74
|
+
|
|
75
|
+
rss:
|
|
76
|
+
polling: 300
|
|
77
|
+
channels:
|
|
78
|
+
-
|
|
79
|
+
prefix: '[example]'
|
|
80
|
+
url: http://example.com/feed/
|
|
81
|
+
announce:
|
|
82
|
+
- "#cogbot-rss"
|
|
83
|
+
|
|
84
|
+
|
|
73
85
|
## Todo
|
|
74
86
|
|
|
75
87
|
- document each plugin
|
data/cogbot.gemspec
CHANGED
|
@@ -17,12 +17,12 @@ Gem::Specification.new do |gem|
|
|
|
17
17
|
|
|
18
18
|
gem.add_dependency 'cinch', '2.3.1'
|
|
19
19
|
gem.add_dependency "thor", '~> 0.19.1'
|
|
20
|
-
gem.add_dependency "eventmachine", '1.0.
|
|
20
|
+
gem.add_dependency "eventmachine", '~> 1.2.0.1'
|
|
21
21
|
gem.add_dependency "eventmachine_httpserver", '~> 0.2.1'
|
|
22
22
|
gem.add_dependency 'nokogiri', '~> 1.6.7.1'
|
|
23
23
|
gem.add_dependency "daemons", '~> 1.2.3'
|
|
24
24
|
|
|
25
|
-
gem.add_dependency 'twitter', '~> 5.
|
|
25
|
+
gem.add_dependency 'twitter', '~> 5.16.0' # twitter plugin
|
|
26
26
|
gem.add_dependency 'json', '~> 1.8.3' # stackoverflow plugin
|
|
27
27
|
gem.add_dependency 'yajl-ruby', '~> 1.2.1' # rubygems plugin
|
|
28
28
|
gem.add_dependency 'fortune_gem', '~> 0.0.8' # fortune plugin
|
data/config/cogbot.yml.defaults
CHANGED
data/lib/cogbot.rb
CHANGED
|
@@ -6,8 +6,8 @@ require 'net/http'
|
|
|
6
6
|
require 'daemons'
|
|
7
7
|
require 'thor'
|
|
8
8
|
require 'yajl'
|
|
9
|
-
require
|
|
10
|
-
require
|
|
9
|
+
require 'lib/cogbot/utils'
|
|
10
|
+
require 'lib/cogbot/server'
|
|
11
11
|
|
|
12
12
|
# main cogbot module
|
|
13
13
|
module Cogbot
|
|
@@ -15,7 +15,7 @@ module Cogbot
|
|
|
15
15
|
# cogbot cli parser and launcher
|
|
16
16
|
class Bot < Thor
|
|
17
17
|
|
|
18
|
-
desc
|
|
18
|
+
desc 'start', 'start cogbot'
|
|
19
19
|
# manages the start cli command
|
|
20
20
|
def start
|
|
21
21
|
|
|
@@ -24,7 +24,7 @@ module Cogbot
|
|
|
24
24
|
begin
|
|
25
25
|
config = YAML::load_file(CONFIG_FILE)
|
|
26
26
|
rescue Exception => e
|
|
27
|
-
load
|
|
27
|
+
load 'lib/cogbot/setup.rb'
|
|
28
28
|
config['main'] = Cogbot::Setup.init
|
|
29
29
|
end
|
|
30
30
|
|
|
@@ -61,7 +61,7 @@ module Cogbot
|
|
|
61
61
|
c.plugins.prefix = config['main']['prefix']
|
|
62
62
|
c.plugins.plugins = plugins
|
|
63
63
|
end
|
|
64
|
-
on :message,
|
|
64
|
+
on :message, 'hi' do |m|
|
|
65
65
|
m.reply "Hello, #{m.user.nick}"
|
|
66
66
|
end
|
|
67
67
|
end
|
|
@@ -86,7 +86,7 @@ module Cogbot
|
|
|
86
86
|
bot.quit
|
|
87
87
|
end
|
|
88
88
|
|
|
89
|
-
desc
|
|
89
|
+
desc 'stop', 'stop cogbot'
|
|
90
90
|
# manages the stop cli command
|
|
91
91
|
def stop
|
|
92
92
|
pid_file = File.join(CONFIG_DIR, 'cogbot.pid')
|
|
@@ -94,7 +94,7 @@ module Cogbot
|
|
|
94
94
|
Process.kill('TERM', pid)
|
|
95
95
|
end
|
|
96
96
|
|
|
97
|
-
desc
|
|
97
|
+
desc 'restart', 'restart cogbot'
|
|
98
98
|
# manages the restart cli command, just stopping and startinbg in sequence
|
|
99
99
|
def restart
|
|
100
100
|
stop
|
data/plugins/dice.rb
CHANGED
data/plugins/rss.rb
CHANGED
|
@@ -28,18 +28,22 @@ EOT
|
|
|
28
28
|
feed = RSS::Parser.parse(rss)
|
|
29
29
|
@feeds[prefix] ||= []
|
|
30
30
|
feed.items.reverse.each do |item|
|
|
31
|
-
unless @feeds[prefix].include? item.
|
|
32
|
-
@feeds[prefix] << item.
|
|
31
|
+
unless @feeds[prefix].include? item.title
|
|
32
|
+
@feeds[prefix] << item.title
|
|
33
33
|
# to prevent the first run displays all the items
|
|
34
34
|
if @feeds[prefix].length > feed.items.length
|
|
35
35
|
chan['announce'].each do |announce|
|
|
36
|
-
|
|
36
|
+
msg = "#{prefix} #{item.title} (#{item.link})"
|
|
37
|
+
if chan['transform']
|
|
38
|
+
msg.gsub! Regexp.new(chan['transform']['regexp']), chan['transform']['replace']
|
|
39
|
+
end
|
|
40
|
+
Channel(announce).send msg
|
|
37
41
|
end
|
|
38
42
|
end
|
|
39
43
|
end
|
|
40
44
|
end
|
|
41
|
-
if @feeds[prefix].length > feed.items.length
|
|
42
|
-
@feeds[prefix] = @feeds[prefix][-feed.items.length, feed.items.length]
|
|
45
|
+
if @feeds[prefix].length > (feed.items.length * 3)
|
|
46
|
+
@feeds[prefix] = @feeds[prefix][-(feed.items.length * 3), (feed.items.length * 3)]
|
|
43
47
|
end
|
|
44
48
|
end
|
|
45
49
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: cogbot
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.9
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- mose
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2016-
|
|
11
|
+
date: 2016-06-01 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: cinch
|
|
@@ -42,16 +42,16 @@ dependencies:
|
|
|
42
42
|
name: eventmachine
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
44
44
|
requirements:
|
|
45
|
-
- -
|
|
45
|
+
- - "~>"
|
|
46
46
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: 1.0.
|
|
47
|
+
version: 1.2.0.1
|
|
48
48
|
type: :runtime
|
|
49
49
|
prerelease: false
|
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
51
|
requirements:
|
|
52
|
-
- -
|
|
52
|
+
- - "~>"
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
|
-
version: 1.0.
|
|
54
|
+
version: 1.2.0.1
|
|
55
55
|
- !ruby/object:Gem::Dependency
|
|
56
56
|
name: eventmachine_httpserver
|
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -100,14 +100,14 @@ dependencies:
|
|
|
100
100
|
requirements:
|
|
101
101
|
- - "~>"
|
|
102
102
|
- !ruby/object:Gem::Version
|
|
103
|
-
version: 5.
|
|
103
|
+
version: 5.16.0
|
|
104
104
|
type: :runtime
|
|
105
105
|
prerelease: false
|
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
|
107
107
|
requirements:
|
|
108
108
|
- - "~>"
|
|
109
109
|
- !ruby/object:Gem::Version
|
|
110
|
-
version: 5.
|
|
110
|
+
version: 5.16.0
|
|
111
111
|
- !ruby/object:Gem::Dependency
|
|
112
112
|
name: json
|
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -276,6 +276,7 @@ files:
|
|
|
276
276
|
- Gemfile
|
|
277
277
|
- Gemfile.lock
|
|
278
278
|
- LICENSE
|
|
279
|
+
- PLUGINS.md
|
|
279
280
|
- README.md
|
|
280
281
|
- Rakefile
|
|
281
282
|
- bin/cogbot
|