zetabot 2.1.2 → 2.2.1
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/.mise.toml +2 -0
- data/.projectile +0 -0
- data/.rspec +2 -0
- data/Gemfile.lock +222 -193
- data/README.md +13 -2
- data/Zeta.gemspec +15 -7
- data/lib/Zeta/access.rb +1 -1
- data/lib/Zeta/admin/blacklister.rb +8 -8
- data/lib/Zeta/admin/bot.rb +13 -3
- data/lib/Zeta/admin/eval.rb +1 -1
- data/lib/Zeta/admin/fifo.rb +1 -1
- data/lib/Zeta/admin/ignore.rb +11 -7
- data/lib/Zeta/admin/oper.rb +2 -2
- data/lib/Zeta/admin/plugins.rb +35 -16
- data/lib/Zeta/blacklist.rb +4 -2
- data/lib/Zeta/botinfo.txt +3 -0
- data/lib/Zeta/cinch.rb +6 -0
- data/lib/Zeta/config.rb +1 -1
- data/lib/Zeta/locale.rb +1 -1
- data/lib/Zeta/plugins/attack.rb +2 -1
- data/lib/Zeta/plugins/botinfo.rb +1 -1
- data/lib/Zeta/plugins/darkscience.rb +3 -3
- data/lib/Zeta/plugins/gif.rb +3 -2
- data/lib/Zeta/plugins/macros.rb +3 -2
- data/lib/Zeta/plugins/pdfinfo.rb +1 -1
- data/lib/Zeta/plugins/rainbow.rb +2 -2
- data/lib/Zeta/plugins/russian_roulette.rb +1 -1
- data/lib/Zeta/plugins/seen.rb +3 -3
- data/lib/Zeta/plugins/silly.rb +4 -4
- data/lib/Zeta/plugins/snooper.rb +2 -2
- data/lib/Zeta/plugins/weather.rb +11 -9
- data/lib/Zeta/plugins/wiki.rb +28 -7
- data/lib/Zeta/plugins/wolfram.rb +30 -22
- data/lib/Zeta/version.rb +1 -1
- metadata +106 -36
data/lib/Zeta/plugins/wiki.rb
CHANGED
|
@@ -3,6 +3,9 @@
|
|
|
3
3
|
# Great gem
|
|
4
4
|
require 'cinch'
|
|
5
5
|
require 'cinch/toolbox'
|
|
6
|
+
require 'nokogiri'
|
|
7
|
+
require 'open-uri'
|
|
8
|
+
require 'cgi/escape'
|
|
6
9
|
# require 'cinch/cooldown'
|
|
7
10
|
# require 'cinch-cooldown'
|
|
8
11
|
|
|
@@ -33,22 +36,31 @@ module Plugins
|
|
|
33
36
|
|
|
34
37
|
def wiki(term)
|
|
35
38
|
# URI Encode
|
|
36
|
-
|
|
37
|
-
url = "
|
|
39
|
+
query = URI.encode_www_form_component(term).gsub("+", "%20")
|
|
40
|
+
url = "https://en.wikipedia.org/w/index.php?search=#{query}"
|
|
38
41
|
|
|
39
42
|
# Truncate text and url if they are too long
|
|
40
43
|
text = Cinch::Toolbox.truncate(get_def(term, url), @max_length)
|
|
41
|
-
url =
|
|
44
|
+
url = shorten(url)
|
|
42
45
|
|
|
43
46
|
"Wiki ∴ #{text} [#{url}]"
|
|
44
47
|
end
|
|
45
48
|
|
|
49
|
+
# Cinch::Toolbox.shorten calls is.gd over http, which now only answers with a redirect
|
|
50
|
+
def shorten(url)
|
|
51
|
+
return url if url.length < 45
|
|
52
|
+
short = URI.open("https://is.gd/create.php?format=simple&url=#{CGI.escape(url)}").read.strip
|
|
53
|
+
short.match?(%r{\Ahttps?://is\.gd/\w+\z}) ? short : url
|
|
54
|
+
rescue SocketError, OpenURI::HTTPError, Net::OpenTimeout, Net::ReadTimeout, SystemCallError
|
|
55
|
+
url
|
|
56
|
+
end
|
|
57
|
+
|
|
46
58
|
def get_def(term, url)
|
|
47
|
-
cats =
|
|
59
|
+
cats = html_element(url, '#mw-normal-catlinks')
|
|
48
60
|
if cats && cats.include?('Disambiguation')
|
|
49
61
|
wiki_text = "'#{term} is too vague and lead to a disambiguation page."
|
|
50
62
|
else
|
|
51
|
-
wiki_text =
|
|
63
|
+
wiki_text = html_element(url, '#mw-content-text p')
|
|
52
64
|
if wiki_text.nil? || wiki_text.include?('Help:Searching')
|
|
53
65
|
return not_found(wiki_text, url)
|
|
54
66
|
end
|
|
@@ -57,8 +69,8 @@ module Plugins
|
|
|
57
69
|
end
|
|
58
70
|
|
|
59
71
|
def not_found(wiki_text, url)
|
|
60
|
-
msg = "I couldn't find anything for that search, "
|
|
61
|
-
alt_term_text =
|
|
72
|
+
msg = +"I couldn't find anything for that search, "
|
|
73
|
+
alt_term_text = html_element(url, '.searchdidyoumean')
|
|
62
74
|
if alt_term_text
|
|
63
75
|
alt_term = alt_term_text[/\ADid you mean: (\w+)\z/, 1]
|
|
64
76
|
msg << "did you mean '#{alt_term}'?"
|
|
@@ -67,6 +79,15 @@ module Plugins
|
|
|
67
79
|
end
|
|
68
80
|
msg
|
|
69
81
|
end
|
|
82
|
+
|
|
83
|
+
# Cinch::Toolbox.get_html_element relies on Kernel#open(url), removed in Ruby 3
|
|
84
|
+
def html_element(url, selector)
|
|
85
|
+
doc = Nokogiri::HTML(URI.open(url, 'User-Agent' => "Zeta/#{Zeta::VERSION}").read)
|
|
86
|
+
# Wikipedia pads articles with empty placeholder paragraphs; skip blank matches
|
|
87
|
+
doc.css(selector).map(&:content).find { |text| !text.strip.empty? }
|
|
88
|
+
rescue SocketError, OpenURI::HTTPError, Net::OpenTimeout, Net::ReadTimeout, SystemCallError
|
|
89
|
+
nil
|
|
90
|
+
end
|
|
70
91
|
end
|
|
71
92
|
end
|
|
72
93
|
|
data/lib/Zeta/plugins/wolfram.rb
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
require 'crack'
|
|
2
|
-
require 'cgi'
|
|
2
|
+
require 'cgi/escape'
|
|
3
3
|
|
|
4
4
|
module Plugins
|
|
5
5
|
class Wolfram
|
|
@@ -17,28 +17,36 @@ module Plugins
|
|
|
17
17
|
match /calc (.+)/, method: :calculate
|
|
18
18
|
|
|
19
19
|
def calculate(m, query)
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
pod0
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
elsif pod0.length > 400
|
|
35
|
-
m.user.send("#{pod0} #{pod1}", true)
|
|
36
|
-
else
|
|
37
|
-
m.reply "#{pod0} = #{pod1}"
|
|
38
|
-
end
|
|
39
|
-
rescue
|
|
40
|
-
m.reply 'Unable to get a results'
|
|
20
|
+
url = "https://api.wolframalpha.com/v2/query?input=#{CGI.escape(query)}&appid=#{CGI.escape(Config.secrets[:wolfram].to_s)}&primary=true&format=plaintext"
|
|
21
|
+
data = Crack::XML.parse(RestClient.get(url).body)
|
|
22
|
+
|
|
23
|
+
pod0, pod1 = pod_texts(data['queryresult'])
|
|
24
|
+
return m.reply('Unable to get a results') if pod0.nil? || pod0.empty?
|
|
25
|
+
|
|
26
|
+
if pod1.lines.count > 2
|
|
27
|
+
m.user.send "# Wolfram Results #\n #{pod0}\n #{pod1}", true
|
|
28
|
+
elsif pod0.length > 400
|
|
29
|
+
m.user.send("#{pod0} #{pod1}", true)
|
|
30
|
+
elsif pod1.empty?
|
|
31
|
+
m.reply pod0
|
|
32
|
+
else
|
|
33
|
+
m.reply "#{pod0} = #{pod1}"
|
|
41
34
|
end
|
|
35
|
+
rescue RestClient::Unauthorized, RestClient::Forbidden
|
|
36
|
+
error 'Wolfram Alpha rejected the configured appid (Config.secrets[:wolfram])'
|
|
37
|
+
m.action_reply "isn't currently authorized to do that"
|
|
38
|
+
rescue StandardError => e
|
|
39
|
+
error "Wolfram Alpha query failed: #{e.class.name}: #{e.message}"
|
|
40
|
+
m.reply 'Unable to get a results'
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
private
|
|
44
|
+
|
|
45
|
+
# Crack returns a Hash for a single pod/subpod and an Array when there are several
|
|
46
|
+
def pod_texts(result)
|
|
47
|
+
Array.wrap(result && result['pod']).map do |pod|
|
|
48
|
+
Array.wrap(pod['subpod']).map { |sub| sub && sub['plaintext'].to_s.strip }.compact.reject(&:empty?).join("\n")
|
|
49
|
+
end + ['', ''] # always at least an input and result slot
|
|
42
50
|
end
|
|
43
51
|
end
|
|
44
52
|
end
|
data/lib/Zeta/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,27 +1,26 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: zetabot
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.1
|
|
4
|
+
version: 2.2.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Liothen
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: bin
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
14
13
|
name: bundler
|
|
15
14
|
requirement: !ruby/object:Gem::Requirement
|
|
16
15
|
requirements:
|
|
17
|
-
- - "
|
|
16
|
+
- - ">="
|
|
18
17
|
- !ruby/object:Gem::Version
|
|
19
18
|
version: '2.4'
|
|
20
19
|
type: :development
|
|
21
20
|
prerelease: false
|
|
22
21
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
22
|
requirements:
|
|
24
|
-
- - "
|
|
23
|
+
- - ">="
|
|
25
24
|
- !ruby/object:Gem::Version
|
|
26
25
|
version: '2.4'
|
|
27
26
|
- !ruby/object:Gem::Dependency
|
|
@@ -30,14 +29,14 @@ dependencies:
|
|
|
30
29
|
requirements:
|
|
31
30
|
- - "~>"
|
|
32
31
|
- !ruby/object:Gem::Version
|
|
33
|
-
version: '
|
|
32
|
+
version: '13.0'
|
|
34
33
|
type: :development
|
|
35
34
|
prerelease: false
|
|
36
35
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
36
|
requirements:
|
|
38
37
|
- - "~>"
|
|
39
38
|
- !ruby/object:Gem::Version
|
|
40
|
-
version: '
|
|
39
|
+
version: '13.0'
|
|
41
40
|
- !ruby/object:Gem::Dependency
|
|
42
41
|
name: rspec
|
|
43
42
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -52,6 +51,20 @@ dependencies:
|
|
|
52
51
|
- - "~>"
|
|
53
52
|
- !ruby/object:Gem::Version
|
|
54
53
|
version: '3.0'
|
|
54
|
+
- !ruby/object:Gem::Dependency
|
|
55
|
+
name: webmock
|
|
56
|
+
requirement: !ruby/object:Gem::Requirement
|
|
57
|
+
requirements:
|
|
58
|
+
- - "~>"
|
|
59
|
+
- !ruby/object:Gem::Version
|
|
60
|
+
version: '3.0'
|
|
61
|
+
type: :development
|
|
62
|
+
prerelease: false
|
|
63
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
64
|
+
requirements:
|
|
65
|
+
- - "~>"
|
|
66
|
+
- !ruby/object:Gem::Version
|
|
67
|
+
version: '3.0'
|
|
55
68
|
- !ruby/object:Gem::Dependency
|
|
56
69
|
name: irbtools
|
|
57
70
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -67,7 +80,7 @@ dependencies:
|
|
|
67
80
|
- !ruby/object:Gem::Version
|
|
68
81
|
version: '0'
|
|
69
82
|
- !ruby/object:Gem::Dependency
|
|
70
|
-
name:
|
|
83
|
+
name: logger
|
|
71
84
|
requirement: !ruby/object:Gem::Requirement
|
|
72
85
|
requirements:
|
|
73
86
|
- - ">="
|
|
@@ -81,7 +94,7 @@ dependencies:
|
|
|
81
94
|
- !ruby/object:Gem::Version
|
|
82
95
|
version: '0'
|
|
83
96
|
- !ruby/object:Gem::Dependency
|
|
84
|
-
name:
|
|
97
|
+
name: ostruct
|
|
85
98
|
requirement: !ruby/object:Gem::Requirement
|
|
86
99
|
requirements:
|
|
87
100
|
- - ">="
|
|
@@ -95,7 +108,7 @@ dependencies:
|
|
|
95
108
|
- !ruby/object:Gem::Version
|
|
96
109
|
version: '0'
|
|
97
110
|
- !ruby/object:Gem::Dependency
|
|
98
|
-
name:
|
|
111
|
+
name: base64
|
|
99
112
|
requirement: !ruby/object:Gem::Requirement
|
|
100
113
|
requirements:
|
|
101
114
|
- - ">="
|
|
@@ -109,7 +122,7 @@ dependencies:
|
|
|
109
122
|
- !ruby/object:Gem::Version
|
|
110
123
|
version: '0'
|
|
111
124
|
- !ruby/object:Gem::Dependency
|
|
112
|
-
name:
|
|
125
|
+
name: bigdecimal
|
|
113
126
|
requirement: !ruby/object:Gem::Requirement
|
|
114
127
|
requirements:
|
|
115
128
|
- - ">="
|
|
@@ -123,7 +136,7 @@ dependencies:
|
|
|
123
136
|
- !ruby/object:Gem::Version
|
|
124
137
|
version: '0'
|
|
125
138
|
- !ruby/object:Gem::Dependency
|
|
126
|
-
name:
|
|
139
|
+
name: csv
|
|
127
140
|
requirement: !ruby/object:Gem::Requirement
|
|
128
141
|
requirements:
|
|
129
142
|
- - ">="
|
|
@@ -137,7 +150,7 @@ dependencies:
|
|
|
137
150
|
- !ruby/object:Gem::Version
|
|
138
151
|
version: '0'
|
|
139
152
|
- !ruby/object:Gem::Dependency
|
|
140
|
-
name:
|
|
153
|
+
name: pstore
|
|
141
154
|
requirement: !ruby/object:Gem::Requirement
|
|
142
155
|
requirements:
|
|
143
156
|
- - ">="
|
|
@@ -151,7 +164,63 @@ dependencies:
|
|
|
151
164
|
- !ruby/object:Gem::Version
|
|
152
165
|
version: '0'
|
|
153
166
|
- !ruby/object:Gem::Dependency
|
|
154
|
-
name:
|
|
167
|
+
name: cgi
|
|
168
|
+
requirement: !ruby/object:Gem::Requirement
|
|
169
|
+
requirements:
|
|
170
|
+
- - ">="
|
|
171
|
+
- !ruby/object:Gem::Version
|
|
172
|
+
version: '0'
|
|
173
|
+
type: :runtime
|
|
174
|
+
prerelease: false
|
|
175
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
176
|
+
requirements:
|
|
177
|
+
- - ">="
|
|
178
|
+
- !ruby/object:Gem::Version
|
|
179
|
+
version: '0'
|
|
180
|
+
- !ruby/object:Gem::Dependency
|
|
181
|
+
name: daemons
|
|
182
|
+
requirement: !ruby/object:Gem::Requirement
|
|
183
|
+
requirements:
|
|
184
|
+
- - ">="
|
|
185
|
+
- !ruby/object:Gem::Version
|
|
186
|
+
version: '0'
|
|
187
|
+
type: :runtime
|
|
188
|
+
prerelease: false
|
|
189
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
190
|
+
requirements:
|
|
191
|
+
- - ">="
|
|
192
|
+
- !ruby/object:Gem::Version
|
|
193
|
+
version: '0'
|
|
194
|
+
- !ruby/object:Gem::Dependency
|
|
195
|
+
name: destructor
|
|
196
|
+
requirement: !ruby/object:Gem::Requirement
|
|
197
|
+
requirements:
|
|
198
|
+
- - ">="
|
|
199
|
+
- !ruby/object:Gem::Version
|
|
200
|
+
version: '0'
|
|
201
|
+
type: :runtime
|
|
202
|
+
prerelease: false
|
|
203
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
204
|
+
requirements:
|
|
205
|
+
- - ">="
|
|
206
|
+
- !ruby/object:Gem::Version
|
|
207
|
+
version: '0'
|
|
208
|
+
- !ruby/object:Gem::Dependency
|
|
209
|
+
name: tzinfo
|
|
210
|
+
requirement: !ruby/object:Gem::Requirement
|
|
211
|
+
requirements:
|
|
212
|
+
- - ">="
|
|
213
|
+
- !ruby/object:Gem::Version
|
|
214
|
+
version: '0'
|
|
215
|
+
type: :runtime
|
|
216
|
+
prerelease: false
|
|
217
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
218
|
+
requirements:
|
|
219
|
+
- - ">="
|
|
220
|
+
- !ruby/object:Gem::Version
|
|
221
|
+
version: '0'
|
|
222
|
+
- !ruby/object:Gem::Dependency
|
|
223
|
+
name: unitwise
|
|
155
224
|
requirement: !ruby/object:Gem::Requirement
|
|
156
225
|
requirements:
|
|
157
226
|
- - ">="
|
|
@@ -165,7 +234,21 @@ dependencies:
|
|
|
165
234
|
- !ruby/object:Gem::Version
|
|
166
235
|
version: '0'
|
|
167
236
|
- !ruby/object:Gem::Dependency
|
|
168
|
-
name:
|
|
237
|
+
name: ircinch
|
|
238
|
+
requirement: !ruby/object:Gem::Requirement
|
|
239
|
+
requirements:
|
|
240
|
+
- - ">="
|
|
241
|
+
- !ruby/object:Gem::Version
|
|
242
|
+
version: '0'
|
|
243
|
+
type: :runtime
|
|
244
|
+
prerelease: false
|
|
245
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
246
|
+
requirements:
|
|
247
|
+
- - ">="
|
|
248
|
+
- !ruby/object:Gem::Version
|
|
249
|
+
version: '0'
|
|
250
|
+
- !ruby/object:Gem::Dependency
|
|
251
|
+
name: cinch-toolbox
|
|
169
252
|
requirement: !ruby/object:Gem::Requirement
|
|
170
253
|
requirements:
|
|
171
254
|
- - ">="
|
|
@@ -196,14 +279,14 @@ dependencies:
|
|
|
196
279
|
name: nokogiri
|
|
197
280
|
requirement: !ruby/object:Gem::Requirement
|
|
198
281
|
requirements:
|
|
199
|
-
- - "
|
|
282
|
+
- - ">="
|
|
200
283
|
- !ruby/object:Gem::Version
|
|
201
284
|
version: 1.13.6
|
|
202
285
|
type: :runtime
|
|
203
286
|
prerelease: false
|
|
204
287
|
version_requirements: !ruby/object:Gem::Requirement
|
|
205
288
|
requirements:
|
|
206
|
-
- - "
|
|
289
|
+
- - ">="
|
|
207
290
|
- !ruby/object:Gem::Version
|
|
208
291
|
version: 1.13.6
|
|
209
292
|
- !ruby/object:Gem::Dependency
|
|
@@ -500,20 +583,6 @@ dependencies:
|
|
|
500
583
|
- - ">="
|
|
501
584
|
- !ruby/object:Gem::Version
|
|
502
585
|
version: '0'
|
|
503
|
-
- !ruby/object:Gem::Dependency
|
|
504
|
-
name: github_api
|
|
505
|
-
requirement: !ruby/object:Gem::Requirement
|
|
506
|
-
requirements:
|
|
507
|
-
- - ">="
|
|
508
|
-
- !ruby/object:Gem::Version
|
|
509
|
-
version: '0'
|
|
510
|
-
type: :runtime
|
|
511
|
-
prerelease: false
|
|
512
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
513
|
-
requirements:
|
|
514
|
-
- - ">="
|
|
515
|
-
- !ruby/object:Gem::Version
|
|
516
|
-
version: '0'
|
|
517
586
|
- !ruby/object:Gem::Dependency
|
|
518
587
|
name: gist
|
|
519
588
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -556,7 +625,6 @@ dependencies:
|
|
|
556
625
|
- - ">="
|
|
557
626
|
- !ruby/object:Gem::Version
|
|
558
627
|
version: '0'
|
|
559
|
-
description:
|
|
560
628
|
email:
|
|
561
629
|
- liothen@flagrun.net
|
|
562
630
|
executables:
|
|
@@ -566,6 +634,9 @@ extra_rdoc_files: []
|
|
|
566
634
|
files:
|
|
567
635
|
- ".bundle/config"
|
|
568
636
|
- ".gitignore"
|
|
637
|
+
- ".mise.toml"
|
|
638
|
+
- ".projectile"
|
|
639
|
+
- ".rspec"
|
|
569
640
|
- Gemfile
|
|
570
641
|
- Gemfile.lock
|
|
571
642
|
- LICENSE.txt
|
|
@@ -590,6 +661,7 @@ files:
|
|
|
590
661
|
- lib/Zeta/admin/plugins.rb
|
|
591
662
|
- lib/Zeta/admin/users.rb
|
|
592
663
|
- lib/Zeta/blacklist.rb
|
|
664
|
+
- lib/Zeta/botinfo.txt
|
|
593
665
|
- lib/Zeta/cache.rb
|
|
594
666
|
- lib/Zeta/cinch.rb
|
|
595
667
|
- lib/Zeta/config.rb
|
|
@@ -642,7 +714,6 @@ licenses:
|
|
|
642
714
|
- MIT
|
|
643
715
|
metadata:
|
|
644
716
|
allowed_push_host: https://rubygems.org
|
|
645
|
-
post_install_message:
|
|
646
717
|
rdoc_options: []
|
|
647
718
|
require_paths:
|
|
648
719
|
- lib
|
|
@@ -650,15 +721,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
650
721
|
requirements:
|
|
651
722
|
- - ">="
|
|
652
723
|
- !ruby/object:Gem::Version
|
|
653
|
-
version: '
|
|
724
|
+
version: '3.2'
|
|
654
725
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
655
726
|
requirements:
|
|
656
727
|
- - ">="
|
|
657
728
|
- !ruby/object:Gem::Version
|
|
658
729
|
version: '0'
|
|
659
730
|
requirements: []
|
|
660
|
-
rubygems_version:
|
|
661
|
-
signing_key:
|
|
731
|
+
rubygems_version: 4.0.20
|
|
662
732
|
specification_version: 4
|
|
663
733
|
summary: Zeta is a IRC bot written in ruby using the Cinch Framework
|
|
664
734
|
test_files: []
|