discorb 0.13.1 → 0.14.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/.gitattributes +2 -0
- data/.github/workflows/build_version.yml +3 -3
- data/.github/workflows/codeql-analysis.yml +70 -0
- data/.github/workflows/lint-push.yml +18 -0
- data/.github/workflows/lint.yml +16 -0
- data/.rubocop.yml +70 -0
- data/CODE_OF_CONDUCT.md +128 -0
- data/Changelog.md +33 -0
- data/Gemfile +7 -3
- data/README.md +1 -1
- data/Rakefile +35 -35
- data/discorb.gemspec +13 -1
- data/examples/commands/bookmarker.rb +2 -1
- data/examples/commands/hello.rb +1 -0
- data/examples/commands/inspect.rb +3 -2
- data/examples/components/authorization_button.rb +2 -1
- data/examples/components/select_menu.rb +2 -1
- data/examples/extension/main.rb +1 -0
- data/examples/extension/message_expander.rb +1 -0
- data/examples/simple/eval.rb +3 -2
- data/examples/simple/ping_pong.rb +1 -0
- data/examples/simple/rolepanel.rb +1 -0
- data/examples/simple/wait_for_message.rb +4 -3
- data/exe/discorb +8 -7
- data/lib/discorb/allowed_mentions.rb +64 -0
- data/lib/discorb/app_command/command.rb +274 -0
- data/lib/discorb/app_command/handler.rb +168 -0
- data/lib/discorb/app_command.rb +2 -404
- data/lib/discorb/asset.rb +3 -1
- data/lib/discorb/audit_logs.rb +3 -3
- data/lib/discorb/channel.rb +89 -53
- data/lib/discorb/client.rb +36 -33
- data/lib/discorb/common.rb +28 -21
- data/lib/discorb/components/button.rb +106 -0
- data/lib/discorb/components/select_menu.rb +157 -0
- data/lib/discorb/components/text_input.rb +96 -0
- data/lib/discorb/components.rb +11 -276
- data/lib/discorb/dictionary.rb +13 -2
- data/lib/discorb/embed.rb +2 -2
- data/lib/discorb/emoji.rb +21 -5
- data/lib/discorb/emoji_table.rb +1 -1
- data/lib/discorb/error.rb +4 -6
- data/lib/discorb/event.rb +13 -11
- data/lib/discorb/exe/about.rb +1 -0
- data/lib/discorb/exe/irb.rb +4 -3
- data/lib/discorb/exe/new.rb +6 -7
- data/lib/discorb/exe/run.rb +2 -1
- data/lib/discorb/exe/setup.rb +8 -5
- data/lib/discorb/exe/show.rb +1 -0
- data/lib/discorb/extend.rb +19 -14
- data/lib/discorb/extension.rb +5 -1
- data/lib/discorb/gateway.rb +75 -27
- data/lib/discorb/guild.rb +58 -80
- data/lib/discorb/guild_template.rb +5 -5
- data/lib/discorb/http.rb +34 -169
- data/lib/discorb/integration.rb +32 -3
- data/lib/discorb/intents.rb +1 -1
- data/lib/discorb/interaction/autocomplete.rb +5 -4
- data/lib/discorb/interaction/command.rb +34 -9
- data/lib/discorb/interaction/components.rb +5 -2
- data/lib/discorb/interaction/modal.rb +33 -0
- data/lib/discorb/interaction/response.rb +41 -12
- data/lib/discorb/interaction/root.rb +1 -0
- data/lib/discorb/interaction.rb +2 -1
- data/lib/discorb/invite.rb +1 -1
- data/lib/discorb/log.rb +4 -3
- data/lib/discorb/member.rb +4 -6
- data/lib/discorb/message.rb +31 -282
- data/lib/discorb/message_meta.rb +205 -0
- data/lib/discorb/modules.rb +11 -11
- data/lib/discorb/permission.rb +2 -2
- data/lib/discorb/presence.rb +6 -3
- data/lib/discorb/rate_limit.rb +15 -21
- data/lib/discorb/role.rb +3 -3
- data/lib/discorb/sticker.rb +2 -2
- data/lib/discorb/user.rb +3 -3
- data/lib/discorb/utils/colored_puts.rb +1 -0
- data/lib/discorb/voice_state.rb +7 -2
- data/lib/discorb/webhook.rb +8 -5
- data/lib/discorb.rb +1 -0
- data/template-replace/scripts/arrow.rb +1 -0
- data/template-replace/scripts/favicon.rb +1 -0
- data/template-replace/scripts/index.rb +2 -1
- data/template-replace/scripts/locale_ja.rb +5 -4
- data/template-replace/scripts/sidebar.rb +1 -0
- data/template-replace/scripts/version.rb +7 -10
- data/template-replace/scripts/yard_replace.rb +5 -4
- metadata +29 -4
data/lib/discorb/guild.rb
CHANGED
@@ -168,7 +168,7 @@ module Discorb
|
|
168
168
|
#
|
169
169
|
def leave!
|
170
170
|
Async do
|
171
|
-
@client.http.
|
171
|
+
@client.http.request(Route.new("/users/@me/guilds/#{@id}", "//users/@me/guilds/:guild_id", :delete)).wait
|
172
172
|
@client.guilds.delete(@id)
|
173
173
|
end
|
174
174
|
end
|
@@ -184,7 +184,7 @@ module Discorb
|
|
184
184
|
#
|
185
185
|
def fetch_scheduled_events(with_user_count: true)
|
186
186
|
Async do
|
187
|
-
_resp, events = @client.http.
|
187
|
+
_resp, events = @client.http.request(Route.new("/guilds/#{@id}/scheduled-events?with_user_count=#{with_user_count}", "//guilds/:guild_id/scheduled-events", :get)).wait
|
188
188
|
@scheduled_events = events.map { |e| ScheduledEvent.new(@client, e) }
|
189
189
|
end
|
190
190
|
end
|
@@ -200,7 +200,7 @@ module Discorb
|
|
200
200
|
#
|
201
201
|
def fetch_scheduled_event(id)
|
202
202
|
Async do
|
203
|
-
_resp, event = @client.http.
|
203
|
+
_resp, event = @client.http.request(Route.new("/guilds/#{@id}/scheduled-events/#{id}", "//guilds/:guild_id/scheduled-events/:scheduled_event_id", :get)).wait
|
204
204
|
rescue Discorb::NotFoundError
|
205
205
|
return nil
|
206
206
|
else
|
@@ -274,7 +274,7 @@ module Discorb
|
|
274
274
|
else
|
275
275
|
raise ArgumentError, "Invalid scheduled event type: #{type}"
|
276
276
|
end
|
277
|
-
_resp, event = @client.http.
|
277
|
+
_resp, event = @client.http.request(Route.new("/guilds/#{@id}/scheduled-events", "//guilds/:guild_id/scheduled-events", :post), payload).wait
|
278
278
|
Discorb::ScheduledEvent.new(@client, event)
|
279
279
|
end
|
280
280
|
end
|
@@ -288,7 +288,7 @@ module Discorb
|
|
288
288
|
#
|
289
289
|
def fetch_emoji_list
|
290
290
|
Async do
|
291
|
-
_resp, data = @client.http.
|
291
|
+
_resp, data = @client.http.request(Route.new("/guilds/#{@id}/emojis", "//guilds/:guild_id/emojis", :get)).wait
|
292
292
|
@emojis = Dictionary.new
|
293
293
|
ids = @emojis.map(&:id).map(&:to_s)
|
294
294
|
data.map do |e|
|
@@ -312,7 +312,7 @@ module Discorb
|
|
312
312
|
# @return [Async::Task<Discorb::CustomEmoji>] The emoji with the given id.
|
313
313
|
#
|
314
314
|
def fetch_emoji(id)
|
315
|
-
_resp, data = @client.http.
|
315
|
+
_resp, data = @client.http.request(Route.new("/guilds/#{@id}/emojis/#{id}", "//guilds/:guild_id/emojis/:emoji_id", :get)).wait
|
316
316
|
@emojis[e[:id]] = CustomEmoji.new(@client, self, data)
|
317
317
|
end
|
318
318
|
|
@@ -327,14 +327,12 @@ module Discorb
|
|
327
327
|
# @return [Async::Task<Discorb::CustomEmoji>] The created emoji.
|
328
328
|
#
|
329
329
|
def create_emoji(name, image, roles: [])
|
330
|
-
_resp, data = @client.http.post
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
}
|
337
|
-
).wait
|
330
|
+
_resp, data = @client.http.request(Route.new("/guilds/#{@id}/emojis", "//guilds/:guild_id/emojis", :post),
|
331
|
+
{
|
332
|
+
name: name,
|
333
|
+
image: image.to_s,
|
334
|
+
roles: roles.map { |r| Discorb::Utils.try(r, :id) },
|
335
|
+
}).wait
|
338
336
|
@emojis[data[:id]] = CustomEmoji.new(@client, self, data)
|
339
337
|
end
|
340
338
|
|
@@ -346,7 +344,7 @@ module Discorb
|
|
346
344
|
#
|
347
345
|
def fetch_webhooks
|
348
346
|
Async do
|
349
|
-
_resp, data = @client.http.
|
347
|
+
_resp, data = @client.http.request(Route.new("/guilds/#{@id}/webhooks", "//guilds/:guild_id/webhooks", :get)).wait
|
350
348
|
data.map { |webhook| Webhook.new([@client, webhook]) }
|
351
349
|
end
|
352
350
|
end
|
@@ -359,7 +357,7 @@ module Discorb
|
|
359
357
|
#
|
360
358
|
def fetch_audit_log
|
361
359
|
Async do
|
362
|
-
_resp, data = @client.http.
|
360
|
+
_resp, data = @client.http.request(Route.new("/guilds/#{@id}/audit-logs", "//guilds/:guild_id/audit-logs", :get)).wait
|
363
361
|
AuditLog.new(@client, data, self)
|
364
362
|
end
|
365
363
|
end
|
@@ -372,7 +370,7 @@ module Discorb
|
|
372
370
|
#
|
373
371
|
def fetch_channels
|
374
372
|
Async do
|
375
|
-
_resp, data = @client.http.
|
373
|
+
_resp, data = @client.http.request(Route.new("/guilds/#{@id}/channels", "//guilds/:guild_id/channels", :get)).wait
|
376
374
|
data.map { |c| Channel.make_channel(@client, c) }
|
377
375
|
end
|
378
376
|
end
|
@@ -415,9 +413,7 @@ module Discorb
|
|
415
413
|
end
|
416
414
|
end
|
417
415
|
payload[:parent_id] = parent.id if parent
|
418
|
-
_resp, data = @client.http.post
|
419
|
-
"/guilds/#{@id}/channels", payload, audit_log_reason: reason,
|
420
|
-
).wait
|
416
|
+
_resp, data = @client.http.request(Route.new("/guilds/#{@id}/channels", "//guilds/:guild_id/channels", :post), payload, audit_log_reason: reason).wait
|
421
417
|
payload[:parent_id] = parent&.id
|
422
418
|
Channel.make_channel(@client, data)
|
423
419
|
end
|
@@ -457,9 +453,7 @@ module Discorb
|
|
457
453
|
end
|
458
454
|
end
|
459
455
|
payload[:parent_id] = parent.id if parent
|
460
|
-
_resp, data = @client.http.post
|
461
|
-
"/guilds/#{@id}/channels", payload, audit_log_reason: reason,
|
462
|
-
).wait
|
456
|
+
_resp, data = @client.http.request(Route.new("/guilds/#{@id}/channels", "//guilds/:guild_id/channels", :post), payload, audit_log_reason: reason).wait
|
463
457
|
payload[:parent_id] = parent&.id
|
464
458
|
Channel.make_channel(@client, data)
|
465
459
|
end
|
@@ -492,9 +486,7 @@ module Discorb
|
|
492
486
|
end
|
493
487
|
end
|
494
488
|
payload[:parent_id] = parent&.id
|
495
|
-
_resp, data = @client.http.post
|
496
|
-
"/guilds/#{@id}/channels", payload, audit_log_reason: reason,
|
497
|
-
).wait
|
489
|
+
_resp, data = @client.http.request(Route.new("/guilds/#{@id}/channels", "//guilds/:guild_id/channels", :post), payload, audit_log_reason: reason).wait
|
498
490
|
Channel.make_channel(@client, data)
|
499
491
|
end
|
500
492
|
end
|
@@ -531,9 +523,7 @@ module Discorb
|
|
531
523
|
end
|
532
524
|
end
|
533
525
|
payload[:parent_id] = parent&.id
|
534
|
-
_resp, data = @client.http.post
|
535
|
-
"/guilds/#{@id}/channels", payload, audit_log_reason: reason,
|
536
|
-
).wait
|
526
|
+
_resp, data = @client.http.request(Route.new("/guilds/#{@id}/channels", "//guilds/:guild_id/channels", :post), payload, audit_log_reason: reason).wait
|
537
527
|
Channel.make_channel(@client, data)
|
538
528
|
end
|
539
529
|
end
|
@@ -576,9 +566,7 @@ module Discorb
|
|
576
566
|
end
|
577
567
|
payload[:nsfw] = nsfw unless nsfw.nil?
|
578
568
|
payload[:parent_id] = parent&.id
|
579
|
-
_resp, data = @client.http.post
|
580
|
-
"/guilds/#{@id}/channels", payload, audit_log_reason: reason,
|
581
|
-
).wait
|
569
|
+
_resp, data = @client.http.request(Route.new("/guilds/#{@id}/channels", "//guilds/:guild_id/channels", :post), payload, audit_log_reason: reason).wait
|
582
570
|
Channel.make_channel(@client, data)
|
583
571
|
end
|
584
572
|
end
|
@@ -591,7 +579,7 @@ module Discorb
|
|
591
579
|
#
|
592
580
|
def fetch_active_threads
|
593
581
|
Async do
|
594
|
-
_resp, data = @client.http.
|
582
|
+
_resp, data = @client.http.request(Route.new("/guilds/#{@id}/threads/active", "//guilds/:guild_id/threads/active", :get)).wait
|
595
583
|
data[:threads].map { |t| Channel.make_thread(@client, t) }
|
596
584
|
end
|
597
585
|
end
|
@@ -607,7 +595,7 @@ module Discorb
|
|
607
595
|
#
|
608
596
|
def fetch_member(id)
|
609
597
|
Async do
|
610
|
-
_resp, data = @client.http.
|
598
|
+
_resp, data = @client.http.request(Route.new("/guilds/#{@id}/members/#{id}", "//guilds/:guild_id/members/:user_id", :get)).wait
|
611
599
|
rescue Discorb::NotFoundError
|
612
600
|
nil
|
613
601
|
else
|
@@ -626,20 +614,18 @@ module Discorb
|
|
626
614
|
#
|
627
615
|
def fetch_members(limit: 0, after: nil)
|
628
616
|
Async do
|
629
|
-
unless limit
|
630
|
-
_resp, data = @client.http.
|
617
|
+
unless limit.zero?
|
618
|
+
_resp, data = @client.http.request(Route.new("/guilds/#{@id}/members?#{URI.encode_www_form({ after: after, limit: limit })}", "//guilds/:guild_id/members", :get)).wait
|
631
619
|
next data[:members].map { |m| Member.new(@client, @id, m[:user], m) }
|
632
620
|
end
|
633
621
|
ret = []
|
634
622
|
after = 0
|
635
623
|
loop do
|
636
624
|
params = { after: after, limit: 100 }
|
637
|
-
_resp, data = @client.http.
|
625
|
+
_resp, data = @client.http.request(Route.new("/guilds/#{@id}/members?#{URI.encode_www_form(params)}", "//guilds/:guild_id/members", :get)).wait
|
638
626
|
ret += data.map { |m| Member.new(@client, @id, m[:user], m) }
|
639
627
|
after = data.last[:user][:id]
|
640
|
-
if data.length != 1000
|
641
|
-
break
|
642
|
-
end
|
628
|
+
break if data.length != 1000
|
643
629
|
end
|
644
630
|
ret
|
645
631
|
end
|
@@ -658,7 +644,7 @@ module Discorb
|
|
658
644
|
#
|
659
645
|
def fetch_members_named(name, limit: 1)
|
660
646
|
Async do
|
661
|
-
_resp, data = @client.http.
|
647
|
+
_resp, data = @client.http.request(Route.new("/guilds/#{@id}/members/search?#{URI.encode_www_form({ query: name, limit: limit })}", "//guilds/:guild_id/members/search", :get)).wait
|
662
648
|
data.map { |d| Member.new(@client, @id, d[:user], d) }
|
663
649
|
end
|
664
650
|
end
|
@@ -687,7 +673,7 @@ module Discorb
|
|
687
673
|
#
|
688
674
|
def edit_nickname(nickname, reason: nil)
|
689
675
|
Async do
|
690
|
-
@client.http.
|
676
|
+
@client.http.request(Route.new("/guilds/#{@id}/members/@me/nick", "//guilds/:guild_id/members/@me/nick", :patch), { nick: nickname }, audit_log_reason: reason).wait
|
691
677
|
end
|
692
678
|
end
|
693
679
|
|
@@ -706,7 +692,7 @@ module Discorb
|
|
706
692
|
#
|
707
693
|
def kick_member(member, reason: nil)
|
708
694
|
Async do
|
709
|
-
@client.http.
|
695
|
+
@client.http.request(Route.new("/guilds/#{@id}/members/#{member.id}", "//guilds/:guild_id/members/:user_id", :delete), audit_log_reason: reason).wait
|
710
696
|
end
|
711
697
|
end
|
712
698
|
|
@@ -718,7 +704,7 @@ module Discorb
|
|
718
704
|
#
|
719
705
|
def fetch_bans
|
720
706
|
Async do
|
721
|
-
_resp, data = @client.http.
|
707
|
+
_resp, data = @client.http.request(Route.new("/guilds/#{@id}/bans", "//guilds/:guild_id/bans", :get)).wait
|
722
708
|
data.map { |d| Ban.new(@client, self, d) }
|
723
709
|
end
|
724
710
|
end
|
@@ -734,7 +720,7 @@ module Discorb
|
|
734
720
|
#
|
735
721
|
def fetch_ban(user)
|
736
722
|
Async do
|
737
|
-
_resp, data = @client.http.
|
723
|
+
_resp, data = @client.http.request(Route.new("/guilds/#{@id}/bans/#{user.id}", "//guilds/:guild_id/bans/:user_id", :get)).wait
|
738
724
|
rescue Discorb::NotFoundError
|
739
725
|
nil
|
740
726
|
else
|
@@ -768,9 +754,7 @@ module Discorb
|
|
768
754
|
#
|
769
755
|
def ban_member(member, delete_message_days: 0, reason: nil)
|
770
756
|
Async do
|
771
|
-
_resp, data = @client.http.post
|
772
|
-
"/guilds/#{@id}/bans", { user: member.id, delete_message_days: delete_message_days }, audit_log_reason: reason,
|
773
|
-
).wait
|
757
|
+
_resp, data = @client.http.request(Route.new("/guilds/#{@id}/bans", "//guilds/:guild_id/bans", :post), { user: member.id, delete_message_days: delete_message_days }, audit_log_reason: reason).wait
|
774
758
|
Ban.new(@client, self, data)
|
775
759
|
end
|
776
760
|
end
|
@@ -786,7 +770,7 @@ module Discorb
|
|
786
770
|
#
|
787
771
|
def unban_user(user, reason: nil)
|
788
772
|
Async do
|
789
|
-
@client.http.
|
773
|
+
@client.http.request(Route.new("/guilds/#{@id}/bans/#{user.id}", "//guilds/:guild_id/bans/:user_id", :delete), audit_log_reason: reason).wait
|
790
774
|
end
|
791
775
|
end
|
792
776
|
|
@@ -798,7 +782,7 @@ module Discorb
|
|
798
782
|
#
|
799
783
|
def fetch_roles
|
800
784
|
Async do
|
801
|
-
_resp, data = @client.http.
|
785
|
+
_resp, data = @client.http.request(Route.new("/guilds/#{@id}/roles", "//guilds/:guild_id/roles", :get)).wait
|
802
786
|
data.map { |d| Role.new(@client, self, d) }
|
803
787
|
end
|
804
788
|
end
|
@@ -822,9 +806,7 @@ module Discorb
|
|
822
806
|
payload[:color] = color.to_i if color
|
823
807
|
payload[:hoist] = hoist if hoist
|
824
808
|
payload[:mentionable] = mentionable if mentionable
|
825
|
-
_resp, data = @client.http.post
|
826
|
-
"/guilds/#{@id}/roles", payload, audit_log_reason: reason,
|
827
|
-
).wait
|
809
|
+
_resp, data = @client.http.request(Route.new("/guilds/#{@id}/roles", "//guilds/:guild_id/roles", :post), payload, audit_log_reason: reason).wait
|
828
810
|
Role.new(@client, self, data)
|
829
811
|
end
|
830
812
|
end
|
@@ -845,7 +827,7 @@ module Discorb
|
|
845
827
|
include_roles: @id.to_s,
|
846
828
|
}
|
847
829
|
param[:include_roles] = roles.map(&:id).map(&:to_s).join(";") if roles.any?
|
848
|
-
_resp, data = @client.http.
|
830
|
+
_resp, data = @client.http.request(Route.new("/guilds/#{@id}/prune?#{URI.encode_www_form(params)}", "//guilds/:guild_id/prune", :get)).wait
|
849
831
|
data[:pruned]
|
850
832
|
end
|
851
833
|
end
|
@@ -862,9 +844,7 @@ module Discorb
|
|
862
844
|
#
|
863
845
|
def prune(days = 7, roles: [], reason: nil)
|
864
846
|
Async do
|
865
|
-
_resp, data = @client.http.post(
|
866
|
-
"/guilds/#{@id}/prune", { days: days, roles: roles.map(&:id) }, audit_log_reason: reason,
|
867
|
-
).wait
|
847
|
+
_resp, data = @client.http.request(Route.new("/guilds/#{@id}/prune", "//guilds/:guild_id/prune", :post), { days: days, roles: roles.map(&:id) }, audit_log_reason: reason).wait
|
868
848
|
data[:pruned]
|
869
849
|
end
|
870
850
|
end
|
@@ -877,7 +857,7 @@ module Discorb
|
|
877
857
|
#
|
878
858
|
def fetch_voice_regions
|
879
859
|
Async do
|
880
|
-
_resp, data = @client.http.
|
860
|
+
_resp, data = @client.http.request(Route.new("/guilds/#{@id}/voice", "//guilds/:guild_id/voice", :get)).wait
|
881
861
|
data.map { |d| VoiceRegion.new(@client, d) }
|
882
862
|
end
|
883
863
|
end
|
@@ -890,7 +870,7 @@ module Discorb
|
|
890
870
|
#
|
891
871
|
def fetch_invites
|
892
872
|
Async do
|
893
|
-
_resp, data = @client.http.
|
873
|
+
_resp, data = @client.http.request(Route.new("/guilds/#{@id}/invites", "//guilds/:guild_id/invites", :get)).wait
|
894
874
|
data.map { |d| Invite.new(@client, d) }
|
895
875
|
end
|
896
876
|
end
|
@@ -903,7 +883,7 @@ module Discorb
|
|
903
883
|
#
|
904
884
|
def fetch_integrations
|
905
885
|
Async do
|
906
|
-
_resp, data = @client.http.
|
886
|
+
_resp, data = @client.http.request(Route.new("/guilds/#{@id}/integrations", "//guilds/:guild_id/integrations", :get)).wait
|
907
887
|
data.map { |d| Integration.new(@client, d) }
|
908
888
|
end
|
909
889
|
end
|
@@ -916,7 +896,7 @@ module Discorb
|
|
916
896
|
#
|
917
897
|
def fetch_widget
|
918
898
|
Async do
|
919
|
-
_resp, data = @client.http.
|
899
|
+
_resp, data = @client.http.request(Route.new("/guilds/#{@id}/widget", "//guilds/:guild_id/widget", :get)).wait
|
920
900
|
Widget.new(@client, @id, data)
|
921
901
|
end
|
922
902
|
end
|
@@ -929,7 +909,7 @@ module Discorb
|
|
929
909
|
#
|
930
910
|
def fetch_vanity_invite
|
931
911
|
Async do
|
932
|
-
_resp, data = @client.http.
|
912
|
+
_resp, data = @client.http.request(Route.new("/guilds/#{@id}/vanity-url", "//guilds/:guild_id/vanity-url", :get)).wait
|
933
913
|
VanityInvite.new(@client, self, data)
|
934
914
|
end
|
935
915
|
end
|
@@ -942,7 +922,7 @@ module Discorb
|
|
942
922
|
#
|
943
923
|
def fetch_welcome_screen
|
944
924
|
Async do
|
945
|
-
_resp, data = @client.http.
|
925
|
+
_resp, data = @client.http.request(Route.new("/guilds/#{@id}/welcome-screen", "//guilds/:guild_id/welcome-screen", :get)).wait
|
946
926
|
WelcomeScreen.new(@client, self, data)
|
947
927
|
end
|
948
928
|
end
|
@@ -955,7 +935,7 @@ module Discorb
|
|
955
935
|
#
|
956
936
|
def fetch_stickers
|
957
937
|
Async do
|
958
|
-
_resp, data = @client.http.
|
938
|
+
_resp, data = @client.http.request(Route.new("/guilds/#{@id}/stickers", "//guilds/:guild_id/stickers", :get)).wait
|
959
939
|
data.map { |d| Sticker::GuildSticker.new(@client, d) }
|
960
940
|
end
|
961
941
|
end
|
@@ -971,7 +951,7 @@ module Discorb
|
|
971
951
|
#
|
972
952
|
def fetch_sticker(id)
|
973
953
|
Async do
|
974
|
-
_resp, data = @client.http.
|
954
|
+
_resp, data = @client.http.request(Route.new("/guilds/#{@id}/stickers/#{id}", "//guilds/:guild_id/stickers/:sticker_id", :get)).wait
|
975
955
|
rescue Discorb::NotFoundError
|
976
956
|
nil
|
977
957
|
else
|
@@ -987,7 +967,7 @@ module Discorb
|
|
987
967
|
#
|
988
968
|
def fetch_templates
|
989
969
|
Async do
|
990
|
-
_resp, data = @client.http.
|
970
|
+
_resp, data = @client.http.request(Route.new("/guilds/#{@id}/templates", "//guilds/:guild_id/templates", :get)).wait
|
991
971
|
data.map { |d| GuildTemplate.new(@client, d) }
|
992
972
|
end
|
993
973
|
end
|
@@ -1015,9 +995,7 @@ module Discorb
|
|
1015
995
|
#
|
1016
996
|
def create_template(name, description = nil, reason: nil)
|
1017
997
|
Async do
|
1018
|
-
_resp, data = @client.http.post
|
1019
|
-
"/guilds/#{@id}/templates", { name: name, description: description }, audit_log_reason: reason,
|
1020
|
-
).wait
|
998
|
+
_resp, data = @client.http.request(Route.new("/guilds/#{@id}/templates", "//guilds/:guild_id/templates", :post), { name: name, description: description }, audit_log_reason: reason).wait
|
1021
999
|
GuildTemplate.new(@client, data)
|
1022
1000
|
end
|
1023
1001
|
end
|
@@ -1097,7 +1075,7 @@ module Discorb
|
|
1097
1075
|
payload = {}
|
1098
1076
|
payload[:enabled] = enabled unless enabled.nil?
|
1099
1077
|
payload[:channel_id] = channel.id if channel_id
|
1100
|
-
@client.http.
|
1078
|
+
@client.http.request(Route.new("/guilds/#{@guild_id}/widget", "//guilds/:guild_id/widget", :patch), payload, audit_log_reason: reason).wait
|
1101
1079
|
end
|
1102
1080
|
end
|
1103
1081
|
|
@@ -1119,7 +1097,7 @@ module Discorb
|
|
1119
1097
|
def iframe(theme: "dark", width: 350, height: 500)
|
1120
1098
|
[
|
1121
1099
|
%(<iframe src="https://canary.discord.com/widget?id=#{@guild_id}&theme=#{theme}" width="#{width}" height="#{height}"),
|
1122
|
-
%(allowtransparency="true" frameborder="0" sandbox="allow-popups allow-popups-to-escape-sandbox allow-same-origin allow-scripts"></iframe>)
|
1100
|
+
%(allowtransparency="true" frameborder="0" sandbox="allow-popups allow-popups-to-escape-sandbox allow-same-origin allow-scripts"></iframe>)
|
1123
1101
|
].join
|
1124
1102
|
end
|
1125
1103
|
end
|
@@ -1172,9 +1150,9 @@ module Discorb
|
|
1172
1150
|
@unavailable = false
|
1173
1151
|
@name = data[:name]
|
1174
1152
|
@members = Discorb::Dictionary.new
|
1175
|
-
data[:members]
|
1176
|
-
|
1177
|
-
|
1153
|
+
data[:members]&.each do |m|
|
1154
|
+
Member.new(@client, @id, m[:user], m)
|
1155
|
+
end
|
1178
1156
|
@splash = data[:splash] && Asset.new(self, data[:splash], path: "splashes/#{@id}")
|
1179
1157
|
@discovery_splash = data[:discovery_splash] && Asset.new(self, data[:discovery_splash], path: "discovery-splashes/#{@id}")
|
1180
1158
|
@owner_id = data[:owner_id]
|
@@ -1220,13 +1198,13 @@ module Discorb
|
|
1220
1198
|
tmp_channels = data[:channels].filter { |c| !c.key?(:thread_metadata) }.map do |c|
|
1221
1199
|
Channel.make_channel(@client, c.merge({ guild_id: @id }))
|
1222
1200
|
end
|
1223
|
-
@channels = Dictionary.new(tmp_channels.
|
1224
|
-
@voice_states = Dictionary.new(data[:voice_states].
|
1201
|
+
@channels = Dictionary.new(tmp_channels.to_h { |c| [c.id, c] }, sort: ->(c) { c[1].position })
|
1202
|
+
@voice_states = Dictionary.new(data[:voice_states].to_h { |v| [Snowflake.new(v[:user_id]), VoiceState.new(@client, v.merge({ guild_id: @id }))] })
|
1225
1203
|
@threads = data[:threads] ? data[:threads].map { |t| Channel.make_channel(@client, t) } : []
|
1226
|
-
@presences = Dictionary.new(data[:presences].
|
1204
|
+
@presences = Dictionary.new(data[:presences].to_h { |pr| [Snowflake.new(pr[:user][:id]), Presence.new(@client, pr)] })
|
1227
1205
|
@max_presences = data[:max_presences]
|
1228
|
-
@stage_instances = Dictionary.new(data[:stage_instances].
|
1229
|
-
@scheduled_events = Dictionary.new(data[:guild_scheduled_events].
|
1206
|
+
@stage_instances = Dictionary.new(data[:stage_instances].to_h { |s| [Snowflake.new(s[:id]), StageInstance.new(@client, s)] })
|
1207
|
+
@scheduled_events = Dictionary.new(data[:guild_scheduled_events].to_h { |s| [Snowflake.new(s[:id]), ScheduledEvent.new(@client, s)] })
|
1230
1208
|
@data.update(data)
|
1231
1209
|
end
|
1232
1210
|
end
|
@@ -1355,7 +1333,7 @@ module Discorb
|
|
1355
1333
|
payload[:enabled] = enabled unless enabled == Discorb::Unset
|
1356
1334
|
payload[:welcome_channels] = channels.map(&:to_hash) unless channels == Discorb::Unset
|
1357
1335
|
payload[:description] = description unless description == Discorb::Unset
|
1358
|
-
@client.http.
|
1336
|
+
@client.http.request(Route.new("/guilds/#{@guild.id}/welcome-screen", "//guilds/:guild_id/welcome-screen", :patch), payload, audit_log_reason: reason).wait
|
1359
1337
|
end
|
1360
1338
|
end
|
1361
1339
|
end
|
@@ -58,7 +58,7 @@ module Discorb
|
|
58
58
|
payload = {}
|
59
59
|
payload[:name] = name if name
|
60
60
|
payload[:description] = description if description != Discorb::Unset
|
61
|
-
@client.http.
|
61
|
+
@client.http.request(Route.new("/guilds/#{@source_guild_id}/templates/#{@code}", "//guilds/:guild_id/templates/:code", :patch), payload).wait
|
62
62
|
end
|
63
63
|
end
|
64
64
|
|
@@ -72,7 +72,7 @@ module Discorb
|
|
72
72
|
#
|
73
73
|
def update
|
74
74
|
Async do
|
75
|
-
_resp, data = @client.http.
|
75
|
+
_resp, data = @client.http.request(Route.new("/guilds/#{@source_guild_id}/templates/#{@code}", "//guilds/:guild_id/templates/:code", :put)).wait
|
76
76
|
_set_data(data)
|
77
77
|
end
|
78
78
|
end
|
@@ -85,7 +85,7 @@ module Discorb
|
|
85
85
|
#
|
86
86
|
def delete!
|
87
87
|
Async do
|
88
|
-
@client.http.
|
88
|
+
@client.http.request(Route.new("/guilds/#{@source_guild_id}/templates/#{@code}", "//guilds/:guild_id/templates/:code", :delete)).wait
|
89
89
|
end
|
90
90
|
end
|
91
91
|
|
@@ -187,9 +187,9 @@ module Discorb
|
|
187
187
|
@nsfw = data[:nsfw]
|
188
188
|
@rate_limit_per_user = data[:rate_limit_per_user]
|
189
189
|
@parent_id = data[:parent_id]
|
190
|
-
@permission_overwrites = data[:permission_overwrites].
|
190
|
+
@permission_overwrites = data[:permission_overwrites].to_h do |ow|
|
191
191
|
[Snowflake.new(ow[:id]), PermissionOverwrite.new(ow[:allow], ow[:deny])]
|
192
|
-
end
|
192
|
+
end
|
193
193
|
@type = Discorb::Channel.descendants.find { |c| c.channel_type == data[:type] }
|
194
194
|
end
|
195
195
|
end
|