discorb 0.17.1 → 0.18.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 (141) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/lint.yml +1 -3
  3. data/.github/workflows/validate.yml +21 -0
  4. data/Changelog.md +10 -0
  5. data/Gemfile +6 -0
  6. data/Rakefile +210 -98
  7. data/Steepfile +28 -0
  8. data/docs/events.md +42 -6
  9. data/docs/tutorial.md +7 -7
  10. data/docs/voice_events.md +2 -2
  11. data/examples/commands/message.rb +12 -7
  12. data/examples/commands/permission.rb +2 -1
  13. data/examples/commands/slash.rb +23 -19
  14. data/examples/commands/user.rb +15 -12
  15. data/examples/components/authorization_button.rb +2 -1
  16. data/examples/components/select_menu.rb +4 -1
  17. data/examples/extension/main.rb +1 -0
  18. data/examples/extension/message_expander.rb +1 -0
  19. data/examples/sig/commands/message.rbs +5 -0
  20. data/examples/simple/eval.rb +1 -0
  21. data/examples/simple/ping_pong.rb +1 -0
  22. data/examples/simple/rolepanel.rb +16 -5
  23. data/examples/simple/shard.rb +2 -1
  24. data/examples/simple/wait_for_message.rb +3 -0
  25. data/exe/discorb +3 -3
  26. data/lib/discorb/allowed_mentions.rb +1 -1
  27. data/lib/discorb/app_command/command.rb +12 -13
  28. data/lib/discorb/app_command/handler.rb +20 -6
  29. data/lib/discorb/audit_logs.rb +6 -2
  30. data/lib/discorb/automod.rb +269 -0
  31. data/lib/discorb/channel/guild.rb +2 -1
  32. data/lib/discorb/channel/stage.rb +1 -1
  33. data/lib/discorb/channel/text.rb +11 -20
  34. data/lib/discorb/channel/thread.rb +15 -11
  35. data/lib/discorb/client.rb +12 -10
  36. data/lib/discorb/color.rb +37 -60
  37. data/lib/discorb/common.rb +1 -1
  38. data/lib/discorb/dictionary.rb +1 -1
  39. data/lib/discorb/embed.rb +4 -3
  40. data/lib/discorb/emoji.rb +2 -2
  41. data/lib/discorb/exe/about.rb +1 -1
  42. data/lib/discorb/exe/new.rb +1 -5
  43. data/lib/discorb/extension.rb +0 -4
  44. data/lib/discorb/flag.rb +2 -2
  45. data/lib/discorb/gateway.rb +21 -582
  46. data/lib/discorb/gateway_events.rb +638 -0
  47. data/lib/discorb/guild.rb +136 -17
  48. data/lib/discorb/guild_template.rb +1 -1
  49. data/lib/discorb/http.rb +47 -25
  50. data/lib/discorb/intents.rb +27 -18
  51. data/lib/discorb/interaction/command.rb +14 -10
  52. data/lib/discorb/interaction/response.rb +74 -14
  53. data/lib/discorb/member.rb +3 -3
  54. data/lib/discorb/message.rb +13 -11
  55. data/lib/discorb/message_meta.rb +2 -3
  56. data/lib/discorb/modules.rb +3 -2
  57. data/lib/discorb/presence.rb +4 -2
  58. data/lib/discorb/reaction.rb +2 -2
  59. data/lib/discorb/role.rb +1 -1
  60. data/lib/discorb/sticker.rb +3 -3
  61. data/lib/discorb/user.rb +2 -2
  62. data/lib/discorb/voice_state.rb +5 -5
  63. data/lib/discorb/webhook.rb +15 -6
  64. data/lib/discorb.rb +2 -2
  65. data/rbs_collection.lock.yaml +88 -96
  66. data/rbs_collection.yaml +21 -17
  67. data/sig/async.rbs +11 -5
  68. data/sig/discorb/activity.rbs +23 -0
  69. data/sig/discorb/allowed_mentions.rbs +44 -0
  70. data/sig/discorb/app_command/base.rbs +282 -0
  71. data/sig/discorb/app_command/handler.rbs +171 -0
  72. data/sig/discorb/application.rbs +142 -0
  73. data/sig/discorb/asset.rbs +32 -0
  74. data/sig/discorb/attachment.rbs +91 -0
  75. data/sig/discorb/audit_log.rbs +231 -0
  76. data/sig/discorb/automod.rbs +128 -0
  77. data/sig/discorb/avatar.rbs +26 -0
  78. data/sig/discorb/channel/base.rbs +179 -0
  79. data/sig/discorb/channel/category.rbs +56 -0
  80. data/sig/discorb/channel/container.rbs +29 -0
  81. data/sig/discorb/channel/dm.rbs +14 -0
  82. data/sig/discorb/channel/news.rbs +20 -0
  83. data/sig/discorb/channel/stage.rbs +77 -0
  84. data/sig/discorb/channel/text.rbs +158 -0
  85. data/sig/discorb/channel/thread.rbs +185 -0
  86. data/sig/discorb/channel/voice.rbs +41 -0
  87. data/sig/discorb/client.rbs +2495 -0
  88. data/sig/discorb/color.rbs +142 -0
  89. data/sig/discorb/component/base.rbs +28 -0
  90. data/sig/discorb/component/button.rbs +65 -0
  91. data/sig/discorb/component/select_menu.rbs +107 -0
  92. data/sig/discorb/component/text_input.rbs +69 -0
  93. data/sig/discorb/connectable.rbs +8 -0
  94. data/sig/discorb/custom_emoji.rbs +90 -0
  95. data/sig/discorb/dictionary.rbs +85 -0
  96. data/sig/discorb/discord_model.rbs +15 -0
  97. data/sig/discorb/embed.rbs +279 -0
  98. data/sig/discorb/emoji.rbs +13 -0
  99. data/sig/discorb/error.rbs +73 -0
  100. data/sig/discorb/event_handler.rbs +27 -0
  101. data/sig/discorb/extension.rbs +1734 -0
  102. data/sig/discorb/flag.rbs +72 -0
  103. data/sig/discorb/gateway.rbs +481 -0
  104. data/sig/discorb/guild.rbs +870 -0
  105. data/sig/discorb/guild_template.rbs +174 -0
  106. data/sig/discorb/http.rbs +147 -0
  107. data/sig/discorb/image.rbs +20 -0
  108. data/sig/discorb/integration.rbs +118 -0
  109. data/sig/discorb/intents.rbs +97 -0
  110. data/sig/discorb/interaction/autocomplete.rbs +9 -0
  111. data/sig/discorb/interaction/base.rbs +66 -0
  112. data/sig/discorb/interaction/command.rbs +66 -0
  113. data/sig/discorb/interaction/message_component.rbs +140 -0
  114. data/sig/discorb/interaction/modal.rbs +50 -0
  115. data/sig/discorb/interaction/responder.rbs +157 -0
  116. data/sig/discorb/invite.rbs +86 -0
  117. data/sig/discorb/member.rbs +187 -0
  118. data/sig/discorb/message.rbs +469 -0
  119. data/sig/discorb/messageable.rbs +153 -0
  120. data/sig/discorb/partial_emoji.rbs +35 -0
  121. data/sig/discorb/permissions.rbs +149 -0
  122. data/sig/discorb/presence.rbs +237 -0
  123. data/sig/discorb/reaction.rbs +33 -0
  124. data/sig/discorb/role.rbs +145 -0
  125. data/sig/discorb/scheduled_event.rbs +148 -0
  126. data/sig/discorb/shard.rbs +62 -0
  127. data/sig/discorb/snowflake.rbs +56 -0
  128. data/sig/discorb/stage_instance.rbs +63 -0
  129. data/sig/discorb/sticker.rbs +116 -0
  130. data/sig/discorb/system_channel_flag.rbs +17 -0
  131. data/sig/discorb/unicode_emoji.rbs +49 -0
  132. data/sig/discorb/user.rbs +93 -0
  133. data/sig/discorb/utils.rbs +8 -0
  134. data/sig/discorb/voice_region.rbs +30 -0
  135. data/sig/discorb/voice_state.rbs +71 -0
  136. data/sig/discorb/webhook.rbs +327 -0
  137. data/sig/discorb/welcome_screen.rbs +78 -0
  138. data/sig/discorb.rbs +5 -8661
  139. data/sig/manifest.yaml +3 -0
  140. data/sig/override.rbs +19 -0
  141. metadata +80 -3
