discorb 0.5.1 → 0.5.2
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.
- checksums.yaml +4 -4
- data/Changelog.md +6 -1
- data/Gemfile.lock +1 -1
- data/README.md +2 -1
- data/docs/events.md +1 -2
- data/docs/extension.md +27 -0
- data/lib/discorb/client.rb +11 -0
- data/lib/discorb/command.rb +7 -38
- data/lib/discorb/common.rb +1 -1
- data/lib/discorb/extension.rb +9 -0
- data/lib/discorb/gateway.rb +2 -4
- data/lib/discorb/interaction.rb +1 -1
- data/lib/discorb.rb +2 -2
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3d17006d6ca103247dcf304581c61104054722b1af32bc8b3ec3d23b7f5e8680
|
4
|
+
data.tar.gz: 92c481e5532d3e990ca73b891c71a87f5a4a2e6217ff7d7c5677519dbeaf4259
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
data/README.md
CHANGED
@@ -2,7 +2,8 @@
|
|
2
2
|
[](https://discorb-lib.github.io/)
|
3
3
|
[](https://rubygems.org/gems/discorb)
|
4
4
|
[](https://rubygems.org/gems/discorb)
|
5
|
-
[](https://discord.gg/hCP6zq8Vpj)
|
5
|
+
[](https://discord.gg/hCP6zq8Vpj)
|
6
|
+
[](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(
|
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.
|
data/lib/discorb/client.rb
CHANGED
@@ -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)
|
data/lib/discorb/command.rb
CHANGED
@@ -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 =
|
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
|
-
|
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 =
|
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
|
data/lib/discorb/common.rb
CHANGED
@@ -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.
|
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
|
|
data/lib/discorb/extension.rb
CHANGED
@@ -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
|
data/lib/discorb/gateway.rb
CHANGED
@@ -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,
|
784
|
-
|
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]))
|
data/lib/discorb/interaction.rb
CHANGED
@@ -297,7 +297,7 @@ module Discorb
|
|
297
297
|
end
|
298
298
|
end
|
299
299
|
|
300
|
-
unless (command = @client.
|
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
|
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
|