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/flag.rb CHANGED
@@ -1,128 +1,126 @@
1
- # frozen_string_literal: true
2
-
3
- module Discorb
4
- #
5
- # Represents a flag.
6
- # @abstract
7
- #
8
- class Flag
9
- # @return [Hash{Symbol => Boolean}] the values of the flag.
10
- attr_reader :values
11
- alias to_h values
12
- # @return [Integer] the value of the flag.
13
- attr_reader :value
14
-
15
- @bits = {}
16
-
17
- # Initialize the flag.
18
- # @note This is usually called by the subclass.
19
- #
20
- # @param [Integer] value The value of the flag.
21
- def initialize(value)
22
- @value = value
23
- @values = {}
24
- self.class.bits.each do |bn, bv|
25
- @values[bn] = value & (1 << bv) != 0
26
- end
27
- end
28
-
29
- #
30
- # Returns the value of the flag.
31
- #
32
- def method_missing(name, *_args, **_kwargs)
33
- if @values.key?(name.to_s.delete_suffix("?").to_sym)
34
- @values[name.to_s.delete_suffix("?").to_sym]
35
- else
36
- super
37
- end
38
- end
39
-
40
- def respond_to_missing?(sym, include_private)
41
- @values.key?(name.to_s.delete_suffix("?").to_sym) ? true : super
42
- end
43
-
44
- #
45
- # Union of two flags.
46
- #
47
- # @param [Discorb::Flag] other The other flag.
48
- #
49
- # @return [Discorb::Flag] The union of the two flags.
50
- #
51
- def |(other)
52
- self.class.new(@value | other.value)
53
- end
54
-
55
- alias + |
56
-
57
- #
58
- # Subtraction of two flags.
59
- #
60
- # @param [Discorb::Flag] other The other flag.
61
- #
62
- # @return [Discorb::Flag] The subtraction of the two flags.
63
- #
64
- def -(other)
65
- self.class.new(@value & (@value ^ other.value))
66
- end
67
-
68
- #
69
- # Intersection of two flags.
70
- #
71
- # @param [Discorb::Flag] other The other flag.
72
- #
73
- # @return [Discorb::Flag] The intersection of the two flags.
74
- #
75
- def &(other)
76
- self.class.new(@value & other.value)
77
- end
78
-
79
- #
80
- # XOR of two flags.
81
- #
82
- # @param [Discorb::Flag] other The other flag.
83
- #
84
- # @return [Discorb::Flag] The XOR of the two flags.
85
- #
86
- def ^(other)
87
- self.class.new(@value ^ other.value)
88
- end
89
-
90
- #
91
- # Negation of the flag.
92
- #
93
- # @return [Discorb::Flag] The negation of the flag.
94
- #
95
- def ~
96
- self.class.new(~@value)
97
- end
98
-
99
- def to_i
100
- @value
101
- end
102
-
103
- def inspect
104
- "#<#{self.class}: #{@value}>"
105
- end
106
-
107
- class << self
108
- # @return [Hash{Integer => Symbol}] the bits of the flag.
109
- attr_reader :bits
110
-
111
- #
112
- # Max value of the flag.
113
- #
114
- # @return [Integer] the max value of the flag.
115
- #
116
- def max_value
117
- 2 ** @bits.values.max - 1
118
- end
119
-
120
- #
121
- # Initialize a new flag with keys.
122
- #
123
- def from_keys(*keys)
124
- new(keys.sum { |k| 1 << @bits[k] })
125
- end
126
- end
127
- end
128
- end
1
+ # frozen_string_literal: true
2
+
3
+ module Discorb
4
+ #
5
+ # Represents a flag.
6
+ # @abstract
7
+ #
8
+ class Flag
9
+ # @return [Hash{Symbol => Boolean}] the values of the flag.
10
+ attr_reader :values
11
+ alias to_h values
12
+ # @return [Integer] the value of the flag.
13
+ attr_reader :value
14
+
15
+ @bits = {}
16
+
17
+ # Initialize the flag.
18
+ # @note This is usually called by the subclass.
19
+ #
20
+ # @param [Integer] value The value of the flag.
21
+ def initialize(value)
22
+ @value = value
23
+ @values = {}
24
+ self.class.bits.each { |bn, bv| @values[bn] = value & (1 << bv) != 0 }
25
+ end
26
+
27
+ #
28
+ # Returns the value of the flag.
29
+ #
30
+ def method_missing(name, *_args, **_kwargs)
31
+ if @values.key?(name.to_s.delete_suffix("?").to_sym)
32
+ @values[name.to_s.delete_suffix("?").to_sym]
33
+ else
34
+ super
35
+ end
36
+ end
37
+
38
+ def respond_to_missing?(sym, include_private)
39
+ @values.key?(name.to_s.delete_suffix("?").to_sym) ? true : super
40
+ end
41
+
42
+ #
43
+ # Union of two flags.
44
+ #
45
+ # @param [Discorb::Flag] other The other flag.
46
+ #
47
+ # @return [Discorb::Flag] The union of the two flags.
48
+ #
49
+ def |(other)
50
+ self.class.new(@value | other.value)
51
+ end
52
+
53
+ alias + |
54
+
55
+ #
56
+ # Subtraction of two flags.
57
+ #
58
+ # @param [Discorb::Flag] other The other flag.
59
+ #
60
+ # @return [Discorb::Flag] The subtraction of the two flags.
61
+ #
62
+ def -(other)
63
+ self.class.new(@value & (@value ^ other.value))
64
+ end
65
+
66
+ #
67
+ # Intersection of two flags.
68
+ #
69
+ # @param [Discorb::Flag] other The other flag.
70
+ #
71
+ # @return [Discorb::Flag] The intersection of the two flags.
72
+ #
73
+ def &(other)
74
+ self.class.new(@value & other.value)
75
+ end
76
+
77
+ #
78
+ # XOR of two flags.
79
+ #
80
+ # @param [Discorb::Flag] other The other flag.
81
+ #
82
+ # @return [Discorb::Flag] The XOR of the two flags.
83
+ #
84
+ def ^(other)
85
+ self.class.new(@value ^ other.value)
86
+ end
87
+
88
+ #
89
+ # Negation of the flag.
90
+ #
91
+ # @return [Discorb::Flag] The negation of the flag.
92
+ #
93
+ def ~
94
+ self.class.new(~@value)
95
+ end
96
+
97
+ def to_i
98
+ @value
99
+ end
100
+
101
+ def inspect
102
+ "#<#{self.class}: #{@value}>"
103
+ end
104
+
105
+ class << self
106
+ # @return [Hash{Integer => Symbol}] the bits of the flag.
107
+ attr_reader :bits
108
+
109
+ #
110
+ # Max value of the flag.
111
+ #
112
+ # @return [Integer] the max value of the flag.
113
+ #
114
+ def max_value
115
+ (2**@bits.values.max) - 1
116
+ end
117
+
118
+ #
119
+ # Initialize a new flag with keys.
120
+ #
121
+ def from_keys(*keys)
122
+ new(keys.sum { |k| 1 << @bits[k] })
123
+ end
124
+ end
125
+ end
126
+ end