discorb 0.6.0 → 0.6.1

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: aec8518b5159a98382c8f9ddcc4ca5818e0be6e364ef5e8d2a623e8395b5f078
4
- data.tar.gz: 4b93ab7afc612c550e19a8d7ba1fac48f0613b760f38bcd1ba2b4387e20b2435
3
+ metadata.gz: 4d2ef47227e1e5895bdcaf6a67641d22319909c0f6a461d72ab35be1e0c9a42b
4
+ data.tar.gz: 688a952b571421e8c43ca53b10f9404f6ba2abf8b9071222c35d3a10e34c5b7e
5
5
  SHA512:
6
- metadata.gz: b73524dd2de6c337d42ad82f83c95d960e936ad554ebf6fb9cad6c96b06d4779b862339d319d2d0d42ba498ce6cfa536f5adc48eb801bb42e1ba4dd133c72976
7
- data.tar.gz: 1ff54afd40c0731e2726236d18633bd1a9039ae4c98129765f64a0d96f4491cf282f3f4a9872a195d20403160dcdab4ed0832d923533462f088694015bcf5dc9
6
+ metadata.gz: 9fd5eb78a1acda90e3c673a8745a2a9954ff8b8817c38210c5c609e6a85b16e4074b59bf8ae7bcc7725f7f45f22dfd785fb5edd321e9f61994bb071e4aa25a43
7
+ data.tar.gz: 4bee75498af33d4716e033f51103382d8931c079495d27234cf07cf5e5b288891b40fb7e00902d3c1d7150249d0c820701d9962130890005bea5378e46af5ac8
@@ -0,0 +1,57 @@
1
+ ---
2
+ name: Bug Report
3
+ about: A bug report for discorb.
4
+ labels:
5
+ - bug
6
+ ---
7
+
8
+ <!--
9
+ Before submitting a bug report, please check that it is not already being, or has been, reported.
10
+ Don't forget to find closed issues and check if the bug is already fixed.
11
+ -->
12
+
13
+ ## What is the bug?
14
+
15
+ <!--
16
+ Please describe the bug in detail.
17
+ Ex:
18
+ I want to sleep, but I can't.
19
+ -->
20
+
21
+ ## What steps did you take to reproduce the bug?
22
+
23
+ <!--
24
+ Please describe the steps you took to reproduce the bug.
25
+ Ex:
26
+ 1. Go to bed
27
+ 2. Count sheeps
28
+ 3. Observe
29
+ -->
30
+
31
+ ## What did you expect to see?
32
+
33
+ <!--
34
+ Please describe what you expected to see.
35
+ Ex:
36
+ I can sleep.
37
+ -->
38
+
39
+ ## What did you see instead?
40
+
41
+ <!--
42
+ Please describe what you saw instead.
43
+ Ex:
44
+ I can't sleep.
45
+ -->
46
+
47
+ ## Environment information
48
+
49
+ <!--
50
+ Use `discorb show` to get the current machine.
51
+ -->
52
+
53
+ ## Other information
54
+
55
+ <!--
56
+ Please describe any other information you want to include as such as the screenshots you took, or the logs you generated.
57
+ -->
@@ -0,0 +1,8 @@
1
+ blank_issues_enabled: true
2
+ contact_links:
3
+ - name: Documentation
4
+ url: https://discorb-lib.github.io/
5
+ about: Read the documentation first.
6
+ - name: Official Guild
7
+ url: https://discord.gg/hCP6zq8Vpj
8
+ about: Join the official Guild.
@@ -0,0 +1,38 @@
1
+ ---
2
+ name: Feature Request
3
+ labels:
4
+ - Feature Request
5
+ - Enhancement
6
+ about: Feature request for discorb's future.
7
+ ---
8
+ <!--
9
+ Before submitting a feature request, please check there is no existing feature request for the feature you are requesting.
10
+ -->
11
+
12
+
13
+ ## What is the feature you are requesting?
14
+
15
+ <!--
16
+ Please describe the feature you are requesting.
17
+ Ex: Create discorb-chan
18
+ -->
19
+
20
+ ## Why do you need the feature?
21
+
22
+ <!--
23
+ Please describe the reason for the feature you are requesting.
24
+ Ex: She's cute.
25
+ -->
26
+
27
+ ## Alternative considerations?
28
+
29
+ <!--
30
+ Please describe alternative considerations for the feature you are requesting.
31
+ Ex: Add discorb-kun
32
+ -->
33
+
34
+ ## Additional context
35
+
36
+ <!--
37
+ Please describe any additional context you have for the feature you are requesting.
38
+ -->
data/Changelog.md CHANGED
@@ -144,4 +144,9 @@
144
144
  - Add: Add rbs (experimental)