@@ -7,7 +7,7 @@ module Discorb
7
7
  class Message < DiscordModel
8
8
  # @return [Discorb::Snowflake] The ID of the message.
9
9
  attr_reader :id
10
- # @return [Discorb::User, Discorb::Member] The user that sent the message.
10
+ # @return [Discorb::User, Discorb::Member, Webhook::Message::Author] The user that sent the message.
11
11
  attr_reader :author
12
12
  # @return [String] The content of the message.
13
13
  attr_reader :content
@@ -217,8 +217,8 @@ module Discorb
217
217
  end
218
218
  if role
219
219
  ret.gsub!(/<@&(\d+)>/) do |_match|
220
- role = guild&.roles&.[]($1)
221
- role ? "@#{role.name}" : "@Unknown Role"
220
+ r = guild&.roles&.[]($1)
221
+ r ? "@#{r.name}" : "@Unknown Role"
222
222
  end
223
223
  end
224
224
  if emoji
@@ -293,15 +293,17 @@ module Discorb
293
293
  #
294
294
  # @param [Boolean] fail_if_not_exists Whether to raise an error if the message does not exist.
295
295
  #
296
- # @return [Hash] The reference object.
296
+ # @return [Discorb::Message::Reference] The reference object.
297
297
  #
298
298
  def to_reference(fail_if_not_exists: true)
