discorb 0.9.3 → 0.10.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/.github/workflows/build_main.yml +2 -0
- data/Changelog.md +298 -247
- data/README.md +6 -6
- data/Rakefile +7 -1
- data/assets/banner.svg +101 -101
- data/docs/application_command.md +8 -7
- data/docs/cli/run.md +3 -3
- data/docs/extension.md +16 -22
- data/docs/license.md +5 -1
- data/examples/extension/main.rb +1 -1
- data/examples/extension/message_expander.rb +4 -6
- data/lib/discorb/app_command.rb +12 -10
- data/lib/discorb/application.rb +3 -3
- data/lib/discorb/asset.rb +2 -2
- data/lib/discorb/audit_logs.rb +7 -7
- data/lib/discorb/channel.rb +10 -10
- data/lib/discorb/client.rb +22 -23
- data/lib/discorb/common.rb +6 -25
- data/lib/discorb/components.rb +31 -3
- data/lib/discorb/embed.rb +2 -2
- data/lib/discorb/emoji.rb +3 -3
- data/lib/discorb/error.rb +2 -2
- data/lib/discorb/exe/init.rb +8 -8
- data/lib/discorb/exe/run.rb +1 -1
- data/lib/discorb/extend.rb +21 -0
- data/lib/discorb/extension.rb +60 -47
- data/lib/discorb/file.rb +19 -1
- data/lib/discorb/gateway.rb +8 -8
- data/lib/discorb/gateway_requests.rb +1 -1
- data/lib/discorb/guild.rb +7 -7
- data/lib/discorb/guild_template.rb +4 -4
- data/lib/discorb/http.rb +1 -1
- data/lib/discorb/integration.rb +3 -3
- data/lib/discorb/interaction.rb +36 -32
- data/lib/discorb/invite.rb +2 -2
- data/lib/discorb/log.rb +1 -1
- data/lib/discorb/member.rb +1 -1
- data/lib/discorb/message.rb +34 -10
- data/lib/discorb/modules.rb +15 -49
- data/lib/discorb/permission.rb +2 -2
- data/lib/discorb/presence.rb +8 -8
- data/lib/discorb/rate_limit.rb +1 -1
- data/lib/discorb/reaction.rb +1 -1
- data/lib/discorb/role.rb +2 -2
- data/lib/discorb/sticker.rb +3 -3
- data/lib/discorb/user.rb +2 -2
- data/lib/discorb/utils/colored_puts.rb +3 -3
- data/lib/discorb/utils.rb +1 -21
- data/lib/discorb/voice_state.rb +3 -3
- data/lib/discorb/webhook.rb +7 -8
- data/lib/discorb.rb +1 -1
- data/sig/discorb.rbs +2 -2
- data/template-replace/files/css/common.css +26 -0
- data/template-replace/files/favicon.png +0 -0
- data/template-replace/scripts/arrow.rb +7 -0
- data/template-replace/scripts/favicon.rb +9 -0
- data/template-replace/scripts/version.rb +20 -5
- metadata +5 -2
data/lib/discorb/guild.rb
CHANGED
@@ -118,14 +118,14 @@ module Discorb
|
|
118
118
|
@default_message_notifications = %i[all_messages only_mentions].freeze
|
119
119
|
@explicit_content_filter = %i[disabled_in_text members_without_roles all_members].freeze
|
120
120
|
|
121
|
-
#
|
121
|
+
# @private
|
122
122
|
def initialize(client, data, is_create_event)
|
123
123
|
@client = client
|
124
124
|
@data = {}
|
125
125
|
_set_data(data, is_create_event)
|
126
126
|
end
|
127
127
|
|
128
|
-
#
|
128
|
+
# @private
|
129
129
|
def update!
|
130
130
|
Async do
|
131
131
|
_, data = @client.get("/guilds/#{@id}").wait
|
@@ -952,7 +952,7 @@ module Discorb
|
|
952
952
|
# @!attribute [r] url
|
953
953
|
# @return [String] The vanity URL.
|
954
954
|
|
955
|
-
#
|
955
|
+
# @private
|
956
956
|
def initialize(client, guild, data)
|
957
957
|
@client = client
|
958
958
|
@guild = guild
|
@@ -987,7 +987,7 @@ module Discorb
|
|
987
987
|
# @!attribute [r] json_url
|
988
988
|
# @return [String] The JSON URL.
|
989
989
|
|
990
|
-
#
|
990
|
+
# @private
|
991
991
|
def initialize(client, guild_id, data)
|
992
992
|
@client = client
|
993
993
|
@enabled = data[:enabled]
|
@@ -1050,7 +1050,7 @@ module Discorb
|
|
1050
1050
|
# @return [String] The reason for the ban.
|
1051
1051
|
attr_reader :reason
|
1052
1052
|
|
1053
|
-
#
|
1053
|
+
# @private
|
1054
1054
|
def initialize(client, guild, data)
|
1055
1055
|
@client = client
|
1056
1056
|
@guild = guild
|
@@ -1060,7 +1060,7 @@ module Discorb
|
|
1060
1060
|
end
|
1061
1061
|
|
1062
1062
|
class << self
|
1063
|
-
#
|
1063
|
+
# @private
|
1064
1064
|
attr_reader :nsfw_levels, :mfa_levels, :verification_levels, :default_message_notifications, :explicit_content_filter
|
1065
1065
|
|
1066
1066
|
#
|
@@ -1175,7 +1175,7 @@ module Discorb
|
|
1175
1175
|
# @return [Discorb::Guild] The guild the welcome screen belongs to.
|
1176
1176
|
attr_reader :guild
|
1177
1177
|
|
1178
|
-
#
|
1178
|
+
# @private
|
1179
1179
|
def initialize(client, guild, data)
|
1180
1180
|
@client = client
|
1181
1181
|
@description = data[:description]
|
@@ -33,7 +33,7 @@ module Discorb
|
|
33
33
|
# @return [Discorb::Guild] The guild this template is based on.
|
34
34
|
# @return [nil] Client wasn't able to find the guild this template is based on.
|
35
35
|
|
36
|
-
#
|
36
|
+
# @private
|
37
37
|
def initialize(client, data)
|
38
38
|
@client = client
|
39
39
|
_set_data(data)
|
@@ -117,7 +117,7 @@ module Discorb
|
|
117
117
|
attr_reader :widget_enabled
|
118
118
|
alias widget_enabled? widget_enabled
|
119
119
|
|
120
|
-
#
|
120
|
+
# @private
|
121
121
|
def initialize(data)
|
122
122
|
@name = data[:name]
|
123
123
|
@description = data[:description]
|
@@ -143,7 +143,7 @@ module Discorb
|
|
143
143
|
# @return [Discorb::Color] The color of the role.
|
144
144
|
attr_reader :color
|
145
145
|
|
146
|
-
#
|
146
|
+
# @private
|
147
147
|
def initialize(data)
|
148
148
|
@name = data[:name]
|
149
149
|
@permissions = Permission.new(data[:permissions])
|
@@ -174,7 +174,7 @@ module Discorb
|
|
174
174
|
# @return [Class] The class of the channel.
|
175
175
|
attr_reader :type
|
176
176
|
|
177
|
-
#
|
177
|
+
# @private
|
178
178
|
def initialize(data)
|
179
179
|
@name = data[:name]
|
180
180
|
@position = data[:position]
|
data/lib/discorb/http.rb
CHANGED
data/lib/discorb/integration.rb
CHANGED
@@ -43,7 +43,7 @@ module Discorb
|
|
43
43
|
1 => :kick,
|
44
44
|
}
|
45
45
|
|
46
|
-
#
|
46
|
+
# @private
|
47
47
|
def initialize(client, data, guild_id, no_cache: false)
|
48
48
|
@client = client
|
49
49
|
@data = data
|
@@ -88,7 +88,7 @@ module Discorb
|
|
88
88
|
end
|
89
89
|
|
90
90
|
class << self
|
91
|
-
#
|
91
|
+
# @private
|
92
92
|
attr_reader :expire_behavior
|
93
93
|
end
|
94
94
|
|
@@ -101,7 +101,7 @@ module Discorb
|
|
101
101
|
# @return [String] The name of the account.
|
102
102
|
attr_reader :name
|
103
103
|
|
104
|
-
#
|
104
|
+
# @private
|
105
105
|
def initialize(data)
|
106
106
|
@id = data[:id]
|
107
107
|
@name = data[:name]
|
data/lib/discorb/interaction.rb
CHANGED
@@ -33,7 +33,7 @@ module Discorb
|
|
33
33
|
@interaction_type = nil
|
34
34
|
@interaction_name = nil
|
35
35
|
|
36
|
-
#
|
36
|
+
# @private
|
37
37
|
def initialize(client, data)
|
38
38
|
@client = client
|
39
39
|
@id = Snowflake.new(data[:id])
|
@@ -71,10 +71,10 @@ module Discorb
|
|
71
71
|
end
|
72
72
|
|
73
73
|
class << self
|
74
|
-
#
|
74
|
+
# @private
|
75
75
|
attr_reader :interaction_type, :interaction_name, :event_name
|
76
76
|
|
77
|
-
#
|
77
|
+
# @private
|
78
78
|
def make_interaction(client, data)
|
79
79
|
interaction = nil
|
80
80
|
descendants.each do |klass|
|
@@ -87,7 +87,7 @@ module Discorb
|
|
87
87
|
interaction
|
88
88
|
end
|
89
89
|
|
90
|
-
#
|
90
|
+
# @private
|
91
91
|
def descendants
|
92
92
|
ObjectSpace.each_object(Class).select { |klass| klass < self }
|
93
93
|
end
|
@@ -184,7 +184,7 @@ module Discorb
|
|
184
184
|
end
|
185
185
|
|
186
186
|
class CallbackMessage
|
187
|
-
#
|
187
|
+
# @private
|
188
188
|
def initialize(client, data, application_id, token)
|
189
189
|
@client = client
|
190
190
|
@data = data
|
@@ -198,7 +198,6 @@ module Discorb
|
|
198
198
|
# @macro http
|
199
199
|
# @macro edit
|
200
200
|
#
|
201
|
-
# @param [Discorb::Webhook::Message] message The message to edit.
|
202
201
|
# @param [String] content The new content of the message.
|
203
202
|
# @param [Discorb::Embed] embed The new embed of the message.
|
204
203
|
# @param [Array<Discorb::Embed>] embeds The new embeds of the message.
|
@@ -256,7 +255,7 @@ module Discorb
|
|
256
255
|
def defer_update(ephemeral: false)
|
257
256
|
Async do
|
258
257
|
@client.http.post("/interactions/#{@id}/#{@token}/callback", {
|
259
|
-
type:
|
258
|
+
type: 6,
|
260
259
|
data: {
|
261
260
|
flags: (ephemeral ? 1 << 6 : 0),
|
262
261
|
},
|
@@ -311,7 +310,7 @@ module Discorb
|
|
311
310
|
payload[:components] = tmp_components.filter { |c| c.length.positive? }.map { |c| { type: 1, components: c.map(&:to_hash) } }
|
312
311
|
end
|
313
312
|
payload[:flags] = (ephemeral ? 1 << 6 : 0)
|
314
|
-
@client.http.post("/interactions/#{@id}/#{@token}/callback", { type:
|
313
|
+
@client.http.post("/interactions/#{@id}/#{@token}/callback", { type: 7, data: payload }).wait
|
315
314
|
end
|
316
315
|
end
|
317
316
|
end
|
@@ -363,28 +362,31 @@ module Discorb
|
|
363
362
|
options = data[:options]
|
364
363
|
end
|
365
364
|
end
|
366
|
-
options ||= []
|
367
|
-
options.map! do |option|
|
368
|
-
case option[:type]
|
369
|
-
when 3, 4, 5, 10
|
370
|
-
option[:value]
|
371
|
-
when 6
|
372
|
-
guild.members[option[:value]] || guild.fetch_member(option[:value]).wait
|
373
|
-
when 7
|
374
|
-
guild.channels[option[:value]] || guild.fetch_channels.wait.find { |channel| channel.id == option[:value] }
|
375
|
-
when 8
|
376
|
-
guild.roles[option[:value]] || guild.fetch_roles.wait.find { |role| role.id == option[:value] }
|
377
|
-
when 9
|
378
|
-
guild.members[option[:value]] || guild.roles[option[:value]] || guild.fetch_member(option[:value]).wait || guild.fetch_roles.wait.find { |role| role.id == option[:value] }
|
379
|
-
end
|
380
|
-
end
|
381
365
|
|
382
366
|
unless (command = @client.bottom_commands.find { |c| c.to_s == name && c.type_raw == 1 })
|
383
367
|
@client.log.warn "Unknown command name #{name}, ignoreing"
|
384
368
|
next
|
385
369
|
end
|
386
370
|
|
387
|
-
command.
|
371
|
+
option_map = command.options.map { |k, v| [k.to_s, v[:default]] }.to_h
|
372
|
+
options ||= []
|
373
|
+
options.each do |option|
|
374
|
+
val = case option[:type]
|
375
|
+
when 3, 4, 5, 10
|
376
|
+
option[:value]
|
377
|
+
when 6
|
378
|
+
guild.members[option[:value]] || guild.fetch_member(option[:value]).wait
|
379
|
+
when 7
|
380
|
+
guild.channels[option[:value]] || guild.fetch_channels.wait.find { |channel| channel.id == option[:value] }
|
381
|
+
when 8
|
382
|
+
guild.roles[option[:value]] || guild.fetch_roles.wait.find { |role| role.id == option[:value] }
|
383
|
+
when 9
|
384
|
+
guild.members[option[:value]] || guild.roles[option[:value]] || guild.fetch_member(option[:value]).wait || guild.fetch_roles.wait.find { |role| role.id == option[:value] }
|
385
|
+
end
|
386
|
+
option_map[option[:name]] = val
|
387
|
+
end
|
388
|
+
|
389
|
+
command.block.call(self, *command.options.map { |k, v| option_map[k.to_s] })
|
388
390
|
end
|
389
391
|
end
|
390
392
|
end
|
@@ -418,7 +420,7 @@ module Discorb
|
|
418
420
|
private
|
419
421
|
|
420
422
|
def _set_data(data)
|
421
|
-
@target = Message.new(@client, data[:resolved][:messages][data[:target_id].to_sym])
|
423
|
+
@target = Message.new(@client, data[:resolved][:messages][data[:target_id].to_sym].merge(guild_id: @guild_id.to_s))
|
422
424
|
@client.commands.find { |c| c.name == data[:name] && c.type_raw == 3 }.block.call(self, @target)
|
423
425
|
end
|
424
426
|
end
|
@@ -430,10 +432,10 @@ module Discorb
|
|
430
432
|
end
|
431
433
|
|
432
434
|
class << self
|
433
|
-
#
|
435
|
+
# @private
|
434
436
|
attr_reader :command_type
|
435
437
|
|
436
|
-
#
|
438
|
+
# @private
|
437
439
|
def make_interaction(client, data)
|
438
440
|
nested_classes.each do |klass|
|
439
441
|
return klass.new(client, data) if !klass.command_type.nil? && klass.command_type == data[:data][:type]
|
@@ -442,7 +444,7 @@ module Discorb
|
|
442
444
|
CommandInteraction.new(client, data)
|
443
445
|
end
|
444
446
|
|
445
|
-
#
|
447
|
+
# @private
|
446
448
|
def nested_classes
|
447
449
|
constants.select { |c| const_get(c).is_a? Class }.map { |c| const_get(c) }
|
448
450
|
end
|
@@ -458,21 +460,23 @@ module Discorb
|
|
458
460
|
include Interaction::UpdateResponse
|
459
461
|
# @return [String] The content of the response.
|
460
462
|
attr_reader :custom_id
|
463
|
+
# @return [Discorb::Message] The target message.
|
464
|
+
attr_reader :message
|
461
465
|
|
462
466
|
@interaction_type = 3
|
463
467
|
@interaction_name = :message_component
|
464
468
|
|
465
|
-
#
|
469
|
+
# @private
|
466
470
|
def initialize(client, data)
|
467
471
|
super
|
468
472
|
@message = Message.new(@client, data[:message].merge({ member: data[:member] }))
|
469
473
|
end
|
470
474
|
|
471
475
|
class << self
|
472
|
-
#
|
476
|
+
# @private
|
473
477
|
attr_reader :component_type
|
474
478
|
|
475
|
-
#
|
479
|
+
# @private
|
476
480
|
def make_interaction(client, data)
|
477
481
|
nested_classes.each do |klass|
|
478
482
|
return klass.new(client, data) if !klass.component_type.nil? && klass.component_type == data[:data][:component_type]
|
@@ -481,7 +485,7 @@ module Discorb
|
|
481
485
|
MessageComponentInteraction.new(client, data)
|
482
486
|
end
|
483
487
|
|
484
|
-
#
|
488
|
+
# @private
|
485
489
|
def nested_classes
|
486
490
|
constants.select { |c| const_get(c).is_a? Class }.map { |c| const_get(c) }
|
487
491
|
end
|
data/lib/discorb/invite.rb
CHANGED
@@ -72,7 +72,7 @@ module Discorb
|
|
72
72
|
2 => :guild,
|
73
73
|
}.freeze
|
74
74
|
|
75
|
-
#
|
75
|
+
# @private
|
76
76
|
def initialize(client, data, gateway)
|
77
77
|
@client = client
|
78
78
|
@data = data[:data]
|
@@ -138,7 +138,7 @@ module Discorb
|
|
138
138
|
end
|
139
139
|
|
140
140
|
class << self
|
141
|
-
#
|
141
|
+
# @private
|
142
142
|
attr_reader :target_types
|
143
143
|
end
|
144
144
|
end
|
data/lib/discorb/log.rb
CHANGED
data/lib/discorb/member.rb
CHANGED
data/lib/discorb/message.rb
CHANGED
@@ -29,7 +29,7 @@ module Discorb
|
|
29
29
|
@replied_user = replied_user
|
30
30
|
end
|
31
31
|
|
32
|
-
#
|
32
|
+
# @private
|
33
33
|
def to_hash(other = nil)
|
34
34
|
payload = {
|
35
35
|
parse: %w[everyone roles users],
|
@@ -183,8 +183,32 @@ module Discorb
|
|
183
183
|
# @!attribute [r] embed
|
184
184
|
# @return [Discorb::Embed] The embed of the message.
|
185
185
|
# @return [nil] If the message has no embed.
|
186
|
+
# @!attribute [r] embed?
|
187
|
+
# @return [Boolean] Whether the message has an embed.
|
188
|
+
# @!attribute [r] reply?
|
189
|
+
# @return [Boolean] Whether the message is a reply.
|
190
|
+
# @!attribute [r] dm?
|
191
|
+
# @return [Boolean] Whether the message was sent in a DM.
|
192
|
+
# @!attribute [r] guild?
|
193
|
+
# @return [Boolean] Whether the message was sent in a guild.
|
194
|
+
|
195
|
+
def embed?
|
196
|
+
@embeds.any?
|
197
|
+
end
|
198
|
+
|
199
|
+
def reply?
|
200
|
+
!@message_reference.nil?
|
201
|
+
end
|
202
|
+
|
203
|
+
def dm?
|
204
|
+
@guild_id.nil?
|
205
|
+
end
|
206
|
+
|
207
|
+
def guild?
|
208
|
+
!@guild_id.nil?
|
209
|
+
end
|
186
210
|
|
187
|
-
#
|
211
|
+
# @private
|
188
212
|
def initialize(client, data, no_cache: false)
|
189
213
|
@client = client
|
190
214
|
@data = {}
|
@@ -272,11 +296,11 @@ module Discorb
|
|
272
296
|
# @param [Array<Discorb::Component>, Array<Array<Discorb::Component>>] components The components to send.
|
273
297
|
# @param [Boolean] supress Whether to supress embeds.
|
274
298
|
#
|
275
|
-
def edit(
|
276
|
-
|
299
|
+
def edit(content = nil, embed: nil, embeds: nil, allowed_mentions: nil,
|
300
|
+
components: nil, supress: nil)
|
277
301
|
Async do
|
278
|
-
channel.edit_message(@id,
|
279
|
-
|
302
|
+
channel.edit_message(@id, content, embed: embed, embeds: embeds, allowed_mentions: allowed_mentions,
|
303
|
+
components: components, supress: supress).wait
|
280
304
|
end
|
281
305
|
end
|
282
306
|
|
@@ -616,7 +640,7 @@ module Discorb
|
|
616
640
|
# @return [Discorb::User] The user.
|
617
641
|
attr_reader :user
|
618
642
|
|
619
|
-
#
|
643
|
+
# @private
|
620
644
|
def initialize(client, data)
|
621
645
|
@id = Snowflake.new(data[:id])
|
622
646
|
@name = data[:name]
|
@@ -641,20 +665,20 @@ module Discorb
|
|
641
665
|
5 => :join_request,
|
642
666
|
}
|
643
667
|
|
644
|
-
#
|
668
|
+
# @private
|
645
669
|
def initialize(data)
|
646
670
|
@name = data[:name]
|
647
671
|
@type = self.class.type(data[:type])
|
648
672
|
end
|
649
673
|
|
650
674
|
class << self
|
651
|
-
#
|
675
|
+
# @private
|
652
676
|
attr_reader :type
|
653
677
|
end
|
654
678
|
end
|
655
679
|
|
656
680
|
class << self
|
657
|
-
#
|
681
|
+
# @private
|
658
682
|
attr_reader :message_type
|
659
683
|
end
|
660
684
|
end
|
data/lib/discorb/modules.rb
CHANGED
@@ -37,26 +37,7 @@ module Discorb
|
|
37
37
|
payload[:allowed_mentions] =
|
38
38
|
allowed_mentions ? allowed_mentions.to_hash(@client.allowed_mentions) : @client.allowed_mentions.to_hash
|
39
39
|
payload[:message_reference] = reference.to_reference if reference
|
40
|
-
if components
|
41
|
-
tmp_components = []
|
42
|
-
tmp_row = []
|
43
|
-
components.each do |c|
|
44
|
-
case c
|
45
|
-
when Array
|
46
|
-
tmp_components << tmp_row
|
47
|
-
tmp_row = []
|
48
|
-
tmp_components << c
|
49
|
-
when SelectMenu
|
50
|
-
tmp_components << tmp_row
|
51
|
-
tmp_row = []
|
52
|
-
tmp_components << [c]
|
53
|
-
else
|
54
|
-
tmp_row << c
|
55
|
-
end
|
56
|
-
end
|
57
|
-
tmp_components << tmp_row
|
58
|
-
payload[:components] = tmp_components.filter { |c| c.length.positive? }.map { |c| { type: 1, components: c.map(&:to_hash) } }
|
59
|
-
end
|
40
|
+
payload[:components] = Component.to_payload(components) if components
|
60
41
|
files = [file] if file
|
61
42
|
if files
|
62
43
|
seperator, payload = HTTP.multipart(payload, files)
|
@@ -69,6 +50,8 @@ module Discorb
|
|
69
50
|
end
|
70
51
|
end
|
71
52
|
|
53
|
+
alias send_message post
|
54
|
+
|
72
55
|
#
|
73
56
|
# Edit a message.
|
74
57
|
# @macro async
|
@@ -95,27 +78,8 @@ module Discorb
|
|
95
78
|
payload[:embeds] = tmp_embed.map(&:to_hash) if tmp_embed
|
96
79
|
payload[:allowed_mentions] =
|
97
80
|
allowed_mentions ? allowed_mentions.to_hash(@client.allowed_mentions) : @client.allowed_mentions.to_hash
|
98
|
-
if components
|
99
|
-
|
100
|
-
tmp_row = []
|
101
|
-
components.each do |c|
|
102
|
-
case c
|
103
|
-
when Array
|
104
|
-
tmp_components << tmp_row
|
105
|
-
tmp_row = []
|
106
|
-
tmp_components << c
|
107
|
-
when SelectMenu
|
108
|
-
tmp_components << tmp_row
|
109
|
-
tmp_row = []
|
110
|
-
tmp_components << [c]
|
111
|
-
else
|
112
|
-
tmp_row << c
|
113
|
-
end
|
114
|
-
end
|
115
|
-
tmp_components << tmp_row
|
116
|
-
payload[:flags] = (supress ? 1 << 2 : 0) unless flags.nil?
|
117
|
-
payload[:components] = tmp_components.filter { |c| c.length.positive? }.map { |c| { type: 1, components: c.map(&:to_hash) } }
|
118
|
-
end
|
81
|
+
payload[:components] = Component.to_payload(components) if components
|
82
|
+
payload[:flags] = (supress ? 1 << 2 : 0) unless supress.nil?
|
119
83
|
@client.http.patch("/channels/#{channel_id.wait}/messages/#{message_id}", payload).wait
|
120
84
|
end
|
121
85
|
end
|
@@ -192,18 +156,20 @@ module Discorb
|
|
192
156
|
# end
|
193
157
|
#
|
194
158
|
def typing
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
159
|
+
if block_given?
|
160
|
+
begin
|
161
|
+
post_task = Async do
|
162
|
+
loop do
|
199
163
|
@client.http.post("/channels/#{@id}/typing", {})
|
200
164
|
sleep(5)
|
201
165
|
end
|
202
|
-
yield
|
203
|
-
ensure
|
204
|
-
post_task.stop
|
205
166
|
end
|
206
|
-
|
167
|
+
yield
|
168
|
+
ensure
|
169
|
+
post_task.stop
|
170
|
+
end
|
171
|
+
else
|
172
|
+
Async do |task|
|
207
173
|
@client.http.post("/channels/#{@id}/typing", {})
|
208
174
|
end
|
209
175
|
end
|
data/lib/discorb/permission.rb
CHANGED
@@ -138,7 +138,7 @@ module Discorb
|
|
138
138
|
}.freeze
|
139
139
|
@bits = @raw_bits.transform_values { |v| 1 << v }.freeze
|
140
140
|
|
141
|
-
#
|
141
|
+
# @private
|
142
142
|
def initialize(allow, deny)
|
143
143
|
@allow = allow
|
144
144
|
@deny = deny
|
@@ -248,7 +248,7 @@ module Discorb
|
|
248
248
|
end
|
249
249
|
|
250
250
|
class << self
|
251
|
-
#
|
251
|
+
# @private
|
252
252
|
attr_reader :bits
|
253
253
|
|
254
254
|
#
|
data/lib/discorb/presence.rb
CHANGED
@@ -19,7 +19,7 @@ module Discorb
|
|
19
19
|
# @!attribute [r] activity
|
20
20
|
# @return [Discorb::Presence::Activity] The activity of the presence.
|
21
21
|
|
22
|
-
#
|
22
|
+
# @private
|
23
23
|
def initialize(client, data)
|
24
24
|
@client = client
|
25
25
|
@data = data
|
@@ -89,7 +89,7 @@ module Discorb
|
|
89
89
|
5 => :competing,
|
90
90
|
}
|
91
91
|
|
92
|
-
#
|
92
|
+
# @private
|
93
93
|
def initialize(data)
|
94
94
|
@name = data[:name]
|
95
95
|
@type = self.class.activity_types[data[:type]]
|
@@ -140,7 +140,7 @@ module Discorb
|
|
140
140
|
# @return [Time] The end time of the activity.
|
141
141
|
attr_reader :end
|
142
142
|
|
143
|
-
#
|
143
|
+
# @private
|
144
144
|
def initialize(data)
|
145
145
|
@start = data[:start] && Time.at(data[:start])
|
146
146
|
@end = data[:end] && Time.at(data[:end])
|
@@ -156,7 +156,7 @@ module Discorb
|
|
156
156
|
# @!attribute [r] max_size
|
157
157
|
# @return [Integer] The max size of the party.
|
158
158
|
|
159
|
-
#
|
159
|
+
# @private
|
160
160
|
def initialize(data)
|
161
161
|
@id = data[:id]
|
162
162
|
@size = data[:size]
|
@@ -226,7 +226,7 @@ module Discorb
|
|
226
226
|
# @return [String] The match secret of the activity.
|
227
227
|
attr_reader :match
|
228
228
|
|
229
|
-
#
|
229
|
+
# @private
|
230
230
|
def initialize(data)
|
231
231
|
@join = data[:join]
|
232
232
|
@spectate = data[:spectate]
|
@@ -244,7 +244,7 @@ module Discorb
|
|
244
244
|
attr_reader :url
|
245
245
|
alias text label
|
246
246
|
|
247
|
-
#
|
247
|
+
# @private
|
248
248
|
def initialize(data)
|
249
249
|
@label = data[0]
|
250
250
|
@url = data[1]
|
@@ -252,7 +252,7 @@ module Discorb
|
|
252
252
|
end
|
253
253
|
|
254
254
|
class << self
|
255
|
-
#
|
255
|
+
# @private
|
256
256
|
attr_reader :activity_types
|
257
257
|
end
|
258
258
|
end
|
@@ -275,7 +275,7 @@ module Discorb
|
|
275
275
|
# @!attribute [r] web?
|
276
276
|
# @return [Boolean] Whether the user is not offline on web.
|
277
277
|
|
278
|
-
#
|
278
|
+
# @private
|
279
279
|
def initialize(data)
|
280
280
|
@desktop = data[:desktop]&.to_sym || :offline
|
281
281
|
@mobile = data[:mobile]&.to_sym || :offline
|
data/lib/discorb/rate_limit.rb
CHANGED
data/lib/discorb/reaction.rb
CHANGED
data/lib/discorb/role.rb
CHANGED
@@ -36,7 +36,7 @@ module Discorb
|
|
36
36
|
|
37
37
|
include Comparable
|
38
38
|
|
39
|
-
#
|
39
|
+
# @private
|
40
40
|
def initialize(client, guild, data)
|
41
41
|
@client = client
|
42
42
|
@guild = guild
|
@@ -154,7 +154,7 @@ module Discorb
|
|
154
154
|
# @!attribute [r] integration?
|
155
155
|
# @return [Boolean] Whether the role is an integration role.
|
156
156
|
|
157
|
-
#
|
157
|
+
# @private
|
158
158
|
def initialize(data)
|
159
159
|
@bot_id = Snowflake.new(data[:bot_id])
|
160
160
|
@integration_id = Snowflake.new(data[:integration_id])
|
data/lib/discorb/sticker.rb
CHANGED
@@ -38,7 +38,7 @@ module Discorb
|
|
38
38
|
2 => :apng,
|
39
39
|
3 => :lottie,
|
40
40
|
}
|
41
|
-
#
|
41
|
+
# @private
|
42
42
|
def initialize(client, data)
|
43
43
|
@client = client
|
44
44
|
_set_data(data)
|
@@ -116,7 +116,7 @@ module Discorb
|
|
116
116
|
# @return [Discorb::Asset] The banner of the pack.
|
117
117
|
attr_reader :banner
|
118
118
|
|
119
|
-
#
|
119
|
+
# @private
|
120
120
|
def initialize(client, data)
|
121
121
|
@client = client
|
122
122
|
@id = Snowflake.new(data[:id])
|
@@ -150,7 +150,7 @@ module Discorb
|
|
150
150
|
end
|
151
151
|
|
152
152
|
class << self
|
153
|
-
#
|
153
|
+
# @private
|
154
154
|
attr_reader :sticker_type, :sticker_format
|
155
155
|
end
|
156
156
|
end
|