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/error.rb CHANGED
@@ -1,131 +1,131 @@
1
- # frozen_string_literal: true
2
-
3
- module Discorb
4
- #
5
- # Error class for Discorb.
6
- # @abstract
7
- #
8
- class DiscorbError < StandardError
9
- private
10
-
11
- def enumerate_errors(hash)
12
- res = {}
13
- _recr_items([], hash, res)
14
- res = {} if res == { "" => nil }
15
- res
16
- end
17
-
18
- def _recr_items(key, item, res)
19
- case item
20
- when Array
21
- item.each_with_index do |v, i|
22
- _recr_items (key + [i]), v, res
23
- end
24
- when Hash
25
- item.each do |k, v|
26
- _recr_items (key + [k]), v, res
27
- end
28
- else
29
- res[key.join(".").gsub("_errors.", "")] = item
30
- end
31
- end
32
- end
33
-
34
- #
35
- # Represents a HTTP error.
36
- # @abstract
37
- #
38
- class HTTPError < DiscorbError
39
- # @return [String] the JSON response code.
40
- # @see https://discord.com/developers/docs/topics/opcodes-and-status-codes#json-json-error-codes
41
- attr_reader :code
42
- # @return [Net::HTTPResponse] the HTTP response.
43
- attr_reader :response
44
-
45
- #
46
- # Initialize a new instance of the HTTPError class.
47
- # @private
48
- #
49
- def initialize(resp, data)
50
- @code = data[:code]
51
- @response = resp
52
- super(data[:message] + " (#{@code})")
53
- end
54
- end
55
-
56
- #
57
- # Represents a 400 error.
58
- #
59
- class BadRequestError < HTTPError
60
- #
61
- # Initialize a new instance of the BadRequestError class.
62
- # @private
63
- #
64
- def initialize(resp, data)
65
- @code = data[:code]
66
- @response = resp
67
- DiscorbError.instance_method(:initialize).bind(self).call(
68
- [
69
- data[:message] + " (#{@code})", enumerate_errors(data[:errors])
70
- .map { |ek, ev| "#{ek}=>#{ev}" }
71
- .join("\n"),
72
- ].join("\n")
73
- )
74
- end
75
- end
76
-
77
- #
78
- # Represents a 401 error.
79
- #
80
- class UnauthorizedError < HTTPError
81
- end
82
-
83
- #
84
- # Represents a 403 error.
85
- #
86
- class ForbiddenError < HTTPError
87
- end
88
-
89
- #
90
- # Represents a 404 error.
91
- #
92
- class NotFoundError < HTTPError
93
- end
94
-
95
- #
96
- # Represents a error because of a cloudflare ban.
97
- #
98
- class CloudFlareBanError < HTTPError
99
- def initialize(_resp, client)
100
- @client = client
101
- @client.close!
102
- message = <<~MESSAGE
103
- The client is banned from CloudFlare.
104
- Hint: Try to decrease the number of requests per second, e.g. Use sleep in between requests.
105
- MESSAGE
106
- warn message
107
- DiscorbError.instance_method(:initialize).bind(self).call(message)
108
- end
109
- end
110
-
111
- #
112
- # Represents a error in client-side.
113
- #
114
- class ClientError < DiscorbError
115
- end
116
-
117
- #
118
- # Represents a timeout error.
119
- #
120
- class TimeoutError < DiscorbError
121
- end
122
-
123
- #
124
- # Represents a warning.
125
- #
126
- class NotSupportedWarning < DiscorbError
127
- def initialize(message)
128
- super("#{message} is not supported yet.")
129
- end
130
- end
131
- end
1
+ # frozen_string_literal: true
2
+
3
+ module Discorb
4
+ #
5
+ # Error class for Discorb.
6
+ # @abstract
7
+ #
8
+ class DiscorbError < StandardError
9
+ private
10
+
11
+ def enumerate_errors(hash)
12
+ res = {}
13
+ _recr_items([], hash, res)
14
+ res = {} if res == { "" => nil }
15
+ res
16
+ end
17
+
18
+ def _recr_items(key, item, res)
19
+ case item
20
+ when Array
21
+ item.each_with_index { |v, i| _recr_items (key + [i]), v, res }
22
+ when Hash
23
+ item.each { |k, v| _recr_items (key + [k]), v, res }
24
+ else
25
+ res[key.join(".").gsub("_errors.", "")] = item
26
+ end
27
+ end
28
+ end
29
+
30
+ #
31
+ # Represents a HTTP error.
32
+ # @abstract
33
+ #
34
+ class HTTPError < DiscorbError
35
+ # @return [String] the JSON response code.
36
+ # @see https://discord.com/developers/docs/topics/opcodes-and-status-codes#json-json-error-codes
37
+ attr_reader :code
38
+ # @return [Net::HTTPResponse] the HTTP response.
39
+ attr_reader :response
40
+
41
+ #
42
+ # Initialize a new instance of the HTTPError class.
43
+ # @private
44
+ #
45
+ def initialize(resp, data)
46
+ @code = data[:code]
47
+ @response = resp
48
+ super(data[:message] + " (#{@code})")
49
+ end
50
+ end
51
+
52
+ #
53
+ # Represents a 400 error.
54
+ #
55
+ class BadRequestError < HTTPError
56
+ #
57
+ # Initialize a new instance of the BadRequestError class.
58
+ # @private
59
+ #
60
+ def initialize(resp, data)
61
+ @code = data[:code]
62
+ @response = resp
63
+ DiscorbError
64
+ .instance_method(:initialize)
65
+ .bind(self)
66
+ .call(
67
+ [
68
+ data[:message] + " (#{@code})",
69
+ enumerate_errors(data[:errors])
70
+ .map { |ek, ev| "#{ek}=>#{ev}" }
71
+ .join("\n")
72
+ ].join("\n")
73
+ )
74
+ end
75
+ end
76
+
77
+ #
78
+ # Represents a 401 error.
79
+ #
80
+ class UnauthorizedError < HTTPError
81
+ end
82
+
83
+ #
84
+ # Represents a 403 error.
85
+ #
86
+ class ForbiddenError < HTTPError
87
+ end
88
+
89
+ #
90
+ # Represents a 404 error.
91
+ #
92
+ class NotFoundError < HTTPError
93
+ end
94
+
95
+ #
96
+ # Represents a error because of a cloudflare ban.
97
+ #
98
+ class CloudFlareBanError < HTTPError
99
+ def initialize(_resp, client)
100
+ @client = client
101
+ @client.close!
102
+ message = <<~MESSAGE
103
+ The client is banned from CloudFlare.
104
+ Hint: Try to decrease the number of requests per second, e.g. Use sleep in between requests.
105
+ MESSAGE
106
+ warn message
107
+ DiscorbError.instance_method(:initialize).bind(self).call(message)
108
+ end
109
+ end
110
+
111
+ #
112
+ # Represents a error in client-side.
113
+ #
114
+ class ClientError < DiscorbError
115
+ end
116
+
117
+ #
118
+ # Represents a timeout error.
119
+ #
120
+ class TimeoutError < DiscorbError
121
+ end
122
+
123
+ #
124
+ # Represents a warning.
125
+ #
126
+ class NotSupportedWarning < DiscorbError
127
+ def initialize(message)
128
+ super("#{message} is not supported yet.")
129
+ end
130
+ end
131
+ end