discorb 0.12.2 → 0.13.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (72) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/build_main.yml +1 -0
  3. data/.github/workflows/build_version.yml +1 -0
  4. data/.github/workflows/crowdin.yml +32 -0
  5. data/.gitignore +3 -1
  6. data/.yardopts +2 -0
  7. data/Changelog.md +399 -367
  8. data/Gemfile +5 -1
  9. data/README.md +1 -1
  10. data/Rakefile +139 -9
  11. data/crowdin.yml +2 -0
  12. data/discorb.gemspec +1 -1
  13. data/docs/Examples.md +2 -0
  14. data/docs/application_command.md +17 -12
  15. data/docs/cli/irb.md +2 -0
  16. data/docs/cli/new.md +2 -0
  17. data/docs/cli/run.md +3 -1
  18. data/docs/cli/setup.md +4 -2
  19. data/docs/cli.md +2 -0
  20. data/docs/events.md +59 -5
  21. data/docs/extension.md +2 -2
  22. data/docs/faq.md +4 -2
  23. data/docs/license.md +2 -0
  24. data/docs/tutorial.md +4 -3
  25. data/docs/voice_events.md +2 -0
  26. data/lib/discorb/app_command.rb +13 -7
  27. data/lib/discorb/application.rb +32 -2
  28. data/lib/discorb/audit_logs.rb +28 -16
  29. data/lib/discorb/channel.rb +112 -81
  30. data/lib/discorb/client.rb +17 -19
  31. data/lib/discorb/common.rb +28 -1
  32. data/lib/discorb/components.rb +12 -0
  33. data/lib/discorb/dictionary.rb +1 -1
  34. data/lib/discorb/embed.rb +4 -0
  35. data/lib/discorb/emoji.rb +9 -7
  36. data/lib/discorb/emoji_table.rb +3774 -3689
  37. data/lib/discorb/event.rb +266 -24
  38. data/lib/discorb/event_handler.rb +39 -0
  39. data/lib/discorb/exe/show.rb +2 -0
  40. data/lib/discorb/extension.rb +5 -5
  41. data/lib/discorb/file.rb +4 -0
  42. data/lib/discorb/flag.rb +5 -1
  43. data/lib/discorb/gateway.rb +65 -14
  44. data/lib/discorb/gateway_requests.rb +4 -0
  45. data/lib/discorb/guild.rb +169 -82
  46. data/lib/discorb/guild_template.rb +12 -9
  47. data/lib/discorb/http.rb +82 -37
  48. data/lib/discorb/image.rb +7 -5
  49. data/lib/discorb/integration.rb +4 -1
  50. data/lib/discorb/intents.rb +8 -3
  51. data/lib/discorb/interaction/autocomplete.rb +1 -1
  52. data/lib/discorb/interaction/command.rb +2 -2
  53. data/lib/discorb/interaction/response.rb +27 -25
  54. data/lib/discorb/interaction/root.rb +8 -0
  55. data/lib/discorb/invite.rb +3 -2
  56. data/lib/discorb/log.rb +4 -0
  57. data/lib/discorb/member.rb +42 -13
  58. data/lib/discorb/message.rb +32 -17
  59. data/lib/discorb/modules.rb +19 -26
  60. data/lib/discorb/permission.rb +4 -0
  61. data/lib/discorb/rate_limit.rb +6 -2
  62. data/lib/discorb/role.rb +15 -11
  63. data/lib/discorb/sticker.rb +17 -12
  64. data/lib/discorb/user.rb +8 -7
  65. data/lib/discorb/voice_state.rb +8 -5
  66. data/lib/discorb/webhook.rb +38 -47
  67. data/lib/discorb.rb +2 -2
  68. data/po/yard.pot +7775 -5157
  69. data/sig/discorb.rbs +3317 -3820
  70. data/template-replace/scripts/locale_ja.rb +62 -0
  71. data/template-replace/scripts/yard_replace.rb +6 -0
  72. metadata +7 -4
data/lib/discorb/guild.rb CHANGED
@@ -28,7 +28,7 @@ module Discorb
28
28
  attr_reader :features
29
29
  # @return [:none, :elevated] The MFA level of the guild.
