discorb 0.15.0 → 0.15.1

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 (51) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +6 -2
  3. data/Changelog.md +9 -0
  4. data/Rakefile +6 -0
  5. data/docs/events.md +50 -0
  6. data/lib/discorb/allowed_mentions.rb +7 -0
  7. data/lib/discorb/app_command/command.rb +64 -2
  8. data/lib/discorb/application.rb +16 -7
  9. data/lib/discorb/asset.rb +9 -0
  10. data/lib/discorb/attachment.rb +16 -1
  11. data/lib/discorb/audit_logs.rb +42 -4
  12. data/lib/discorb/channel.rb +42 -3
  13. data/lib/discorb/client.rb +4 -0
  14. data/lib/discorb/common.rb +17 -3
  15. data/lib/discorb/components/button.rb +5 -6
  16. data/lib/discorb/components/select_menu.rb +2 -16
  17. data/lib/discorb/dictionary.rb +2 -0
  18. data/lib/discorb/embed.rb +33 -7
  19. data/lib/discorb/emoji.rb +29 -2
  20. data/lib/discorb/emoji_table.rb +1 -1
  21. data/lib/discorb/error.rb +7 -1
  22. data/lib/discorb/event.rb +27 -17
  23. data/lib/discorb/gateway.rb +79 -22
  24. data/lib/discorb/gateway_requests.rb +4 -7
  25. data/lib/discorb/guild.rb +67 -33
  26. data/lib/discorb/guild_template.rb +24 -3
  27. data/lib/discorb/http.rb +7 -2
  28. data/lib/discorb/integration.rb +23 -8
  29. data/lib/discorb/intents.rb +7 -7
  30. data/lib/discorb/interaction/autocomplete.rb +2 -2
  31. data/lib/discorb/interaction/command.rb +32 -3
  32. data/lib/discorb/interaction/components.rb +14 -1
  33. data/lib/discorb/interaction/response.rb +12 -0
  34. data/lib/discorb/interaction/root.rb +15 -0
  35. data/lib/discorb/invite.rb +11 -7
  36. data/lib/discorb/log.rb +4 -4
  37. data/lib/discorb/member.rb +21 -0
  38. data/lib/discorb/message.rb +9 -1
  39. data/lib/discorb/message_meta.rb +38 -9
  40. data/lib/discorb/permission.rb +14 -5
  41. data/lib/discorb/presence.rb +41 -8
  42. data/lib/discorb/rate_limit.rb +5 -0
  43. data/lib/discorb/reaction.rb +6 -0
  44. data/lib/discorb/role.rb +12 -0
  45. data/lib/discorb/sticker.rb +22 -14
  46. data/lib/discorb/user.rb +11 -0
  47. data/lib/discorb/voice_state.rb +20 -2
  48. data/lib/discorb/webhook.rb +52 -1
  49. data/lib/discorb.rb +3 -1
  50. data/sig/discorb.rbs +6850 -5836
  51. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 497fc76081f6183ccd3ec7c14768e80d81a172c092afa67f26bcec625f7b204f
4
- data.tar.gz: 5d0d4070c729b2b63d6a746fa559900b2205d51f737105d8c8653c59eec01e97
3
+ metadata.gz: 4bc9c7d6433e9e093a0d58d821ed97e3f001d63224c9f65eb1693a2ee3d16f7d
4
+ data.tar.gz: daff87553c1996cbc1a68765ee3df54947f46b7660fc1a16f0a17a0e0660e2c7
5
5
  SHA512:
