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
data/Steepfile CHANGED
@@ -15,14 +15,16 @@ target :lib do
15
15
  config[D::Ruby::UnexpectedSuper] = nil
16
16
  config[D::Ruby::UnexpectedPositionalArgument] = nil
17
17
  config[D::Ruby::InsufficientPositionalArguments] = nil
18
+ config[D::Ruby::UnknownInstanceVariable] = nil
19
+ config[D::Ruby::UnknownGlobalVariable] = nil
18
20
  end
19
21
  end
20
22
 
21
- target :test do
22
- signature "sig"
23
- signature "examples/sig"
23
+ # target :test do
24
+ # signature "sig"
25
+ # signature "examples/sig"
24
26
 
25
- check "examples/**/*.rb"
27
+ # check "examples/**/*.rb"
26
28
 
27
- library "net-http", "timeout"
28
- end
29
+ # library "net-http", "timeout"
30
+ # end
@@ -82,6 +82,7 @@ In `options`, hash should be like this:
82
82
  | `:channel_types` | `Array<Class<Discorb::Channel>>` | Type of the channel option. |
83
83
  | `:autocomplete` | `Proc` | Autocomplete function. |
84
84
  | `:range` | `Range` | Range of the option. Only valid for numeric options. (`:int`, `:float`) |
85
+ | `:length` | `Range` | Range of length of the option. Only valid for `:string`. |
85
86
 
86
87
  `choices` should be unspecified if you don't want to use it.
87
88
  `choices` example:
data/docs/events.md CHANGED
@@ -563,9 +563,9 @@ Fires when a select menu is selected.
563
563
  | ------------- | -------------------------------------------------- | ----------------------- |
564
564
  | `interaction` | {Discorb::MessageComponentInteraction::SelectMenu} | The interaction object. |
565
565
 
566
- #### `form_submit(interaction)`
566
+ #### `modal_submit(interaction)`
567
567
 
568
- Fires when a form is submitted.
568
+ Fires when a modal is submitted.
569
569
 
570
570
  | Parameter | Type | Description |
571
571
  | ------------- | --------------------------- | ----------------------- |
data/docs/voice_events.md CHANGED
@@ -12,7 +12,7 @@ Fires when someone joins a voice channel.
12
12
 
13
13
  | Parameter | Type | Description |
14
14
  | --------- | --------------------- | ---------------------------------------- |
15
- | state | {Discorb::VoiceState} | The voice state of the user that joined. |
15
+ | `state` | {Discorb::VoiceState} | The voice state of the user that joined. |
16
16
 
17
17
  #### `voice_channel_disconnect(state)`
18
18
 
@@ -20,7 +20,7 @@ Fires when someone leaves a voice channel.
20
20
 
21
21
  | Parameter | Type | Description |
22
22
  | --------- | --------------------- | -------------------------------------- |
23
- | state | {Discorb::VoiceState} | The voice state of the user that left. |
23
+ | `state` | {Discorb::VoiceState} | The voice state of the user that left. |
24
24
 
25
25
  #### `voice_channel_move(before, after)`
26
26
 
@@ -28,8 +28,8 @@ Fires when someone moves to a different voice channel.
28
28
 
29
29
  | Parameter | Type | Description |
30
30
  | --------- | --------------------- | -------------------------------------------- |
31
- | before | {Discorb::VoiceState} | The voice state of the user before the move. |
32
- | after | {Discorb::VoiceState} | The voice state of the user after the move. |
31
+ | `before` | {Discorb::VoiceState} | The voice state of the user before the move. |
32
+ | `after` | {Discorb::VoiceState} | The voice state of the user after the move. |
33
33
 
34
34
  #### `voice_channel_update(before, after)`
35
35
 
@@ -37,8 +37,8 @@ Fires when a voice channel is connected, disconnected, or updated.
37
37
 
38
38
  | Parameter | Type | Description |
39
39
  | --------- | --------------------- | ---------------------------------- |
40
- | before | {Discorb::VoiceState} | The voice state before the update. |
41
- | after | {Discorb::VoiceState} | The voice state after the update. |
40
+ | `before` | {Discorb::VoiceState} | The voice state before the update. |
41
+ | `after` | {Discorb::VoiceState} | The voice state after the update. |
42
42
 
43
43
  ### Mute Events
44
44
 