30
30
  attr_reader :mfa_level
31
- # @return [Discorb::Guild::SystemChannelFlag] The flag for the system channel.
31
+ # @return [Discorb::SystemChannelFlag] The flag for the system channel.
32
32
  attr_reader :system_channel_flags
33
33
  # @return [Time] Time that representing when bot has joined the guild.
34
34
  attr_reader :joined_at
@@ -96,6 +96,9 @@ module Discorb
96
96
  # @return [Boolean] Whether the guild is available.
97
97
  attr_reader :available
98
98
  alias available? available
99
+ # @return [Dictionary{Discorb::Snowflake => Discorb::ScheduledEvent}] A dictionary of scheduled events in the guild.
100
+ attr_reader :scheduled_events
101
+ alias events scheduled_events
99
102
 
100
103
  # @!attribute [r] afk_channel
101
104
  # @return [Discorb::VoiceChannel] The AFK channel for this guild.
@@ -159,8 +162,9 @@ module Discorb
159
162
 
160
163
  #
161
164
  # Leave the guild.
162
- # @macro async
163
- # @macro http
165
+ # @async
166
+ #
167
+ # @return [Async::Task<void>] The task.
164
168
  #
165
169
  def leave!
166
170
  Async do
@@ -169,10 +173,115 @@ module Discorb
169
173
  end
170
174
  end
171
175
 
176
+ #
177
+ # Fetch scheduled events for the guild.
178
+ # @async
179
+ #
180
+ # @param [Boolean] with_user_count Whether to include the user count in the events.
181
+ # Defaults to `true`.
182
+ #
183
+ # @return [Array<Discorb::ScheduledEvent>] The events for the guild.
184
+ #
185
+ def fetch_scheduled_events(with_user_count: true)
186
+ Async do
187
+ _resp, events = @client.http.get("/guilds/#{@id}/scheduled-events?with_user_count=#{with_user_count}").wait
188
+ @scheduled_events = events.map { |e| ScheduledEvent.new(@client, e) }
189
+ end
190
+ end
191
+
192
+ #
193
+ # Fetch the scheduled event by ID.
194
+ # @async
195
+ #
196
+ # @param [#to_s] id The ID of the scheduled event.
197
+ #
198
+ # @return [Async::Task<Discorb::ScheduledEvent>] The event with the given ID.
199
+ # @return [Async::Task<nil>] If no event with the given ID exists.
200
+ #
201
+ def fetch_scheduled_event(id)
202
+ Async do
203
+ _resp, event = @client.http.get("/guilds/#{@id}/scheduled-events/#{id}").wait
204
+ rescue Discorb::NotFoundError
205
+ return nil
206
+ else
207
+ ScheduledEvent.new(@client, event)
208
+ end
209
+ end
210
+
211
+ #
212
+ # Create a scheduled event for the guild.
213
+ # @async
214
+ #
215
+ # @param [:stage_instance, :voice, :external] type The type of event to create.
216
+ # @param [String] name The name of the event.
217
+ # @param [String] description The description of the event.
218
+ # @param [Time] start_time The start time of the event.
219
+ # @param [Time, nil] end_time The end time of the event. Defaults to `nil`.
220
+ # @param [Discorb::Channel, Discorb::Snowflake, nil] channel The channel to run the event in.
221
+ # @param [String, nil] location The location of the event. Defaults to `nil`.
222
+ # @param [:guild_only] privacy_level The privacy level of the event. This must be `:guild_only`.
223
+ #
224
+ # @return [Async::Task<Discorb::ScheduledEvent>] The created event.
225
+ #
226
+ def create_scheduled_event(
227
+ type,
228
+ name,
229
+ description,
230
+ start_time,
231
+ end_time = nil,
232
+ privacy_level: :guild_only,
233
+ location: nil,
234
+ channel: nil
235
+ )
236
+ Async do
237
+ payload = case type
238
+ when :stage_instance
239
+ raise ArgumentError, "channel must be provided for stage_instance events" unless channel
240
+ {
241
+ name: name,
242
+ description: description,
243
+ scheduled_start_time: start_time.iso8601,
244
+ scheduled_end_time: end_time&.iso8601,
245
+ privacy_level: Discorb::ScheduledEvent.privacy_level.key(privacy_level),
246
+ channel_id: channel&.id,
247
+ entity_type: Discorb::ScheduledEvent.entity_type.key(:stage_instance),
248
+ }
249
+ when :voice
250
+ raise ArgumentError, "channel must be provided for voice events" unless channel
251
+ {
252
+ name: name,
253
+ description: description,
254
+ scheduled_start_time: start_time.iso8601,
255
+ scheduled_end_time: end_time&.iso8601,
256
+ privacy_level: Discorb::ScheduledEvent.privacy_level.key(privacy_level),
257
+ channel_id: channel&.id,
258
+ entity_type: Discorb::ScheduledEvent.entity_type.key(:voice),
259
+ }
260
+ when :external
261
+ raise ArgumentError, "location must be provided for external events" unless location
262
+ raise ArgumentError, "end_time must be provided for external events" unless end_time
263
+ {
264
+ name: name,
265
+ description: description,
266
+ scheduled_start_time: start_time.iso8601,
267
+ scheduled_end_time: end_time.iso8601,
268
+ privacy_level: Discorb::ScheduledEvent.privacy_level.key(privacy_level),
269
+ entity_type: Discorb::ScheduledEvent.entity_type.key(:external),
270
+ entity_metadata: {
271
+ location: location,
272
+ },
273
+ }
274
+ else
275
+ raise ArgumentError, "Invalid scheduled event type: #{type}"
276
+ end
277
+ _resp, event = @client.http.post("/guilds/#{@id}/scheduled-events", payload).wait
278
+ Discorb::ScheduledEvent.new(@client, event)
279
+ end
280
+ end
281
+
172
282
  #
