slackbotsy 0.4.2 → 0.4.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e49b61a429036ce7a3e0d23d9ad27bc4ce9fc7ce
4
- data.tar.gz: 0e9fd9219149c3df0a00c80983245d6deff893d7
3
+ metadata.gz: 910fed46b24c5cbdd26621e27f3c7b6f28412af2
4
+ data.tar.gz: b9f2829280e0b156bcb615469f44f32808cdfb6e
5
5
  SHA512:
6
- metadata.gz: f6d105f5b03b513547d0ff82cad73acf4076898094c4e2cf13ea8e8ed903edf196803a499490c73ba71d1976ba8d27a83b9e052bc03a6d572dd1c0057973e753
7
- data.tar.gz: b58f7ec5d0b3fcd32e2b03ee3a8dfa4aabda2aa504ceb219ac8f1afd0a708d6c31e86cd5b9d9b70982d240b1a59b95f92b790b6139061f982874670c4f9cbcb3
6
+ metadata.gz: d4240abb745489c047587b99c8c8d5a7770ee3a9840f7665b4a99513fad6c492961bf2c3f1308ae2f737c4388684d543b843da3a534ae788cc4223135ab9377a
7
+ data.tar.gz: 9893b69fbbb8a4a9c1f349ed538dc7fdd8c45381b9cd196a8b3b1f57593ec3b0427eb20dd8d5e4b80089c864cfb0fbfb138ebfeb58c1029fd04b30c1a46539ac
@@ -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
- payload[:channel] = payload[:channel].gsub(/^#?/, '#') # chat.postMessage needs leading # on channel
81
- @api.join(payload[:channel])
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
- begin
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
@@ -1,3 +1,3 @@
1
1
  module Slackbotsy
2
- VERSION = "0.4.2"
2
+ VERSION = '0.4.3'
3
3
  end
@@ -21,7 +21,6 @@ Gem::Specification.new do |spec|
21
21
  spec.add_development_dependency "bundler", "~> 1.3"
22
22
  spec.add_development_dependency "rake"
23
23
 
24
- spec.add_dependency 'json'
25
24
  spec.add_dependency 'sinatra'
26
25
  spec.add_dependency 'httmultiparty'
27
26
  end
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.2
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: 2015-07-28 00:00:00.000000000 Z
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.2.3
109
+ rubygems_version: 2.6.8
123
110
  signing_key:
124
111
  specification_version: 4
125
112
  summary: Ruby bot for Slack chat.