simple_slack 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 +4 -4
- data/lib/simple_slack/botter.rb +126 -0
- data/lib/simple_slack/client.rb +7 -1
- data/lib/simple_slack/poster.rb +2 -3
- data/lib/simple_slack/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 50358ca98e866559e7e461a9f1f660d2efac975b
|
4
|
+
data.tar.gz: 717be28a59fa231ea591d161707cc272173fd92d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2cccf8eb285ac34486479c55af223d8bc56dee0131acd46402f07645ce086d8c63902fbc82d4cbbdf69db94332002f89386b94d4079967eb6b22561202e20c2e
|
7
|
+
data.tar.gz: 023b7efc5db7c49e731502a4ba0e36cc9a16a2b55490d30a29dc168064815a4ea4ecc831f5c49d61a3e64964d01b33ab36800427e611e09f8558d8e2e6cd0178
|
@@ -0,0 +1,126 @@
|
|
1
|
+
class SimpleSlack::Botter
|
2
|
+
def initialize(token, client)
|
3
|
+
Slack.configure {|c| c.token = token }
|
4
|
+
@r_client = Slack.realtime
|
5
|
+
@client = client
|
6
|
+
@channel, @text, @user = ["all"] * 3
|
7
|
+
@responce_channel, @responce_text, @responce_user = nil, nil, "slacker"
|
8
|
+
@responce_block = nil
|
9
|
+
end
|
10
|
+
|
11
|
+
def set_condition(channel: nil, text: nil, user: nil)
|
12
|
+
@channel = set_condition_channel(channel) if channel
|
13
|
+
@user = set_condition_user(user) if user
|
14
|
+
@text = set_condition_text(text) if text
|
15
|
+
end
|
16
|
+
|
17
|
+
def set_responce(channel: nil , text: nil, user: nil)
|
18
|
+
@responce_channel = channel if channel
|
19
|
+
@responce_text = text if text
|
20
|
+
@responce_user = user if user
|
21
|
+
if block_given?
|
22
|
+
@responce_block = Proc.new(&yield)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def status
|
27
|
+
variables = instance_variables.map {|v| v.to_s }
|
28
|
+
variables.map {|v| { v.to_s => instance_variable_get(v) } }
|
29
|
+
end
|
30
|
+
|
31
|
+
def start
|
32
|
+
return p "not set params. need set_responce(channel: , text: , user: )" unless valid_params
|
33
|
+
@r_client.on :message do |data|
|
34
|
+
if fit_condition?(data)
|
35
|
+
send_responce(data)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
puts "client start!"
|
39
|
+
@r_client.start rescue puts "client stop. abort!"
|
40
|
+
end
|
41
|
+
|
42
|
+
private
|
43
|
+
|
44
|
+
def send_responce(data)
|
45
|
+
if @responce_block.nil?
|
46
|
+
@client.post.channel(to: @responce_channel, text: @responce_text, name: @responce_user)
|
47
|
+
else
|
48
|
+
@responce_block.call(data)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def valid_params
|
53
|
+
variables = instance_variables.map {|v| v.to_s }
|
54
|
+
variables.none? {|v| instance_variable_get(v).nil? }
|
55
|
+
end
|
56
|
+
|
57
|
+
def fit_condition?(data)
|
58
|
+
fit_params?(@channel, data["channel"]) && fit_params?(@user, data["user"]) && fit_params?(@text, data["text"])
|
59
|
+
end
|
60
|
+
|
61
|
+
def fit_params?(set_params, res_param)
|
62
|
+
return true if set_params == "all"
|
63
|
+
case set_params
|
64
|
+
when String
|
65
|
+
set_params == res_param
|
66
|
+
when Array
|
67
|
+
set_params.any? {|param| fit_params?(param, res_param) }
|
68
|
+
when Regexp
|
69
|
+
set_params =~ res_param
|
70
|
+
when Hash
|
71
|
+
set_params[:id] == res_param
|
72
|
+
else
|
73
|
+
false
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
def set_condition_channel(channel)
|
78
|
+
return nil if channel.nil?
|
79
|
+
case channel
|
80
|
+
when String
|
81
|
+
@client.get.channel(channel)
|
82
|
+
when Array
|
83
|
+
channle.map {|ch| @client.get.channel(ch.to_s) }
|
84
|
+
when Hash
|
85
|
+
channel
|
86
|
+
when Symbol
|
87
|
+
@client.get.channel(channel.to_s)
|
88
|
+
else
|
89
|
+
"error: invalid Object"
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
def set_condition_user(user)
|
94
|
+
return nil if user.nil?
|
95
|
+
case user
|
96
|
+
when String
|
97
|
+
@client.get.user(user)
|
98
|
+
when Array
|
99
|
+
user.map {|u| set_condition_user(u) }
|
100
|
+
when Hash
|
101
|
+
user
|
102
|
+
when Symbol
|
103
|
+
@client.get.user(user.to_s)
|
104
|
+
else
|
105
|
+
"error: invalid Object"
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
def set_condition_text(text)
|
110
|
+
return nil if text.nil?
|
111
|
+
case text
|
112
|
+
when String
|
113
|
+
text.gsub(/\p{blank}/,"\s").strip.split("\s")
|
114
|
+
when Array
|
115
|
+
text.map {|t| set_condition_text(t) }
|
116
|
+
when Regexp
|
117
|
+
text
|
118
|
+
else
|
119
|
+
text.to_s rescue nil
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
def set_responce_channel(channel)
|
124
|
+
set_condition_channel(channel)
|
125
|
+
end
|
126
|
+
end
|
data/lib/simple_slack/client.rb
CHANGED
@@ -2,10 +2,12 @@ require 'slack'
|
|
2
2
|
require 'omniauth-slack'
|
3
3
|
require 'simple_slack/getter'
|
4
4
|
require 'simple_slack/poster'
|
5
|
+
require 'simple_slack/botter'
|
5
6
|
|
6
7
|
class SimpleSlack::Client
|
7
8
|
def initialize(token)
|
8
|
-
|
9
|
+
@token = token
|
10
|
+
Slack.configure { |config| config.token = @token }
|
9
11
|
@slack = Slack.client
|
10
12
|
end
|
11
13
|
|
@@ -16,4 +18,8 @@ class SimpleSlack::Client
|
|
16
18
|
def post
|
17
19
|
@poster ||= SimpleSlack::Poster.new(@slack)
|
18
20
|
end
|
21
|
+
|
22
|
+
def bot
|
23
|
+
@botter ||= SimpleSlack::Botter.new(@token, self)
|
24
|
+
end
|
19
25
|
end
|
data/lib/simple_slack/poster.rb
CHANGED
@@ -15,7 +15,7 @@ class SimpleSlack::Poster
|
|
15
15
|
|
16
16
|
def chat(channel: nil, user: nil, text: , name: "slacker")
|
17
17
|
if channel
|
18
|
-
self.channel(to:
|
18
|
+
self.channel(to: channel, text: text, name: name)
|
19
19
|
elsif user
|
20
20
|
"yet"
|
21
21
|
end
|
@@ -24,8 +24,7 @@ class SimpleSlack::Poster
|
|
24
24
|
private
|
25
25
|
|
26
26
|
def convert(name)
|
27
|
-
|
28
|
-
channel = getter.channel(name)
|
27
|
+
channel = @slack.get.channel(name)
|
29
28
|
channel[:id]
|
30
29
|
end
|
31
30
|
end
|
data/lib/simple_slack/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: simple_slack
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- toririn
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-04-
|
11
|
+
date: 2016-04-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -84,6 +84,7 @@ files:
|
|
84
84
|
- bin/console
|
85
85
|
- bin/setup
|
86
86
|
- lib/simple_slack.rb
|
87
|
+
- lib/simple_slack/botter.rb
|
87
88
|
- lib/simple_slack/client.rb
|
88
89
|
- lib/simple_slack/getter.rb
|
89
90
|
- lib/simple_slack/poster.rb
|
@@ -115,3 +116,4 @@ signing_key:
|
|
115
116
|
specification_version: 4
|
116
117
|
summary: simple use slack
|
117
118
|
test_files: []
|
119
|
+
has_rdoc:
|