299
- {
300
- message_id: @id,
301
- channel_id: @channel_id,
302
- guild_id: @guild_id,
303
- fail_if_not_exists: fail_if_not_exists,
304
- }
299
+ Reference.from_hash(
300
+ {
301
+ message_id: @id,
302
+ channel_id: @channel_id,
303
+ guild_id: @guild_id,
304
+ fail_if_not_exists: fail_if_not_exists,
305
+ }
306
+ )
305
307
  end
306
308
 
307
309
  def embed
@@ -400,7 +402,7 @@ module Discorb
400
402
  # Fetch reacted users of reaction.
401
403
  # @async
402
404
  #
403
- # @param [Discorb::Emoji] emoji The emoji to fetch.
405
+ # @param [Discorb::Emoji, Discorb::PartialEmoji] emoji The emoji to fetch.
404
406
  # @param [Integer, nil] limit The maximum number of users to fetch. `nil` for no limit.
405
407
  # @param [Discorb::Snowflake, nil] after The ID of the user to start fetching from.
406
408
  #
@@ -76,8 +76,6 @@ module Discorb
76
76
  }
77
77
  end
78
78
 
79
- alias to_reference to_hash
80
-
81
79
  #
82
80
  # Initialize a new reference from a hash.
83
81
  #
@@ -141,7 +139,8 @@ module Discorb
141
139
  def initialize(client, data)
142
140
  @id = Snowflake.new(data[:id])
143
141
  @name = data[:name]
144
- @type = Discorb::Interaction.descendants.find { |c| c.interaction_type == data[:type] }
142
+ @type = (Discorb::Interaction.descendants.find { |c| c.interaction_type == data[:type] } or
143
+ raise "Unknown interaction type: #{data[:type]}")
145
144
  @user = client.users[data[:user][:id]] || User.new(client, data[:user])
146
145
  end
147
146
 
@@ -44,7 +44,7 @@ module Discorb
44
44
  payload[:embeds] = tmp_embed.map(&:to_hash) if tmp_embed
45
45
  payload[:allowed_mentions] =
46
46
  allowed_mentions ? allowed_mentions.to_hash(@client.allowed_mentions) : @client.allowed_mentions.to_hash