6
- metadata.gz: bf93daa59116cbd29d408e361b0cebf0e4b681c21eb2e07466f2ea2659f7bec959a58c4bf168c8b5058bb4221bb26352770c94e6bc61a9713a82d72bf98316e8
7
- data.tar.gz: aa07fe600a6397f69584a33d4b79dfd2d64952c4c1fff83a08a84418e0547a78c9b2261fce7e96a46bf19d4dab9ff0972ebe09b2ddf59371d5d74a761282c45e
6
+ metadata.gz: dceaba51436368feeb9e99bc4afda5cea9ac45aa0525bb44cdd33c427fef6c6617d17bf1a56b27acac137df05b4d6f27395e22883ce574e4e48d3e7a8ca05a13
7
+ data.tar.gz: 81622ca789eee2f8c55b4fd98e7c0bdc602d164247602508c8b041757d61fcb77f659d01142db8a8c16b9dd6e6cc402ebf9f45cf881e787a77449ba4831b8376
data/.rubocop.yml CHANGED
@@ -10,10 +10,14 @@ Metrics:
10
10
  Enabled: false
11
11
 
12
12
  Style/TrailingCommaInHashLiteral: # Disabled for rufo
13
- Enabled: false
13
+ EnforcedStyleForMultiline: consistent_comma
14
+
15
+ Style/TrailingCommaInArrayLiteral: # Disabled for rufo
16
+ EnforcedStyleForMultiline: consistent_comma
14
17
 
15
18
  Style/StringLiterals: # Disabled for rufo
16
- Enabled: false
19
+ Enabled: true
20
+ EnforcedStyle: double_quotes
17
21
 
18
22
  Style/TrailingCommaInArguments: # Disabled for rufo
19
23
  Enabled: false
data/Changelog.md CHANGED
@@ -6,6 +6,15 @@
6
6
 
7
7
  ## v0.15
8
8
 
9
+ ### v0.15.1
10
+
11
+ - Add: Add `Member#can_manage?`
12
+ - Add: Add `Discorb::VERSION_ARRAY`
13
+ - Fix: `Snowflake#timestamp` includes milliseconds now
14
+ - Fix: `TextChannel#create_invite` will no longer return `ArgumentError`
15
+ - Fix: Connection will not closed with 4001 when `Client#update_presence`
16
+ is called
17
+
9
18
  ### v0.15.0
10
19
 
11
20
  - Add: Migrate to API v10
data/Rakefile CHANGED
@@ -320,6 +320,12 @@ end
320
320
 
321
321
  task document: %i[document:yard document:replace]
322
322
 
323
+ desc "Lint code with rubocop"
323
324
  task :lint do
324
325
  sh "rubocop lib"
325
326
  end
327
+
328
+ desc "Autofix code with rubocop"
329
+ task "lint:fix" do
330
+ sh "rubocop lib -A"
331
+ end
data/docs/events.md CHANGED
@@ -487,6 +487,46 @@ Fires when an invitation is deleted.
487
487
 
488
488
  ### Interaction events
489
489
 
490
+ #### `interaction_create(interaction)`
491
+
492
+ Fires when an interaction is created. This will fire for all interactions.
493
+
494
+ | Parameter | Type | Description |
495
+ | ---------- | ----- | ----------- |
496
+ | `interaction` | {Discorb::Interaction}| The created interaction. |
497
+
498
+ #### `application_command(interaction)`
499
+
500
+ Fires when an application command is used.
501
+
502
+ | Parameter | Type | Description |
503
+ | ---------- | ----- | ----------- |
504
+ | `interaction` | {Discorb::CommandInteraction}| The created interaction. |
505
+
506
+ #### `slash_command(interaction)`
507
+
508
+ Fires when a slash command is used.
509
+
510
+ | Parameter | Type | Description |
511
+ | ---------- | ----- | ----------- |
512
+ | `interaction` | {Discorb::CommandInteraction::SlashCommand}| The created interaction. |
513
+
514
+ #### `message_command(interaction)`
515
+
516
+ Fires when a message command is used.
517
+
518
+ | Parameter | Type | Description |
519
+ | ---------- | ----- | ----------- |
520
+ | `interaction` | {Discorb::CommandInteraction::MessageMenuCommand}| The created interaction. |
521
+
522
+ #### `user_command(interaction)`
523
+
524
+ Fires when a user command is used.
525
+
526
+ | Parameter | Type | Description |
527
+ | ---------- | ----- | ----------- |
528
+ | `interaction` | {Discorb::CommandInteraction::UserMenuCommand}| The created interaction. |
529
+
490
530
  #### `button_click(interaction)`
