discorb 0.5.1 → 0.5.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 54c64c3d8d4c8293ba42d1c6ab6042b9c03b12f52b2cbdd92afb3ab483e82b8b
4
- data.tar.gz: ad9c479984defc53a872cf196bd7476f7838fe9f004be6d817e78b4b5ebf3fbd
3
+ metadata.gz: 3d17006d6ca103247dcf304581c61104054722b1af32bc8b3ec3d23b7f5e8680
4
+ data.tar.gz: 92c481e5532d3e990ca73b891c71a87f5a4a2e6217ff7d7c5677519dbeaf4259
5
5
  SHA512:
6
- metadata.gz: fc9a269f561e1a53ce46dbf0a026ae34999633e966bc7f286383cb0583160a85e6aaf5a1d2ee8596e72a7454052a119e7db24394abdf689f744c0cef85b5e2a4
7
- data.tar.gz: f0d14f5f858848e3a3d4877a505e998da9a76b12d57b31000d28b827d3acb47c1a1025214315abe900fcce6cf043632af563f4e43c4f6e942020c6f1bf059145
6
+ metadata.gz: b305d2f608c0506b7c84f53d16e4384710d454d5deacc69d51a55dbf81fe25d80ab7226717cb12480e07ba25f069a59a49a50608826d711c2a84edb4ec67258c
7
+ data.tar.gz: c40281fb460527163504b8fe999f02a57db3190532a47c78ee25d71871372ff4c720a7ec0e17c70853083ad7327ae574e418b080d7379c98d683fcc1ccb0169e
data/Changelog.md CHANGED
@@ -111,4 +111,9 @@
111
111
 
112
112
  - Add: Can use block for defining group commands
113
113
  - Fix: Fix bug in subcommands
114
- - Fix: Fix bug in receiving commands
114
+ - Fix: Fix bug in receiving commands
115
+
116
+ ## 0.5.2
117
+
118
+ - Fix: Fix bug of registering commands
119
+ - Add: Add way to register commands in Extension
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- discorb (0.5.1)
4
+ discorb (0.5.2)
5
5
  async (~> 1.30.1)
6
6
  async-http (~> 0.56.5)
7
7
  async-websocket (~> 0.19.0)