47
- payload[:message_reference] = reference.to_reference if reference
47
+ payload[:message_reference] = reference.to_reference.to_hash if reference
48
48
  payload[:components] = Component.to_payload(components) if components
49
49
  attachments ||= attachment ? [attachment] : []
50
50
 
@@ -265,10 +265,11 @@ module Discorb
265
265
  sleep(5)
266
266
  end
267
267
  end
268
- yield
268
+ ret = yield
269
269
  ensure
270
270
  post_task.stop
271
271
  end
272
+ ret
272
273
  else
273
274
  Async do |_task|
274
275
  @client.http.request(Route.new("/channels/#{@id}/typing", "//channels/:channel_id/typing", :post), {})
@@ -113,8 +113,8 @@ module Discorb
113
113
  @details = data[:details]
114
114
  @state = data[:state]
115
115
  @emoji = if data[:emoji]
116
- data[:emoji][:id].nil? ? UnicodeEmoji.new(data[:emoji][:name]) : PartialEmoji.new(data[:emoji])
117
- end
116
+ data[:emoji][:id].nil? ? UnicodeEmoji.new(data[:emoji][:name]) : PartialEmoji.new(data[:emoji])
117
+ end
118
118
  @party = data[:party] && Party.new(data[:party])
119
119
  @assets = data[:assets] && Asset.new(data[:assets])
120
120
  @instance = data[:instance]
@@ -141,6 +141,8 @@ module Discorb
141
141
  "#{@emoji} #{@state}"
142
142
  when :competing
143
143
  "Competing in #{@name}"
144
+ else
145
+ raise "Unknown activity type: #{@type}"
144
146
  end
145
147
  end
146
148
 
@@ -7,7 +7,7 @@ module Discorb
7
7
  class Reaction < DiscordModel
8
8
  # @return [Integer] The number of users that have reacted with this emoji.
9
9
  attr_reader :count
10
- # @return [Discorb::Emoji] The emoji that was reacted with.
10
+ # @return [Discorb::Emoji, Discorb::PartialEmoji] The emoji that was reacted with.
11
11
  attr_reader :emoji
12
12
  # @return [Discorb::Message] The message that this reaction is on.
13
13
  attr_reader :message
@@ -33,7 +33,7 @@ module Discorb
33
33
  #
34
34
  # @param (see Message#fetch_reacted_users)
35
35
  #
36
- # @return [Array<Discorb::User>] The users that reacted with this emoji.
36
+ # @return [Async::Task<Array<Discorb::User>>] The users that reacted with this emoji.
37
37
  #
38
38
  def fetch_users(...)
39
39
  message.fetch_reacted_users(@emoji, ...)
data/lib/discorb/role.rb CHANGED
@@ -69,7 +69,7 @@ module Discorb
69
69
  # @return [Integer] -1 if the other role is higher, 0 if they are equal, 1 if the other role is lower.
70
70
  #
71
71
  def <=>(other)
72
- return false unless other.is_a?(Role)
72
+ return nil unless other.is_a?(Role)
73
73
 
74
74
  @position <=> other.position
75
75
  end
@@ -17,7 +17,7 @@ module Discorb
17
17
  attr_reader :format
18
18
  # @return [String] The URL of the sticker.
19
19
  attr_reader :description
20
- # @return [Discorb::Sticker] The ID of the sticker pack.
20
+ # @return [Discorb::Snowflake] The ID of the sticker pack.
21
21
  attr_reader :pack_id
22
22
  # @return [Integer] The sort value of the sticker.
23
23
  attr_reader :sort_value
@@ -87,7 +87,7 @@ module Discorb
87
87
  payload[:tags] = tag.name unless tag == Discorb::Unset
88
88
  @client.http.request(
89
89
  Route.new("/guilds/#{@guild_id}/stickers/#{@id}", "//guilds/:guild_id/stickers/:sticker_id",
90
- :patch), payload, audit_log_reason: reason
90
+ :patch), payload, audit_log_reason: reason,
91
91
  ).wait