491
531
 
492
532
  Fires when a button is clicked.
@@ -503,6 +543,16 @@ Fires when a select menu is selected.
503
543
  | ---------- | ----- | ----------- |
504
544
  |`interaction`| {Discorb::MessageComponentInteraction::SelectMenu}| The interaction object. |
505
545
 
546
+ #### `form_submit(interaction)`
547
+
548
+ Fires when a form is submitted.
549
+
550
+ | Parameter | Type | Description |
551
+ | ---------- | ----- | ----------- |
552
+ | `interaction` | {Discorb::ModalInteraction} | The interaction object. |
553
+
554
+ #### `slash_command
555
+
506
556
  ### Voice events
507
557
 
508
558
  Because it's big, it's documented in {file:docs/voice_events.md}.
@@ -32,7 +32,14 @@ module Discorb
32
32
  "#<#{self.class} @everyone=#{@everyone} @roles=#{@roles} @users=#{@users} @replied_user=#{@replied_user}>"
33
33
  end
34
34
 
35
+ #
36
+ # Converts the object to a hash.
35
37
  # @private
38
+ #
39
+ # @param [Discorb::AllowedMentions, nil] other The object to merge.
40
+ #
41
+ # @return [Hash] The hash.
42
+ #
36
43
  def to_hash(other = nil)
