slackbotsy 0.4.2 → 0.4.3
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/lib/slackbotsy/bot.rb +25 -4
- data/lib/slackbotsy/version.rb +1 -1
- data/slackbotsy.gemspec +0 -1
- data/test.rb +41 -0
- metadata +4 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 910fed46b24c5cbdd26621e27f3c7b6f28412af2
|
4
|
+
data.tar.gz: b9f2829280e0b156bcb615469f44f32808cdfb6e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d4240abb745489c047587b99c8c8d5a7770ee3a9840f7665b4a99513fad6c492961bf2c3f1308ae2f737c4388684d543b843da3a534ae788cc4223135ab9377a
|
7
|
+
data.tar.gz: 9893b69fbbb8a4a9c1f349ed538dc7fdd8c45381b9cd196a8b3b1f57593ec3b0427eb20dd8d5e4b80089c864cfb0fbfb138ebfeb58c1029fd04b30c1a46539ac
|
data/lib/slackbotsy/bot.rb
CHANGED
@@ -21,6 +21,8 @@ module Slackbotsy
|
|
21
21
|
## use set of tokens for (more or less) O(1) lookup on multiple channels
|
22
22
|
def parse_outgoing_tokens(tokens)
|
23
23
|
case tokens
|
24
|
+
when NilClass
|
25
|
+
[]
|
24
26
|
when String
|
25
27
|
tokens.split(/[,\s]+/)
|
26
28
|
when Array
|
@@ -77,8 +79,12 @@ module Slackbotsy
|
|
77
79
|
text: text,
|
78
80
|
as_user: true
|
79
81
|
}.merge(options)
|
80
|
-
|
81
|
-
|
82
|
+
|
83
|
+
unless direct_message?(payload[:channel])
|
84
|
+
payload[:channel] = enforce_leading_hash(payload[:channel])
|
85
|
+
@api.join(payload[:channel])
|
86
|
+
end
|
87
|
+
|
82
88
|
@api.post_message(payload)
|
83
89
|
return nil # be quiet in webhook reply
|
84
90
|
end
|
@@ -95,6 +101,11 @@ module Slackbotsy
|
|
95
101
|
return nil # be quiet in webhook reply
|
96
102
|
end
|
97
103
|
|
104
|
+
## simple wrapper on api.users (which calls users.list)
|
105
|
+
def users
|
106
|
+
@api.users
|
107
|
+
end
|
108
|
+
|
98
109
|
## record a description of the next hear block, for use in help
|
99
110
|
def desc(command, description = nil)
|
100
111
|
@last_desc = [ command, description ]
|
@@ -146,8 +157,8 @@ module Slackbotsy
|
|
146
157
|
message = Slackbotsy::Message.new(self, msg)
|
147
158
|
@listeners.map do |listener|
|
148
159
|
text.match(listener.regex) do |mdata|
|
149
|
-
|
150
|
-
message.instance_exec(mdata, &listener.proc)
|
160
|
+
begin
|
161
|
+
message.instance_exec(mdata, *mdata[1..-1], &listener.proc)
|
151
162
|
rescue => err # keep running even with a broken script, but report the error
|
152
163
|
err
|
153
164
|
end
|
@@ -155,6 +166,16 @@ module Slackbotsy
|
|
155
166
|
end
|
156
167
|
end
|
157
168
|
|
169
|
+
private
|
170
|
+
|
171
|
+
def enforce_leading_hash(channel)
|
172
|
+
# chat.postMessage needs leading # on channel
|
173
|
+
channel.gsub(/^#?/, '#')
|
174
|
+
end
|
175
|
+
|
176
|
+
def direct_message?(channel)
|
177
|
+
channel.start_with?('@')
|
178
|
+
end
|
158
179
|
end
|
159
180
|
|
160
181
|
end
|
data/lib/slackbotsy/version.rb
CHANGED
data/slackbotsy.gemspec
CHANGED
data/test.rb
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require_relative 'lib/slackbotsy/bot'
|
3
|
+
require_relative 'lib/slackbotsy/helper'
|
4
|
+
require_relative 'lib/slackbotsy/message'
|
5
|
+
require 'sinatra'
|
6
|
+
|
7
|
+
config = {
|
8
|
+
'channel' => '#default',
|
9
|
+
'name' => 'botsy',
|
10
|
+
# 'incoming_webhook' => 'https://hooks.slack.com/services/XXXXXXXXX/XXXXXXXXX/XXXXXXXXXXXXXXXXXXXXXXXX',
|
11
|
+
'outgoing_token' => '123',
|
12
|
+
'slash_token' => '123',
|
13
|
+
}
|
14
|
+
|
15
|
+
bot = Slackbotsy::Bot.new(config) do
|
16
|
+
|
17
|
+
hear /ping/i do
|
18
|
+
'pong'
|
19
|
+
end
|
20
|
+
|
21
|
+
hear /botsy ping/i do
|
22
|
+
'pang'
|
23
|
+
end
|
24
|
+
|
25
|
+
hear /test (.+)/ do |mdata, str|
|
26
|
+
"mdata: #{mdata}, str: #{str}"
|
27
|
+
end
|
28
|
+
|
29
|
+
hear /echo\s+(.+)/ do |_, str|
|
30
|
+
"I heard #{user_name} say '#{str}' in #{channel_name}"
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
|
35
|
+
post '/' do
|
36
|
+
if params[:command]
|
37
|
+
bot.handle_slash_command(params)
|
38
|
+
else
|
39
|
+
bot.handle_outgoing_webhook(params)
|
40
|
+
end
|
41
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: slackbotsy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Richard Lister
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-08-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -38,20 +38,6 @@ dependencies:
|
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: json
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - ">="
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '0'
|
48
|
-
type: :runtime
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - ">="
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '0'
|
55
41
|
- !ruby/object:Gem::Dependency
|
56
42
|
name: sinatra
|
57
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -99,6 +85,7 @@ files:
|
|
99
85
|
- lib/slackbotsy/message.rb
|
100
86
|
- lib/slackbotsy/version.rb
|
101
87
|
- slackbotsy.gemspec
|
88
|
+
- test.rb
|
102
89
|
homepage: https://github.com/rlister/slackbotsy
|
103
90
|
licenses:
|
104
91
|
- MIT
|
@@ -119,7 +106,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
119
106
|
version: '0'
|
120
107
|
requirements: []
|
121
108
|
rubyforge_project:
|
122
|
-
rubygems_version: 2.
|
109
|
+
rubygems_version: 2.6.8
|
123
110
|
signing_key:
|
124
111
|
specification_version: 4
|
125
112
|
summary: Ruby bot for Slack chat.
|