discorb 0.19.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 (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
@@ -1,171 +1,193 @@
1
- # frozen_string_literal: true
2
-
3
- module Discorb
4
- #
5
- # Represents a sticker.
6
- #
7
- class Sticker < DiscordModel
8
- # @return [Discorb::Snowflake] The ID of the sticker.
9
- attr_reader :id
10
- # @return [String] The name of the sticker.
11
- attr_reader :name
12
- # @return [Array<String>] The tags of the sticker.
13
- attr_reader :tags
14
- # @return [:official, :guild] The type of sticker.
15
- attr_reader :type
16
- # @return [:png, :apng, :lottie] The format of the sticker.
17
- attr_reader :format
18
- # @return [String] The URL of the sticker.
19
- attr_reader :description
20
- # @return [Discorb::Snowflake] The ID of the sticker pack.
21
- attr_reader :pack_id
22
- # @return [Integer] The sort value of the sticker.
23
- attr_reader :sort_value
24
- # @return [Discorb::Snowflake] The ID of the guild the sticker is in.
25
- attr_reader :guild_id
26
- # @return [Discorb::User] The user who created the sticker.
27
- attr_reader :user
28
- # @return [Boolean] Whether the sticker is available.
29
- attr_reader :available
30
- alias available? available
31
-
32
- # @private
33
- # @return [{Integer => Symbol}] The mapping of sticker types.
34
- STICKER_TYPE = {
35
- 1 => :official,
36
- 2 => :guild,
37
- }.freeze
38
-
39
- # @private
40
- # @return [{Integer => Symbol}] The mapping of sticker format.
41
- STICKER_FORMAT = {
42
- 1 => :png,
43
- 2 => :apng,
44
- 3 => :lottie,
45
- }.freeze
46
- #
47
- # Initialize a new sticker.
48
- # @private
49
- #
50
- # @param [Discorb::Client] client The client.
51
- # @param [Hash] data The sticker data.
52
- #
53
- def initialize(client, data)
54
- @client = client
55
- _set_data(data)
56
- end
57
-
58
- #
59
- # Represents a sticker of guilds.
60
- #
61
- class GuildSticker < Sticker
62
- # @!attribute [r] guild
63
- # @macro client_cache
64
- # @return [Discorb::Guild] The guild the sticker is in.
65
-
66
- def guild
67
- @client.guilds[@guild_id]
68
- end
69
-
70
- #
71
- # Edits the sticker.
72
- # @async
73
- # @macro edit
74
- #
75
- # @param [String] name The new name of the sticker.
76
- # @param [String] description The new description of the sticker.
77
- # @param [Discorb::Emoji] tag The new tags of the sticker.
78
- # @param [String] reason The reason for the edit.
79
- #
80
- # @return [Async::Task<void>] The task.
81
- #
82
- def edit(name: Discorb::Unset, description: Discorb::Unset, tag: Discorb::Unset, reason: Discorb::Unset)
83
- Async do
84
- payload = {}
85
- payload[:name] = name unless name == Discorb::Unset
86
- payload[:description] = description unless description == Discorb::Unset
87
- payload[:tags] = tag.name unless tag == Discorb::Unset
88
- @client.http.request(
89
- Route.new("/guilds/#{@guild_id}/stickers/#{@id}", "//guilds/:guild_id/stickers/:sticker_id",
90
- :patch), payload, audit_log_reason: reason,
91
- ).wait
92
- end
93
- end
94
-
95
- alias modify edit
96
-
97
- #
98
- # Deletes the sticker.
99
- # @async
100
- #
101
- # @param [String] reason The reason for the deletion.
102
- #
103
- def delete(reason: nil)
104
- Async do
105
- @client.http.request(
106
- Route.new("/guilds/#{@guild_id}/stickers/#{@id}", "//guilds/:guild_id/stickers/:sticker_id",
107
- :delete), {}, audit_log_reason: reason,
108
- ).wait
109
- end
110
- end
111
-
112
- alias destroy delete
113
- end
114
-
115
- #
116
- # Represents a sticker pack.
117
- #
118
- class Pack < DiscordModel
119
- # @return [Discorb::Snowflake] The ID of the sticker pack.
120
- attr_reader :id
121
- # @return [String] The name of the sticker pack.
122
- attr_reader :name
123
- # @return [Discorb::Snowflake] The cover sticker of the pack.
124
- attr_reader :cover_sticker_id
125
- # @return [String] The description of the pack.
126
- attr_reader :description
127
- # @return [Array<Discorb::Sticker>] The stickers in the pack.
128
- attr_reader :stickers
129
- # @return [Discorb::Asset] The banner of the pack.
130
- attr_reader :banner
131
-
132
- #
133
- # Initialize a new sticker pack.
134
- # @private
135
- #
136
- # @param [Discorb::Client] client The client.
137
- # @param [Hash] data The sticker pack data.
138
- #
139
- def initialize(client, data)
140
- @client = client
141
- @id = Snowflake.new(data[:id])
142
- @name = data[:name]
143
- @sku_id = Snowflake.new(data[:sku_id])
144
- @cover_sticker_id = Snowflake.new(data[:cover_sticker_id])
145
- @description = data[:description]
146
- @banner_asset_id = Snowflake.new(data[:banner_asset_id])
147
- @banner = Asset.new(self, data[:banner_asset_id], path: "app-assets/710982414301790216/store")
148
- @stickers = data[:stickers].map { |s| Sticker.new(@client, s) }
149
- end
150
- end
151
-
152
- private
153
-
154
- def _set_data(data)
155
- @id = Snowflake.new(data[:id])
156
- @name = data[:name]
157
- @tags = data[:tags].split(",")
158
- @type = STICKER_TYPE[data[:type]]
159
- @format = STICKER_FORMAT[data[:format]]
160
- @description = data[:description]
161
- @available = data[:available]
162
- if @type == :official
163
- @pack_id = Snowflake.new(data[:guild_id])
164
- @sort_value = data[:sort_value]
165
- else
166
- @guild_id = Snowflake.new(data[:guild_id])
167
- @user = data[:user] && (@client.users[data[:user][:id]] || User.new(@client, data[:user]))
168
- end
169
- end
170
- end
171
- end
1
+ # frozen_string_literal: true
2
+
3
+ module Discorb
4
+ #
5
+ # Represents a sticker.
6
+ #
7
+ class Sticker < DiscordModel
8
+ # @return [Discorb::Snowflake] The ID of the sticker.
9
+ attr_reader :id
10
+ # @return [String] The name of the sticker.
11
+ attr_reader :name
12
+ # @return [Array<String>] The tags of the sticker.
13
+ attr_reader :tags
14
+ # @return [:official, :guild] The type of sticker.
15
+ attr_reader :type
16
+ # @return [:png, :apng, :lottie] The format of the sticker.
17
+ attr_reader :format
18
+ # @return [String] The URL of the sticker.
19
+ attr_reader :description
20
+ # @return [Discorb::Snowflake] The ID of the sticker pack.
21
+ attr_reader :pack_id
22
+ # @return [Integer] The sort value of the sticker.
23
+ attr_reader :sort_value
24
+ # @return [Discorb::Snowflake] The ID of the guild the sticker is in.
25
+ attr_reader :guild_id
26
+ # @return [Discorb::User] The user who created the sticker.
27
+ attr_reader :user
28
+ # @return [Boolean] Whether the sticker is available.
29
+ attr_reader :available
30
+ alias available? available
31
+
32
+ # @private
33
+ # @return [{Integer => Symbol}] The mapping of sticker types.
34
+ STICKER_TYPE = { 1 => :official, 2 => :guild }.freeze
35
+
36
+ # @private
37
+ # @return [{Integer => Symbol}] The mapping of sticker format.
38
+ STICKER_FORMAT = { 1 => :png, 2 => :apng, 3 => :lottie }.freeze
39
+ #
40
+ # Initialize a new sticker.
41
+ # @private
42
+ #
43
+ # @param [Discorb::Client] client The client.
44
+ # @param [Hash] data The sticker data.
45
+ #
46
+ def initialize(client, data)
47
+ @client = client
48
+ _set_data(data)
49
+ end
50
+
51
+ #
52
+ # Represents a sticker of guilds.
53
+ #
54
+ class GuildSticker < Sticker
55
+ # @!attribute [r] guild
56
+ # @macro client_cache
57
+ # @return [Discorb::Guild] The guild the sticker is in.
58
+
59
+ def guild
60
+ @client.guilds[@guild_id]
61
+ end
62
+
63
+ #
64
+ # Edits the sticker.
65
+ # @async
66
+ # @macro edit
67
+ #
68
+ # @param [String] name The new name of the sticker.
69
+ # @param [String] description The new description of the sticker.
70
+ # @param [Discorb::Emoji] tag The new tags of the sticker.
71
+ # @param [String] reason The reason for the edit.
72
+ #
73
+ # @return [Async::Task<void>] The task.
74
+ #
75
+ def edit(
76
+ name: Discorb::Unset,
77
+ description: Discorb::Unset,
78
+ tag: Discorb::Unset,
79
+ reason: Discorb::Unset
80
+ )
81
+ Async do
82
+ payload = {}
83
+ payload[:name] = name unless name == Discorb::Unset
84
+ payload[:description] = description unless description ==
85
+ Discorb::Unset
86
+ payload[:tags] = tag.name unless tag == Discorb::Unset
87
+ @client
88
+ .http
89
+ .request(
90
+ Route.new(
91
+ "/guilds/#{@guild_id}/stickers/#{@id}",
92
+ "//guilds/:guild_id/stickers/:sticker_id",
93
+ :patch
94
+ ),
95
+ payload,
96
+ audit_log_reason: reason
97
+ )
98
+ .wait
99
+ end
100
+ end
101
+
102
+ alias modify edit
103
+
104
+ #
105
+ # Deletes the sticker.
106
+ # @async
107
+ #
108
+ # @param [String] reason The reason for the deletion.
109
+ #
110
+ def delete(reason: nil)
111
+ Async do
112
+ @client
113
+ .http
114
+ .request(
115
+ Route.new(
116
+ "/guilds/#{@guild_id}/stickers/#{@id}",
117
+ "//guilds/:guild_id/stickers/:sticker_id",
118
+ :delete
119
+ ),
120
+ {},
121
+ audit_log_reason: reason
122
+ )
123
+ .wait
124
+ end
125
+ end
126
+
127
+ alias destroy delete
128
+ end
129
+
130
+ #
131
+ # Represents a sticker pack.
132
+ #
133
+ class Pack < DiscordModel
134
+ # @return [Discorb::Snowflake] The ID of the sticker pack.
135
+ attr_reader :id
136
+ # @return [String] The name of the sticker pack.
137
+ attr_reader :name
138
+ # @return [Discorb::Snowflake] The cover sticker of the pack.
139
+ attr_reader :cover_sticker_id
140
+ # @return [String] The description of the pack.
141
+ attr_reader :description
142
+ # @return [Array<Discorb::Sticker>] The stickers in the pack.
143
+ attr_reader :stickers
144
+ # @return [Discorb::Asset] The banner of the pack.
145
+ attr_reader :banner
146
+
147
+ #
148
+ # Initialize a new sticker pack.
149
+ # @private
150
+ #
151
+ # @param [Discorb::Client] client The client.
152
+ # @param [Hash] data The sticker pack data.
153
+ #
154
+ def initialize(client, data)
155
+ @client = client
156
+ @id = Snowflake.new(data[:id])
157
+ @name = data[:name]
158
+ @sku_id = Snowflake.new(data[:sku_id])
159
+ @cover_sticker_id = Snowflake.new(data[:cover_sticker_id])
160
+ @description = data[:description]
161
+ @banner_asset_id = Snowflake.new(data[:banner_asset_id])
162
+ @banner =
163
+ Asset.new(
164
+ self,
165
+ data[:banner_asset_id],
166
+ path: "app-assets/710982414301790216/store"
167
+ )
168
+ @stickers = data[:stickers].map { |s| Sticker.new(@client, s) }
169
+ end
170
+ end
171
+
172
+ private
173
+
174
+ def _set_data(data)
175
+ @id = Snowflake.new(data[:id])
176
+ @name = data[:name]
177
+ @tags = data[:tags].split(",")
178
+ @type = STICKER_TYPE[data[:type]]
179
+ @format = STICKER_FORMAT[data[:format]]
180
+ @description = data[:description]
181
+ @available = data[:available]
182
+ if @type == :official
183
+ @pack_id = Snowflake.new(data[:guild_id])
184
+ @sort_value = data[:sort_value]
185
+ else
186
+ @guild_id = Snowflake.new(data[:guild_id])
187
+ @user =
188
+ data[:user] &&
189
+ (@client.users[data[:user][:id]] || User.new(@client, data[:user]))
190
+ end
191
+ end
192
+ end
193
+ end