slack-ruby-client 0.6.0 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (127) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop_todo.yml +19 -17
  3. data/.travis.yml +1 -0
  4. data/CHANGELOG.md +8 -0
  5. data/README.md +24 -4
  6. data/bin/commands/chat.rb +10 -9
  7. data/bin/commands/files.rb +19 -1
  8. data/examples/hi_real_time/hi.rb +2 -0
  9. data/lib/slack-ruby-client.rb +4 -2
  10. data/lib/slack/config.rb +4 -0
  11. data/lib/slack/logger.rb +13 -0
  12. data/lib/slack/messages/message.rb +6 -0
  13. data/lib/slack/real_time/api/schema/event.json +1 -0
  14. data/lib/slack/real_time/api/templates/event_handler.erb +4 -18
  15. data/lib/slack/real_time/client.rb +29 -5
  16. data/lib/slack/real_time/concurrency/celluloid.rb +6 -0
  17. data/lib/slack/real_time/concurrency/eventmachine.rb +22 -1
  18. data/lib/slack/real_time/config.rb +5 -1
  19. data/lib/slack/real_time/socket.rb +5 -0
  20. data/lib/slack/real_time/stores.rb +10 -0
  21. data/lib/slack/real_time/stores/base.rb +34 -0
  22. data/lib/slack/real_time/stores/starter.rb +361 -0
  23. data/lib/slack/real_time/stores/store.rb +479 -0
  24. data/lib/slack/version.rb +1 -1
  25. data/lib/slack/web/api/endpoints/api.rb +1 -1
  26. data/lib/slack/web/api/endpoints/auth.rb +1 -1
  27. data/lib/slack/web/api/endpoints/channels.rb +14 -14
  28. data/lib/slack/web/api/endpoints/chat.rb +15 -13
  29. data/lib/slack/web/api/endpoints/dnd.rb +5 -5
  30. data/lib/slack/web/api/endpoints/emoji.rb +1 -1
  31. data/lib/slack/web/api/endpoints/files.rb +30 -6
  32. data/lib/slack/web/api/endpoints/groups.rb +16 -16
  33. data/lib/slack/web/api/endpoints/im.rb +5 -5
  34. data/lib/slack/web/api/endpoints/mpim.rb +5 -5
  35. data/lib/slack/web/api/endpoints/oauth.rb +1 -1
  36. data/lib/slack/web/api/endpoints/pins.rb +3 -3
  37. data/lib/slack/web/api/endpoints/reactions.rb +4 -4
  38. data/lib/slack/web/api/endpoints/rtm.rb +1 -1
  39. data/lib/slack/web/api/endpoints/search.rb +3 -3
  40. data/lib/slack/web/api/endpoints/stars.rb +3 -3
  41. data/lib/slack/web/api/endpoints/team.rb +3 -3
  42. data/lib/slack/web/api/endpoints/usergroups.rb +6 -6
  43. data/lib/slack/web/api/endpoints/users.rb +5 -5
  44. data/lib/slack/web/api/patches/chat.1.text-attachments-required.patch +1 -1
  45. data/lib/slack/web/api/templates/method.erb +1 -1
  46. data/lib/slack/web/client.rb +1 -0
  47. data/lib/tasks/real_time.rake +27 -21
  48. data/slack-ruby-client.gemspec +1 -0
  49. data/spec/integration/integration_spec.rb +13 -1
  50. data/spec/slack/real_time/client_spec.rb +40 -5
  51. data/spec/slack/real_time/concurrency/celluloid_spec.rb +2 -1
  52. data/spec/slack/real_time/concurrency/eventmachine_spec.rb +3 -2
  53. data/spec/slack/real_time/event_handlers/event_handlers_spec.rb +15 -0
  54. data/spec/slack/real_time/event_handlers/team_spec.rb +54 -52
  55. data/spec/slack/web/api/endpoints/files_spec.rb +10 -0
  56. data/spec/slack/web/client_spec.rb +1 -1
  57. data/spec/support/real_time/connected_client.rb +3 -3
  58. metadata +23 -71
  59. data/lib/slack/real_time/api/templates/event_handlers.erb +0 -5
  60. data/lib/slack/real_time/event_handlers.rb +0 -66
  61. data/lib/slack/real_time/event_handlers/accounts_changed.rb +0 -18
  62. data/lib/slack/real_time/event_handlers/bot_added.rb +0 -16
  63. data/lib/slack/real_time/event_handlers/bot_changed.rb +0 -17
  64. data/lib/slack/real_time/event_handlers/channel_archive.rb +0 -17
  65. data/lib/slack/real_time/event_handlers/channel_created.rb +0 -17
  66. data/lib/slack/real_time/event_handlers/channel_deleted.rb +0 -16
  67. data/lib/slack/real_time/event_handlers/channel_history_changed.rb +0 -18
  68. data/lib/slack/real_time/event_handlers/channel_joined.rb +0 -22
  69. data/lib/slack/real_time/event_handlers/channel_left.rb +0 -17
  70. data/lib/slack/real_time/event_handlers/channel_marked.rb +0 -18
  71. data/lib/slack/real_time/event_handlers/channel_rename.rb +0 -17
  72. data/lib/slack/real_time/event_handlers/channel_unarchive.rb +0 -17
  73. data/lib/slack/real_time/event_handlers/commands_changed.rb +0 -18
  74. data/lib/slack/real_time/event_handlers/dnd_updated.rb +0 -18
  75. data/lib/slack/real_time/event_handlers/dnd_updated_user.rb +0 -18
  76. data/lib/slack/real_time/event_handlers/email_domain_changed.rb +0 -16
  77. data/lib/slack/real_time/event_handlers/emoji_changed.rb +0 -18
  78. data/lib/slack/real_time/event_handlers/file_change.rb +0 -18
  79. data/lib/slack/real_time/event_handlers/file_comment_added.rb +0 -18
  80. data/lib/slack/real_time/event_handlers/file_comment_deleted.rb +0 -18
  81. data/lib/slack/real_time/event_handlers/file_comment_edited.rb +0 -18
  82. data/lib/slack/real_time/event_handlers/file_created.rb +0 -18
  83. data/lib/slack/real_time/event_handlers/file_deleted.rb +0 -18
  84. data/lib/slack/real_time/event_handlers/file_private.rb +0 -18
  85. data/lib/slack/real_time/event_handlers/file_public.rb +0 -18
  86. data/lib/slack/real_time/event_handlers/file_shared.rb +0 -18
  87. data/lib/slack/real_time/event_handlers/file_unshared.rb +0 -18
  88. data/lib/slack/real_time/event_handlers/group_archive.rb +0 -17
  89. data/lib/slack/real_time/event_handlers/group_close.rb +0 -16
  90. data/lib/slack/real_time/event_handlers/group_history_changed.rb +0 -18
  91. data/lib/slack/real_time/event_handlers/group_joined.rb +0 -16
  92. data/lib/slack/real_time/event_handlers/group_left.rb +0 -17
  93. data/lib/slack/real_time/event_handlers/group_marked.rb +0 -18
  94. data/lib/slack/real_time/event_handlers/group_open.rb +0 -16
  95. data/lib/slack/real_time/event_handlers/group_rename.rb +0 -17
  96. data/lib/slack/real_time/event_handlers/group_unarchive.rb +0 -17
  97. data/lib/slack/real_time/event_handlers/im_close.rb +0 -16
  98. data/lib/slack/real_time/event_handlers/im_created.rb +0 -16
  99. data/lib/slack/real_time/event_handlers/im_history_changed.rb +0 -18
  100. data/lib/slack/real_time/event_handlers/im_marked.rb +0 -18
  101. data/lib/slack/real_time/event_handlers/im_open.rb +0 -16
  102. data/lib/slack/real_time/event_handlers/manual_presence_change.rb +0 -16
  103. data/lib/slack/real_time/event_handlers/pin_added.rb +0 -18
  104. data/lib/slack/real_time/event_handlers/pin_removed.rb +0 -18
  105. data/lib/slack/real_time/event_handlers/pref_change.rb +0 -16
  106. data/lib/slack/real_time/event_handlers/presence_change.rb +0 -17
  107. data/lib/slack/real_time/event_handlers/reaction_added.rb +0 -18
  108. data/lib/slack/real_time/event_handlers/reaction_removed.rb +0 -18
  109. data/lib/slack/real_time/event_handlers/reconnect_url.rb +0 -18
  110. data/lib/slack/real_time/event_handlers/star_added.rb +0 -18
  111. data/lib/slack/real_time/event_handlers/star_removed.rb +0 -18
  112. data/lib/slack/real_time/event_handlers/subteam_created.rb +0 -18
  113. data/lib/slack/real_time/event_handlers/subteam_self_added.rb +0 -18
  114. data/lib/slack/real_time/event_handlers/subteam_self_removed.rb +0 -18
  115. data/lib/slack/real_time/event_handlers/subteam_updated.rb +0 -18
  116. data/lib/slack/real_time/event_handlers/team_domain_change.rb +0 -17
  117. data/lib/slack/real_time/event_handlers/team_join.rb +0 -16
  118. data/lib/slack/real_time/event_handlers/team_migration_started.rb +0 -18
  119. data/lib/slack/real_time/event_handlers/team_plan_change.rb +0 -16
  120. data/lib/slack/real_time/event_handlers/team_pref_change.rb +0 -16
  121. data/lib/slack/real_time/event_handlers/team_profile_change.rb +0 -18
  122. data/lib/slack/real_time/event_handlers/team_profile_delete.rb +0 -18
  123. data/lib/slack/real_time/event_handlers/team_profile_reorder.rb +0 -18
  124. data/lib/slack/real_time/event_handlers/team_rename.rb +0 -16
  125. data/lib/slack/real_time/event_handlers/user_change.rb +0 -16
  126. data/lib/slack/real_time/event_handlers/user_typing.rb +0 -18
  127. data/lib/slack/real_time/store.rb +0 -47
