discorb 0.9.1 → 0.9.3
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/Changelog.md +11 -1
- data/docs/faq.md +1 -1
- data/lib/discorb/common.rb +1 -1
- data/lib/discorb/gateway.rb +1 -3
- data/lib/discorb/interaction.rb +74 -7
- data/lib/discorb/utils.rb +20 -0
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fbb61003015daf1f1731f80809e9c739cad169f60b7b5f7cc6c1ac7580d61bd1
|
4
|
+
data.tar.gz: e2d7bcad6c493bea84b7f2608a1d1366f76e95675c50052b034742be322d0569
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9b2cee7155fe0273181fc7cf1fdd048ebd0b9d1adba4ca7c4444a31a92b5cd86a65c77511e581858c379e1abb53d1d092ab6115394b0a9fbc076b6692b04312b
|
7
|
+
data.tar.gz: 245db18f6b68599ccf199e5c1571a3f38181d4a4a6dc5371cf55e29bc9dd1d95766ff67047091558aaf392f41ea3fb0d28b726972c120ad7dd80a216a1e3699c
|
data/Changelog.md
CHANGED
@@ -234,4 +234,14 @@ end
|
|
234
234
|
|
235
235
|
## 0.9.1
|
236
236
|
|
237
|
-
- Fix: Fix member fetching
|
237
|
+
- Fix: Fix member fetching
|
238
|
+
|
239
|
+
## 0.9.2 (yanked)
|
240
|
+
|
241
|
+
- Add: Make `Async::Task#inspect` shorter
|
242
|
+
- Add: `SourceResponse#post` will return message now
|
243
|
+
- Fix: Fix member caching
|
244
|
+
|
245
|
+
## 0.9.3
|
246
|
+
|
247
|
+
- Fix: Fix interaction responding
|
data/docs/faq.md
CHANGED
data/lib/discorb/common.rb
CHANGED
@@ -4,7 +4,7 @@ module Discorb
|
|
4
4
|
# @return [String] The API base URL.
|
5
5
|
API_BASE_URL = "https://discord.com/api/v9"
|
6
6
|
# @return [String] The version of discorb.
|
7
|
-
VERSION = "0.9.
|
7
|
+
VERSION = "0.9.3"
|
8
8
|
# @return [String] The user agent for the bot.
|
9
9
|
USER_AGENT = "DiscordBot (https://github.com/discorb-lib/discorb #{VERSION}) Ruby/#{RUBY_VERSION}"
|
10
10
|
|
data/lib/discorb/gateway.rb
CHANGED
@@ -3,7 +3,6 @@
|
|
3
3
|
require "async/http"
|
4
4
|
require "async/websocket"
|
5
5
|
require "async/barrier"
|
6
|
-
require "async/semaphore"
|
7
6
|
require "json"
|
8
7
|
require "zlib"
|
9
8
|
|
@@ -1035,10 +1034,9 @@ module Discorb
|
|
1035
1034
|
if @fetch_member
|
1036
1035
|
@log.debug "Fetching members"
|
1037
1036
|
barrier = Async::Barrier.new
|
1038
|
-
semaphore = Async::Semaphore.new(@guilds.length)
|
1039
1037
|
|
1040
1038
|
@guilds.each do |guild|
|
1041
|
-
|
1039
|
+
barrier.async(parent: barrier) do
|
1042
1040
|
guild.fetch_members
|
1043
1041
|
end
|
1044
1042
|
end
|
data/lib/discorb/interaction.rb
CHANGED
@@ -131,6 +131,8 @@ module Discorb
|
|
131
131
|
# @param [Array<Discorb::Component>, Array<Array<Discorb::Component>>] components The components to send.
|
132
132
|
# @param [Boolean] ephemeral Whether to make the response ephemeral.
|
133
133
|
#
|
134
|
+
# @return [Discorb::Interaction::SourceResponse::CallbackMessage, Discorb::Webhook::Message] The callback message.
|
135
|
+
#
|
134
136
|
def post(content = nil, tts: false, embed: nil, embeds: nil, allowed_mentions: nil, components: nil, ephemeral: false)
|
135
137
|
Async do
|
136
138
|
payload = {}
|
@@ -165,14 +167,79 @@ module Discorb
|
|
165
167
|
end
|
166
168
|
payload[:flags] = (ephemeral ? 1 << 6 : 0)
|
167
169
|
|
168
|
-
if @responded
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
170
|
+
ret = if @responded
|
171
|
+
_resp, data = @client.http.post("/webhooks/#{@application_id}/#{@token}", payload).wait
|
172
|
+
webhook = Webhook::URLWebhook.new("/webhooks/#{@application_id}/#{@token}")
|
173
|
+
Webhook::Message.new(webhook, data, @client)
|
174
|
+
elsif @defered
|
175
|
+
@client.http.patch("/webhooks/#{@application_id}/#{@token}/messages/@original", payload).wait
|
176
|
+
CallbackMessage.new(@client, payload, @application_id, @token)
|
177
|
+
else
|
178
|
+
@client.http.post("/interactions/#{@id}/#{@token}/callback", { type: 4, data: payload }).wait
|
179
|
+
CallbackMessage.new(@client, payload, @application_id, @token)
|
180
|
+
end
|
175
181
|
@responded = true
|
182
|
+
ret
|
183
|
+
end
|
184
|
+
end
|
185
|
+
|
186
|
+
class CallbackMessage
|
187
|
+
# @!visibility private
|
188
|
+
def initialize(client, data, application_id, token)
|
189
|
+
@client = client
|
190
|
+
@data = data
|
191
|
+
@application_id = application_id
|
192
|
+
@token = token
|
193
|
+
end
|
194
|
+
|
195
|
+
#
|
196
|
+
# Edits the callback message.
|
197
|
+
# @macro async
|
198
|
+
# @macro http
|
199
|
+
# @macro edit
|
200
|
+
#
|
201
|
+
# @param [Discorb::Webhook::Message] message The message to edit.
|
202
|
+
# @param [String] content The new content of the message.
|
203
|
+
# @param [Discorb::Embed] embed The new embed of the message.
|
204
|
+
# @param [Array<Discorb::Embed>] embeds The new embeds of the message.
|
205
|
+
# @param [Array<Discorb::Attachment>] attachments The attachments to remain.
|
206
|
+
# @param [Discorb::File] file The file to send.
|
207
|
+
# @param [Array<Discorb::File>] files The files to send.
|
208
|
+
#
|
209
|
+
def edit(
|
210
|
+
content = :unset,
|
211
|
+
embed: :unset, embeds: :unset,
|
212
|
+
file: :unset, files: :unset,
|
213
|
+
attachments: :unset
|
214
|
+
)
|
215
|
+
Async do
|
216
|
+
payload = {}
|
217
|
+
payload[:content] = content if content != :unset
|
218
|
+
payload[:embeds] = embed ? [embed.to_hash] : [] if embed != :unset
|
219
|
+
payload[:embeds] = embeds.map(&:to_hash) if embeds != :unset
|
220
|
+
payload[:attachments] = attachments.map(&:to_hash) if attachments != :unset
|
221
|
+
files = [file] if file != :unset
|
222
|
+
if files == :unset
|
223
|
+
headers = {
|
224
|
+
"Content-Type" => "application/json",
|
225
|
+
}
|
226
|
+
else
|
227
|
+
headers, payload = HTTP.multipart(payload, files)
|
228
|
+
end
|
229
|
+
@client.http.patch("/webhooks/#{@application_id}/#{@token}/messages/@original", payload, headers: headers).wait
|
230
|
+
end
|
231
|
+
end
|
232
|
+
|
233
|
+
alias modify edit
|
234
|
+
|
235
|
+
#
|
236
|
+
# Deletes the callback message.
|
237
|
+
# @note This will fail if the message is ephemeral.
|
238
|
+
#
|
239
|
+
def delete!
|
240
|
+
Async do
|
241
|
+
@client.http.delete("/webhooks/#{@application_id}/#{@token}/messages/@original").wait
|
242
|
+
end
|
176
243
|
end
|
177
244
|
end
|
178
245
|
end
|
data/lib/discorb/utils.rb
CHANGED
@@ -14,3 +14,23 @@ module Discorb
|
|
14
14
|
module_function :try
|
15
15
|
end
|
16
16
|
end
|
17
|
+
|
18
|
+
class Async::Node
|
19
|
+
def description
|
20
|
+
@object_name ||= "#{self.class}:0x#{object_id.to_s(16)}#{@transient ? ' transient' : nil}"
|
21
|
+
|
22
|
+
if @annotation
|
23
|
+
"#{@object_name} #{@annotation}"
|
24
|
+
elsif line = self.backtrace(0, 1)&.first
|
25
|
+
"#{@object_name} #{line}"
|
26
|
+
else
|
27
|
+
@object_name
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def to_s
|
32
|
+
"\#<#{self.description}>"
|
33
|
+
end
|
34
|
+
|
35
|
+
alias inspect to_s
|
36
|
+
end
|