173
283
  # Fetch emoji list of the guild.
174
- # @macro async
175
- # @macro http
284
+ # @async
176
285
  # @note This querys the API every time. We recommend using {#emojis} instead.
177
286
  #
178
287
  # @return [Async::Task<Discorb::Dictionary{Discorb::Snowflake => Discorb::CustomEmoji}>] A dictionary of emoji in the guild.
@@ -195,8 +304,7 @@ module Discorb
195
304
 
196
305
  #
197
306
  # Fetch emoji id of the guild.
198
- # @macro async
199
- # @macro http
307
+ # @async
200
308
  # @note This querys the API every time. We recommend using {#emojis} instead.
201
309
  #
202
310
  # @param [#to_s] id The emoji id.
@@ -210,8 +318,7 @@ module Discorb
210
318
 
211
319
  #
212
320
  # Create a custom emoji.
213
- # @macro async
214
- # @macro http
321
+ # @async
215
322
  #
216
323
  # @param [#to_s] name The name of the emoji.
217
324
  # @param [Discorb::Image] image The image of the emoji.
@@ -233,8 +340,7 @@ module Discorb
233
340
 
234
341
  #
235
342
  # Fetch webhooks of the guild.
236
- # @macro async
237
- # @macro http
343
+ # @async
238
344
  #
239
345
  # @return [Async::Task<Array<Discorb::Webhook>>] A list of webhooks in the guild.
240
346
  #
@@ -247,8 +353,7 @@ module Discorb
247
353
 
248
354
  #
249
355
  # Fetch audit log of the guild.
250
- # @macro async
251
- # @macro http
356
+ # @async
252
357
  #
253
358
  # @return [Async::Task<Discorb::AuditLog>] The audit log of the guild.
254
359
  #
@@ -261,8 +366,7 @@ module Discorb
261
366
 
262
367
  #
263
368
  # Fetch channels of the guild.
264
- # @macro async
265
- # @macro http
369
+ # @async
266
370
  #
267
371
  # @return [Async::Task<Array<Discorb::Channel>>] A list of channels in the guild.
268
372
  #
@@ -275,8 +379,7 @@ module Discorb
275
379
 
276
380
  #
277
381
  # Create a new text channel.
278
- # @macro async
279
- # @macro http
382
+ # @async
280
383
  #
281
384
  # @param [String] name The name of the channel.
