discorb 0.13.4 → 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.
- checksums.yaml +4 -4
- data/.gitattributes +2 -0
- data/.github/workflows/build_version.yml +1 -1
- data/.github/workflows/codeql-analysis.yml +70 -0
- data/.github/workflows/lint-push.yml +20 -0
- data/.github/workflows/lint.yml +16 -0
- data/.rubocop.yml +74 -0
- data/Changelog.md +30 -0
- data/Gemfile +7 -3
- data/Rakefile +28 -22
- data/discorb.gemspec +1 -0
- data/docs/events.md +50 -0
- data/docs/faq.md +8 -8
- data/examples/commands/bookmarker.rb +2 -1
- data/examples/commands/hello.rb +1 -0
- data/examples/commands/inspect.rb +3 -2
- data/examples/components/authorization_button.rb +2 -1
- data/examples/components/select_menu.rb +2 -1
- data/examples/extension/main.rb +1 -0
- data/examples/extension/message_expander.rb +1 -0
- data/examples/simple/eval.rb +3 -2
- data/examples/simple/ping_pong.rb +1 -0
- data/examples/simple/rolepanel.rb +1 -0
- data/examples/simple/wait_for_message.rb +4 -3
- data/exe/discorb +8 -7
- data/lib/discorb/allowed_mentions.rb +71 -0
- data/lib/discorb/app_command/command.rb +336 -0
- data/lib/discorb/app_command/handler.rb +168 -0
- data/lib/discorb/app_command.rb +2 -426
- data/lib/discorb/application.rb +16 -7
- data/lib/discorb/asset.rb +11 -0
- data/lib/discorb/{file.rb → attachment.rb} +55 -33
- data/lib/discorb/audit_logs.rb +45 -7
- data/lib/discorb/channel.rb +65 -15
- data/lib/discorb/client.rb +34 -27
- data/lib/discorb/common.rb +19 -27
- data/lib/discorb/components/button.rb +105 -0
- data/lib/discorb/components/select_menu.rb +143 -0
- data/lib/discorb/components/text_input.rb +96 -0
- data/lib/discorb/components.rb +11 -276
- data/lib/discorb/dictionary.rb +5 -0
- data/lib/discorb/embed.rb +73 -40
- data/lib/discorb/emoji.rb +48 -5
- data/lib/discorb/error.rb +9 -5
- data/lib/discorb/event.rb +36 -24
- data/lib/discorb/exe/about.rb +1 -0
- data/lib/discorb/exe/irb.rb +4 -3
- data/lib/discorb/exe/new.rb +6 -7
- data/lib/discorb/exe/run.rb +2 -1
- data/lib/discorb/exe/setup.rb +8 -5
- data/lib/discorb/exe/show.rb +1 -0
- data/lib/discorb/extend.rb +19 -14
- data/lib/discorb/extension.rb +5 -1
- data/lib/discorb/gateway.rb +112 -51
- data/lib/discorb/gateway_requests.rb +4 -7
- data/lib/discorb/guild.rb +73 -41
- data/lib/discorb/guild_template.rb +26 -5
- data/lib/discorb/http.rb +38 -18
- data/lib/discorb/integration.rb +24 -9
- data/lib/discorb/intents.rb +16 -11
- data/lib/discorb/interaction/autocomplete.rb +6 -5
- data/lib/discorb/interaction/command.rb +66 -12
- data/lib/discorb/interaction/components.rb +19 -3
- data/lib/discorb/interaction/modal.rb +33 -0
- data/lib/discorb/interaction/response.rb +45 -4
- data/lib/discorb/interaction/root.rb +16 -0
- data/lib/discorb/interaction.rb +2 -1
- data/lib/discorb/invite.rb +11 -7
- data/lib/discorb/log.rb +5 -5
- data/lib/discorb/member.rb +22 -3
- data/lib/discorb/message.rb +39 -234
- data/lib/discorb/message_meta.rb +186 -0
- data/lib/discorb/modules.rb +39 -15
- data/lib/discorb/permission.rb +16 -7
- data/lib/discorb/presence.rb +45 -9
- data/lib/discorb/rate_limit.rb +7 -4
- data/lib/discorb/reaction.rb +6 -0
- data/lib/discorb/role.rb +12 -0
- data/lib/discorb/sticker.rb +22 -14
- data/lib/discorb/user.rb +12 -1
- data/lib/discorb/utils/colored_puts.rb +1 -0
- data/lib/discorb/voice_state.rb +23 -2
- data/lib/discorb/webhook.rb +54 -3
- data/lib/discorb.rb +5 -2
- data/sig/discorb.rbs +838 -702
- data/template-replace/scripts/arrow.rb +1 -0
- data/template-replace/scripts/favicon.rb +1 -0
- data/template-replace/scripts/index.rb +2 -1
- data/template-replace/scripts/locale_ja.rb +5 -4
- data/template-replace/scripts/sidebar.rb +1 -0
- data/template-replace/scripts/version.rb +7 -10
- data/template-replace/scripts/yard_replace.rb +5 -4
- metadata +17 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4bc9c7d6433e9e093a0d58d821ed97e3f001d63224c9f65eb1693a2ee3d16f7d
|
4
|
+
data.tar.gz: daff87553c1996cbc1a68765ee3df54947f46b7660fc1a16f0a17a0e0660e2c7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dceaba51436368feeb9e99bc4afda5cea9ac45aa0525bb44cdd33c427fef6c6617d17bf1a56b27acac137df05b4d6f27395e22883ce574e4e48d3e7a8ca05a13
|
7
|
+
data.tar.gz: 81622ca789eee2f8c55b4fd98e7c0bdc602d164247602508c8b041757d61fcb77f659d01142db8a8c16b9dd6e6cc402ebf9f45cf881e787a77449ba4831b8376
|
data/.gitattributes
ADDED
@@ -33,7 +33,7 @@ jobs:
|
|
33
33
|
git clone git@github.com:discorb-lib/discorb-lib.github.io /tmp/pages
|
34
34
|
- name: Install dependencies
|
35
35
|
run: |
|
36
|
-
bundle config --local with 'docs development'
|
36
|
+
bundle config --local with 'docs development lint'
|
37
37
|
bundle install
|
38
38
|
gem update uri
|
39
39
|
- name: Generate document
|
@@ -0,0 +1,70 @@
|
|
1
|
+
# For most projects, this workflow file will not need changing; you simply need
|
2
|
+
# to commit it to your repository.
|
3
|
+
#
|
4
|
+
# You may wish to alter this file to override the set of languages analyzed,
|
5
|
+
# or to provide custom queries or build logic.
|
6
|
+
#
|
7
|
+
# ******** NOTE ********
|
8
|
+
# We have attempted to detect the languages in your repository. Please check
|
9
|
+
# the `language` matrix defined below to confirm you have the correct set of
|
10
|
+
# supported CodeQL languages.
|
11
|
+
#
|
12
|
+
name: "CodeQL"
|
13
|
+
|
14
|
+
on:
|
15
|
+
push:
|
16
|
+
branches: [ main ]
|
17
|
+
pull_request:
|
18
|
+
# The branches below must be a subset of the branches above
|
19
|
+
branches: [ main ]
|
20
|
+
schedule:
|
21
|
+
- cron: '20 10 * * 3'
|
22
|
+
|
23
|
+
jobs:
|
24
|
+
analyze:
|
25
|
+
name: Analyze
|
26
|
+
runs-on: ubuntu-latest
|
27
|
+
permissions:
|
28
|
+
actions: read
|
29
|
+
contents: read
|
30
|
+
security-events: write
|
31
|
+
|
32
|
+
strategy:
|
33
|
+
fail-fast: false
|
34
|
+
matrix:
|
35
|
+
language: [ 'ruby' ]
|
36
|
+
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
|
37
|
+
# Learn more about CodeQL language support at https://git.io/codeql-language-support
|
38
|
+
|
39
|
+
steps:
|
40
|
+
- name: Checkout repository
|
41
|
+
uses: actions/checkout@v2
|
42
|
+
|
43
|
+
# Initializes the CodeQL tools for scanning.
|
44
|
+
- name: Initialize CodeQL
|
45
|
+
uses: github/codeql-action/init@v1
|
46
|
+
with:
|
47
|
+
languages: ${{ matrix.language }}
|
48
|
+
# If you wish to specify custom queries, you can do so here or in a config file.
|
49
|
+
# By default, queries listed here will override any specified in a config file.
|
50
|
+
# Prefix the list here with "+" to use these queries and those in the config file.
|
51
|
+
# queries: ./path/to/local/query, your-org/your-repo/queries@main
|
52
|
+
|
53
|
+
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
54
|
+
# If this step fails, then you should remove it and run the build manually (see below)
|
55
|
+
- name: Autobuild
|
56
|
+
uses: github/codeql-action/autobuild@v1
|
57
|
+
|
58
|
+
# ℹ️ Command-line programs to run using the OS shell.
|
59
|
+
# 📚 https://git.io/JvXDl
|
60
|
+
|
61
|
+
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
|
62
|
+
# and modify them (or add more) to build your code if your project
|
63
|
+
# uses a compiled language
|
64
|
+
|
65
|
+
#- run: |
|
66
|
+
# make bootstrap
|
67
|
+
# make release
|
68
|
+
|
69
|
+
- name: Perform CodeQL Analysis
|
70
|
+
uses: github/codeql-action/analyze@v1
|
@@ -0,0 +1,20 @@
|
|
1
|
+
name: Lint with RuboCop
|
2
|
+
on:
|
3
|
+
push:
|
4
|
+
branches:
|
5
|
+
- main
|
6
|
+
jobs:
|
7
|
+
rubocop:
|
8
|
+
runs-on: ubuntu-latest
|
9
|
+
steps:
|
10
|
+
- name: Checkout repository
|
11
|
+
uses: actions/checkout@v2
|
12
|
+
- uses: ruby/setup-ruby@v1
|
13
|
+
with:
|
14
|
+
ruby-version: 3.0.0
|
15
|
+
- name: Install gems
|
16
|
+
run: |
|
17
|
+
gem install rubocop
|
18
|
+
- name: Run rubocop
|
19
|
+
run: |
|
20
|
+
rubocop lib
|
@@ -0,0 +1,16 @@
|
|
1
|
+
name: Lint with RuboCop
|
2
|
+
on:
|
3
|
+
- pull_request
|
4
|
+
jobs:
|
5
|
+
rubocop:
|
6
|
+
runs-on: ubuntu-latest
|
7
|
+
steps:
|
8
|
+
- name: Checkout repository
|
9
|
+
uses: actions/checkout@v2
|
10
|
+
- uses: ruby/setup-ruby@v1
|
11
|
+
with:
|
12
|
+
ruby-version: 3.0.0
|
13
|
+
- name: rubocop
|
14
|
+
uses: reviewdog/action-rubocop@v2
|
15
|
+
with:
|
16
|
+
rubocop_version: 1.25
|
data/.rubocop.yml
ADDED
@@ -0,0 +1,74 @@
|
|
1
|
+
AllCops:
|
2
|
+
NewCops: enable
|
3
|
+
TargetRubyVersion: 3.0
|
4
|
+
Exclude:
|
5
|
+
- examples/**/*.rb
|
6
|
+
|
7
|
+
Layout:
|
8
|
+
Enabled: false
|
9
|
+
Metrics:
|
10
|
+
Enabled: false
|
11
|
+
|
12
|
+
Style/TrailingCommaInHashLiteral: # Disabled for rufo
|
13
|
+
EnforcedStyleForMultiline: consistent_comma
|
14
|
+
|
15
|
+
Style/TrailingCommaInArrayLiteral: # Disabled for rufo
|
16
|
+
EnforcedStyleForMultiline: consistent_comma
|
17
|
+
|
18
|
+
Style/StringLiterals: # Disabled for rufo
|
19
|
+
Enabled: true
|
20
|
+
EnforcedStyle: double_quotes
|
21
|
+
|
22
|
+
Style/TrailingCommaInArguments: # Disabled for rufo
|
23
|
+
Enabled: false
|
24
|
+
|
25
|
+
Style/StringLiteralsInInterpolation: # Disabled for rufo
|
26
|
+
Enabled: false
|
27
|
+
|
28
|
+
Style/StringConcatenation: # + looks better
|
29
|
+
Enabled: false
|
30
|
+
|
31
|
+
Lint/MissingSuper: # For abstract classes
|
32
|
+
Enabled: false
|
33
|
+
|
34
|
+
Lint/AssignmentInCondition: # Looks bad
|
35
|
+
Enabled: false
|
36
|
+
|
37
|
+
Style/PerlBackrefs: # It will be longer
|
38
|
+
Enabled: false
|
39
|
+
|
40
|
+
Style/RedundantSelf: # Looks local variable
|
41
|
+
Enabled: false
|
42
|
+
|
43
|
+
Naming/VariableNumber: # Discord API docs naming
|
44
|
+
Enabled: false
|
45
|
+
|
46
|
+
Style/ParallelAssignment: # It will be longer
|
47
|
+
Enabled: false
|
48
|
+
|
49
|
+
Style/RedundantInterpolation: # For make it extendable
|
50
|
+
Enabled: false
|
51
|
+
|
52
|
+
Style/Next: # For make it extendable
|
53
|
+
Enabled: false
|
54
|
+
|
55
|
+
Lint/ShadowedException: # False positive
|
56
|
+
Enabled: false
|
57
|
+
|
58
|
+
Lint/AmbiguousOperatorPrecedence: # Not needed
|
59
|
+
Enabled: false
|
60
|
+
|
61
|
+
Style/GlobalVars: # For /exe
|
62
|
+
Enabled: false
|
63
|
+
|
64
|
+
Lint/Debugger: # For /exe
|
65
|
+
Enabled: false
|
66
|
+
|
67
|
+
Style/GuardClause: # For make it extendable
|
68
|
+
Enabled: false
|
69
|
+
|
70
|
+
Layout/EndOfLine: # For git
|
71
|
+
EnforcedStyle: lf
|
72
|
+
|
73
|
+
Lint/ScriptPermission: # For GitHub Actions
|
74
|
+
Enabled: false
|
data/Changelog.md
CHANGED
@@ -4,6 +4,36 @@
|
|
4
4
|
|
5
5
|
# Changelog
|
6
6
|
|
7
|
+
## v0.15
|
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
|
+
|
18
|
+
### v0.15.0
|
19
|
+
|
20
|
+
- Add: Migrate to API v10
|
21
|
+
- Add: Add `TextChannel#threads`
|
22
|
+
- Add: Support editing attachments
|
23
|
+
- Delete!: Delete File class - Use Attachment class instead
|
24
|
+
|
25
|
+
## v0.14
|
26
|
+
|
27
|
+
### v0.14.0
|
28
|
+
|
29
|
+
- Add: Support Modal interaction
|
30
|
+
- Add: Support attachment option type in slash command
|
31
|
+
- Fix: Connections will no longer stacked
|
32
|
+
- Fix: Fix Client#fetch_nitro_sticker_packs returning 404
|
33
|
+
- Fix: Fix `self` reference in subcommand of extension
|
34
|
+
- Refactor: Refactored many things
|
35
|
+
- Refactor: Add Rubocop
|
36
|
+
|
7
37
|
## v0.13
|
8
38
|
|
9
39
|
### v0.13.4
|
data/Gemfile
CHANGED
@@ -13,9 +13,13 @@ group :development, optional: true do
|
|
13
13
|
end
|
14
14
|
|
15
15
|
group :docs, optional: true do
|
16
|
-
gem "redcarpet"
|
17
|
-
gem "yard", "~> 0.9.26"
|
18
|
-
gem "gettext", "~> 3.4.1"
|
19
16
|
gem "crowdin-api", "~> 1.0"
|
17
|
+
gem "gettext", "~> 3.4.1"
|
18
|
+
gem "redcarpet"
|
20
19
|
gem "rubyzip", "~> 2.3"
|
20
|
+
gem "yard", "~> 0.9.26"
|
21
|
+
end
|
22
|
+
|
23
|
+
group :lint, optional: true do
|
24
|
+
gem "rubocop", "~> 1.25"
|
21
25
|
end
|
data/Rakefile
CHANGED
@@ -5,15 +5,14 @@ require_relative "lib/discorb/utils/colored_puts"
|
|
5
5
|
task default: %i[]
|
6
6
|
|
7
7
|
# @private
|
8
|
-
def
|
8
|
+
def current_version
|
9
9
|
require_relative "lib/discorb/common"
|
10
10
|
tag = `git tag --points-at HEAD`.force_encoding("utf-8").strip
|
11
11
|
if tag.empty?
|
12
|
-
|
12
|
+
"main"
|
13
13
|
else
|
14
|
-
|
14
|
+
Discorb::VERSION
|
15
15
|
end
|
16
|
-
version
|
17
16
|
end
|
18
17
|
|
19
18
|
desc "Build emoji_table.rb"
|
@@ -63,8 +62,7 @@ end
|
|
63
62
|
|
64
63
|
desc "Generate document and replace"
|
65
64
|
namespace :document do
|
66
|
-
version =
|
67
|
-
|
65
|
+
version = current_version
|
68
66
|
desc "Just generate document"
|
69
67
|
task :yard do
|
70
68
|
sh "bundle exec yardoc -o doc/#{version} --locale #{ENV["rake_locale"] or "en"}"
|
@@ -86,12 +84,12 @@ namespace :document do
|
|
86
84
|
|
87
85
|
desc "Replace HTML"
|
88
86
|
task :html do
|
89
|
-
require_relative "template-replace/scripts/sidebar
|
90
|
-
require_relative "template-replace/scripts/version
|
91
|
-
require_relative "template-replace/scripts/index
|
92
|
-
require_relative "template-replace/scripts/yard_replace
|
93
|
-
require_relative "template-replace/scripts/favicon
|
94
|
-
require_relative "template-replace/scripts/arrow
|
87
|
+
require_relative "template-replace/scripts/sidebar"
|
88
|
+
require_relative "template-replace/scripts/version"
|
89
|
+
require_relative "template-replace/scripts/index"
|
90
|
+
require_relative "template-replace/scripts/yard_replace"
|
91
|
+
require_relative "template-replace/scripts/favicon"
|
92
|
+
require_relative "template-replace/scripts/arrow"
|
95
93
|
iputs "Resetting changes"
|
96
94
|
Dir.glob("doc/#{version}/**/*.html") do |f|
|
97
95
|
next if (m = f.match(/[0-9]+\.[0-9]+\.[0-9]+(-[a-z]+)?/)) && m[0] != version
|
@@ -143,20 +141,18 @@ namespace :document do
|
|
143
141
|
replace_locale("doc/main")
|
144
142
|
end
|
145
143
|
end
|
146
|
-
task :
|
144
|
+
task replace: %i[replace:css replace:html replace:eol]
|
147
145
|
|
148
146
|
desc "Build all versions"
|
149
147
|
task :build_all do
|
150
148
|
require "fileutils"
|
151
149
|
|
152
|
-
class Bundler::Definition
|
153
|
-
def validate_platforms!
|
154
|
-
# noop
|
155
|
-
end
|
156
|
-
end
|
157
|
-
|
158
150
|
iputs "Building all versions"
|
159
|
-
|
151
|
+
begin
|
152
|
+
FileUtils.rm_rf("doc")
|
153
|
+
rescue StandardError
|
154
|
+
nil
|
155
|
+
end
|
160
156
|
FileUtils.cp_r("./template-replace/.", "./tmp-template-replace")
|
161
157
|
Rake::Task["document:yard"].execute
|
162
158
|
Rake::Task["document:replace:html"].execute
|
@@ -181,7 +177,7 @@ namespace :document do
|
|
181
177
|
FileUtils.cp_r("./tmp-doc/.", "./doc")
|
182
178
|
FileUtils.cp_r("./doc/#{tags.last.delete_prefix("v")}/.", "./doc")
|
183
179
|
sputs "Successfully built all versions"
|
184
|
-
rescue => e
|
180
|
+
rescue StandardError => e
|
185
181
|
sh "git switch main -f"
|
186
182
|
raise e
|
187
183
|
end
|
@@ -322,4 +318,14 @@ task :rbs do
|
|
322
318
|
File.write("sig/discorb.rbs", base)
|
323
319
|
end
|
324
320
|
|
325
|
-
task :
|
321
|
+
task document: %i[document:yard document:replace]
|
322
|
+
|
323
|
+
desc "Lint code with rubocop"
|
324
|
+
task :lint do
|
325
|
+
sh "rubocop lib"
|
326
|
+
end
|
327
|
+
|
328
|
+
desc "Autofix code with rubocop"
|
329
|
+
task "lint:fix" do
|
330
|
+
sh "rubocop lib -A"
|
331
|
+
end
|
data/discorb.gemspec
CHANGED
@@ -46,4 +46,5 @@ Gem::Specification.new do |spec|
|
|
46
46
|
spec.add_dependency "mime-types", "~> 3.3"
|
47
47
|
# For more information and examples about making a new gem, checkout our
|
48
48
|
# guide at: https://bundler.io/guides/creating_gem.html
|
49
|
+
spec.metadata["rubygems_mfa_required"] = "true"
|
49
50
|
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}.
|
data/docs/faq.md
CHANGED
@@ -62,19 +62,19 @@ client.on :ready do
|
|
62
62
|
end
|
63
63
|
```
|
64
64
|
|
65
|
-
### How can I send
|
65
|
+
### How can I send attachments?
|
66
66
|
|
67
|
-
Use {Discorb::
|
67
|
+
Use {Discorb::Attachment} class.
|
68
68
|
|
69
69
|
```ruby
|
70
|
-
# Send
|
71
|
-
message.channel.post
|
70
|
+
# Send an attachment
|
71
|
+
message.channel.post attachment: Discorb::Attachment.new(File.open("./README.md"))
|
72
72
|
|
73
|
-
# Send some
|
74
|
-
message.channel.post "File!",
|
73
|
+
# Send some attachment with text
|
74
|
+
message.channel.post "File!", attachments: [Discorb::Attachment.new("./README.md"), Discorb::Attachment.new(File.open("./License.txt"))]
|
75
75
|
|
76
|
-
# Send a string as
|
77
|
-
message.channel.post
|
76
|
+
# Send a string as an attachment
|
77
|
+
message.channel.post attachments: Discorb::Attachment.from_string("Hello world!", "hello.txt")
|
78
78
|
```
|
79
79
|
|
80
80
|
### How can I add reactions?
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require "discorb"
|
2
3
|
require "json"
|
3
4
|
|
@@ -20,7 +21,7 @@ def build_embed_from_message(message)
|
|
20
21
|
embed
|
21
22
|
end
|
22
23
|
|
23
|
-
client.message_command("Bookmark", guild_ids: [
|
24
|
+
client.message_command("Bookmark", guild_ids: [857_373_681_096_327_180]) do |interaction, message|
|
24
25
|
unless channel = bookmark_channel(interaction.guild)
|
25
26
|
interaction.post("Bookmark channel not found. Please create one called `bookmarks`.", ephemeral: true)
|
26
27
|
next
|
data/examples/commands/hello.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require "discorb"
|
2
3
|
|
3
4
|
client = Discorb::Client.new
|
@@ -6,7 +7,7 @@ client.once :standby do
|
|
6
7
|
puts "Logged in as #{client.user}"
|
7
8
|
end
|
8
9
|
|
9
|
-
client.user_command("Info", guild_ids: [
|
10
|
+
client.user_command("Info", guild_ids: [857_373_681_096_327_180]) do |interaction|
|
10
11
|
interaction.post(embed: Discorb::Embed.new(
|
11
12
|
"Information of #{interaction.target.to_s_user}",
|
12
13
|
fields: [
|
@@ -14,7 +15,7 @@ client.user_command("Info", guild_ids: [857373681096327180]) do |interaction|
|
|
14
15
|
Discorb::Embed::Field.new("ID", interaction.target.id),
|
15
16
|
Discorb::Embed::Field.new("Bot", interaction.target.bot? ? "Yes" : "No"),
|
16
17
|
Discorb::Embed::Field.new("Joined at", interaction.target.joined_at.to_df("F")),
|
17
|
-
Discorb::Embed::Field.new("Created at", interaction.target.created_at.to_df("F"))
|
18
|
+
Discorb::Embed::Field.new("Created at", interaction.target.created_at.to_df("F"))
|
18
19
|
],
|
19
20
|
thumbnail: interaction.target.avatar&.url,
|
20
21
|
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require "discorb"
|
2
3
|
|
3
4
|
client = Discorb::Client.new
|
@@ -21,7 +22,7 @@ SECTIONS = [
|
|
21
22
|
> So I decided to make it.
|
22
23
|
Matsumoto describes the design of Ruby as being like a simple Lisp language at its core, with an object system like that of Smalltalk, blocks inspired by higher-order functions, and practical utility like that of Perl.
|
23
24
|
WIKI
|
24
|
-
["First publication", <<~WIKI]
|
25
|
+
["First publication", <<~WIKI]
|
25
26
|
The first public release of Ruby 0.95 was announced on Japanese domestic newsgroups on December 21, 1995.
|
26
27
|
Subsequently, three more versions of Ruby were released in two days.
|
27
28
|
The release coincided with the launch of the Japanese-language ruby-list mailing list, which was the first mailing list for the new language.
|
data/examples/extension/main.rb
CHANGED
data/examples/simple/eval.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require "discorb"
|
2
3
|
|
3
4
|
client = Discorb::Client.new
|
@@ -24,8 +25,8 @@ client.on :message do |message|
|
|
24
25
|
res = res.wait if res.is_a? Async::Task
|
25
26
|
message.channel.post("```rb\n#{res.inspect[...1990]}\n```")
|
26
27
|
end
|
27
|
-
rescue Exception =>
|
28
|
-
message.reply embed: Discorb::Embed.new("Error!", "```rb\n#{
|
28
|
+
rescue Exception => e
|
29
|
+
message.reply embed: Discorb::Embed.new("Error!", "```rb\n#{e.full_message(highlight: false)[...1990]}\n```",
|
29
30
|
color: Discorb::Color[:red])
|
30
31
|
end
|
31
32
|
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require "discorb"
|
2
3
|
|
3
4
|
client = Discorb::Client.new
|
@@ -10,16 +11,16 @@ client.on :message do |message|
|
|
10
11
|
next if message.author.bot?
|
11
12
|
next unless message.content == "!quiz"
|
12
13
|
|
13
|
-
operator = [
|
14
|
+
operator = %i[+ - *].sample
|
14
15
|
num1 = rand(1..10)
|
15
16
|
num2 = rand(1..10)
|
16
17
|
|
17
18
|
val = num1.send(operator, num2)
|
18
19
|
message.channel.post("Quiz: `#{num1} #{operator} #{num2}`")
|
19
20
|
begin
|
20
|
-
msg = client.event_lock(:message, 30)
|
21
|
+
msg = client.event_lock(:message, 30) do |m|
|
21
22
|
m.content == val.to_s && m.channel == message.channel
|
22
|
-
|
23
|
+
end.wait
|
23
24
|
rescue Discorb::TimeoutError
|
24
25
|
message.channel.post("No one answered...")
|
25
26
|
else
|
data/exe/discorb
CHANGED
@@ -1,24 +1,25 @@
|
|
1
1
|
#! /usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
2
3
|
|
3
4
|
script = ARGV[0]
|
4
5
|
|
5
6
|
if script.nil?
|
6
7
|
puts "\e[94mThis is a tool for discorb. Currently these tools are available:\e[m"
|
7
8
|
|
8
|
-
discorb_path =
|
9
|
+
discorb_path = $LOAD_PATH.find { |path| File.directory?(path + "/discorb") }
|
9
10
|
scripts = {}
|
10
|
-
Dir.glob(discorb_path + "/discorb/exe/*.rb") do |
|
11
|
-
name = File.basename(
|
12
|
-
description = File.read(
|
11
|
+
Dir.glob(discorb_path + "/discorb/exe/*.rb") do |exe_script|
|
12
|
+
name = File.basename(exe_script, ".rb")
|
13
|
+
description = File.read(exe_script).match(/# description: (.+)/)&.[](1) || "No description"
|
13
14
|
scripts[name] = description
|
14
15
|
end
|
15
|
-
max_length = scripts.keys.map
|
16
|
+
max_length = scripts.keys.map(&:length).max
|
16
17
|
scripts.sort.each do |name, description|
|
17
18
|
puts "\e[90m#{name.rjust(max_length)}\e[m - #{description}"
|
18
19
|
end
|
19
20
|
|
20
|
-
puts "\e[94m\nTo run a tool, type:\e[m\n"
|
21
|
-
|
21
|
+
puts "\e[94m\nTo run a tool, type:\e[m\n" \
|
22
|
+
"\e[34m discorb [script]\e[m"
|
22
23
|
|
23
24
|
exit 1
|
24
25
|
end
|