145
145
  - Add: Add `-t`, `--token` option to `discorb run`
146
146
  - Add: Add `-g`, `--guild` option to `discorb setup`
147
- - Change: Use `Async::Task<R>` instead of `R` in return value
147
+ - Change: Use `Async::Task<R>` instead of `R` in return value
148
+
149
+ ## 0.6.1
150
+
151
+ - Change: Rename `Event#discriminator` to `Event#metadata`
152
+ - Add: Add `:override` to `Client#on`
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- discorb (0.6.0)
4
+ discorb (0.6.1)
5
5
  async (~> 1.30.1)
6
6
  async-http (~> 0.56.5)
7
7
  async-websocket (~> 0.19.0)
@@ -11,9 +11,9 @@ From: [Discord API docs](https://discord.com/developers/docs/interactions/applic
11
11
  ## How do I register an application command?
12
12
 
13
13
  Write to a your script:
14
- - {Discorb::Command::Handler.slash}, {Discorb::Command::Handler.slash_group} for slash commands,
15
- - {Discorb::Command::Handler.user_command} for user menu commands,
16
- - {Discorb::Command::Handler.message_command} for message menu commands.
14
+ - {Discorb::ApplicationCommand::Handler.slash}, {Discorb::ApplicationCommand::Handler.slash_group} for slash commands,
15
+ - {Discorb::ApplicationCommand::Handler.user_command} for user menu commands,
16
+ - {Discorb::ApplicationCommand::Handler.message_command} for message menu commands.
17
17
 
18
18
  And then run `discorb setup` to register your application commands.
19
19
  {file:docs/cli/setup.md Learn more about `discorb setup`}.
@@ -39,7 +39,7 @@ end
39
39
  client.run(ENV["DISCORD_BOT_TOKEN"])
40
40
  ```
41
41
 
42
- {Discorb::Command::Handler#slash} takes 5 arguments:
42
+ {Discorb::ApplicationCommand::Handler#slash} takes 5 arguments:
43
43
 
44
44
  | Argument | Description |
45
45
  |---------|-------------|
@@ -107,7 +107,7 @@ In `type`, You must use one of the following:
107
107
 
108
108
  ### Group Slash Commands
109
109
 
110
- To register a group of slash commands, use {Discorb::Command::Handler#slash_group}.
110
+ To register a group of slash commands, use {Discorb::ApplicationCommand::Handler#slash_group}.
111
111
 
112
112
  ```ruby
113
113
  group = client.slash_group("settings", "Set settings of bot.")
@@ -156,7 +156,7 @@ client.slash_group("settings", "Set settings of bot.") do
156
156
  end
157
157
  ```
158
158
 
159
- You can make subcommand group by using {Discorb::Command::Command::GroupCommand#group}.
159
+ You can make subcommand group by using {Discorb::ApplicationCommand::Command::GroupCommand#group}.
160
160
 
161
161
  ```ruby
162
162
  group = client.slash_group("permission", "Set/Get command permissions.")
@@ -244,7 +244,7 @@ client.user_command("hello") do |interaction, user|
244
244
  interaction.post("Hello, #{user.name}!")
245
245
  end
246
246
  ```
247
- {Discorb::Command::Handler.user_command} takes 3 arguments:
247
+ {Discorb::ApplicationCommand::Handler.user_command} takes 3 arguments:
248
248
 
249
249
  | Parameter | Description |
250
250
  | --- | --- |
@@ -268,7 +268,7 @@ client.message_command("Bookmark") do |interaction, message|
268
268
  end
269
269
  ```
270
270
 
271
- {Discorb::Command::Handler.message_command} takes 3 arguments:
271
+ {Discorb::ApplicationCommand::Handler.message_command} takes 3 arguments:
272
272
 
273
273
  | Parameter | Description |
274
274
  | --- | --- |
data/docs/events.md CHANGED
@@ -30,6 +30,35 @@ end
30
30
 
31
31
  If you want to seperate event handlers from the client, consider using {Discorb::Extension}. {file:docs/extension.md Learn more about extensions}.
32
32
 
33
+ Since v0.6.1, you can set `:override` to `true` to register overridable event handlers.
34
+
35
+ ```ruby
36
+ client.on :message, override: true do |event|
37
+ puts "This event handler is overrideable!"
38
+ end
39
+
40
+ client.on :message do |event|
41
+ puts "Override!"
42
+ end
43
+ ```
44
+
45
+ This example will print `Override!`, but not `This event handler is overrideable!`.
46
+ This is useful for registering event handlers for default behaviour on errors.
47
+
48
+ ```ruby
49
+ # In the library...
50
+
51
+ client.on :command_error, override: true do |event, error|
52
+ $stderr.puts "Command error:\n#{error.full_message}"
53
+ end
54
+
55
+ # In your code...
56
+
57
+ client.on :command_error do |event, error|
58
+ event.message.reply "An error occurred while executing that command!\n#{error.full_message}"
59
+ end
60
+ ```
61
+
33
62
  ## Event reference
34
63
 
35
64
  ### Client events
data/docs/extension.md CHANGED
@@ -36,7 +36,7 @@ end
36
36
 
37
37
  ## Register Command
38
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}.
39
+ Since v0.5.2, {Discorb::Extension} includes {Discorb::ApplicationCommand::Handler} module, so you can register command with {Discorb::ApplicationCommand::Handler#slash} and {Discorb::ApplicationCommand::Handler#slash_group}.
40
40
 
41
41
  ```ruby
42
42
  module MyExtension
@@ -4,9 +4,9 @@ module Discorb
4
4
  #
5
5
  # Handles application commands.
6
6
  #
7
- module Command
7
+ module ApplicationCommand
8
8
  #
9
- # Module to handle commands.
9
+ # Module to handle application commands.
10
10
  #
11
11
  module Handler
12
12
  #
@@ -27,13 +27,13 @@ module Discorb
27
27
  # @param [Array<#to_s>, false, nil] guild_ids Guild IDs to set the command to. `false` to global command, `nil` to use default.
28
28
  # @param [Proc] block Command block.
29
29
  #
30
- # @return [Discorb::Command::Command::SlashCommand]
30
+ # @return [Discorb::ApplicationCommand::Command::SlashCommand] Command object.
31
31
  #
32
32
  # @see file:docs/application_command.md#register-slash-command
33
33
  # @see file:docs/cli/setup.md
34
34
  #
35
35
  def slash(command_name, description, options = {}, guild_ids: nil, &block)
36
- command = Discorb::Command::Command::SlashCommand.new(command_name, description, options, guild_ids, block, 1, "")
36
+ command = Discorb::ApplicationCommand::Command::SlashCommand.new(command_name, description, options, guild_ids, block, 1, "")
37
37
  @commands << command
38
38
  @bottom_commands << command
39
39
  command
@@ -47,15 +47,15 @@ module Discorb
47
47
  # @param [Array<#to_s>, false, nil] guild_ids Guild IDs to set the command to. `false` to global command, `nil` to use default.
48
48
  #
49
49
  # @yield Block to execute as the command. It can be used to define sub-commands.
50
- # @yieldself [Discorb::Command::Command::GroupCommand] Group command.
50
+ # @yieldself [Discorb::ApplicationCommand::Command::GroupCommand] Group command.
51
51
  #
52
- # @return [Discorb::Command::Command::GroupCommand] Command object.
52
+ # @return [Discorb::ApplicationCommand::Command::GroupCommand] Command object.
53
53
  #
54
54
  # @see file:docs/slash_command.md
55
55
  # @see file:docs/cli/setup.md
56
56
  #
57
57
  def slash_group(command_name, description, guild_ids: nil, &block)
58
- command = Discorb::Command::Command::GroupCommand.new(command_name, description, guild_ids, nil, self)
58
+ command = Discorb::ApplicationCommand::Command::GroupCommand.new(command_name, description, guild_ids, nil, self)
59
59
  command.instance_eval(&block) if block_given?
60
60
  @commands << command
61
61
  command
@@ -68,13 +68,13 @@ module Discorb
68
68
  # @param [Array<#to_s>, false, nil] guild_ids Guild IDs to set the command to. `false` to global command, `nil` to use default.
69
69
  # @param [Proc] block Command block.
70
70
  # @yield [interaction, message] Block to execute.
71
- # @yieldparam [Discorb::CommandInteraction::UserMenuCommand] interaction Interaction object.
71
+ # @yieldparam [Discorb::ApplicationCommandInteraction::UserMenuCommand] interaction Interaction object.
72
72
  # @yieldparam [Discorb::Message] message Message object.
73
73
  #
74
- # @return [Discorb::Command::Command] Command object.
74
+ # @return [Discorb::ApplicationCommand::Command] Command object.
75
75
  #
76
76
  def message_command(command_name, guild_ids: nil, &block)
77
- command = Discorb::Command::Command.new(command_name, guild_ids, block, 3)
77
+ command = Discorb::ApplicationCommand::Command.new(command_name, guild_ids, block, 3)
78
78
  @commands << command
79
79
  command
80
80
  end
@@ -86,13 +86,13 @@ module Discorb
86
86
  # @param [Array<#to_s>, false, nil] guild_ids Guild IDs to set the command to. `false` to global command, `nil` to use default.
87
87
  # @param [Proc] block Command block.
88
88
  # @yield [interaction, user] Block to execute.
89
- # @yieldparam [Discorb::CommandInteraction::UserMenuCommand] interaction Interaction object.
89
+ # @yieldparam [Discorb::ApplicationCommandInteraction::UserMenuCommand] interaction Interaction object.
90
90
  # @yieldparam [Discorb::User] user User object.
91
91
  #
92
- # @return [Discorb::Command::Command] Command object.
92
+ # @return [Discorb::ApplicationCommand::Command] Command object.
93
93
  #
94
94
  def user_command(command_name, guild_ids: nil, &block)
95
- command = Discorb::Command::Command.new(command_name, guild_ids, block, 2)
95
+ command = Discorb::ApplicationCommand::Command.new(command_name, guild_ids, block, 2)
96
96
  @commands << command
97
97
  command
98
98
  end
@@ -163,7 +163,7 @@ module Discorb
163
163
  @guild_ids = guild_ids&.map(&:to_s)
164
164
  @block = block
165
165
  @raw_type = type
166
- @type = Discorb::Command::Command.types[type]
166
+ @type = Discorb::ApplicationCommand::Command.types[type]
167
167
  @type_raw = type
168
168
  @id_map = Discorb::Dictionary.new
169
169
  end
@@ -251,7 +251,7 @@ module Discorb
251
251
  # Represents the command with subcommands.
252
252
  #
253
253
  class GroupCommand < Command
254
- # @return [Array<Discorb::Command::Command::SlashCommand, Discorb::Command::Command::SubcommandGroup>] The subcommands of the command.
254
+ # @return [Array<Discorb::ApplicationCommand::Command::SlashCommand, Discorb::ApplicationCommand::Command::SubcommandGroup>] The subcommands of the command.
255
255
  attr_reader :commands
256
256
  # @return [String] The description of the command.
257
257
  attr_reader :description
@@ -268,11 +268,11 @@ module Discorb
268
268
  #
269
269
  # Add new subcommand.
270
270
  #
271
- # @param (see Discorb::Command::Handler#slash)
272
- # @return [Discorb::Command::Command::SlashCommand] The added subcommand.
271
+ # @param (see Discorb::ApplicationCommand::Handler#slash)
272
+ # @return [Discorb::ApplicationCommand::Command::SlashCommand] The added subcommand.
273
273
  #
274
274
  def slash(command_name, description, options = {}, &block)
275
- command = Discorb::Command::Command::SlashCommand.new(command_name, description, options, [], block, 1, @name)
275
+ command = Discorb::ApplicationCommand::Command::SlashCommand.new(command_name, description, options, [], block, 1, @name)
276
276
  @client.bottom_commands << command
277
277
  @commands << command
278
278
  command
@@ -285,14 +285,14 @@ module Discorb
285
285
  # @param [String] description Group description.
286
286
  #
287
287
  # @yield Block to execute as the command. It can be used to define sub-commands.
288
- # @yieldself [Discorb::Command::Command::SubcommandGroup] Group command.
288
+ # @yieldself [Discorb::ApplicationCommand::Command::SubcommandGroup] Group command.
289
289
  #
290
- # @return [Discorb::Command::Command::SubcommandGroup] Command object.
290
+ # @return [Discorb::ApplicationCommand::Command::SubcommandGroup] Command object.
291
291
  #
292
292
  # @see file:docs/slash_command.md
293
293
  #
294
294
  def group(command_name, description, &block)
295
- command = Discorb::Command::Command::SubcommandGroup.new(command_name, description, @name, @client)
295
+ command = Discorb::ApplicationCommand::Command::SubcommandGroup.new(command_name, description, @name, @client)
296
296
  command.instance_eval(&block) if block_given?
297
297
  @commands << command
298
298
  command
@@ -342,7 +342,7 @@ module Discorb
342
342
  # Represents the subcommand group.
343
343
  #
344
344
  class SubcommandGroup < GroupCommand
345
- # @return [Array<Discorb::Command::Command::SlashCommand>] The subcommands of the command.
345
+ # @return [Array<Discorb::ApplicationCommand::Command::SlashCommand>] The subcommands of the command.
346
346
  attr_reader :commands
347
347
 
348
348
  # @!visibility private
@@ -359,11 +359,11 @@ module Discorb
359
359
 
360
360
  #
361
361
  # Add new subcommand.
362
- # @param (see Discorb::Command::Handler#slash)
363
- # @return [Discorb::Command::Command::SlashCommand] The added subcommand.
362
+ # @param (see Discorb::ApplicationCommand::Handler#slash)
363
+ # @return [Discorb::ApplicationCommand::Command::SlashCommand] The added subcommand.
364
364
  #
365
365
  def slash(command_name, description, options = {}, &block)
366
- command = Discorb::Command::Command::SlashCommand.new(command_name, description, options, [], block, 1, @parent + " " + @name)
366
+ command = Discorb::ApplicationCommand::Command::SlashCommand.new(command_name, description, options, [], block, 1, @parent + " " + @name)
367
367
  @commands << command
368
368
  @client.bottom_commands << command
369
369
  command
@@ -41,7 +41,7 @@ module Discorb
41
41
  attr_reader :messages
42
42
  # @return [Discorb::Logger] The logger.
43
43
  attr_reader :log
44
- # @return [Array<Discorb::Command::Command>] The commands that the client is using.
44
+ # @return [Array<Discorb::ApplicationCommand::Command>] The commands that the client is using.
45
45
  attr_reader :commands
46
46
  # @return [Float] The ping of the client.
47
47
  # @note This will be calculated from heartbeat and heartbeat_ack.
@@ -99,14 +99,15 @@ module Discorb
99
99
  #
100
100
  # @param [Symbol] event_name The name of the event.
101
101
  # @param [Symbol] id Custom ID of the event.
102
- # @param [Hash] discriminator The discriminator of the event.
102
+ # @param [Hash] metadata The metadata of the event.
103
103
  # @param [Proc] block The block to execute when the event is triggered.
104
104
  #
105
105
  # @return [Discorb::Event] The event.
106
106
  #
107
- def on(event_name, id: nil, **discriminator, &block)
108
- ne = Event.new(block, id, discriminator)
107
+ def on(event_name, id: nil, **metadata, &block)
108
+ ne = Event.new(block, id, metadata)
109
109
  @events[event_name] ||= []
110
+ @events[event_name].delete_if { |e| e.metadata[:override] }
110
111
  @events[event_name] << ne
111
112
  ne
112
113
  end
@@ -118,12 +119,9 @@ module Discorb
118
119
  #
119
120
  # @return [Discorb::Event] The event.
120
121
  #
121
- def once(event_name, id: nil, **discriminator, &block)
122
- discriminator[:once] = true
123
- ne = Event.new(block, id, discriminator)
124
- @events[event_name] ||= []
125
- @events[event_name] << ne
126
- ne
122
+ def once(event_name, id: nil, **metadata, &block)
123
+ metadata[:once] = true
124
+ on(event_name, id: id, **metadata, &block)
127
125
  end
128
126
 
129
127
  #
@@ -177,7 +175,7 @@ module Discorb
177
175
  lambda { |event_args|
178
176
  Async(annotation: "Discorb event: #{event_name}") do |task|
179
177
  if block.is_a?(Discorb::Event)
180
- @events[event_name].delete(block) if block.discriminator[:once]
178
+ @events[event_name].delete(block) if block.metadata[:once]
181
179
  end
182
180
  block.call(*event_args)
183
181
  @log.debug "Dispatched proc with ID #{block.id.inspect}"
@@ -369,10 +367,11 @@ module Discorb
369
367
  def extend(mod)
370
368
  if mod.respond_to?(:events)
371
369
  @events.each_value do |event|
372
- event.delete_if { |c| c.discriminator[:extension] == mod.name }
370
+ event.delete_if { |c| c.metadata[:extension] == mod.name }
373
371
  end
374
372
  mod.events.each do |name, events|
375
- @events[name] = [] if @events[name].nil?
373
+ @events[name] ||= []
374
+ @events[name].delete_if { |c| c.metadata[:override] }
376
375
  events.each do |event|
377
376
  @events[name] << event
378
377
  end
@@ -391,7 +390,7 @@ module Discorb
391
390
  end
392
391
 
393
392
  include Discorb::Gateway::Handler
394
- include Discorb::Command::Handler
393
+ include Discorb::ApplicationCommand::Handler
395
394
 
396
395
  #
397
396
  # Starts the client.