37
44
  payload = {
38
45
  parse: %w[everyone roles users],
@@ -23,24 +23,39 @@ module Discorb
23
23
  # @return [Discorb::Dictionary{Discorb::Snowflake, :global => Discorb::Snowflake}] The ID mapping.
24
24
  attr_reader :id_map
25
25
 
26
- @types = {
26
+ # @private
27
+ # @return [{Integer => Symbol}] The mapping of raw types to types.
28
+ TYPES = {
27
29
  1 => :chat_input,
28
30
  2 => :user,
29
31
  3 => :message,
30
32
  }.freeze
31
33
 
34
+ #
35
+ # Initialize a new command.
32
36
  # @private
37
+ #
38
+ # @param [String] name The name of the command.
39
+ # @param [Array<#to_s>] guild_ids The guild ids that the command is enabled in.
40
+ # @param [Proc] block The block of the command.
41
+ # @param [:chat_input, :user, :message] type The type of the command.
42
+ #
33
43
  def initialize(name, guild_ids, block, type)
34
44
  @name = name
35
45
  @guild_ids = guild_ids&.map(&:to_s)
36
46
  @block = block
37
47
  @raw_type = type
38
- @type = Discorb::ApplicationCommand::Command.types[type]
48
+ @type = Discorb::ApplicationCommand::Command::TYPES[type]
39
49
  @type_raw = type
40
50
  @id_map = Discorb::Dictionary.new
41
51
  end
42
52
 
53
+ #
54
+ # Changes the self pointer to the given object.
43
55
  # @private
56
+ #
57
+ # @param [Object] instance The object to change the self pointer to.
58
+ #
44
59
  def replace_block(instance)
45
60
  current_block = @block.dup
46
61
  @block = proc do |*args|
@@ -48,7 +63,12 @@ module Discorb
48
63
  end
49
64
  end
50
65
 
66
+ #
67
+ # Converts the object to a hash.
51
68
  # @private
69
+ #
70
+ # @return [Hash] The hash represents the object.
71
+ #
52
72
  def to_hash
53
73
  {
54
74
  name: @name,
@@ -66,7 +86,18 @@ module Discorb
66
86
  # @return [Hash{String => Hash}] The options of the command.
67
87
  attr_reader :options
68
88
 
89
+ #
90
+ # Initialize a new slash command.
69
91
  # @private
92
+ #
93
+ # @param [String] name The name of the command.
94
+ # @param [String] description The description of the command.
95
+ # @param [Hash{String => Hash}] options The options of the command.
96
+ # @param [Array<#to_s>] guild_ids The guild ids that the command is enabled in.
97
+ # @param [Proc] block The block of the command.
98
+ # @param [:chat_input, :user, :message] type The type of the command.
99
+ # @param [Discorb::ApplicationCommand::Command, nil] parent The parent command.
100
+ #
70
101
  def initialize(name, description, options, guild_ids, block, type, parent)
71
102
  super(name, guild_ids, block, type)
72
103
  @description = description
@@ -85,7 +116,12 @@ module Discorb
85
116
  (@parent + " " + @name).strip
86
117
  end
87
118
 
119
+ #
120
+ # Converts the object to a hash.
88
121
  # @private
122
+ #
123
+ # @return [Hash] The hash represents the object.
124
+ #
89
125
  def to_hash
90
126
  options_payload = options.map do |name, value|
91
127
  ret = {
@@ -145,7 +181,16 @@ module Discorb
145
181
  # @return [String] The description of the command.
146
182
  attr_reader :description
147
183
 
184
+ #
185
+ # Initialize a new group command.
148
186
  # @private
187
+ #
188
+ # @param [String] name The name of the command.
189
+ # @param [String] description The description of the command.
190
+ # @param [Array<#to_s>] guild_ids The guild ids that the command is enabled in.
191
+ # @param [:chat_input, :user, :message] type The type of the command.
192
+ # @param [Discorb::Client] client The client of the command.
193
+ #
149
194
  def initialize(name, description, guild_ids, type, client)
150
195
  super(name, guild_ids, block, type)
151
196
  @description = description
@@ -196,13 +241,23 @@ module Discorb
196
241
  @name
197
242
  end
198
243
 
244
+ #
245
+ # Changes the self pointer to the given object.
199
246
  # @private
247
+ #
248
+ # @param [Object] instance The object to change to.
249
+ #
200
250
  def block_replace(instance)
201
251
  super
202
252
  @commands.each { |c| c.replace_block(instance) }
203
253
  end
204
254
 
255
+ #
256
+ # Converts the object to a hash.
205
257
  # @private
258
+ #
259
+ # @return [Hash] The hash represents the object.
260
+ #
206
261
  def to_hash
207
262
  options_payload = @commands.map do |command|
208
263
  if command.is_a?(SlashCommand)
@@ -240,7 +295,14 @@ module Discorb
240
295
  # @return [Array<Discorb::ApplicationCommand::Command::SlashCommand>] The subcommands of the command.
241
296
  attr_reader :commands
242
297
 
298
+ #
299
+ # Initialize a new subcommand group.
243
300
  # @private
301
+ #
302
+ # @param [String] name The name of the command.
303
+ # @param [String] description The description of the command.
304
+ # @param [Discorb::ApplicationCommand::Command::GroupCommand] parent The parent command.
305
+ # @param [Discorb::Client] client The client.
244
306
  def initialize(name, description, parent, client)
245
307
  super(name, description, [], 1, client)
246
308
 
@@ -29,7 +29,13 @@ module Discorb
29
29
  alias bot_require_code_grant? bot_require_code_grant
30
30
  # @return [Discorb::Application::Flag] The application's flags.
31
31
  attr_reader :flags
32
+ #
33
+ # Initializes a new instance of the Application class.
32
34
  # @private
35
+ #
36
+ # @param [Discorb::Client] client The client that instantiated the object.
37
+ # @param [Hash] data The data of the object.
38
+ #
33
39
  def initialize(client, data)
34
40
  @client = client
35
41
  @data = data
@@ -97,7 +103,13 @@ module Discorb
97
103
  # @return [Discorb::Application::Team::Member] The team's member.
98
104
  attr_reader :members
99
105
 
106
+ #
107
+ # Initializes a new instance of the Team class.
100
108
  # @private
109
+ #
110
+ # @param [Discorb::Client] client The client that instantiated the object.
111
+ # @param [Hash] data The data of the object.
112
+ #
101
113
  def initialize(client, data)
102
114
  @client = client
103
115
  @id = Snowflake.new(data[:id])
@@ -142,7 +154,9 @@ module Discorb
142
154
  # @!attribute [r] owner?
143
155
  # @return [Boolean] Whether the member is the team's owner.
144
156
 
145
- @membership_state = {
157
+ # @private
158
+ # @return [{Integer => Symbol}] The permission map.
159
+ MEMBERSHIP_STATE = {
146
160
  1 => :invited,
147
161
  2 => :accepted,
148
162
  }.freeze
@@ -153,7 +167,7 @@ module Discorb
153
167
  @team = team
154
168
  @user = client.users[data[:user][:id]] || User.new(client, data[:user])
155
169
  @team_id = Snowflake.new(data[:team_id])
156
- @membership_state = self.class.membership_state[data[:membership_state]]
170
+ @membership_state = MEMBERSHIP_STATE[data[:membership_state]]
157
171
  @permissions = data[:permissions].map(&:to_sym)
158
172
  end
159
173
 
@@ -176,11 +190,6 @@ module Discorb
176
190
  def ==(other)
177
191
  super || @user == other
178
192
  end
179
-
180
- class << self
181
- # @private
182
- attr_reader :membership_state
183
- end
184
193
  end
185
194
  end
186
195
  end
data/lib/discorb/asset.rb CHANGED
@@ -11,7 +11,13 @@ module Discorb
11
11
  # @!attribute [r] animated?
12
12
  # @return [Boolean] Whether the asset is animated.
13
13
 
14
+ #
15
+ # Initialize a new instance of the Asset class.
14
16
  # @private
17
+ #
18
+ # @param [Discorb::Client] client The client that instantiated the object.
19
+ # @param [Hash] data The data of the object.
20
+ #
15
21
  def initialize(target, hash, path: nil)
16
22
  @hash = hash
17
23
  @target = target
@@ -63,7 +69,10 @@ module Discorb
63
69
  # @!attribute [r] animated?
64
70
  # @return [false] For compatibility with {Asset}, always `false`.
65
71
 
72
+ #
73
+ # Initialize a new instance of the DefaultAvatar class.
66
74
  # @private
75
+ #
67
76
  def initialize(discriminator)
68
77
  @discriminator = discriminator.to_s.rjust(4, "0")
69
78
  end
@@ -33,6 +33,7 @@ module Discorb
33
33
  # @return [:client, :discord] The attachment was created by.
34
34
  attr_reader :created_by
35
35
  # @private
36
+ # @return [Boolean] Whether the attachment will be closed after it is sent.
36
37
  attr_reader :will_close
37
38
 
38
39
  # @!attribute [r] image?
@@ -62,7 +63,10 @@ module Discorb
62
63
  @created_by = :client
63
64
  end
64
65
 
66
+ #
67
+ # Initializes the object from a hash.
65
68
  # @private
69
+ #
66
70
  def initialize_hash(data)
67
71
  @id = Snowflake.new(data[:id])
68
72
  @filename = data[:filename]
@@ -79,7 +83,18 @@ module Discorb
79
83
  @content_type.start_with? "image/"
80
84
  end
81
85
 
86
+ def inspect
87
+ if @created_by == :discord
88
+ "<#{self.class} #{@id}: #{@filename}>"
89
+ else
90
+ "<#{self.class} #{io.fileno}: #{@filename}>"
91
+ end
92
+ end
93
+
94
+ #
95
+ # Creates a new file from a hash.
82
96
  # @private
97
+ #
83
98
  def self.from_hash(data)
84
99
  inst = allocate
85
100
  inst.initialize_hash(data)
@@ -93,7 +108,7 @@ module Discorb
93
108
  # @param [String] filename The filename of the file. object_id of the string is used if not set.
94
109
  # @param [String] content_type The content type of the file. If not set, it is guessed from the filename.
95
110
  #
96
- # @return [File] The new file.
111
+ # @return [Discorb::Attachment] The new file.
97
112
  #
98
113
  def self.from_string(string, filename = nil, content_type: nil, description: nil)
99
114
  io = StringIO.new(string)
@@ -14,7 +14,10 @@ module Discorb
14
14
  # @return [Array<Discorb::AuditLog::Entry>] The entries in this audit log.
15
15
  attr_reader :entries
16
16
 
17
+ #
18
+ # Initializes a new instance of the AuditLog class.
17
19
  # @private
20
+ #
18
21
  def initialize(client, data, guild)
19
22
  @client = client
20
23
  @guild = guild
@@ -24,6 +27,10 @@ module Discorb
24
27
  @entries = data[:audit_log_entries].map { |entry| AuditLog::Entry.new(@client, entry, guild.id) }
25
28
  end
26
29
 
30
+ def inspect
31
+ "<#{self.class} #{@entries.length} entries>"
32
+ end
33
+
27
34
  #
28
35
  # Gets an entry from entries.
29
36
  #
@@ -108,8 +115,11 @@ module Discorb
108
115
  # @!attribute [r] user
109
116
  # @return [Discorb::User] The user who performed the action.
110
117
 
118
+ #
119
+ # @return [{Integer => Symbol}] The map of events to their respective changes.
111
120
  # @private
112
- @events = {
121
+ #
122
+ EVENTS = {
113
123
  1 => :guild_update,
114
124
  10 => :channel_create,
115
125
  11 => :channel_update,
@@ -159,24 +169,30 @@ module Discorb
159
169
  112 => :thread_delete,
160
170
  }.freeze
161
171
 
172
+ #
173
+ # The converter for the change.
162
174
  # @private
163
- @converts = {
175
+ #
176
+ CONVERTERS = {
164
177
  channel: ->(client, id, _guild_id) { client.channels[id] },
165
178
  thread: ->(client, id, _guild_id) { client.channels[id] },
166
179
  role: ->(client, id, guild_id) { client.guilds[guild_id]&.roles&.[](id) },
167
180
  member: ->(client, id, guild_id) { client.guilds[guild_id]&.members&.[](id) },
168
181
  guild: ->(client, id, _guild_id) { client.guilds[id] },
169
182
  message: ->(client, id, _guild_id) { client.messages[id] },
170
- }
183
+ }.freeze
171
184
 
185
+ #
186
+ # Initializes a new AuditLog entry.
172
187
  # @private
188
+ #
173
189
  def initialize(client, data, guild_id)
174
190
  @client = client
175
191
  @guild_id = Snowflake.new(guild_id)
176
192
  @id = Snowflake.new(data[:id])
177
193
  @user_id = Snowflake.new(data[:user_id])
178
194
  @target_id = Snowflake.new(data[:target_id])
179
- @type = self.class.events[data[:action_type]]
195
+ @type = EVENTS[data[:action_type]]
180
196
  @target = self.class.converts[@type.to_s.split("_")[0].to_sym]&.call(client, @target_id, @gui)
181
197
  @target ||= Snowflake.new(data[:target_id])
182
198
  @changes = data[:changes] && Changes.new(data[:changes])
@@ -223,8 +239,11 @@ module Discorb
223
239
  attr_reader :data
224
240
 
225
241
  #
242
+ # Initializes a new changes object.
226
243
  # @private
227
244
  #
245
+ # @param [Hash] data The data to initialize with.
246
+ #
228
247
  def initialize(data)
229
248
  @data = data.to_h { |d| [d[:key].to_sym, d] }
230
249
  @data.each do |k, v|
@@ -232,6 +251,9 @@ module Discorb
232
251
  end
233
252
  end
234
253
 
254
+ #
255
+ # Formats the changes into a string.
256
+ #
235
257
  def inspect
236
258
  "#<#{self.class} #{@data.length} changes>"
237
259
  end
@@ -270,7 +292,10 @@ module Discorb
270
292
  # @return [Object] The new value of the change.
271
293
  attr_reader :new_value
272
294
 
295
+ #
296
+ # Initializes a new change object.
273
297
  # @private
298
+ #
274
299
  def initialize(data)
275
300
  @key = data[:key].to_sym
276
301
  method = case @key.to_s
@@ -298,10 +323,20 @@ module Discorb
298
323
  @new_value.__send__(method, ...)
299
324
  end
300
325
 
326
+ #
327
+ # Format the change into a string.
328
+ #
329
+ # @return [String] The string representation of the change.
330
+ #
301
331
  def inspect
302
332
  "#<#{self.class} #{@key.inspect} #{@old_value.inspect} -> #{@new_value.inspect}>"
303
333
  end
304
334
 
335
+ #
336
+ # Whether the change responds to the given method.
337
+ #
338
+ # @return [Boolean] Whether the change responds to the given method.
339
+ #
305
340
  def respond_to_missing?(method, include_private = false)
306
341
  @new_value.respond_to?(method, include_private)
307
342
  end
@@ -321,7 +356,10 @@ module Discorb
321
356
  # @return [Discorb::Integration::Account] The account of the integration.
322
357
  attr_reader :account
323
358
 
359
+ #
360
+ # Initializes a new integration object.
324
361
  # @private
362
+ #
325
363
  def initialize(data)
326
364
  @id = Snowflake.new(data[:id])
327
365
  @type = data[:type].to_sym
@@ -19,7 +19,10 @@ module Discorb
19
19
  @channel_type = nil
20
20
  @subclasses = []
21
21
 
22
+ #
23
+ # Initializes a new instance of the Channel class.
22
24
  # @private
25
+ #
23
26
  def initialize(client, data, no_cache: false)
24
27
  @client = client
25
28
  @data = {}
@@ -44,12 +47,22 @@ module Discorb
44
47
  "#<#{self.class} \"##{@name}\" id=#{@id}>"
45
48
  end
46
49
 
50
+ #
51
+ # Returns the descendants of the Channel class.
47
52
  # @private
53
+ #
48
54
  def self.descendants
49
55
  ObjectSpace.each_object(Class).select { |klass| klass < self }
50
56
  end
51
57
 
58
+ #
59
+ # Creates a new instance of the Channel class or instance of its descendants.
52
60
  # @private
61
+ #
62
+ # @param [Discorb::Client] client The client that instantiated the object.
63
+ # @param [Hash] data The data of the object.
64
+ # @param [Boolean] no_cache Whether to disable cache the object.
65
+ #
53
66
  def self.make_channel(client, data, no_cache: false)
54
67
  descendants.each do |klass|
55
68
  return klass.new(client, data, no_cache: no_cache) if !klass.channel_type.nil? && klass.channel_type == data[:type]
@@ -59,7 +72,10 @@ module Discorb
59
72
  end
60
73
 
61
74
  class << self
75
+ #
62
76
  # @private
77
+ # @return [Integer] The type of the channel.
78
+ #
63
79
  attr_reader :channel_type
64
80
  end
65
81
 
@@ -67,7 +83,12 @@ module Discorb
67
83
  self.class.channel_type
68
84
  end
69
85
 
86
+ #
87
+ # Returns the channel id to request.
70
88
  # @private
89
+ #
90
+ # @return [Async::Task<Discorb::Snowflake>] A task that resolves to the channel id.
91
+ #
71
92
  def channel_id
72
93
  Async do
73
94
  @id
@@ -114,7 +135,7 @@ module Discorb
114
135
  #
115
136
  # @param [Discorb::GuildChannel] other The channel to compare.
116
137
  #
117
- # @return [-1, 1] -1 if the channel is at lower than the other, 1 if the channel is at highter than the other.
138
+ # @return [-1, 0, 1] -1 if the channel is at lower than the other, 1 if the channel is at highter than the other.
118
139
  #
119
140
  def <=>(other)
120
141
  return 0 unless other.respond_to?(:position)
@@ -419,7 +440,7 @@ module Discorb
419
440
  def fetch_invites
420
441
  Async do
421
442
  _resp, data = @client.http.request(Route.new("/channels/#{@id}/invites", "//channels/:channel_id/invites", :get)).wait
422
- data.map { |invite| Invite.new(@client, invite) }
443
+ data.map { |invite| Invite.new(@client, invite, false) }
423
444
  end
424
445
  end
425
446
 
@@ -444,7 +465,7 @@ module Discorb
444
465
  temporary: temporary,
445
466
  unique: unique,
446
467
  }, audit_log_reason: reason).wait
447
- Invite.new(@client, data)
468
+ Invite.new(@client, data, false)
448
469
  end
449
470
  end
450
471
 
@@ -664,7 +685,10 @@ module Discorb
664
685
  attr_reader :bitrate
665
686
  # @return [Integer] The user limit of the voice channel.
666
687
  attr_reader :user_limit
688
+ #
667
689
  # @private
690
+ # @return [Discorb::Dictionary{Discorb::Snowflake => StageInstance}] The stage instances associated with the stage channel.
691
+ #
668
692
  attr_reader :stage_instances
669
693
 
670
694
  include Connectable
@@ -673,7 +697,10 @@ module Discorb
673
697
  # @return [Discorb::StageInstance] The stage instance of the channel.
674
698
 
675
699
  @channel_type = 13
700
+ #
701
+ # Initialize a new stage channel.
676
702
  # @private
703
+ #
677
704
  def initialize(...)
678
705
  @stage_instances = Dictionary.new
679
706
  super(...)
@@ -823,7 +850,14 @@ module Discorb
823
850
  include Messageable
824
851
  @channel_type = nil
825
852
 
853
+ #
854
+ # Initialize a new thread channel.
826
855
  # @private
856
+ #
857
+ # @param [Discorb::Client] client The client.
858
+ # @param [Hash] data The data of the thread channel.
859
+ # @param [Boolean] no_cache Whether to disable the cache.
860
+ #
827
861
  def initialize(client, data, no_cache: false)
828
862
  @members = Dictionary.new
829
863
  super
@@ -1113,7 +1147,12 @@ module Discorb
1113
1147
  class DMChannel < Channel
1114
1148
  include Messageable
1115
1149
 
1150
+ #
1151
+ # Returns the channel id to request.
1116
1152
  # @private
1153
+ #
1154
+ # @return [Async::Task<Discorb::Snowflake>] A task that resolves to the channel id.
1155
+ #
1117
1156
  def channel_id
1118
1157
  Async do
1119
1158
  @id
@@ -54,7 +54,10 @@ module Discorb
54
54
  attr_reader :session_id
55
55
  # @return [Hash{String => Discorb::Extension}] The loaded extensions.
56
56
  attr_reader :extensions
57
+ #
57
58
  # @private
59
+ # @return [Hash{Discorb::Snowflake => Discorb::ApplicationCommand::Command}] The commands on the top level.
60
+ #
58
61
  attr_reader :bottom_commands
59
62
 
60
63
  #
@@ -309,6 +312,7 @@ module Discorb
309
312
  activities: [],
310
313
  status: status,
311
314
  since: nil,
315
+ afk: nil,
312
316
  }
313
317
  payload[:activities] = [activity.to_hash] unless activity.nil?
314
318
  payload[:status] = status unless status.nil?