discorb 0.18.0 → 0.20.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.
Files changed (149) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/build_version.yml +2 -2
  3. data/.rubocop.yml +12 -75
  4. data/Changelog.md +25 -0
  5. data/Gemfile +4 -4
  6. data/README.md +2 -1
  7. data/Rakefile +482 -459
  8. data/Steepfile +8 -6
  9. data/docs/application_command.md +1 -0
  10. data/docs/events.md +2 -2
  11. data/docs/voice_events.md +6 -6
  12. data/lib/discorb/allowed_mentions.rb +68 -72
  13. data/lib/discorb/app_command/command.rb +466 -394
  14. data/lib/discorb/app_command/common.rb +65 -25
  15. data/lib/discorb/app_command/handler.rb +304 -265
  16. data/lib/discorb/app_command.rb +5 -5
  17. data/lib/discorb/application.rb +198 -197
  18. data/lib/discorb/asset.rb +101 -101
  19. data/lib/discorb/attachment.rb +134 -119
  20. data/lib/discorb/audit_logs.rb +412 -385
  21. data/lib/discorb/automod.rb +279 -269
  22. data/lib/discorb/channel/base.rb +107 -108
  23. data/lib/discorb/channel/category.rb +32 -32
  24. data/lib/discorb/channel/container.rb +44 -44
  25. data/lib/discorb/channel/dm.rb +26 -28
  26. data/lib/discorb/channel/guild.rb +311 -246
  27. data/lib/discorb/channel/stage.rb +156 -140
  28. data/lib/discorb/channel/text.rb +430 -336
  29. data/lib/discorb/channel/thread.rb +374 -325
  30. data/lib/discorb/channel/voice.rb +85 -79
  31. data/lib/discorb/channel.rb +5 -5
  32. data/lib/discorb/client.rb +635 -623
  33. data/lib/discorb/color.rb +178 -182
  34. data/lib/discorb/common.rb +168 -164
  35. data/lib/discorb/components/button.rb +107 -106
  36. data/lib/discorb/components/select_menu.rb +157 -145
  37. data/lib/discorb/components/text_input.rb +103 -106
  38. data/lib/discorb/components.rb +68 -66
  39. data/lib/discorb/dictionary.rb +135 -135
  40. data/lib/discorb/embed.rb +404 -398
  41. data/lib/discorb/emoji.rb +309 -302
  42. data/lib/discorb/emoji_table.rb +16099 -8857
  43. data/lib/discorb/error.rb +131 -131
  44. data/lib/discorb/event.rb +360 -314
  45. data/lib/discorb/event_handler.rb +39 -39
  46. data/lib/discorb/exe/about.rb +17 -17
  47. data/lib/discorb/exe/irb.rb +72 -67
  48. data/lib/discorb/exe/new.rb +323 -315
  49. data/lib/discorb/exe/run.rb +69 -68
  50. data/lib/discorb/exe/setup.rb +57 -55
  51. data/lib/discorb/exe/show.rb +12 -12
  52. data/lib/discorb/extend.rb +25 -45
  53. data/lib/discorb/extension.rb +89 -83
  54. data/lib/discorb/flag.rb +126 -128
  55. data/lib/discorb/gateway.rb +984 -794
  56. data/lib/discorb/gateway_events.rb +670 -638
  57. data/lib/discorb/gateway_requests.rb +45 -48
  58. data/lib/discorb/guild.rb +2115 -1626
  59. data/lib/discorb/guild_template.rb +280 -241
  60. data/lib/discorb/http.rb +247 -232
  61. data/lib/discorb/image.rb +42 -42
  62. data/lib/discorb/integration.rb +169 -161
  63. data/lib/discorb/intents.rb +161 -163
  64. data/lib/discorb/interaction/autocomplete.rb +76 -62
  65. data/lib/discorb/interaction/command.rb +279 -224
  66. data/lib/discorb/interaction/components.rb +114 -104
  67. data/lib/discorb/interaction/modal.rb +36 -32
  68. data/lib/discorb/interaction/response.rb +379 -330
  69. data/lib/discorb/interaction/root.rb +271 -118
  70. data/lib/discorb/interaction.rb +5 -5
  71. data/lib/discorb/invite.rb +154 -153
  72. data/lib/discorb/member.rb +344 -311
  73. data/lib/discorb/message.rb +615 -544
  74. data/lib/discorb/message_meta.rb +197 -186
  75. data/lib/discorb/modules.rb +371 -290
  76. data/lib/discorb/permission.rb +305 -289
  77. data/lib/discorb/presence.rb +352 -346
  78. data/lib/discorb/rate_limit.rb +81 -76
  79. data/lib/discorb/reaction.rb +55 -54
  80. data/lib/discorb/role.rb +272 -240
  81. data/lib/discorb/shard.rb +76 -74
  82. data/lib/discorb/sticker.rb +193 -171
  83. data/lib/discorb/user.rb +205 -188
  84. data/lib/discorb/utils/colored_puts.rb +16 -16
  85. data/lib/discorb/utils.rb +12 -16
  86. data/lib/discorb/voice_state.rb +305 -281
  87. data/lib/discorb/webhook.rb +537 -507
  88. data/lib/discorb.rb +62 -56
  89. data/sig/discorb/activity.rbs +1 -0
  90. data/sig/discorb/allowed_mentions.rbs +1 -0
  91. data/sig/discorb/app_command/base.rbs +7 -1
  92. data/sig/discorb/application.rbs +6 -0
  93. data/sig/discorb/asset.rbs +2 -0
  94. data/sig/discorb/attachment.rbs +8 -0
  95. data/sig/discorb/audit_log.rbs +7 -0
  96. data/sig/discorb/automod.rbs +32 -6
  97. data/sig/discorb/avatar.rbs +1 -0
  98. data/sig/discorb/channel/base.rbs +8 -1
  99. data/sig/discorb/channel/category.rbs +1 -0
  100. data/sig/discorb/channel/container.rbs +4 -0
  101. data/sig/discorb/channel/stage.rbs +4 -0
  102. data/sig/discorb/channel/text.rbs +2 -2
  103. data/sig/discorb/channel/thread.rbs +11 -0
  104. data/sig/discorb/channel/voice.rbs +2 -0
  105. data/sig/discorb/client.rbs +21 -20
  106. data/sig/discorb/color.rbs +6 -0
  107. data/sig/discorb/component/base.rbs +1 -0
  108. data/sig/discorb/component/button.rbs +2 -0
  109. data/sig/discorb/component/select_menu.rbs +4 -0
  110. data/sig/discorb/component/text_input.rbs +1 -0
  111. data/sig/discorb/custom_emoji.rbs +5 -1
  112. data/sig/discorb/dictionary.rbs +2 -0
  113. data/sig/discorb/discord_model.rbs +2 -0
  114. data/sig/discorb/embed.rbs +7 -0
  115. data/sig/discorb/emoji.rbs +1 -0
  116. data/sig/discorb/event_handler.rbs +2 -1
  117. data/sig/discorb/extension.rbs +13 -12
  118. data/sig/discorb/flag.rbs +2 -0
  119. data/sig/discorb/gateway.rbs +5 -0
  120. data/sig/discorb/guild.rbs +8 -4
  121. data/sig/discorb/guild_template.rbs +1 -1
  122. data/sig/discorb/http.rbs +4 -1
  123. data/sig/discorb/image.rbs +2 -0
  124. data/sig/discorb/integration.rbs +1 -1
  125. data/sig/discorb/intents.rbs +4 -3
  126. data/sig/discorb/interaction/base.rbs +36 -0
  127. data/sig/discorb/interaction/message_component.rbs +1 -2
  128. data/sig/discorb/interaction/modal.rbs +1 -2
  129. data/sig/discorb/interaction/responder.rbs +49 -49
  130. data/sig/discorb/invite.rbs +1 -1
  131. data/sig/discorb/member.rbs +2 -0
  132. data/sig/discorb/message.rbs +8 -1
  133. data/sig/discorb/messageable.rbs +1 -4
  134. data/sig/discorb/partial_emoji.rbs +3 -0
  135. data/sig/discorb/permissions.rbs +7 -0
  136. data/sig/discorb/presence.rbs +2 -0
  137. data/sig/discorb/reaction.rbs +5 -1
  138. data/sig/discorb/role.rbs +7 -1
  139. data/sig/discorb/scheduled_event.rbs +2 -1
  140. data/sig/discorb/shard.rbs +2 -1
  141. data/sig/discorb/snowflake.rbs +2 -0
  142. data/sig/discorb/stage_instance.rbs +9 -3
  143. data/sig/discorb/sticker.rbs +1 -1
  144. data/sig/discorb/unicode_emoji.rbs +4 -0
  145. data/sig/discorb/user.rbs +24 -20
  146. data/sig/discorb/webhook.rbs +17 -6
  147. data/sig/discorb/welcome_screen.rbs +1 -0
  148. data/sig/override.rbs +2 -0
  149. metadata +3 -3
