realtime-slackbot 0.1.1 → 1.0.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/slack/channel.rb +46 -0
- data/lib/slack/message.rb +14 -16
- data/lib/slack/slack.rb +54 -10
- data/lib/slack/user.rb +20 -31
- 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: a79b3cf82fbab72c62706f8a80b4e6412b4f7a64
|
4
|
+
data.tar.gz: 25d33eb53caf8fd8b6583141b26398a844f6829e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6c5b65cf27eeee8b1fad311404703fadc0266de28fb6ecfda1a48d4d094183598aa348cb5d6f66d85963d542bd03bf80326ed64e71f73c0e8e3db2d6bfa0b927
|
7
|
+
data.tar.gz: 06e51f1d0bf0badad597d7929baa0e40c927a9db141803a9b368baca2c8e46fe14612e9b77a675ff495b7bb3f5b9c03e6dcbfcd780df30f7646320deafdc861d
|
@@ -0,0 +1,46 @@
|
|
1
|
+
module SlackBot
|
2
|
+
class Channel
|
3
|
+
def initialize(info, bot)
|
4
|
+
@data = info
|
5
|
+
@bot = bot
|
6
|
+
end
|
7
|
+
|
8
|
+
def [](key)
|
9
|
+
@data[key]
|
10
|
+
end
|
11
|
+
|
12
|
+
# Helpers!
|
13
|
+
def creator
|
14
|
+
@bot.user @data['creator']
|
15
|
+
end
|
16
|
+
def id; @data['id'] end
|
17
|
+
def name; @data['name'] end
|
18
|
+
def user; @bot.user @data['user'] end
|
19
|
+
def channel?; @data['is_channel'] end
|
20
|
+
def user_channel?; @data['is_im'] end
|
21
|
+
def archived?; @data['is_archived'] end
|
22
|
+
def members
|
23
|
+
if user_channel?
|
24
|
+
return [self.user]
|
25
|
+
else
|
26
|
+
return @data['members'].map { |id| @bot.user id }
|
27
|
+
end
|
28
|
+
end
|
29
|
+
def purpose
|
30
|
+
p = @data['purpose']
|
31
|
+
p && p['value']
|
32
|
+
end
|
33
|
+
def topic
|
34
|
+
p = @data['topic']
|
35
|
+
p && p['value']
|
36
|
+
end
|
37
|
+
|
38
|
+
def to_s
|
39
|
+
if user_channel?
|
40
|
+
user.to_s
|
41
|
+
else
|
42
|
+
"##{name}"
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
data/lib/slack/message.rb
CHANGED
@@ -1,10 +1,9 @@
|
|
1
1
|
require 'json'
|
2
|
-
require_relative 'matchers/matcher'
|
3
2
|
|
4
3
|
module SlackBot
|
5
4
|
class Message
|
6
|
-
|
7
|
-
|
5
|
+
attr_reader :user
|
6
|
+
|
8
7
|
def initialize(data, bot)
|
9
8
|
@data = data
|
10
9
|
@bot = bot
|
@@ -16,11 +15,7 @@ module SlackBot
|
|
16
15
|
end
|
17
16
|
|
18
17
|
def to_s
|
19
|
-
"#{@user.name}: #{
|
20
|
-
end
|
21
|
-
|
22
|
-
def user
|
23
|
-
@bot.user(@data['user'])
|
18
|
+
"#{@user.name}: #{self.text}"
|
24
19
|
end
|
25
20
|
|
26
21
|
def [](key)
|
@@ -30,14 +25,17 @@ module SlackBot
|
|
30
25
|
def []=(key, val)
|
31
26
|
@data[key] = val
|
32
27
|
end
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
28
|
+
|
29
|
+
# Helpers!
|
30
|
+
def id; @data['id'] end
|
31
|
+
def text; @data['text'] end
|
32
|
+
def time
|
33
|
+
ts = @data['ts']
|
34
|
+
ts && Time.at(ts.to_i)
|
35
|
+
end
|
36
|
+
def channel
|
37
|
+
chan = @data['channel']
|
38
|
+
@bot.channel chan
|
41
39
|
end
|
42
40
|
end
|
43
41
|
end
|
data/lib/slack/slack.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require_relative 'user'
|
2
2
|
require_relative 'message'
|
3
|
+
require_relative 'channel'
|
3
4
|
require_relative 'matchers/matcher_group'
|
4
5
|
require 'net/http'
|
5
6
|
require 'faye/websocket'
|
@@ -83,23 +84,64 @@ module SlackBot
|
|
83
84
|
end
|
84
85
|
|
85
86
|
def post(channel, message)
|
87
|
+
if channel.is_a? String
|
88
|
+
chan = channel
|
89
|
+
elsif channel.is_a? Channel
|
90
|
+
chan = channel.id
|
91
|
+
else
|
92
|
+
raise "Not a valid channel: #{channel}"
|
93
|
+
end
|
86
94
|
data = {
|
87
95
|
id: 1,
|
88
96
|
type: 'message',
|
89
|
-
channel:
|
90
|
-
text: message
|
97
|
+
channel: chan,
|
98
|
+
text: message.to_s
|
91
99
|
}
|
92
100
|
@socket.send data.to_json
|
93
101
|
end
|
94
102
|
|
95
|
-
def reply_to(
|
96
|
-
post(
|
103
|
+
def reply_to(msg, text)
|
104
|
+
post(msg['channel'], text)
|
105
|
+
end
|
106
|
+
|
107
|
+
def load_channels
|
108
|
+
channels = Hash.new
|
109
|
+
@team_info['channels'].each do |chan|
|
110
|
+
channels[chan['id']] = Channel.new chan, self
|
111
|
+
end
|
112
|
+
channels
|
113
|
+
end
|
114
|
+
|
115
|
+
def channels
|
116
|
+
@channels ||= load_channels
|
97
117
|
end
|
98
118
|
|
99
119
|
def channel(id)
|
100
|
-
|
120
|
+
channels[id]
|
121
|
+
end
|
122
|
+
|
123
|
+
def load_user_channels
|
124
|
+
channels = Hash.new
|
125
|
+
@team_info['ims'].each do |chan|
|
126
|
+
channels[chan['user']] = Channel.new chan, self
|
127
|
+
end
|
128
|
+
channels
|
101
129
|
end
|
102
130
|
|
131
|
+
def user_channels
|
132
|
+
@user_channels ||= load_user_channels
|
133
|
+
end
|
134
|
+
|
135
|
+
def user_channel(user)
|
136
|
+
if user.is_a? User
|
137
|
+
id = user.id
|
138
|
+
else
|
139
|
+
id = user
|
140
|
+
end
|
141
|
+
user_channels[id]
|
142
|
+
end
|
143
|
+
|
144
|
+
|
103
145
|
def load_users
|
104
146
|
users = Hash.new
|
105
147
|
(@team_info['users'] + @team_info['bots']).map do |info|
|
@@ -110,16 +152,18 @@ module SlackBot
|
|
110
152
|
|
111
153
|
def users
|
112
154
|
@users ||= load_users
|
113
|
-
@users.values
|
114
155
|
end
|
115
156
|
|
116
157
|
def user(id)
|
117
|
-
|
118
|
-
|
158
|
+
users[id]
|
159
|
+
end
|
160
|
+
|
161
|
+
def me
|
162
|
+
@team_info['self']
|
119
163
|
end
|
120
164
|
|
121
|
-
def
|
122
|
-
@team_info[
|
165
|
+
def [](key)
|
166
|
+
@team_info[key]
|
123
167
|
end
|
124
168
|
|
125
169
|
def log(type, message)
|
data/lib/slack/user.rb
CHANGED
@@ -1,32 +1,11 @@
|
|
1
1
|
module SlackBot
|
2
|
-
DEFAULT_ATTRS = [
|
3
|
-
:id,
|
4
|
-
:team_id,
|
5
|
-
:name,
|
6
|
-
:deleted,
|
7
|
-
:status,
|
8
|
-
:color,
|
9
|
-
:real_name,
|
10
|
-
:tz,
|
11
|
-
:tz_label,
|
12
|
-
:tz_offset,
|
13
|
-
:profile,
|
14
|
-
:is_admin,
|
15
|
-
:is_owner,
|
16
|
-
:is_primary_owner,
|
17
|
-
:is_restricted,
|
18
|
-
:is_ultra_restricted,
|
19
|
-
:is_bot,
|
20
|
-
:presence
|
21
|
-
]
|
22
2
|
class User
|
23
|
-
|
24
3
|
def initialize(data)
|
25
4
|
@data = data
|
26
5
|
end
|
27
6
|
|
28
7
|
def to_s
|
29
|
-
"
|
8
|
+
"@#{name}"
|
30
9
|
end
|
31
10
|
|
32
11
|
def pretty_name
|
@@ -34,17 +13,27 @@ module SlackBot
|
|
34
13
|
end
|
35
14
|
|
36
15
|
def pretty_first_name
|
37
|
-
|
16
|
+
first_name || name
|
38
17
|
end
|
39
18
|
|
40
|
-
def
|
41
|
-
|
42
|
-
return @data[sym.to_s]
|
43
|
-
elsif DEFAULT_ATTRS.include? sym.to_sym
|
44
|
-
return nil
|
45
|
-
else
|
46
|
-
super
|
47
|
-
end
|
19
|
+
def [](key)
|
20
|
+
@data[key]
|
48
21
|
end
|
22
|
+
|
23
|
+
# Helper methods for getting info
|
24
|
+
def profile; @data['profile'] || {} end
|
25
|
+
def real_name; profile['real_name'] end
|
26
|
+
def first_name; profile['first_name'] end
|
27
|
+
def last_name; profile['last_name'] end
|
28
|
+
|
29
|
+
def id; @data['id'] end
|
30
|
+
def name; @data['name'] end
|
31
|
+
def deleted; @data['deleted'] end
|
32
|
+
def admin?; @data['admin'] end
|
33
|
+
def owner?; @data['owner'] end
|
34
|
+
def primary_owner?; @data['primary_owner'] end
|
35
|
+
def bot?; @data['is_bot'] end
|
36
|
+
def presence; @data['presence'] end
|
37
|
+
def user_channel; @bot.user_channel self end
|
49
38
|
end
|
50
39
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: realtime-slackbot
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Will Richardson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-03-
|
11
|
+
date: 2016-03-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faye-websocket
|
@@ -46,6 +46,7 @@ extra_rdoc_files: []
|
|
46
46
|
files:
|
47
47
|
- lib/realtime-slackbot.rb
|
48
48
|
- lib/slack/bot.rb
|
49
|
+
- lib/slack/channel.rb
|
49
50
|
- lib/slack/matchers/matcher.rb
|
50
51
|
- lib/slack/matchers/matcher_group.rb
|
51
52
|
- lib/slack/message.rb
|
@@ -76,3 +77,4 @@ signing_key:
|
|
76
77
|
specification_version: 4
|
77
78
|
summary: Slackbot realtime API
|
78
79
|
test_files: []
|
80
|
+
has_rdoc:
|