282
385
  # @param [String] topic The topic of the channel.
@@ -322,8 +425,7 @@ module Discorb
322
425
 
323
426
  #
324
427
  # Create a new voice channel.
325
- # @macro async
326
- # @macro http
428
+ # @async
327
429
  #
328
430
  # @param [String] name The name of the channel.
329
431
  # @param [Integer] bitrate The bitrate of the channel.
@@ -364,8 +466,7 @@ module Discorb
364
466
  end
365
467
 
366
468
  # Create a new category channel.
367
- # @macro async
368
- # @macro http
469
+ # @async
369
470
  #
370
471
  # @param [String] name The name of the channel.
371
472
  # @param [Integer] position The position of the channel.
@@ -402,8 +503,7 @@ module Discorb
402
503
 
403
504
  #
404
505
  # Create a new stage channel.
405
- # @macro async
406
- # @macro http
506
+ # @async
407
507
  #
408
508
  # @param [String] name The name of the channel.
409
509
  # @param [Integer] bitrate The bitrate of the channel.
@@ -440,8 +540,7 @@ module Discorb
440
540
 
441
541
  #
442
542
  # Create a new news channel.
443
- # @macro async
444
- # @macro http
543
+ # @async
445
544
  #
446
545
  # @param [String] name The name of the channel.
447
546
  # @param [String] topic The topic of the channel.
@@ -486,8 +585,7 @@ module Discorb
486
585
 
487
586
  #
488
587
  # Fetch a list of active threads in the guild.
489
- # @macro async
490
- # @macro http
588
+ # @async
491
589
  #
492
590
  # @return [Async::Task<Array<Discorb::ThreadChannel>>] The list of threads.
493
591
  #
@@ -500,8 +598,7 @@ module Discorb
500
598
 
501
599
  #
502
600
  # Fetch a member in the guild.
503
- # @macro async
504
- # @macro http
601
+ # @async
505
602
  #
506
603
  # @param [#to_s] id The ID of the member to fetch.
507
604
  #
@@ -519,8 +616,7 @@ module Discorb
519
616
  end
520
617
 
521
618
  # Fetch members in the guild.
522
- # @macro async
523
- # @macro http
619
+ # @async
524
620
  # @macro members_intent
525
621
  #
526
622
  # @param [Integer] limit The maximum number of members to fetch, 0 for all.
@@ -553,8 +649,7 @@ module Discorb
553
649
 
554
650
  #
555
651
  # Search for members by name in the guild.
556
- # @macro async
557
- # @macro http
652
+ # @async
558
653
  #
559
654
  # @param [String] name The name of the member to search for.
560
655
  # @param [Integer] limit The maximum number of members to return.
@@ -570,8 +665,7 @@ module Discorb
570
665
 
571
666
  #
572
667
  # Almost the same as {#fetch_members_named}, but returns a single member.
573
- # @macro async
574
- # @macro http
668
+ # @async
575
669
  #
576
670
  # @return [Async::Task<Discorb::Member>] The member.
577
671
  # @return [Async::Task<nil>] If the member is not found.
@@ -584,10 +678,13 @@ module Discorb
584
678
 
585
679
  #
586
680
  # Change nickname of client member.
681
+ # @async
587
682
  #
588
683
  # @param [String] nickname The nickname to set.
589
684
  # @param [String] reason The reason for changing the nickname.
590
685
  #
686
+ # @return [Async::Task<void>] The task.
687
+ #
591
688
  def edit_nickname(nickname, reason: nil)
592
689
  Async do
593
690
  @client.http.patch("/guilds/#{@id}/members/@me/nick", { nick: nickname }, audit_log_reason: reason).wait
@@ -600,12 +697,13 @@ module Discorb
600
697
 
601
698
  #
602
699
  # Kick a member from the guild.
603
- # @macro async
604
- # @macro http
700
+ # @async
605
701
  #
606
702
  # @param [Discorb::Member] member The member to kick.
607
703
  # @param [String] reason The reason for kicking the member.
608
704
  #
705
+ # @return [Async::Task<void>] The task.
706
+ #
609
707
  def kick_member(member, reason: nil)
610
708
  Async do
