chat_sdk-discord 0.6.0 → 0.7.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
  SHA256:
3
- metadata.gz: 48fe551dfea184269a21798805245389d7ddced76cff1f575000583d884541a6
4
- data.tar.gz: 5a26bbdba497b93dbb2a99f0fff5cd7a98eb5d0b37ca729e7179792d5f2ae099
3
+ metadata.gz: 7c564873850d8fbf2fceb8ea472cca9a2b9bcad9a104d43c24daef348d98bb48
4
+ data.tar.gz: 1cda95c4f066d1be9d84dfd1ea11951679d8363dc65ebfe7640118eed1eefca8
5
5
  SHA512:
6
- metadata.gz: ccb7efe2bd35ab8f88f6d3b7644c1b386b20955053062056978d617e6bfd5240e4890bc4a791e60826a0cadfb4c4fd9ba4d5d0462df634fae5d19c9165bc2a69
7
- data.tar.gz: d6346f57703d07dbf352abd490ea682f01dc175a4410de307242f28d406c65f655838c75b9d872c3a37a08d3371c83077f08254725ee0a004f5804d94e47a2d8
6
+ metadata.gz: 229ccb06fb2c36c9d36777942bb2f23a6ec79bc9762d0bdc9a7f1a3ae8e619f4b23a19281a380e5f7d2aeab5c92f11378e239b2f409dceed34edf29c5e113c51
7
+ data.tar.gz: 0154ab9559ec3acd28663cc2f6ba2358e59a08ee07946bc0555ecddc45ca66d1bbd1b2b5f97f36d982c96d94a4470ad4f5590130eaab5e4e019da657340b7191
@@ -162,6 +162,54 @@ module ChatSDK
162
162
  end
163
163
  end
164
164
 
165
+ # Discord-specific: receive real-time events via the Discord Gateway WebSocket.
166
+ # Requires the optional 'discordrb' gem. Not part of the base adapter contract.
167
+ def start_gateway(&block)
168
+ raise ArgumentError, "start_gateway requires a block" unless block
169
+
170
+ begin
171
+ require "discordrb"
172
+ rescue LoadError
173
+ raise ChatSDK::ConfigurationError,
174
+ "Discord gateway requires the 'discordrb' gem. Add gem 'discordrb' to your Gemfile."
175
+ end
176
+
177
+ bot = Discordrb::Bot.new(token: "Bot #{@bot_token}")
178
+
179
+ bot.message do |event|
180
+ next if event.author.bot_account?
181
+
182
+ author = ChatSDK::Author.new(
183
+ id: event.author.id.to_s,
184
+ name: event.author.username,
185
+ platform: :discord,
186
+ bot: false
187
+ )
188
+ message = ChatSDK::Message.new(
189
+ id: event.message.id.to_s,
190
+ text: event.message.content,
191
+ author: author,
192
+ thread_id: event.message.id.to_s,
193
+ channel_id: event.channel.id.to_s,
194
+ platform: :discord,
195
+ raw: {content: event.message.content, author_id: event.author.id.to_s}
196
+ )
197
+
198
+ mention_event = ChatSDK::Events::Mention.new(
199
+ message: message,
200
+ thread_id: message.thread_id,
201
+ channel_id: message.channel_id,
202
+ platform: :discord,
203
+ adapter_name: :discord,
204
+ raw: message.raw
205
+ )
206
+
207
+ block.call(mention_event)
208
+ end
209
+
210
+ bot.run
211
+ end
212
+
165
213
  private
166
214
 
167
215
  def prepare_message_payload(message)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chat_sdk-discord
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Quentin Rousseau