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,104 +1,114 @@
1
- # frozen_string_literal: true
2
-
3
- module Discorb
4
- #
5
- # Represents a message component interaction.
6
- # @abstract
7
- #
8
- class MessageComponentInteraction < Interaction
9
- include Interaction::SourceResponder
10
- include Interaction::UpdateResponder
11
- include Interaction::ModalResponder
12
-
13
- # @return [String] The content of the response.
14
- attr_reader :custom_id
15
- # @return [Discorb::Message] The target message.
16
- attr_reader :message
17
-
18
- @interaction_type = 3
19
- @interaction_name = :message_component
20
-
21
- #
22
- # Initialize a new message component interaction.
23
- # @private
24
- #
25
- # @param [Discorb::Client] client The client.
26
- # @param [Hash] data The data.
27
- #
28
- def initialize(client, data)
29
- super
30
- @message = Message.new(@client, data[:message].merge({ member: data[:member], guild_id: data[:guild_id] }))
31
- end
32
-
33
- class << self
34
- # @private
35
- # @return [Integer] The component type.
36
- attr_reader :component_type
37
-
38
- #
39
- # Create a MessageComponentInteraction instance for the given data.
40
- # @private
41
- #
42
- def make_interaction(client, data)
43
- nested_classes.each do |klass|
44
- if !klass.component_type.nil? && klass.component_type == data[:data][:component_type]
45
- return klass.new(client,
46
- data)
47
- end
48
- end
49
- client.logger.warn("Unknown component type #{data[:component_type]}, initialized Interaction")
50
- MessageComponentInteraction.new(client, data)
51
- end
52
-
53
- #
54
- # Returns the classes under this class.
55
- # @private
56
- #
57
- def nested_classes
58
- constants.select { |c| const_get(c).is_a? Class }.map { |c| const_get(c) }
59
- end
60
- end
61
-
62
- #
63
- # Represents a button interaction.
64
- #
65
- class Button < MessageComponentInteraction
66
- @component_type = 2
67
- @event_name = :button_click
68
- # @return [String] The custom id of the button.
69
- attr_reader :custom_id
70
-
71
- private
72
-
73
- def _set_data(data)
74
- @custom_id = data[:custom_id]
75
- end
76
- end
77
-
78
- #
79
- # Represents a select menu interaction.
80
- #
81
- class SelectMenu < MessageComponentInteraction
82
- @component_type = 3
83
- @event_name = :select_menu_select
84
- # @return [String] The custom id of the select menu.
85
- attr_reader :custom_id
86
- # @return [Array<String>] The selected options.
87
- attr_reader :values
88
-
89
- # @!attribute [r] value
90
- # @return [String] The first selected value.
91
-
92
- def value
93
- @values[0]
94
- end
95
-
96
- private
97
-
98
- def _set_data(data)
99
- @custom_id = data[:custom_id]
100
- @values = data[:values]
101
- end
102
- end
103
- end
104
- end
1
+ # frozen_string_literal: true
2
+
3
+ module Discorb
4
+ #
5
+ # Represents a message component interaction.
6
+ # @abstract
7
+ #
8
+ class MessageComponentInteraction < Interaction
9
+ include Interaction::SourceResponder
10
+ include Interaction::UpdateResponder
11
+ include Interaction::ModalResponder
12
+
13
+ # @return [String] The content of the response.
14
+ attr_reader :custom_id
15
+ # @return [Discorb::Message] The target message.
16
+ attr_reader :message
17
+
18
+ @interaction_type = 3
19
+ @interaction_name = :message_component
20
+
21
+ #
22
+ # Initialize a new message component interaction.
23
+ # @private
24
+ #
25
+ # @param [Discorb::Client] client The client.
26
+ # @param [Hash] data The data.
27
+ #
28
+ def initialize(client, data)
29
+ super
30
+ @message =
31
+ Message.new(
32
+ @client,
33
+ data[:message].merge(
34
+ { member: data[:member], guild_id: data[:guild_id] }
35
+ )
36
+ )
37
+ end
38
+
39
+ class << self
40
+ # @private
41
+ # @return [Integer] The component type.
42
+ attr_reader :component_type
43
+
44
+ #
45
+ # Create a MessageComponentInteraction instance for the given data.
46
+ # @private
47
+ #
48
+ def make_interaction(client, data)
49
+ nested_classes.each do |klass|
50
+ if !klass.component_type.nil? &&
51
+ klass.component_type == data[:data][:component_type]
52
+ return klass.new(client, data)
53
+ end
54
+ end
55
+ client.logger.warn(
56
+ "Unknown component type #{data[:component_type]}, initialized Interaction"
57
+ )
58
+ MessageComponentInteraction.new(client, data)
59
+ end
60
+
61
+ #
62
+ # Returns the classes under this class.
63
+ # @private
64
+ #
65
+ def nested_classes
66
+ constants
67
+ .select { |c| const_get(c).is_a? Class }
68
+ .map { |c| const_get(c) }
69
+ end
70
+ end
71
+
72
+ #
73
+ # Represents a button interaction.
74
+ #
75
+ class Button < MessageComponentInteraction
76
+ @component_type = 2
77
+ @event_name = :button_click
78
+ # @return [String] The custom id of the button.
79
+ attr_reader :custom_id
80
+
81
+ private
82
+
83
+ def _set_data(data)
84
+ @custom_id = data[:custom_id]
85
+ end
86
+ end
87
+
88
+ #
89
+ # Represents a select menu interaction.
90
+ #
91
+ class SelectMenu < MessageComponentInteraction
92
+ @component_type = 3
93
+ @event_name = :select_menu_select
94
+ # @return [String] The custom id of the select menu.
95
+ attr_reader :custom_id
96
+ # @return [Array<String>] The selected options.
97
+ attr_reader :values
98
+
99
+ # @!attribute [r] value
100
+ # @return [String] The first selected value.
101
+
102
+ def value
103
+ @values[0]
104
+ end
105
+
106
+ private
107
+
108
+ def _set_data(data)
109
+ @custom_id = data[:custom_id]
110
+ @values = data[:values]
111
+ end
112
+ end
113
+ end
114
+ end
@@ -1,32 +1,36 @@
1
- # frozen_string_literal: true
2
-
3
- module Discorb
4
- #
5
- # Represents a modal interaction.
6
- #
7
- class ModalInteraction < Interaction
8
- include Interaction::SourceResponder
9
-
10
- @interaction_type = 5
11
- @interaction_name = :modal_submit
12
- @event_name = :modal_submit
13
-
14
- # @return [String] The custom id of the modal.
15
- attr_reader :custom_id
16
- # @return [{String => String}] The contents of the modal.
17
- attr_reader :contents
18
-
19
- private
20
-
21
- def _set_data(data)
22
- @custom_id = data[:custom_id]
23
- @contents = data[:components].to_h do |component|
24
- [component[:components][0][:custom_id], component[:components][0][:value]]
25
- end
26
- end
27
-
28
- class << self
29
- alias make_interaction new
30
- end
31
- end
32
- end
1
+ # frozen_string_literal: true
2
+
3
+ module Discorb
4
+ #
5
+ # Represents a modal interaction.
6
+ #
7
+ class ModalInteraction < Interaction
8
+ include Interaction::SourceResponder
9
+
10
+ @interaction_type = 5
11
+ @interaction_name = :modal_submit
12
+ @event_name = :modal_submit
13
+
14
+ # @return [String] The custom id of the modal.
15
+ attr_reader :custom_id
16
+ # @return [{String => String}] The contents of the modal.
17
+ attr_reader :contents
18
+
19
+ private
20
+
21
+ def _set_data(data)
22
+ @custom_id = data[:custom_id]
23
+ @contents =
24
+ data[:components].to_h do |component|
25
+ [
26
+ component[:components][0][:custom_id],
27
+ component[:components][0][:value]
28
+ ]
29
+ end
30
+ end
31
+
32
+ class << self
33
+ alias make_interaction new
34
+ end
35
+ end
36
+ end