slackbotsy 0.1.0 → 0.2.0

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: efaf22afe32e29bb0cfac385bcc9333c055ab4bc
4
- data.tar.gz: 37f4cc88d4eb8dcac0650a57c1e0355fc4f096d0
3
+ metadata.gz: 85ec438cfe6832c6fdb513d9275cd55897e397ea
4
+ data.tar.gz: 4e145b2b2af60fbd7b49c03c58b6816fd33af0aa
5
5
  SHA512:
6
- metadata.gz: f35c27cdd50c04f7a24a43a17ce7f57bcab1124673dbae7b44a2ad05ca09fde25d0f7be043496c18303849a514d8289376a6589fb0dc97e0ce301a891e16c99e
7
- data.tar.gz: 95ce12f01ea5921415a781a91a7bc89b5a41cb5f35f3524783d72c8fff233ffb74cb9fa23f3a35398c931aa526caf25bbed27c9ca1d1cce8098dabbb5df2057e
6
+ metadata.gz: c55304f276ccc1f6781b4e7c163f32625c25f0d6aa3997245d3050cc37d182aab98efab24facd7467b7012ba6cf2c50405fdb51a5a2a49eacb065123622ffbde
7
+ data.tar.gz: 1df7f43e2e750958436e0ea035d2fa593a392c00ece000c032c0dc419a8dc32bd2dfafba68fbf4b7071e19879f3c14c7d1c8a004fa6cd6c260a01c44ded07e11
@@ -2,18 +2,20 @@ require 'net/http'
2
2
  require 'net/https'
3
3
  require 'uri'
4
4
  require 'json'
5
- require 'set'
5
+ # require 'set'
6
6
 
7
7
  module Slackbotsy
8
8
 
9
9
  class Bot
10
10
 
11
+ attr_accessor :listeners, :last_description
12
+
11
13
  def initialize(options)
12
14
  @options = options
13
15
 
14
16
  ## use set of tokens for (more or less) O(1) lookup on multiple channels
15
17
  @options['outgoing_token'] = Array(@options['outgoing_token']).to_set
16
- @regexes = {}
18
+ @listeners = []
17
19
  setup_incoming_webhook # http connection for async replies
18
20
  yield if block_given? # run any hear statements in block
19
21
  end
@@ -50,9 +52,15 @@ module Slackbotsy
50
52
  post({ attachments: attachments }.merge(options))
51
53
  end
52
54
 
55
+ ## record a description of the next hear block, for use in help
56
+ def desc(command, description = nil)
57
+ @last_desc = [ command, description ]
58
+ end
59
+
53
60
  ## add regex to things to hear
54
61
  def hear(regex, &block)
55
- @regexes[regex] = block
62
+ @listeners << OpenStruct.new(regex: regex, desc: @last_desc, proc: block)
63
+ @last_desc = nil
56
64
  end
57
65
 
58
66
  ## pass list of files containing hear statements, to be opened and evaled
@@ -70,10 +78,10 @@ module Slackbotsy
70
78
 
71
79
  ## loop things to look for and collect immediate responses
72
80
  ## rescue everything here so the bot keeps running even with a broken script
73
- responses = @regexes.map do |regex, proc|
74
- if mdata = msg[:text].strip.match(regex)
81
+ responses = @listeners.map do |hear|
82
+ if mdata = msg[:text].strip.match(hear.regex)
75
83
  begin
76
- Slackbotsy::Message.new(self, msg).instance_exec(mdata, &proc)
84
+ Slackbotsy::Message.new(self, msg).instance_exec(mdata, &hear.proc)
77
85
  rescue => err
78
86
  err
79
87
  end
@@ -1,3 +1,3 @@
1
1
  module Slackbotsy
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  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.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Richard Lister
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-25 00:00:00.000000000 Z
11
+ date: 2014-09-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler