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 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.