611
709
  @client.http.delete("/guilds/#{@id}/members/#{member.id}", audit_log_reason: reason).wait
@@ -614,8 +712,7 @@ module Discorb
614
712
 
615
713
  #
616
714
  # Fetch a list of bans in the guild.
617
- # @macro async
618
- # @macro http
715
+ # @async
619
716
  #
620
717
  # @return [Async::Task<Array<Discorb::Guild::Ban>>] The list of bans.
621
718
  #
@@ -628,8 +725,7 @@ module Discorb
628
725
 
629
726
  #
630
727
  # Fetch a ban in the guild.
631
- # @macro async
632
- # @macro http
728
+ # @async
633
729
  #
634
730
  # @param [Discorb::User] user The user to fetch.
635
731
  #
@@ -648,8 +744,7 @@ module Discorb
648
744
 
649
745
  #
650
746
  # Checks the user was banned from the guild.
651
- # @macro async
652
- # @macro http
747
+ # @async
653
748
  #
654
749
  # @param [Discorb::User] user The user to check.
655
750
  #
@@ -663,8 +758,7 @@ module Discorb
663
758
 
664
759
  #
665
760
  # Ban a member from the guild.
666
- # @macro async
667
- # @macro http
761
+ # @async
668
762
  #
669
763
  # @param [Discorb::Member] member The member to ban.
670
764
  # @param [Integer] delete_message_days The number of days to delete messages.
@@ -683,12 +777,13 @@ module Discorb
683
777
 
684
778
  #
685
779
  # Unban a user from the guild.
686
- # @macro async
687
- # @macro http
780
+ # @async
688
781
  #
689
782
  # @param [Discorb::User] user The user to unban.
690
783
  # @param [String] reason The reason for unbanning the user.
691
784
  #
785
+ # @return [Async::Task<void>] The task.
786
+ #
692
787
  def unban_user(user, reason: nil)
693
788
  Async do
694
789
  @client.http.delete("/guilds/#{@id}/bans/#{user.id}", audit_log_reason: reason).wait
@@ -697,8 +792,7 @@ module Discorb
697
792
 
698
793
  #
699
794
  # Fetch a list of roles in the guild.
700
- # @macro async
701
- # @macro http
795
+ # @async
702
796
  #
703
797
  # @return [Async::Task<Array<Discorb::Role>>] The list of roles.
704
798
  #
@@ -711,8 +805,7 @@ module Discorb
711
805
 
712
806
  #
713
807
  # Create a role in the guild.
714
- # @macro async
715
- # @macro http
808
+ # @async
716
809
  #
717
810
  # @param [String] name The name of the role.
718
811
  # @param [Discorb::Color] color The color of the role.
@@ -738,8 +831,7 @@ module Discorb
738
831
 
739
832
  #
740
833
  # Fetch how many members will be pruned.
741
- # @macro async
742
- # @macro http
834
+ # @async
743
835
  #
744
836
  # @param [Integer] days The number of days to prune.
745
837
  # @param [Array<Discorb::Role>] roles The roles that include for pruning.
@@ -760,8 +852,7 @@ module Discorb
760
852
 
761
853
  #
762
854
  # Prune members from the guild.
763
- # @macro async
764
- # @macro http
855
+ # @async
765
856
  #
766
857
  # @param [Integer] days The number of days to prune.
767
858
  # @param [Array<Discorb::Role>] roles The roles that include for pruning.
@@ -780,8 +871,7 @@ module Discorb
780
871
 
781
872
  #
782
873
  # Fetch voice regions that are available in the guild.
783
- # @macro async
784
- # @macro http
874
+ # @async
785
875
  #
786
876
  # @return [Async::Task<Array<Discorb::VoiceRegion>>] The available voice regions.
787
877
  #
@@ -794,8 +884,7 @@ module Discorb
794
884
 
795
885
  #
796
886
  # Fetch invites in the guild.
797
- # @macro async
798
- # @macro http
887
+ # @async
799
888
  #
800
889
  # @return [Async::Task<Array<Invite>>] The invites.
801
890
  #
@@ -808,8 +897,7 @@ module Discorb
808
897
 
809
898
  #
