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/lib/discorb/color.rb CHANGED
@@ -1,182 +1,178 @@
1
- # frozen_string_literal: true
2
-
3
- module Discorb
4
- #
5
- # Represents RGB color.
6
- #
7
- class Color
8
- attr_accessor :value
9
-
10
- @discord_colors = {
11
- teal: 0x1abc9c,
12
- dark_teal: 0x11806a,
13
- green: 0x2ecc71,
14
- dark_green: 0x1f8b4c,
15
- blue: 0x3498db,
16
- dark_blue: 0x206694,
17
- purple: 0x9b59b6,
18
- dark_purple: 0x71368a,
19
- magenta: 0xe91e63,
20
- dark_magenta: 0xad1457,
21
- gold: 0xf1c40f,
22
- dark_gold: 0xc27c0e,
23
- orange: 0xe67e22,
24
- dark_orange: 0xa84300,
25
- red: 0xe74c3c,
26
- dark_red: 0x992d22,
27
- lighter_grey: 0x95a5a6,
28
- lighter_gray: 0x95a5a6,
29
- dark_grey: 0x607d8b,
30
- dark_gray: 0x607d8b,
31
- light_grey: 0x979c9f,
32
- light_gray: 0x979c9f,
33
- darker_grey: 0x546e7a,
34
- darker_gray: 0x546e7a,
35
- og_blurple: 0x7289da,
36
- blurple: 0x5865f2,
37
- greyple: 0x99aab5,
38
- dark_theme: 0x36393f,
39
- fuchsia: 0xeb459e,
40
- yellow: 0xfee75c,
41
- }.freeze
42
-
43
- #
44
- # Create a color from a Integer.
45
- #
46
- # @param [Integer] value A color value.
47
- #
48
- def initialize(value)
49
- @value = value
50
- end
51
-
52
- #
53
- # Integerize a color.
54
- #
55
- # @return [Integer] A color value.
56
- #
57
- def to_i
58
- @value
59
- end
60
-
61
- #
62
- # Convert a color to a hexadecimal value.
63
- #
64
- # @return [String] A hexadecimal value.
65
- #
66
- def to_hex
67
- @value.to_s(16).rjust(6, "0")
68
- end
69
-
70
- #
71
- # Convert a color to RGB array.
72
- #
73
- # @return [Array(Integer, Integer, Integer)] A RGB array.
74
- #
75
- def to_rgb
76
- [@value / (256 * 256), @value / 256 % 256, @value % 256]
77
- end
78
-
79
- alias to_a to_rgb
80
- alias deconstruct to_rgb
81
-
82
- #
83
- # Convert a color to RGB hash.
84
- #
85
- # @return [Hash{:r, :g, :b => Integer}] A RGB hash.
86
- #
87
- def to_rgb_hash
88
- {
89
- r: @value / (256 * 256),
90
- g: @value / 256 % 256,
91
- b: @value % 256,
92
- }
93
- end
94
-
95
- alias deconstruct_keys to_rgb_hash
96
-
97
- #
98
- # Converts a color to a `#000000` string.
99
- #
100
- # @return [String] Converted string.
101
- #
102
- def to_s
103
- "##{to_hex}"
104
- end
105
-
106
- def inspect
107
- "#<#{self.class} #{@value}/#{self}>"
108
- end
109
-
110
- #
111
- # Create a color from a hexadecimal string.
112
- #
113
- # @param [String] hex A hexadecimal string.
114
- #
115
- # @return [Discorb::Color] A color object.
116
- #
117
- def self.from_hex(hex)
118
- new(hex.to_i(16))
119
- end
120
-
121
- #
122
- # Create a color from a RGB array.
123
- #
124
- # @param [Integer] red A red value.
125
- # @param [Integer] green A green value.
126
- # @param [Integer] blue A blue value.
127
- #
128
- # @return [Discorb::Color] A color object.
129
- #
130
- def self.from_rgb(red, green, blue)
131
- new(red * 256 * 256 + green * 256 + blue)
132
- end
133
-
134
- #
135
- # Create a color from a Discord's color.
136
- # Currently these colors are supported:
137
- #
138
- # | Color name | Color code |
139
- # |-----------------|------------|
140
- # | `:teal` | `#1abc9c` |
141
- # | `:dark_teal` | `#11806a` |
142
- # | `:green` | `#2ecc71` |
143
- # | `:dark_green` | `#1f8b4c` |
144
- # | `:blue` | `#3498db` |
145
- # | `:dark_blue` | `#206694` |
146
- # | `:purple` | `#9b59b6` |
147
- # | `:dark_purple` | `#71368a` |
148
- # | `:magenta` | `#e91e63` |
149
- # | `:dark_magenta` | `#ad1457` |
150
- # | `:gold` | `#f1c40f` |
151
- # | `:dark_gold` | `#c27c0e` |
152
- # | `:orange` | `#e67e22` |
153
- # | `:dark_orange` | `#a84300` |
154
- # | `:red` | `#e74c3c` |
155
- # | `:dark_red` | `#992d22` |
156
- # | `:lighter_grey` | `#95a5a6` |
157
- # | `:lighter_gray` | `#95a5a6` |
158
- # | `:dark_grey` | `#607d8b` |
159
- # | `:dark_gray` | `#607d8b` |
160
- # | `:light_grey` | `#979c9f` |
161
- # | `:light_gray` | `#979c9f` |
162
- # | `:darker_grey` | `#546e7a` |
163
- # | `:darker_gray` | `#546e7a` |
164
- # | `:og_blurple` | `#7289da` |
165
- # | `:blurple` | `#5865f2` |
166
- # | `:greyple` | `#99aab5` |
167
- # | `:dark_theme` | `#36393f` |
168
- # | `:fuchsia` | `#eb459e` |
169
- # | `:yellow` | `#fee75c` |
170
- #
171
- # @param [Symbol] color A Discord color name.
172
- #
173
- # @return [Discorb::Color] A color object.
174
- #
175
- def self.[](color)
176
- new(@discord_colors[color])
177
- end
178
- end
179
-
180
- # @return [Class] The alias of `Discorb::Color`.
181
- Colour = Color
182
- end
1
+ # frozen_string_literal: true
2
+
3
+ module Discorb
4
+ #
5
+ # Represents RGB color.
6
+ #
7
+ class Color
8
+ attr_accessor :value
9
+
10
+ @discord_colors = {
11
+ teal: 0x1abc9c,
12
+ dark_teal: 0x11806a,
13
+ green: 0x2ecc71,
14
+ dark_green: 0x1f8b4c,
15
+ blue: 0x3498db,
16
+ dark_blue: 0x206694,
17
+ purple: 0x9b59b6,
18
+ dark_purple: 0x71368a,
19
+ magenta: 0xe91e63,
20
+ dark_magenta: 0xad1457,
21
+ gold: 0xf1c40f,
22
+ dark_gold: 0xc27c0e,
23
+ orange: 0xe67e22,
24
+ dark_orange: 0xa84300,
25
+ red: 0xe74c3c,
26
+ dark_red: 0x992d22,
27
+ lighter_grey: 0x95a5a6,
28
+ lighter_gray: 0x95a5a6,
29
+ dark_grey: 0x607d8b,
30
+ dark_gray: 0x607d8b,
31
+ light_grey: 0x979c9f,
32
+ light_gray: 0x979c9f,
33
+ darker_grey: 0x546e7a,
34
+ darker_gray: 0x546e7a,
35
+ og_blurple: 0x7289da,
36
+ blurple: 0x5865f2,
37
+ greyple: 0x99aab5,
38
+ dark_theme: 0x36393f,
39
+ fuchsia: 0xeb459e,
40
+ yellow: 0xfee75c
41
+ }.freeze
42
+
43
+ #
44
+ # Create a color from a Integer.
45
+ #
46
+ # @param [Integer] value A color value.
47
+ #
48
+ def initialize(value)
49
+ @value = value
50
+ end
51
+
52
+ #
53
+ # Integerize a color.
54
+ #
55
+ # @return [Integer] A color value.
56
+ #
57
+ def to_i
58
+ @value
59
+ end
60
+
61
+ #
62
+ # Convert a color to a hexadecimal value.
63
+ #
64
+ # @return [String] A hexadecimal value.
65
+ #
66
+ def to_hex
67
+ @value.to_s(16).rjust(6, "0")
68
+ end
69
+
70
+ #
71
+ # Convert a color to RGB array.
72
+ #
73
+ # @return [Array(Integer, Integer, Integer)] A RGB array.
74
+ #
75
+ def to_rgb
76
+ [@value / (256 * 256), @value / 256 % 256, @value % 256]
77
+ end
78
+
79
+ alias to_a to_rgb
80
+ alias deconstruct to_rgb
81
+
82
+ #
83
+ # Convert a color to RGB hash.
84
+ #
85
+ # @return [Hash{:r, :g, :b => Integer}] A RGB hash.
86
+ #
87
+ def to_rgb_hash
88
+ { r: @value / (256 * 256), g: @value / 256 % 256, b: @value % 256 }
89
+ end
90
+
91
+ alias deconstruct_keys to_rgb_hash
92
+
93
+ #
94
+ # Converts a color to a `#000000` string.
95
+ #
96
+ # @return [String] Converted string.
97
+ #
98
+ def to_s
99
+ "##{to_hex}"
100
+ end
101
+
102
+ def inspect
103
+ "#<#{self.class} #{@value}/#{self}>"
104
+ end
105
+
106
+ #
107
+ # Create a color from a hexadecimal string.
108
+ #
109
+ # @param [String] hex A hexadecimal string.
110
+ #
111
+ # @return [Discorb::Color] A color object.
112
+ #
113
+ def self.from_hex(hex)
114
+ new(hex.to_i(16))
115
+ end
116
+
117
+ #
118
+ # Create a color from a RGB array.
119
+ #
120
+ # @param [Integer] red A red value.
121
+ # @param [Integer] green A green value.
122
+ # @param [Integer] blue A blue value.
123
+ #
124
+ # @return [Discorb::Color] A color object.
125
+ #
126
+ def self.from_rgb(red, green, blue)
127
+ new((red * 256 * 256) + (green * 256) + blue)
128
+ end
129
+
130
+ #
131
+ # Create a color from a Discord's color.
132
+ # Currently these colors are supported:
133
+ #
134
+ # | Color name | Color code |
135
+ # |-----------------|------------|
136
+ # | `:teal` | `#1abc9c` |
137
+ # | `:dark_teal` | `#11806a` |
138
+ # | `:green` | `#2ecc71` |
139
+ # | `:dark_green` | `#1f8b4c` |
140
+ # | `:blue` | `#3498db` |
141
+ # | `:dark_blue` | `#206694` |
142
+ # | `:purple` | `#9b59b6` |
143
+ # | `:dark_purple` | `#71368a` |
144
+ # | `:magenta` | `#e91e63` |
145
+ # | `:dark_magenta` | `#ad1457` |
146
+ # | `:gold` | `#f1c40f` |
147
+ # | `:dark_gold` | `#c27c0e` |
148
+ # | `:orange` | `#e67e22` |
149
+ # | `:dark_orange` | `#a84300` |
150
+ # | `:red` | `#e74c3c` |
151
+ # | `:dark_red` | `#992d22` |
152
+ # | `:lighter_grey` | `#95a5a6` |
153
+ # | `:lighter_gray` | `#95a5a6` |
154
+ # | `:dark_grey` | `#607d8b` |
155
+ # | `:dark_gray` | `#607d8b` |
156
+ # | `:light_grey` | `#979c9f` |
157
+ # | `:light_gray` | `#979c9f` |
158
+ # | `:darker_grey` | `#546e7a` |
159
+ # | `:darker_gray` | `#546e7a` |
160
+ # | `:og_blurple` | `#7289da` |
161
+ # | `:blurple` | `#5865f2` |
162
+ # | `:greyple` | `#99aab5` |
163
+ # | `:dark_theme` | `#36393f` |
164
+ # | `:fuchsia` | `#eb459e` |
165
+ # | `:yellow` | `#fee75c` |
166
+ #
167
+ # @param [Symbol] color A Discord color name.
168
+ #
169
+ # @return [Discorb::Color] A color object.
170
+ #
171
+ def self.[](color)
172
+ new(@discord_colors[color])
173
+ end
174
+ end
175
+
176
+ # @return [Class] The alias of `Discorb::Color`.
177
+ Colour = Color
178
+ end