@@ -1,79 +1,85 @@
1
- # frozen_string_literal: true
2
-
3
- module Discorb
4
- #
5
- # Represents a voice channel.
6
- #
7
- class VoiceChannel < GuildChannel
8
- # @return [Integer] The bitrate of the voice channel.
9
- attr_reader :bitrate
10
- # @return [Integer] The user limit of the voice channel.
11
- # @return [nil] If the user limit is not set.
12
- attr_reader :user_limit
13
-
14
- # @!attribute [r] members
15
- # @return [Array<Discorb::Member>] The members in the voice channel.
16
- # @!attribute [r] voice_states
17
- # @return [Array<Discorb::VoiceState>] The voice states associated with the voice channel.
18
-
19
- include Connectable
20
- include Messageable
21
-
22
- @channel_type = 2
23
- #
24
- # Edit the voice channel.
25
- # @async
26
- # @macro edit
27
- #
28
- # @param [String] name The name of the voice channel.
29
- # @param [Integer] position The position of the voice channel.
30
- # @param [Integer] bitrate The bitrate of the voice channel.
31
- # @param [Integer] user_limit The user limit of the voice channel.
32
- # @param [Symbol] rtc_region The region of the voice channel.
33
- # @param [String] reason The reason of editing the voice channel.
34
- #
35
- # @return [Async::Task<self>] The edited voice channel.
36
- #
37
- def edit(
38
- name: Discorb::Unset,
39
- position: Discorb::Unset,
40
- bitrate: Discorb::Unset,
41
- user_limit: Discorb::Unset,
42
- rtc_region: Discorb::Unset,
43
- reason: nil
44
- )
45
- Async do
46
- payload = {}
47
- payload[:name] = name if name != Discorb::Unset
48
- payload[:position] = position if position != Discorb::Unset
49
- payload[:bitrate] = bitrate if bitrate != Discorb::Unset
50
- payload[:user_limit] = user_limit if user_limit != Discorb::Unset
51
- payload[:rtc_region] = rtc_region if rtc_region != Discorb::Unset
52
-
53
- @client.http.request(Route.new("/channels/#{@id}", "//channels/:channel_id", :patch), payload,
54
- audit_log_reason: reason).wait
55
- self
56
- end
57
- end
58
-
59
- alias modify edit
60
-
61
- def voice_states
62
- guild.voice_states.select { |state| state.channel&.id == @id }
63
- end
64
-
65
- def members
66
- voice_states.map(&:member)
67
- end
68
-
69
- private
70
-
71
- def _set_data(data)
72
- @bitrate = data[:bitrate]
73
- @user_limit = (data[:user_limit]).zero? ? nil : data[:user_limit]
74
- @rtc_region = data[:rtc_region]&.to_sym
75
- @video_quality_mode = data[:video_quality_mode] == 1 ? :auto : :full
76
- super
77
- end
78
- end
79
- end
1
+ # frozen_string_literal: true
2
+
3
+ module Discorb
4
+ #
5
+ # Represents a voice channel.
6
+ #
7
+ class VoiceChannel < GuildChannel
8
+ # @return [Integer] The bitrate of the voice channel.
9
+ attr_reader :bitrate
10
+ # @return [Integer] The user limit of the voice channel.
11
+ # @return [nil] If the user limit is not set.
12
+ attr_reader :user_limit
13
+
14
+ # @!attribute [r] members
15
+ # @return [Array<Discorb::Member>] The members in the voice channel.
16
+ # @!attribute [r] voice_states
17
+ # @return [Array<Discorb::VoiceState>] The voice states associated with the voice channel.
18
+
19
+ include Connectable
20
+ include Messageable
21
+
22
+ @channel_type = 2
23
+ #
24
+ # Edit the voice channel.
25
+ # @async
26
+ # @macro edit
27
+ #
28
+ # @param [String] name The name of the voice channel.
29
+ # @param [Integer] position The position of the voice channel.
30
+ # @param [Integer] bitrate The bitrate of the voice channel.
31
+ # @param [Integer] user_limit The user limit of the voice channel.
32
+ # @param [Symbol] rtc_region The region of the voice channel.
33
+ # @param [String] reason The reason of editing the voice channel.
34
+ #
35
+ # @return [Async::Task<self>] The edited voice channel.
36
+ #
37
+ def edit(
38
+ name: Discorb::Unset,
39
+ position: Discorb::Unset,
40
+ bitrate: Discorb::Unset,
41
+ user_limit: Discorb::Unset,
42
+ rtc_region: Discorb::Unset,
43
+ reason: nil
44
+ )
45
+ Async do
46
+ payload = {}
47
+ payload[:name] = name if name != Discorb::Unset
48
+ payload[:position] = position if position != Discorb::Unset
49
+ payload[:bitrate] = bitrate if bitrate != Discorb::Unset
50
+ payload[:user_limit] = user_limit if user_limit != Discorb::Unset
51
+ payload[:rtc_region] = rtc_region if rtc_region != Discorb::Unset
52
+
53
+ @client
54
+ .http
55
+ .request(
56
+ Route.new("/channels/#{@id}", "//channels/:channel_id", :patch),
57
+ payload,
58
+ audit_log_reason: reason
59
+ )
60
+ .wait
61
+ self
62
+ end
63
+ end
64
+
65
+ alias modify edit
66
+
67
+ def voice_states
68
+ guild.voice_states.select { |state| state.channel&.id == @id }
69
+ end
70
+
71
+ def members
72
+ voice_states.map(&:member)
73
+ end
74
+
75
+ private
76
+
77
+ def _set_data(data)
78
+ @bitrate = data[:bitrate]
79
+ @user_limit = (data[:user_limit]).zero? ? nil : data[:user_limit]
80
+ @rtc_region = data[:rtc_region]&.to_sym
81
+ @video_quality_mode = data[:video_quality_mode] == 1 ? :auto : :full
82
+ super
83
+ end
84
+ end
85
+ end
@@ -1,5 +1,5 @@
1
- # frozen_string_literal: true
2
-
3
- %w[base guild text voice category stage thread dm].each do |name|
4
- require_relative "channel/#{name}"
5
- end
1
+ # frozen_string_literal: true
2
+
3
+ %w[base guild text voice category stage thread dm].each do |name|
4
+ require_relative "channel/#{name}"
5
+ end