data/README.md CHANGED
@@ -2,7 +2,8 @@
2
2
  [![Document](https://img.shields.io/badge/Document-discord--lib.github.io-blue.svg)](https://discorb-lib.github.io/)
3
3
  [![Gem](https://img.shields.io/gem/dt/discorb?logo=rubygems&logoColor=fff)](https://rubygems.org/gems/discorb)
4
4
  [![Gem](https://img.shields.io/gem/v/discorb?logo=rubygems&logoColor=fff)](https://rubygems.org/gems/discorb)
5
- [![Discord](https://img.shields.io/discord/863581274916913193?logo=discord&logoColor=fff&color=5865f2&label=Discord)](https://discord.gg/hCP6zq8Vpj)
5
+ [![Discord](https://img.shields.io/discord/863581274916913193?logo=discord&logoColor=fff&color=5865f2&label=Discord)](https://discord.gg/hCP6zq8Vpj)
6
+ [![GitHub](https://img.shields.io/github/stars/discorb-lib/discorb?color=24292e&label=Stars&logo=GitHub&logoColor=fff)](https://github.com/discorb-lib/discorb)
6
7
 
7
8
  discorb is a Discord API wrapper for Ruby.
8
9
 
data/docs/events.md CHANGED
@@ -219,14 +219,13 @@ Fires when a guild integration is created.
219
219
  | ---------- | ----- | ----------- |
220
220
  |`integration`| {Discorb::Integration}| The created integration. |
221
221
 
222
- #### `integration_update(before, after)`
222
+ #### `integration_update(after)`
223
223
 
224
224
  Fires when a guild integration is updated.
225
225
 
226
226
 
227
227
  | Parameter | Type | Description |
228
228
  | ---------- | ----- | ----------- |
229
- |`before` | {Discorb::Integration}| The integration before the update. |
230
229
  |`after` | {Discorb::Integration}| The integration after the update. |
231
230
 
232
231
  #### `integration_delete(integration)`
data/docs/extension.md CHANGED
@@ -34,6 +34,33 @@ module MyExtension
34
34
  end
35
35
  ```
36
36
 
37
+ ## Register Command
38
+
39
+ Since v0.5.2, {Discorb::Extension} includes {Discorb::Command::Handler} module, so you can register command with {Discorb::Command::Handler#slash} and {Discorb::Command::Handler#slash_group}.
40
+
41
+ ```ruby
42
+ module MyExtension
43
+ extend Discorb::Extension
44
+
45
+ slash("command", "Command") do |interaction|
46
+ # ...
47
+ end
48
+
49
+ slash_group("group", "Group") do
50
+ slash("subcommand", "Subcommand") do |interaction|
51
+ # ...
52
+ end
53
+
54
+ group("subgroup", "Subcommand group") do
55
+ slash("group_subcommand", "Command in Subcommand group") do |interaction|
56
+ # ...
57
+ end
58
+ end
59
+ end
60
+ end
61
+ ```
62
+
63
+
37
64
  ## Load extension
38
65
 
39
66
  Use {Discorb::Client#extend} to load extension.
@@ -49,6 +49,8 @@ module Discorb
49
49
  attr_reader :ping
50
50
  # @return [:initialized, :running, :closed] The status of the client.
51
51
  attr_reader :status
52
+ # @private
53
+ attr_reader :bottom_commands
52
54
 
53
55
  #
54
56
  # Initializes a new client.
@@ -85,6 +87,7 @@ module Discorb
85
87
  @tasks = []
86
88
  @conditions = {}
87
89
  @commands = []
90
+ @bottom_commands = []
88
91
  @status = :initialized
89
92
  end
90
93
 
@@ -372,6 +375,14 @@ module Discorb
372
375
  @events[name] << event
373
376
  end
374
377
  end
378
+ @commands.delete_if do |cmd|
379
+ cmd.respond_to? :extension and cmd.extension == mod.name
380
+ end
381
+ mod.commands.each do |cmd|
382
+ cmd.define_singleton_method(:extension) { mod.name }
383
+ @commands << cmd
384
+ end
385
+ @bottom_commands += mod.bottom_commands
375
386
  mod.client = self
376
387
  end
377
388
  super(mod)
@@ -34,6 +34,7 @@ module Discorb
34
34
  def slash(command_name, description, options = {}, guild_ids: [], &block)
35
35
  command = Discorb::Command::Command::SlashCommand.new(command_name, description, options, guild_ids, block, 1, "")
36
36
  @commands << command
37
+ @bottom_commands << command
37
38
  command
38
39
  end
39
40
 
@@ -54,6 +55,7 @@ module Discorb
54
55
  def slash_group(command_name, description, guild_ids: [], &block)
55
56
  command = Discorb::Command::Command::GroupCommand.new(command_name, description, guild_ids, nil, self)
56
57
  command.instance_eval(&block) if block_given?
58
+ @commands << command
57
59
  command
58
60
  end
59
61
 
@@ -248,7 +250,7 @@ module Discorb
248
250
  def initialize(name, description, guild_ids, type, client)
249
251
  super(name, guild_ids, block, type)
250
252
  @description = description
251
- @commands = client.commands
253
+ @commands = []
252
254
  @client = client
253
255
  @id_map = Discorb::Dictionary.new
254
256
  end
@@ -261,42 +263,7 @@ module Discorb
261
263
  #
262
264
  def slash(command_name, description, options = {}, &block)
263
265
  command = Discorb::Command::Command::SlashCommand.new(command_name, description, options, [], block, 1, @name)
264
- options_payload = options.map do |name, value|
265
- ret = {
266
- type: case (value[:type].is_a?(Array) ? value[:type].first : value[:type])
267
- when String, :string
268
- 3
269
- when Integer
270
- 4
271
- when TrueClass, FalseClass, :boolean
272
- 5
273
- when Discorb::User, Discorb::Member, :user, :member
274
- 6
275
- when Discorb::Channel, :channel
276
- 7
277
- when Discorb::Role, :role
278
- 8
279
- when :mentionable
280
- 9
281
- when Float
282
- 10
283
- end,
284
- name: name,
285
- description: value[:description],
286
- required: !value[:optional],
287
- }
288
- if value[:type].is_a?(Array)
289
- ret[:choices] = value[:type]
290
- end
291
-
292
- ret
293
- end
294
- {
295
- name: @name,
296
- default_permission: true,
297
- description: @description,
298
- options: options_payload,
299
- }
266
+ @client.bottom_commands << command
300
267
  @commands << command
301
268
  command
302
269
  end
@@ -317,6 +284,7 @@ module Discorb
317
284
  def group(command_name, description, &block)
318
285
  command = Discorb::Command::Command::SubcommandGroup.new(command_name, description, @name, @client)
319
286
  command.instance_eval(&block) if block_given?
287
+ @commands << command
320
288
  command
321
289
  end
322
290
 
@@ -371,7 +339,7 @@ module Discorb
371
339
  def initialize(name, description, parent, client)
372
340
  super(name, description, [], 1, client)
373
341
 
374
- @commands = client.commands
342
+ @commands = []
375
343
  @parent = parent
376
344
  end
377
345
 
@@ -387,6 +355,7 @@ module Discorb
387
355
  def slash(command_name, description, options = {}, &block)
388
356
  command = Discorb::Command::Command::SlashCommand.new(command_name, description, options, [], block, 1, @parent + " " + @name)
389
357
  @commands << command
358
+ @client.bottom_commands << command
390
359
  command
391
360
  end
392
361
  end
@@ -4,7 +4,7 @@ module Discorb
4
4
  # @return [String] The API base URL.
5
5
  API_BASE_URL = "https://discord.com/api/v9"
6
6
  # @return [String] The version of discorb.
7
- VERSION = "0.5.1"
7
+ VERSION = "0.5.2"
8
8
  # @return [String] The user agent for the bot.
9
9
  USER_AGENT = "DiscordBot (https://github.com/discorb-lib/discorb #{VERSION}) Ruby/#{RUBY_VERSION}"
10
10
 
@@ -8,6 +8,9 @@ module Discorb
8
8
  # @abstract
9
9
  #
10
10
  module Extension
11
+ include Discorb::Command::Handler
12
+ undef setup_commands
13
+
11
14
  @events = {}
12
15
  @client = nil
13
16
 
@@ -46,12 +49,18 @@ module Discorb
46
49
 
47
50
  # @return [Hash{Symbol => Array<Discorb::Event>}] The events of the extension.
48
51
  attr_reader :events
52
+ # @return [Array<Discorb::Command::Command] The commands of the extension.
53
+ attr_reader :commands
54
+ # @private
55
+ attr_reader :bottom_commands
49
56
 
50
57
  # @!visibility private
51
58
  attr_accessor :client
52
59
 
53
60
  def self.extended(obj)
54
61
  obj.instance_variable_set(:@events, {})
62
+ obj.instance_variable_set(:@commands, [])
63
+ obj.instance_variable_set(:@bottom_commands, [])
55
64
  end
56
65
  end
57
66
  end
@@ -778,11 +778,9 @@ module Discorb
778
778
  dispatch(:integration_create, Integration.new(self, data, data[:guild_id]))
779
779
  when "INTEGRATION_UPDATE"
780
780
  return @log.warn "Unknown guild id #{data[:guild_id]}, ignoring" unless (guild = @guilds[data[:guild_id]])
781
- return @log.warn "Unknown integration id #{data[:id]}, ignoring" unless (integration = guild.integrations[data[:id]])
782
781
 
783
- before = Integration.new(self, integration.instance_variable_get(:@data), data[:guild_id], no_cache: true)
784
- integration.send(:_set_data, data)
785
- dispatch(:integration_update, before, integration)
782
+ before = Integration.new(self, data, data[:guild_id])
783
+ dispatch(:integration_update, integration)
786
784
  when "INTEGRATION_DELETE"
787
785
  return @log.warn "Unknown guild id #{data[:guild_id]}, ignoring" unless (guild = @guilds[data[:guild_id]])
788
786
  return @log.warn "Unknown integration id #{data[:id]}, ignoring" unless (integration = guild.integrations.delete(data[:id]))
@@ -297,7 +297,7 @@ module Discorb
297
297
  end
298
298
  end
299
299
 
300
- unless (command = @client.commands.find { |c| c.to_s == name && c.type_raw == 1 })
300
+ unless (command = @client.bottom_commands.find { |c| c.to_s == name && c.type_raw == 1 })
301
301
  @client.log.warn "Unknown command name #{name}, ignoreing"
302
302
  next
303
303
  end
data/lib/discorb.rb CHANGED
@@ -41,11 +41,11 @@ end
41
41
 
42
42
  require_order = %w[common flag dictionary error rate_limit http intents emoji_table modules] +
43
43
  %w[user member guild emoji channel embed message] +
44
- %w[application audit_logs color components event extension] +
44
+ %w[application audit_logs color components event] +
45
45
  %w[file guild_template image integration interaction invite log permission] +
46
46
  %w[presence reaction role sticker utils voice_state webhook] +
47
47
  %w[gateway_requests gateway command] +
48
- %w[asset client extend]
48
+ %w[asset extension client extend]
49
49
  require_order.each do |name|
50
50
  require_relative "discorb/#{name}.rb"
51
51
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: discorb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.5.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - sevenc-nanashi