92
92
  end
93
93
  end
@@ -104,7 +104,7 @@ module Discorb
104
104
  Async do
105
105
  @client.http.request(
106
106
  Route.new("/guilds/#{@guild_id}/stickers/#{@id}", "//guilds/:guild_id/stickers/:sticker_id",
107
- :delete), {}, audit_log_reason: reason
107
+ :delete), {}, audit_log_reason: reason,
108
108
  ).wait
109
109
  end
110
110
  end
data/lib/discorb/user.rb CHANGED
@@ -16,7 +16,7 @@ module Discorb
16
16
  attr_reader :flag
17
17
  # @return [String] The user's discriminator.
18
18
  attr_reader :discriminator
19
- # @return [Discorb::Asset] The user's avatar.
19
+ # @return [Discorb::Asset, Discorb::DefaultAvatar] The user's avatar.
20
20
  attr_reader :avatar
21
21
  # @return [Boolean] Whether the user is a bot.
22
22
  attr_reader :bot
@@ -147,7 +147,7 @@ module Discorb
147
147
  @flag = User::Flag.new(data[:public_flags] | (data[:flags] || 0))
148
148
  @discriminator = data[:discriminator]
149
149
  @avatar = data[:avatar] ? Asset.new(self, data[:avatar]) : DefaultAvatar.new(data[:discriminator])
150
- @bot = data[:bot]
150
+ @bot = data[:bot] || false
151
151
  @raw_data = data
152
152
  @client.users[@id] = self unless data[:no_cache]
153
153
  @created_at = @id.timestamp
@@ -95,10 +95,10 @@ module Discorb
95
95
  @user_id = data[:user_id]
96
96
  unless guild.nil?
97
97
  @member = if data.key?(:member)
98
- guild.members[data[:user_id]] || Member.new(@client, @guild_id, data[:member][:user], data[:member])
99
- else
100
- guild.members[data[:user_id]]
101
- end
98
+ guild.members[data[:user_id]] || Member.new(@client, @guild_id, data[:member][:user], data[:member])
99
+ else
100
+ guild.members[data[:user_id]]
101
+ end
102
102
  end
103
103
  @session_id = data[:session_id]
104
104
  @deaf = data[:deaf]
@@ -217,7 +217,7 @@ module Discorb
217
217
  Async do
218
218
  @client.http.request(
219
219
  Route.new("/stage-instances/#{@channel_id}", "//stage-instances/:stage_instance_id",
220
- :delete), {}, audit_log_reason: reason
220
+ :delete), {}, audit_log_reason: reason,
221
221
  ).wait
222
222
  self
223
223
  end
@@ -91,8 +91,15 @@ module Discorb
91
91
  payload[:username] = username if username
92
92
  payload[:avatar_url] = avatar_url if avatar_url != Discorb::Unset
93
93
  attachments = [attachment] if attachment
94
- _resp, data = @http.multipart_request(Route.new("#{url}?wait=#{wait}", "//webhooks/:webhook_id/:token", :post),
95
- attachments, payload, headers: headers).wait
94
+ _resp, data = @http.multipart_request(
95
+ Route.new(
96
+ "#{url}?wait=#{wait}",
97
+ "//webhooks/:webhook_id/:token",
98
+ :post
99
+ ),
100
+ attachments,
101
+ payload
102
+ ).wait
96
103
  data && Webhook::Message.new(self, data)
97
104
  end
98
105
  end
@@ -207,11 +214,12 @@ module Discorb
207
214
  # Initializes the webhook from URL.
208
215
  #
209
216
  # @param [String] url The URL of the webhook.
217
+ # @param [Discorb::Client] client The client to associate with the webhook.
210
218
  #
211
- def initialize(url)
219
+ def initialize(url, client: nil)
212
220
  @url = url
213
221
  @token = ""
214
- @http = Discorb::HTTP.new(self)
222
+ @http = Discorb::HTTP.new(client || Discorb::Client.new)
215
223
  end
216
224
  end
217
225
 
