discorb 0.19.0 → 0.20.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (88) 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 +10 -0
  5. data/Rakefile +482 -454
  6. data/lib/discorb/allowed_mentions.rb +68 -72
  7. data/lib/discorb/app_command/command.rb +466 -398
  8. data/lib/discorb/app_command/common.rb +65 -25
  9. data/lib/discorb/app_command/handler.rb +304 -266
  10. data/lib/discorb/app_command.rb +5 -5
  11. data/lib/discorb/application.rb +198 -197
  12. data/lib/discorb/asset.rb +101 -101
  13. data/lib/discorb/attachment.rb +134 -119
  14. data/lib/discorb/audit_logs.rb +412 -385
  15. data/lib/discorb/automod.rb +279 -269
  16. data/lib/discorb/channel/base.rb +107 -108
  17. data/lib/discorb/channel/category.rb +32 -32
  18. data/lib/discorb/channel/container.rb +44 -44
  19. data/lib/discorb/channel/dm.rb +26 -28
  20. data/lib/discorb/channel/guild.rb +311 -246
  21. data/lib/discorb/channel/stage.rb +156 -140
  22. data/lib/discorb/channel/text.rb +430 -336
  23. data/lib/discorb/channel/thread.rb +374 -325
  24. data/lib/discorb/channel/voice.rb +85 -79
  25. data/lib/discorb/channel.rb +5 -5
  26. data/lib/discorb/client.rb +635 -621
  27. data/lib/discorb/color.rb +178 -182
  28. data/lib/discorb/common.rb +168 -164
  29. data/lib/discorb/components/button.rb +107 -106
  30. data/lib/discorb/components/select_menu.rb +157 -145
  31. data/lib/discorb/components/text_input.rb +103 -106
  32. data/lib/discorb/components.rb +68 -66
  33. data/lib/discorb/dictionary.rb +135 -135
  34. data/lib/discorb/embed.rb +404 -398
  35. data/lib/discorb/emoji.rb +309 -302
  36. data/lib/discorb/emoji_table.rb +16099 -8857
  37. data/lib/discorb/error.rb +131 -131
  38. data/lib/discorb/event.rb +360 -314
  39. data/lib/discorb/event_handler.rb +39 -39
  40. data/lib/discorb/exe/about.rb +17 -17
  41. data/lib/discorb/exe/irb.rb +72 -67
  42. data/lib/discorb/exe/new.rb +323 -315
  43. data/lib/discorb/exe/run.rb +69 -68
  44. data/lib/discorb/exe/setup.rb +57 -55
  45. data/lib/discorb/exe/show.rb +12 -12
  46. data/lib/discorb/extend.rb +25 -45
  47. data/lib/discorb/extension.rb +89 -83
  48. data/lib/discorb/flag.rb +126 -128
  49. data/lib/discorb/gateway.rb +984 -804
  50. data/lib/discorb/gateway_events.rb +670 -638
  51. data/lib/discorb/gateway_requests.rb +45 -48
  52. data/lib/discorb/guild.rb +2115 -1626
  53. data/lib/discorb/guild_template.rb +280 -241
  54. data/lib/discorb/http.rb +247 -232
  55. data/lib/discorb/image.rb +42 -42
  56. data/lib/discorb/integration.rb +169 -161
  57. data/lib/discorb/intents.rb +161 -163
  58. data/lib/discorb/interaction/autocomplete.rb +76 -62
  59. data/lib/discorb/interaction/command.rb +279 -224
  60. data/lib/discorb/interaction/components.rb +114 -104
  61. data/lib/discorb/interaction/modal.rb +36 -32
  62. data/lib/discorb/interaction/response.rb +379 -336
  63. data/lib/discorb/interaction/root.rb +271 -257
  64. data/lib/discorb/interaction.rb +5 -5
  65. data/lib/discorb/invite.rb +154 -153
  66. data/lib/discorb/member.rb +344 -311
  67. data/lib/discorb/message.rb +615 -544
  68. data/lib/discorb/message_meta.rb +197 -186
  69. data/lib/discorb/modules.rb +371 -290
  70. data/lib/discorb/permission.rb +305 -291
  71. data/lib/discorb/presence.rb +352 -346
  72. data/lib/discorb/rate_limit.rb +81 -76
  73. data/lib/discorb/reaction.rb +55 -54
  74. data/lib/discorb/role.rb +272 -240
  75. data/lib/discorb/shard.rb +76 -74
  76. data/lib/discorb/sticker.rb +193 -171
  77. data/lib/discorb/user.rb +205 -188
  78. data/lib/discorb/utils/colored_puts.rb +16 -16
  79. data/lib/discorb/utils.rb +12 -16
  80. data/lib/discorb/voice_state.rb +305 -281
  81. data/lib/discorb/webhook.rb +537 -507
  82. data/lib/discorb.rb +62 -56
  83. data/sig/discorb/application.rbs +2 -0
  84. data/sig/discorb/automod.rbs +10 -1
  85. data/sig/discorb/guild.rbs +2 -0
  86. data/sig/discorb/message.rbs +2 -0
  87. data/sig/discorb/user.rbs +22 -20
  88. metadata +2 -2
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