@@ -1,72 +1,68 @@
1
- # frozen_string_literal: true
2
-
3
- module Discorb
4
- #
5
- # Represents a allowed mentions in a message.
6
- #
7
- class AllowedMentions
8
- # @return [Boolean] Whether to allow @everyone or @here.
9
- attr_accessor :everyone
10
- # @return [Boolean, Array<Discorb::Role>] The roles to allow, or false to disable.
11
- attr_accessor :roles
12
- # @return [Boolean, Array<Discorb::User>] The users to allow, or false to disable.
13
- attr_accessor :users
14
- # @return [Boolean] Whether to ping the user that sent the message to reply.
15
- attr_accessor :replied_user
16
-
17
- #
18
- # Initializes a new instance of the AllowedMentions class.
19
- #
20
- # @param [Boolean] everyone Whether to allow @everyone or @here.
21
- # @param [Boolean, Array<Discorb::Role>] roles The roles to allow, or false to disable.
22
- # @param [Boolean, Array<Discorb::User>] users The users to allow, or false to disable.
23
- # @param [Boolean] replied_user Whether to ping the user that sent the message to reply.
24
- #
25
- def initialize(everyone: nil, roles: nil, users: nil, replied_user: nil)
26
- @everyone = !everyone.nil?
27
- @roles = roles
28
- @users = users
29
- @replied_user = replied_user
30
- end
31
-
32
- def inspect
33
- "#<#{self.class} @everyone=#{@everyone} @roles=#{@roles} @users=#{@users} @replied_user=#{@replied_user}>"
34
- end
35
-
36
- #
37
- # Converts the object to a hash.
38
- # @private
39
- #
40
- # @param [Discorb::AllowedMentions, nil] other The object to merge.
41
- #
42
- # @return [Hash] The hash.
43
- #
44
- def to_hash(other = nil)
45
- payload = {
46
- parse: %w[everyone roles users],
47
- }
48
- replied_user = nil_merge(@replied_user, other&.replied_user)
49
- everyone = nil_merge(@everyone, other&.everyone)
50
- roles = nil_merge(@roles, other&.roles)
51
- users = nil_merge(@users, other&.users)
52
- payload[:replied_user] = replied_user
53
- payload[:parse].delete("everyone") if everyone == false
54
- if (roles == false) || roles.is_a?(Array)
55
- payload[:roles] = roles.map { |u| u.id.to_s } if roles.is_a? Array
56
- payload[:parse].delete("roles")
57
- end
58
- if (users == false) || users.is_a?(Array)
59
- payload[:users] = users.map { |u| u.id.to_s } if users.is_a? Array
60
- payload[:parse].delete("users")
61
- end
62
- payload
63
- end
64
-
65
- def nil_merge(*args)
66
- args.each do |a|
67
- return a unless a.nil?
68
- end
69
- nil
70
- end
71
- end
72
- end
1
+ # frozen_string_literal: true
2
+
3
+ module Discorb
4
+ #
5
+ # Represents a allowed mentions in a message.
6
+ #
7
+ class AllowedMentions
8
+ # @return [Boolean] Whether to allow @everyone or @here.
9
+ attr_accessor :everyone
10
+ # @return [Boolean, Array<Discorb::Role>] The roles to allow, or false to disable.
11
+ attr_accessor :roles
12
+ # @return [Boolean, Array<Discorb::User>] The users to allow, or false to disable.
13
+ attr_accessor :users
14
+ # @return [Boolean] Whether to ping the user that sent the message to reply.
15
+ attr_accessor :replied_user
16
+
17
+ #
18
+ # Initializes a new instance of the AllowedMentions class.
19
+ #
20
+ # @param [Boolean] everyone Whether to allow @everyone or @here.
21
+ # @param [Boolean, Array<Discorb::Role>] roles The roles to allow, or false to disable.
22
+ # @param [Boolean, Array<Discorb::User>] users The users to allow, or false to disable.
23
+ # @param [Boolean] replied_user Whether to ping the user that sent the message to reply.
24
+ #
25
+ def initialize(everyone: nil, roles: nil, users: nil, replied_user: nil)
26
+ @everyone = !everyone.nil?
27
+ @roles = roles
28
+ @users = users
29
+ @replied_user = replied_user
30
+ end
31
+
32
+ def inspect
33
+ "#<#{self.class} @everyone=#{@everyone} @roles=#{@roles} @users=#{@users} @replied_user=#{@replied_user}>"
34
+ end
35
+
36
+ #
37
+ # Converts the object to a hash.
38
+ # @private
39
+ #
40
+ # @param [Discorb::AllowedMentions, nil] other The object to merge.
41
+ #
42
+ # @return [Hash] The hash.
43
+ #
44
+ def to_hash(other = nil)
45
+ payload = { parse: %w[everyone roles users] }
46
+ replied_user = nil_merge(@replied_user, other&.replied_user)
47
+ everyone = nil_merge(@everyone, other&.everyone)
48
+ roles = nil_merge(@roles, other&.roles)
49
+ users = nil_merge(@users, other&.users)
50
+ payload[:replied_user] = replied_user
51
+ payload[:parse].delete("everyone") if everyone == false
52
+ if (roles == false) || roles.is_a?(Array)
53
+ payload[:roles] = roles.map { |u| u.id.to_s } if roles.is_a? Array
54
+ payload[:parse].delete("roles")
55
+ end
56
+ if (users == false) || users.is_a?(Array)
57
+ payload[:users] = users.map { |u| u.id.to_s } if users.is_a? Array
58
+ payload[:parse].delete("users")
59
+ end
60
+ payload
61
+ end
62
+
63
+ def nil_merge(*args)
64
+ args.each { |a| return a unless a.nil? }
65
+ nil
66
+ end
67
+ end
68
+ end