@@ -459,12 +467,13 @@ module Discorb
459
467
  # Creates URLWebhook.
460
468
  #
461
469
  # @param [String] url The URL of the webhook.
470
+ # @param [Discorb::Client] client The client to associate with the webhook.
462
471
  #
463
472
  # @return [Discorb::Webhook::URLWebhook] The URLWebhook.
464
473
  #
465
- def new(url)
474
+ def new(url, client: nil)
466
475
  if self == Webhook
467
- URLWebhook.new(url)
476
+ URLWebhook.new(url, client: client)
468
477
  else
469
478
  super
470
479
  end
data/lib/discorb.rb CHANGED
@@ -46,10 +46,10 @@ end
46
46
  require_order = %w[common flag dictionary error rate_limit http intents emoji_table modules] +
47
47
  %w[channel/container message_meta allowed_mentions] +
48
48
  %w[user member guild emoji channel embed message] +
49
- %w[application audit_logs color components event event_handler] +
49
+ %w[application audit_logs color components event event_handler automod] +
50
50
  %w[attachment guild_template image integration interaction invite permission] +
51
51
  %w[presence reaction role sticker utils voice_state webhook] +
52
- %w[gateway_requests gateway app_command] +
52
+ %w[gateway_requests gateway_events gateway app_command] +
53
53
  %w[asset extension shard client extend]
54
54
  require_order.each do |name|
55
55
  require_relative "discorb/#{name}.rb"