810
899
  # Fetch integrations in the guild.
811
- # @macro async
812
- # @macro http
900
+ # @async
813
901
  #
814
902
  # @return [Async::Task<Array<Discorb::Integration>>] The integrations.
815
903
  #
@@ -822,8 +910,7 @@ module Discorb
822
910
 
823
911
  #
824
912
  # Fetch the widget of the guild.
825
- # @macro async
826
- # @macro http
913
+ # @async
827
914
  #
828
915
  # @return [Async::Task<Discorb::Guild::Widget>] The widget.
829
916
  #
@@ -836,8 +923,7 @@ module Discorb
836
923
 
837
924
  #
838
925
  # Fetch the vanity URL of the guild.
839
- # @macro async
840
- # @macro http
926
+ # @async
841
927
  #
842
928
  # @return [Async::Task<Discorb::Guild::VanityInvite>] The vanity URL.
843
929
  #
@@ -850,10 +936,9 @@ module Discorb
850
936
 
851
937
  #
852
938
  # Fetch the welcome screen of the guild.
853
- # @macro async
854
- # @macro http
939
+ # @async
855
940
  #
856
- # @return [Async::Task<Discorb::Guild::WelcomeScreen>] The welcome screen.
941
+ # @return [Async::Task<Discorb::WelcomeScreen>] The welcome screen.
857
942
  #
858
943
  def fetch_welcome_screen
859
944
  Async do
@@ -864,8 +949,7 @@ module Discorb
864
949
 
865
950
  #
866
951
  # Fetch stickers in the guild.
867
- # @macro async
868
- # @macro http
952
+ # @async
869
953
  #
870
954
  # @return [Async::Task<Array<Discorb::Sticker::GuildSticker>>] The stickers.
871
955
  #
@@ -878,8 +962,7 @@ module Discorb
878
962
 
879
963
  #
880
964
  # Fetch the sticker by ID.
881
- # @macro async
882
- # @macro http
965
+ # @async
883
966
  #
884
967
  # @param [#to_s] id The ID of the sticker.
885
968
  #
@@ -898,8 +981,7 @@ module Discorb
898
981
 
899
982
  #
900
983
  # Fetch templates in the guild.
901
- # @macro async
902
- # @macro http
984
+ # @async
903
985
  #
904
986
  # @return [Async::Task<Discorb::GuildTemplate>] The templates.
905
987
  #
@@ -1001,14 +1083,15 @@ module Discorb
1001
1083
 
1002
1084
  #
1003
1085
  # Edit the widget.
1004
- # @macro async
1005
- # @macro http
1086
+ # @async
1006
1087
  # @macro edit
1007
1088
  #
1008
1089
  # @param [Boolean] enabled Whether the widget is enabled.
1009
1090
  # @param [Discorb::GuildChannel] channel The channel.
1010
1091
  # @param [String] reason The reason for editing the widget.
1011
1092
  #
1093
+ # @return [Async::Task<void>] The task.
1094
+ #
1012
1095
  def edit(enabled: nil, channel: nil, reason: nil)
1013
1096
  Async do
1014
1097
  payload = {}
@@ -1143,6 +1226,7 @@ module Discorb
1143
1226
  @presences = Dictionary.new(data[:presences].map { |pr| [Snowflake.new(pr[:user][:id]), Presence.new(@client, pr)] }.to_h)
1144
1227
  @max_presences = data[:max_presences]
1145
1228
  @stage_instances = Dictionary.new(data[:stage_instances].map { |s| [Snowflake.new(s[:id]), StageInstance.new(@client, s)] }.to_h)
1229
+ @scheduled_events = Dictionary.new(data[:guild_scheduled_events].map { |s| [Snowflake.new(s[:id]), ScheduledEvent.new(@client, s)] }.to_h)
1146
1230
  @data.update(data)
1147
1231
  end
1148
1232
  end
@@ -1155,12 +1239,14 @@ module Discorb
1155
1239
  # |`1 << 0`|`:member_join`|
1156
1240
  # |`1 << 1`|`:server_boost`|
1157
1241
  # |`1 << 2`|`:setup_tips`|