@@ -0,0 +1,479 @@
1
+ module Slack
2
+ module RealTime
3
+ module Stores
4
+ # Stores everything.
5
+ class Store < Base
6
+ def self
7
+ users[@self_id]
8
+ end
9
+
10
+ def team
11
+ teams[@team_id]
12
+ end
13
+
14
+ def initialize(attrs)
15
+ if attrs.team
16
+ @team_id = attrs.team.id
17
+ @teams = { @team_id => Slack::RealTime::Models::Team.new(attrs.team) }
18
+ else
19
+ @teams = {}
20
+ end
21
+
22
+ if attrs.self
23
+ @self_id = attrs.self.id
24
+ @users = { @self_id => Slack::RealTime::Models::User.new(attrs.self) }
25
+ else
26
+ @users = {}
27
+ end
28
+
29
+ attrs.users.each do |data|
30
+ user = Models::User.new(data)
31
+ @users[data.id] = @users.key?(data.id) ? @users[data.id].merge(user) : user
32
+ end if attrs.users
33
+
34
+ @channels = {}
35
+ attrs.channels.each do |data|
36
+ @channels[data.id] = Models::Channel.new(data)
37
+ end if attrs.channels
38
+
39
+ @bots = {}
40
+ attrs.bots.each do |data|
41
+ @bots[data.id] = Models::Bot.new(data)
42
+ end if attrs.bots
43
+
44
+ @groups = {}
45
+ attrs.groups.each do |data|
46
+ @groups[data.id] = Models::Group.new(data)
47
+ end if attrs.groups
48
+
49
+ @ims = {}
50
+ attrs.ims.each do |data|
51
+ @ims[data.id] = Models::Im.new(data)
52
+ end if attrs.ims
53
+ end
54
+
55
+ ### RealTime Events
56
+
57
+ # A direct message read marker was updated.
58
+ # @see https://api.slack.com/events/im_marked
59
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/im_marked.json
60
+ # on :im_marked do |data|
61
+
62
+ # Bulk updates were made to a DM channel's history.
63
+ # @see https://api.slack.com/events/im_history_changed
64
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/im_history_changed.json
65
+ # on :im_history_changed do |data|
66
+
67
+ # The list of accounts a user is signed into has changed.
68
+ # @see https://api.slack.com/events/accounts_changed
69
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/accounts_changed.json
70
+ # on :accounts_changed do |data|
71
+
72
+ # An integration bot was added.
73
+ # @see https://api.slack.com/events/bot_added
74
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/bot_added.json
75
+ on :bot_added do |data|
76
+ bots[data.bot.id] = Models::Bot.new(data.bot)
77
+ end
78
+
79
+ # An integration bot was changed.
80
+ # @see https://api.slack.com/events/bot_changed
81
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/bot_changed.json
82
+ on :bot_changed do |data|
83
+ bot = bots[data.bot.id]
84
+ bot.merge!(data.bot) if bot
85
+ end
86
+
87
+ # A team channel was archived.
88
+ # @see https://api.slack.com/events/channel_archive
89
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/channel_archive.json
90
+ on :channel_archive do |data|
91
+ channel = channels[data.channel]
92
+ channel.is_archived = true if channel
93
+ end
94
+
95
+ # A team channel was created.
96
+ # @see https://api.slack.com/events/channel_created
97
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/channel_created.json
98
+ on :channel_created do |data|
99
+ channel = Models::Channel.new(data.channel)
100
+ channels[channel.id] = channel
101
+ end
102
+
103
+ # A team channel was deleted.
104
+ # @see https://api.slack.com/events/channel_deleted
105
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/channel_deleted.json
106
+ on :channel_deleted do |data|
107
+ channels.delete(data.channel)
108
+ end
109
+
110
+ # Bulk updates were made to a channel's history.
111
+ # @see https://api.slack.com/events/channel_history_changed
112
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/channel_history_changed.json
113
+ # on :channel_history_changed do |data|
114
+
115
+ # You joined a channel.
116
+ # @see https://api.slack.com/events/channel_joined
117
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/channel_joined.json
118
+ on :channel_joined do |data|
119
+ channel_id = data.channel.id
120
+ channel = channels[channel_id]
121
+ if channel
122
+ channel.merge!(data.channel)
123
+ else
124
+ channels[channel_id] = Models::Channel.new(data.channel)
125
+ end
126
+ end
127
+
128
+ # You left a channel.
129
+ # @see https://api.slack.com/events/channel_left
130
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/channel_left.json
131
+ on :channel_left do |data|
132
+ channel = channels[data.channel]
133
+ channel.members.delete(self.self.id) if channel.key? :members
134
+ end
135
+
136
+ # Your channel read marker was updated.
137
+ # @see https://api.slack.com/events/channel_marked
138
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/channel_marked.json
139
+ # on :channel_marked do |data|
140
+
141
+ # A team channel was renamed.
142
+ # @see https://api.slack.com/events/channel_rename
143
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/channel_rename.json
144
+ on :channel_rename do |data|
145
+ channel = channels[data.channel.id]
146
+ channel.name = data.channel.name if channel
147
+ end
148
+
149
+ # A team channel was unarchived.
150
+ # @see https://api.slack.com/events/channel_unarchive
151
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/channel_unarchive.json
152
+ on :channel_unarchive do |data|
153
+ channel = channels[data.channel]
154
+ channel.is_archived = false if channel
155
+ end
156
+
157
+ # A team slash command has been added or changed.
158
+ # @see https://api.slack.com/events/commands_changed
159
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/commands_changed.json
160
+ # on :commands_changed do |data|
161
+
162
+ # Do not Disturb settings changed for the current user.
163
+ # @see https://api.slack.com/events/dnd_updated
164
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/dnd_updated.json
165
+ # on :dnd_updated do |data|
166
+
167
+ # Do not Disturb settings changed for a team member.
168
+ # @see https://api.slack.com/events/dnd_updated_user
169
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/dnd_updated_user.json
170
+ # on :dnd_updated_user do |data|
171
+
172
+ # The team email domain has changed.
173
+ # @see https://api.slack.com/events/email_domain_changed
174
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/email_domain_changed.json
175
+ on :email_domain_changed do |data|
176
+ team.email_domain = data.email_domain
177
+ end
178
+
179
+ # A team custom emoji has been added or changed.
180
+ # @see https://api.slack.com/events/emoji_changed
181
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/emoji_changed.json
182
+ # on :emoji_changed do |data|
183
+
184
+ # A file was changed.
185
+ # @see https://api.slack.com/events/file_change
186
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/file_change.json
187
+ # on :file_change do |data|
188
+
189
+ # A file comment was added.
190
+ # @see https://api.slack.com/events/file_comment_added
191
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/file_comment_added.json
192
+ # on :file_comment_added do |data| do
193
+
194
+ # A file comment was deleted.
195
+ # @see https://api.slack.com/events/file_comment_deleted
196
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/file_comment_deleted.json
197
+ # on :file_comment_deleted do |data|
198
+
199
+ # A file comment was edited.
200
+ # @see https://api.slack.com/events/file_comment_edited
201
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/file_comment_edited.json
202
+ # on :file_comment_edited do |data|
203
+
204
+ # A file was created.
205
+ # @see https://api.slack.com/events/file_created
206
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/file_created.json
207
+ # on :file_created do |data|
208
+
209
+ # A file was deleted.
210
+ # @see https://api.slack.com/events/file_deleted
211
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/file_deleted.json
212
+ # on :file_deleted do |data|
213
+
214
+ # A file was made private.
215
+ # @see https://api.slack.com/events/file_private
216
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/file_private.json
217
+ # on :file_private do |data|
218
+
219
+ # A file was made public.
220
+ # @see https://api.slack.com/events/file_public
221
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/file_public.json
222
+ # on :file_public do |data|
223
+
224
+ # A file was shared.
225
+ # @see https://api.slack.com/events/file_shared
226
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/file_shared.json
227
+ # on :file_shared do |data|
228
+
229
+ # A file was unshared.
230
+ # @see https://api.slack.com/events/file_unshared
231
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/file_unshared.json
232
+ # on :file_unshared do |data|
233
+
234
+ # A private group was archived.
235
+ # @see https://api.slack.com/events/group_archive
236
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/group_archive.json
237
+ on :group_archive do |data|
238
+ channel = groups[data.channel]
239
+ channel.is_archived = true if channel
240
+ end
241
+
242
+ # You closed a group channel.
243
+ # @see https://api.slack.com/events/group_close
244
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/group_close.json
245
+ on :group_close do |data|
246
+ groups[data.channel].is_open = false
247
+ end
248
+
249
+ # Bulk updates were made to a group's history.
250
+ # @see https://api.slack.com/events/group_history_changed
251
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/group_history_changed.json
252
+ # on :group_history_changed do |data|
253
+
254
+ # You joined a private group.
255
+ # @see https://api.slack.com/events/group_joined
256
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/group_joined.json
257
+ on :group_joined do |data|
258
+ groups[data.channel.id] = Models::Channel.new(data.channel)
259
+ end
260
+
261
+ # You left a private group.
262
+ # @see https://api.slack.com/events/group_left
263
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/group_left.json
264
+ on :group_left do |data|
265
+ channel = groups[data.channel]
266
+ channel.members.delete(self.self.id) if channel && channel.key?(:members)
267
+ end
268
+
269
+ # A private group read marker was updated.
270
+ # @see https://api.slack.com/events/group_marked
271
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/group_marked.json
272
+ # on :group_marked do |data|
273
+
274
+ # You opened a group channel.
275
+ # @see https://api.slack.com/events/group_open
276
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/group_open.json
277
+ on :group_open do |data|
278
+ groups[data.channel].is_open = true
279
+ end
280
+
281
+ # A private group was renamed.
282
+ # @see https://api.slack.com/events/group_rename
283
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/group_rename.json
284
+ on :group_rename do |data|
285
+ channel = groups[data.channel.id]
286
+ channel.name = data.channel.name if channel
287
+ end
288
+
289
+ # A private group was unarchived.
290
+ # @see https://api.slack.com/events/group_unarchive
291
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/group_unarchive.json
292
+ on :group_unarchive do |data|
293
+ channel = groups[data.channel]
294
+ channel.is_archived = false if channel
295
+ end
296
+
297
+ # You closed a direct message channel.
298
+ # @see https://api.slack.com/events/im_close
299
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/im_close.json
300
+ on :im_close do |data|
301
+ return unless ims && ims.key?(data.channel)
302
+ ims[data.channel].is_open = false
303
+ end
304
+
305
+ # A direct message channel was created.
306
+ # @see https://api.slack.com/events/im_created
307
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/im_created.json
308
+ on :im_created do |data|
309
+ ims[data.channel.id] = Models::Im.new(data.channel)
310
+ end
311
+
312
+ # Bulk updates were made to a DM channel's history.
313
+ # @see https://api.slack.com/events/im_history_changed
314
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/im_history_changed.json
315
+ # on :im_history_changed do |data|
316
+
317
+ # A direct message read marker was updated.
318
+ # @see https://api.slack.com/events/im_marked
319
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/im_marked.json
320
+ # on :im_marked do |data|
321
+
322
+ # You opened a direct message channel.
323
+ # @see https://api.slack.com/events/im_open
324
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/im_open.json
325
+ on :im_open do |data|
326
+ return unless ims && ims.key?(data.channel)
327
+ ims[data.channel].is_open = true
328
+ end
329
+
330
+ # You manually updated your presence.
331
+ # @see https://api.slack.com/events/manual_presence_change
332
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/manual_presence_change.json
333
+ on :manual_presence_change do |data|
334
+ self.self.presence = data.presence
335
+ end
336
+
337
+ # A pin was added to a channel.
338
+ # @see https://api.slack.com/events/pin_added
339
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/pin_added.json
340
+ # on :pin_added do |data|
341
+
342
+ # A pin was removed from a channel.
343
+ # @see https://api.slack.com/events/pin_removed
344
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/pin_removed.json
345
+ # on :pin_removed do |data|
346
+
347
+ # You have updated your preferences.
348
+ # @see https://api.slack.com/events/pref_change
349
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/pref_change.json
350
+ on :pref_change do |data|
351
+ self.self.prefs ||= {}
352
+ self.self.prefs[data.name] = data.value
353
+ end
354
+
355
+ # A team member's presence changed.
356
+ # @see https://api.slack.com/events/presence_change
357
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/presence_change.json
358
+ on :presence_change do |data|
359
+ user = users[data.user]
360
+ user.presence = data.presence if user
361
+ end
362
+
363
+ # A team member has added an emoji reaction to an item.
364
+ # @see https://api.slack.com/events/reaction_added
365
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/reaction_added.json
366
+ # on :reaction_added do |data|
367
+
368
+ # A team member removed an emoji reaction.
369
+ # @see https://api.slack.com/events/reaction_removed
370
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/reaction_removed.json
371
+ # on :reaction_removed do |data|
372
+
373
+ # Experimental.
374
+ # @see https://api.slack.com/events/reconnect_url
375
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/reconnect_url.json
376
+ # on :reconnect_url do |data|
377
+
378
+ # A team member has starred an item.
379
+ # @see https://api.slack.com/events/star_added
380
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/star_added.json
381
+ # on :star_added do |data|
382
+
383
+ # A team member removed a star.
384
+ # @see https://api.slack.com/events/star_removed
385
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/star_removed.json
386
+ # on :star_removed do |data|
387
+
388
+ # A user group has been added to the team.
389
+ # @see https://api.slack.com/events/subteam_created
390
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/subteam_created.json
391
+ # on :subteam_created do |data|
392
+
393
+ # You have been added to a user group.
394
+ # @see https://api.slack.com/events/subteam_self_added
395
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/subteam_self_added.json
396
+ # on :subteam_self_added do |data|
397
+
398
+ # You have been removed from a user group.
399
+ # @see https://api.slack.com/events/subteam_self_removed
400
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/subteam_self_removed.json
401
+ # on :subteam_self_removed do |data|
402
+
403
+ # An existing user group has been updated or its members changed.
404
+ # @see https://api.slack.com/events/subteam_updated
405
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/subteam_updated.json
406
+ # on :subteam_updated do |data|
407
+
408
+ # The team domain has changed.
409
+ # @see https://api.slack.com/events/team_domain_change
410
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/team_domain_change.json
411
+ on :team_domain_change do |data|
412
+ team.url = data.url
413
+ team.domain = data.domain
414
+ end
415
+
416
+ # A new team member has joined.
417
+ # @see https://api.slack.com/events/team_join
418
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/team_join.json
419
+ on :team_join do |data|
420
+ users[data.user.id] = Models::User.new(data.user)
421
+ end
422
+
423
+ # The team is being migrated between servers.
424
+ # @see https://api.slack.com/events/team_migration_started
425
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/team_migration_started.json
426
+ # on :team_migration_started do |data|
427
+
428
+ # The team billing plan has changed.
429
+ # @see https://api.slack.com/events/team_plan_change
430
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/team_plan_change.json
431
+ on :team_plan_change do |data|
432
+ team.plan = data.plan
433
+ end
434
+
435
+ # A team preference has been updated.
436
+ # @see https://api.slack.com/events/team_pref_change
437
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/team_pref_change.json
438
+ on :team_pref_change do |data|
439
+ team.prefs ||= {}
440
+ team.prefs[data.name] = data.value
441
+ end
442
+
443
+ # Team profile fields have been updated.
444
+ # @see https://api.slack.com/events/team_profile_change
445
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/team_profile_change.json
446
+ # on :team_profile_change do |data|
447
+
448
+ # Team profile fields have been deleted.
449
+ # @see https://api.slack.com/events/team_profile_delete
450
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/team_profile_delete.json
451
+ # on :team_profile_delete do |data|
452
+
453
+ # Team profile fields have been reordered.
454
+ # @see https://api.slack.com/events/team_profile_reorder
455
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/team_profile_reorder.json
456
+ # on :team_profile_reorder do |data|
457
+
458
+ # The team name has changed.
459
+ # @see https://api.slack.com/events/team_rename
460
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/team_rename.json
461
+ on :team_rename do |data|
462
+ team.name = data.name
463
+ end
464
+
465
+ # A team member's data has changed.
466
+ # @see https://api.slack.com/events/user_change
467
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/user_change.json
468
+ on :user_change do |data|
469
+ users[data.user.id] = Models::User.new(data.user)
470
+ end
471
+
472
+ # A channel member is typing a message.
473
+ # @see https://api.slack.com/events/user_typing
474
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/user_typing.json
475
+ # on :user_typing do |data|
476
+ end
477
+ end
478
+ end
479
+ end