@@ -1,96 +1,88 @@
1
- ---
2
- sources:
3
- - name: ruby/gem_rbs_collection
4
- remote: https://github.com/ruby/gem_rbs_collection.git
5
- revision: main
6
- repo_dir: gems
7
- path: ".gem_rbs_collection"
8
- gems:
9
- - name: activesupport
10
- version: '6.0'
11
- source:
12
- type: git
13
- name: ruby/gem_rbs_collection
14
- revision: 8e1f19e0c8768b6bac2815fe65a3310298ba400e
15
- remote: https://github.com/ruby/gem_rbs_collection.git
16
- repo_dir: gems
17
- - name: ast
18
- version: '2.4'
19
- source:
20
- type: git
21
- name: ruby/gem_rbs_collection
22
- revision: 8e1f19e0c8768b6bac2815fe65a3310298ba400e
23
- remote: https://github.com/ruby/gem_rbs_collection.git
24
- repo_dir: gems
25
- - name: date
26
- version: '0'
27
- source:
28
- type: stdlib
29
- - name: forwardable
30
- version: '0'
31
- source:
32
- type: stdlib
33
- - name: i18n
34
- version: '1.10'
35
- source:
36
- type: git
37
- name: ruby/gem_rbs_collection
38
- revision: 8e1f19e0c8768b6bac2815fe65a3310298ba400e
39
- remote: https://github.com/ruby/gem_rbs_collection.git
40
- repo_dir: gems
41
- - name: listen
42
- version: '3.2'
43
- source:
44
- type: git
45
- name: ruby/gem_rbs_collection
46
- revision: 8e1f19e0c8768b6bac2815fe65a3310298ba400e
47
- remote: https://github.com/ruby/gem_rbs_collection.git
48
- repo_dir: gems
49
- - name: parallel
50
- version: '1.20'
51
- source:
52
- type: git
53
- name: ruby/gem_rbs_collection
54
- revision: 8e1f19e0c8768b6bac2815fe65a3310298ba400e
55
- remote: https://github.com/ruby/gem_rbs_collection.git
56
- repo_dir: gems
57
- - name: prime
58
- version: '0'
59
- source:
60
- type: stdlib
61
- - name: rainbow
62
- version: '3.0'
63
- source:
64
- type: git
65
- name: ruby/gem_rbs_collection
66
- revision: 8e1f19e0c8768b6bac2815fe65a3310298ba400e
67
- remote: https://github.com/ruby/gem_rbs_collection.git
68
- repo_dir: gems
69
- - name: singleton
70
- version: '0'
71
- source:
72
- type: stdlib
73
- - name: time
74
- version: '0'
75
- source:
76
- type: stdlib
77
- - name: uri
78
- version: '0'
79
- source:
80
- type: stdlib
81
- - name: monitor
82
- version: '0'
83
- source:
84
- type: stdlib
85
- - name: logger
86
- version: '0'
87
- source:
88
- type: stdlib
89
- - name: mutex_m
90
- version: '0'
91
- source:
92
- type: stdlib
93
- - name: pathname
94
- version: '0'
95
- source:
96
- type: stdlib
1
+ ---
2
+ sources:
3
+ - name: ruby/gem_rbs_collection
4
+ remote: https://github.com/ruby/gem_rbs_collection.git
5
+ revision: main
6
+ repo_dir: gems
7
+ path: ".gem_rbs_collection"
8
+ gems:
9
+ - name: net-http
10
+ version: '0'
11
+ source:
12
+ type: stdlib
13
+ - name: logger
14
+ version: '0'
15
+ source:
16
+ type: stdlib
17
+ - name: ast
18
+ version: '2.4'
19
+ source:
20
+ type: git
21
+ name: ruby/gem_rbs_collection
22
+ revision: 347858a6750d478f6cf1285b4ebd6ae945af2609
23
+ remote: https://github.com/ruby/gem_rbs_collection.git
24
+ repo_dir: gems
25
+ - name: forwardable
26
+ version: '0'
27
+ source:
28
+ type: stdlib
29
+ - name: i18n
30
+ version: '1.10'
31
+ source:
32
+ type: git
33
+ name: ruby/gem_rbs_collection
34
+ revision: 347858a6750d478f6cf1285b4ebd6ae945af2609
35
+ remote: https://github.com/ruby/gem_rbs_collection.git
36
+ repo_dir: gems
37
+ - name: listen
38
+ version: '3.2'
39
+ source:
40
+ type: git
41
+ name: ruby/gem_rbs_collection
42
+ revision: 347858a6750d478f6cf1285b4ebd6ae945af2609
43
+ remote: https://github.com/ruby/gem_rbs_collection.git
44
+ repo_dir: gems
45
+ - name: minitest
46
+ version: '0'
47
+ source:
48
+ type: stdlib
49
+ - name: parallel
50
+ version: '1.20'
51
+ source:
52
+ type: git
53
+ name: ruby/gem_rbs_collection
54
+ revision: 347858a6750d478f6cf1285b4ebd6ae945af2609
55
+ remote: https://github.com/ruby/gem_rbs_collection.git
56
+ repo_dir: gems
57
+ - name: prime
58
+ version: '0'
59
+ source:
60
+ type: stdlib
61
+ - name: rainbow
62
+ version: '3.0'
63
+ source:
64
+ type: git
65
+ name: ruby/gem_rbs_collection
66
+ revision: 347858a6750d478f6cf1285b4ebd6ae945af2609
67
+ remote: https://github.com/ruby/gem_rbs_collection.git
68
+ repo_dir: gems
69
+ - name: singleton
70
+ version: '0'
71
+ source:
72
+ type: stdlib
73
+ - name: uri
74
+ version: '0'
75
+ source:
76
+ type: stdlib
77
+ - name: timeout
78
+ version: '0'
79
+ source:
80
+ type: stdlib
81
+ - name: monitor
82
+ version: '0'
83
+ source:
84
+ type: stdlib
85
+ - name: mutex_m
86
+ version: '0'
87
+ source:
88
+ type: stdlib
data/rbs_collection.yaml CHANGED
@@ -1,17 +1,21 @@
1
- # Download sources
2
- sources:
3
- - name: ruby/gem_rbs_collection
4
- remote: https://github.com/ruby/gem_rbs_collection.git
5
- revision: main
6
- repo_dir: gems
7
-
8
- # A directory to install the downloaded RBSs
9
- path: .gem_rbs_collection
10
-
11
- gems:
12
- # Skip loading rbs gem's RBS.
13
- # It's unnecessary if you don't use rbs as a library.
14
- - name: rbs
15
- ignore: true
16
- - name: discorb
17
- ignore: true
1
+ # Download sources
2
+ sources:
3
+ - name: ruby/gem_rbs_collection
4
+ remote: https://github.com/ruby/gem_rbs_collection.git
5
+ revision: main
6
+ repo_dir: gems
7
+
8
+ # A directory to install the downloaded RBSs
9
+ path: .gem_rbs_collection
10
+
11
+ gems:
12
+ # Skip loading rbs gem's RBS.
13
+ # It's unnecessary if you don't use rbs as a library.
14
+ - name: rbs
15
+ ignore: true
16
+ - name: discorb
17
+ ignore: true
18
+ - name: net-http
19
+ - name: logger
20
+ - name: activesupport
21
+ ignore: true
data/sig/async.rbs CHANGED
@@ -1,5 +1,11 @@
1
- module Async
2
- class Task[T]
3
- def wait: () -> T
4
- end
5
- end
1
+ module Async
2
+ class Task[T]
3
+ def wait: -> T
4
+ end
5
+
6
+ module WebSocket
7
+ class Connection
8
+ def initialize: (untyped, ?untyped, response: untyped, **untyped) -> void
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,23 @@
1
+ module Discorb
2
+ #
3
+ # Represents an activity for Gateway Command.
4
+ class Activity
5
+ TYPES: untyped
6
+
7
+ #
8
+ # Initializes a new Activity.
9
+ #
10
+ # @param [String] name The name of the activity.
11
+ # @param [:playing, :streaming, :listening, :watching, :competing] type The type of activity.
12
+ # @param [String] url The URL of the activity.
13
+ def initialize: (String name, ?Symbol `type`, ?String? url) -> void
14
+
15
+ #
16
+ # Converts the activity to a hash.
17
+ #
18
+ # @return [Hash] A hash representation of the activity.
19
+ def to_hash: -> Discorb::json
20
+
21
+ def inspect: -> String
22
+ end
23
+ end
@@ -0,0 +1,44 @@
1
+ module Discorb
2
+ #
3
+ # Represents a allowed mentions in a message.
4
+ class AllowedMentions
5
+ #
6
+ # Initializes a new instance of the AllowedMentions class.
7
+ #
8
+ # @param [Boolean] everyone Whether to allow @everyone or @here.
9
+ # @param [Boolean, Array<Discorb::Role>] roles The roles to allow, or false to disable.
10
+ # @param [Boolean, Array<Discorb::User>] users The users to allow, or false to disable.
11
+ # @param [Boolean] replied_user Whether to ping the user that sent the message to reply.
12
+ def initialize: (
13
+ ?everyone: bool?,
14
+ ?roles: (bool | ::Array[Discorb::Role])?,
15
+ ?users: (bool | ::Array[Discorb::User])?,
16
+ ?replied_user: bool?
17
+ ) -> void
18
+
19
+ def inspect: -> String
20
+
21
+ #
22
+ # Converts the object to a hash.
23
+ # @private
24
+ #
25
+ # @param [Discorb::AllowedMentions, nil] other The object to merge.
26
+ #
27
+ # @return [Hash] The hash.
28
+ def to_hash: (?Discorb::AllowedMentions? other) -> ::Hash[untyped, untyped]
29
+
30
+ def nil_merge: (*untyped args) -> untyped
31
+
32
+ # @return [Boolean] Whether to allow @everyone or @here.
33
+ attr_accessor everyone: bool?
34
+
35
+ # @return [Boolean, Array<Discorb::Role>] The roles to allow, or false to disable.
36
+ attr_accessor roles: (bool | ::Array[Discorb::Role])?
37
+
38
+ # @return [Boolean, Array<Discorb::User>] The users to allow, or false to disable.
39
+ attr_accessor users: (bool | ::Array[Discorb::User])?
40
+
41
+ # @return [Boolean] Whether to ping the user that sent the message to reply.
42
+ attr_accessor replied_user: bool?
43
+ end
44
+ end