1242
+ # |`1 << 3`|`:join_stickers`|
1158
1243
  #
1159
1244
  class SystemChannelFlag < Flag
1160
1245
  @bits = {
1161
1246
  member_join: 0,
1162
1247
  server_boost: 1,
1163
1248
  setup_tips: 2,
1249
+ join_stickers: 3,
1164
1250
  }.freeze
1165
1251
  end
1166
1252
 
@@ -1253,8 +1339,7 @@ module Discorb
1253
1339
 
1254
1340
  #
1255
1341
  # Edits the welcome screen.
1256
- # @macro async
1257
- # @macro http
1342
+ # @async
1258
1343
  # @macro edit
1259
1344
  #
1260
1345
  # @param [Boolean] enabled Whether the welcome screen is enabled.
@@ -1262,12 +1347,14 @@ module Discorb
1262
1347
  # @param [String] description The description of the welcome screen.
1263
1348
  # @param [String] reason The reason for editing the welcome screen.
1264
1349
  #
1265
- def edit(enabled: :unset, channels: :unset, description: :unset, reason: nil)
1350
+ # @return [Async::Task<void>] The task.
1351
+ #
1352
+ def edit(enabled: Discorb::Unset, channels: Discorb::Unset, description: Discorb::Unset, reason: nil)
1266
1353
  Async do
1267
1354
  payload = {}
1268
- payload[:enabled] = enabled unless enabled == :unset
1269
- payload[:welcome_channels] = channels.map(&:to_hash) unless channels == :unset
1270
- payload[:description] = description unless description == :unset
1355
+ payload[:enabled] = enabled unless enabled == Discorb::Unset
1356
+ payload[:welcome_channels] = channels.map(&:to_hash) unless channels == Discorb::Unset
1357
+ payload[:description] = description unless description == Discorb::Unset
1271
1358
  @client.http.patch("/guilds/#{@guild.id}/welcome-screen", payload, audit_log_reason: reason).wait
1272
1359
  end
1273
1360
  end
@@ -45,18 +45,19 @@ module Discorb
45
45
 
46
46
  #
47
47
  # Edit the template.
48
- # @macro async
49
- # @macro http
48
+ # @async
50
49
  # @macro edit
51
50
  #
52
51
  # @param [String] name The new name of the template.
53
52
  # @param [String] description The new description of the template.
54
53
  #
55
- def edit(name = nil, description = :unset)
54
+ # @return [Async::Task<void>] The task.
55
+ #
56
+ def edit(name = nil, description = Discorb::Unset)
56
57
  Async do
57
58
  payload = {}
58
59
  payload[:name] = name if name
59
- payload[:description] = description if description != :unset
60
+ payload[:description] = description if description != Discorb::Unset
60
61
  @client.http.patch("/guilds/#{@source_guild_id}/templates/#{@code}", payload).wait
61
62
  end
62
63
  end
@@ -65,8 +66,9 @@ module Discorb
65
66
 
66
67
  #
67
68
  # Update the template.
68
- # @macro async
69
- # @macro http
69
+ # @async
70
+ #
71
+ # @return [Async::Task<void>] The task.
70
72
  #
71
73
  def update
72
74
  Async do
@@ -77,8 +79,9 @@ module Discorb
77
79
 
78
80
  #
79
81
  # Delete the template.
80
- # @macro async
81
- # @macro http
82
+ # @async
83
+ #
84
+ # @return [Async::Task<void>] The task.
82
85
  #
83
86
  def delete!
84
87
  Async do
@@ -98,7 +101,7 @@ module Discorb
98
101
  attr_reader :afk_timeout
99
102
  # @return [Discorb::Dictionary{Discorb::Snowflake => Discorb::Role}] A dictionary of roles in the guild.
100
103
  attr_reader :roles
101
- # @return [Discorb::Guild::SystemChannelFlag] The flag for the system channel.
104
+ # @return [Discorb::SystemChannelFlag] The flag for the system channel.
102
105
  attr_reader :system_channel_flags
103
106
  # @return [Discorb::Dictionary{Discorb::Snowflake => Discorb::GuildChannel}] A dictionary of channels in the guild.
104
107
  attr_reader :channels