discorb 0.2.5 → 0.4.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/.github/workflows/build_main.yml +51 -0
- data/.gitignore +5 -1
- data/.yardopts +1 -1
- data/Changelog.md +22 -1
- data/Gemfile.lock +8 -7
- data/Rakefile +60 -27
- data/discorb.gemspec +4 -4
- data/docs/application_command.md +7 -1
- data/docs/cli/init.md +55 -0
- data/docs/{discord_irb.md → cli/irb.md} +5 -7
- data/docs/cli/run.md +46 -0
- data/docs/cli/setup.md +17 -0
- data/docs/cli.md +25 -0
- data/exe/discorb +31 -0
- data/lib/discorb/audit_logs.rb +3 -0
- data/lib/discorb/client.rb +59 -13
- data/lib/discorb/command.rb +0 -1
- data/lib/discorb/common.rb +1 -1
- data/lib/discorb/dictionary.rb +3 -0
- data/lib/discorb/error.rb +15 -0
- data/lib/discorb/exe/about.rb +14 -0
- data/lib/discorb/exe/init.rb +195 -0
- data/{exe/discord-irb → lib/discorb/exe/irb.rb} +11 -3
- data/lib/discorb/exe/run.rb +49 -0
- data/lib/discorb/exe/setup.rb +26 -0
- data/lib/discorb/exe/show.rb +8 -0
- data/lib/discorb/flag.rb +3 -0
- data/lib/discorb/gateway.rb +0 -1
- data/lib/discorb/http.rb +16 -24
- data/lib/discorb/intents.rb +3 -0
- data/lib/discorb/log.rb +4 -3
- data/lib/discorb/permission.rb +3 -0
- data/lib/discorb/utils/colored_puts.rb +14 -0
- data/template-replace/files/css/common.css +13 -2
- data/template-replace/resources/version_list.html +2 -2
- data/template-replace/scripts/version.rb +15 -3
- metadata +30 -18
@@ -1,5 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
+
# description: Connect to discord and start IRB.
|
4
|
+
|
3
5
|
require "io/console"
|
4
6
|
require "discorb"
|
5
7
|
require "optparse"
|
@@ -7,10 +9,16 @@ require "optparse"
|
|
7
9
|
intents_value = Discorb::Intents.all.value
|
8
10
|
token_file = "token"
|
9
11
|
|
10
|
-
|
12
|
+
ARGV.delete_at 0
|
13
|
+
|
14
|
+
opt = OptionParser.new <<~BANNER
|
15
|
+
This command will start an interactive Ruby shell with connected client.
|
16
|
+
|
17
|
+
Usage: discorb irb [options]
|
18
|
+
BANNER
|
11
19
|
opt.on("-i", "--intents", "intents to use, default to all") { |v| intents_value = v }
|
12
20
|
opt.on("-t", "--token-file", "token file to load, default to \"token\"") { |v| token_file = v }
|
13
|
-
opt.parse(ARGV)
|
21
|
+
opt.parse!(ARGV)
|
14
22
|
|
15
23
|
client = Discorb::Client.new(intents: Discorb::Intents.from_value(intents_value))
|
16
24
|
$messages = []
|
@@ -28,7 +36,7 @@ client.on :ready do
|
|
28
36
|
This is a debug client for Discord.
|
29
37
|
\e[90mmessage\e[m to get latest message.
|
30
38
|
|
31
|
-
\e[36mhttps://
|
39
|
+
\e[36mhttps://discorb-lib.github.io/#{Discorb::VERSION}/file.irb.html\e[m for more information.
|
32
40
|
EOS
|
33
41
|
end
|
34
42
|
|
@@ -0,0 +1,49 @@
|
|
1
|
+
# description: Run a client.
|
2
|
+
require "optparse"
|
3
|
+
require "json"
|
4
|
+
require "discorb/utils/colored_puts"
|
5
|
+
|
6
|
+
ARGV.delete_at 0
|
7
|
+
# @!visibility private
|
8
|
+
LOG_LEVELS = %w[none debug info warn error fatal]
|
9
|
+
|
10
|
+
opt = OptionParser.new <<~BANNER
|
11
|
+
This command will run a client.
|
12
|
+
|
13
|
+
Usage: discorb run [options] [script]
|
14
|
+
|
15
|
+
script The script to run. Defaults to 'main.rb'.
|
16
|
+
BANNER
|
17
|
+
options = {
|
18
|
+
deamon: false,
|
19
|
+
log_level: nil,
|
20
|
+
log_file: nil,
|
21
|
+
log_color: nil,
|
22
|
+
setup: nil,
|
23
|
+
}
|
24
|
+
opt.on("-d", "--deamon", "Run as a daemon.") { |v| options[:daemon] = v }
|
25
|
+
opt.on("-l", "--log-level LEVEL", "Log level.") do |v|
|
26
|
+
unless LOG_LEVELS.include? v.downcase
|
27
|
+
eputs "Invalid log level: \e[31m#{v}\e[91m"
|
28
|
+
eputs "Valid log levels: \e[31m#{LOG_LEVELS.join("\e[91m, \e[31m")}\e[91m"
|
29
|
+
exit 1
|
30
|
+
end
|
31
|
+
options[:log_level] = v.downcase
|
32
|
+
end
|
33
|
+
opt.on("-f", "--log-file FILE", "File to write log to.") { |v| options[:log_file] = v }
|
34
|
+
opt.on("-c", "--[no-]log-color", "Whether to colorize log output.") { |v| options[:log_color] = v }
|
35
|
+
opt.on("-s", "--setup", "Whether to setup application commands.") { |v| options[:setup] = v }
|
36
|
+
opt.parse!(ARGV)
|
37
|
+
|
38
|
+
script = ARGV[0]
|
39
|
+
|
40
|
+
script ||= "main.rb"
|
41
|
+
|
42
|
+
ENV["DISCORB_CLI_FLAG"] = "run"
|
43
|
+
ENV["DISCORB_CLI_OPTIONS"] = JSON.generate(options)
|
44
|
+
|
45
|
+
begin
|
46
|
+
load script
|
47
|
+
rescue LoadError
|
48
|
+
eputs "Could not load script: \e[31m#{script}\e[91m"
|
49
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# description: Setup application commands.
|
2
|
+
require "optparse"
|
3
|
+
require "discorb/utils/colored_puts"
|
4
|
+
|
5
|
+
ARGV.delete_at 0
|
6
|
+
|
7
|
+
opt = OptionParser.new <<~BANNER
|
8
|
+
This command will setup application commands.
|
9
|
+
|
10
|
+
Usage: discorb setup [script]
|
11
|
+
|
12
|
+
script The script to setup.
|
13
|
+
BANNER
|
14
|
+
opt.parse!(ARGV)
|
15
|
+
|
16
|
+
script = ARGV[0]
|
17
|
+
script ||= "main.rb"
|
18
|
+
ENV["DISCORB_CLI_FLAG"] = "setup"
|
19
|
+
|
20
|
+
begin
|
21
|
+
load script
|
22
|
+
rescue LoadError
|
23
|
+
eputs "Could not load script: \e[31m#{script}\e[m"
|
24
|
+
else
|
25
|
+
sputs "Successfully set up commands for \e[32m#{script}\e[m."
|
26
|
+
end
|
data/lib/discorb/flag.rb
CHANGED
data/lib/discorb/gateway.rb
CHANGED
data/lib/discorb/http.rb
CHANGED
@@ -32,12 +32,7 @@ module Discorb
|
|
32
32
|
def get(path, headers: nil, audit_log_reason: nil, **kwargs)
|
33
33
|
Async do |task|
|
34
34
|
resp = http.get(get_path(path), get_headers(headers, "", audit_log_reason), **kwargs)
|
35
|
-
|
36
|
-
data = if rd.nil? || rd.empty?
|
37
|
-
nil
|
38
|
-
else
|
39
|
-
JSON.parse(rd, symbolize_names: true)
|
40
|
-
end
|
35
|
+
data = get_response_data(resp)
|
41
36
|
test_error(if resp.code == "429"
|
42
37
|
@client.log.warn "Ratelimit exceeded for #{path}, trying again in #{data[:retry_after]} seconds."
|
43
38
|
task.sleep(data[:retry_after])
|
@@ -66,12 +61,7 @@ module Discorb
|
|
66
61
|
def post(path, body = "", headers: nil, audit_log_reason: nil, **kwargs)
|
67
62
|
Async do |task|
|
68
63
|
resp = http.post(get_path(path), get_body(body), get_headers(headers, body, audit_log_reason), **kwargs)
|
69
|
-
|
70
|
-
data = if rd.nil? || rd.empty?
|
71
|
-
nil
|
72
|
-
else
|
73
|
-
JSON.parse(rd, symbolize_names: true)
|
74
|
-
end
|
64
|
+
data = get_response_data(resp)
|
75
65
|
test_error(if resp.code == "429"
|
76
66
|
task.sleep(data[:retry_after])
|
77
67
|
post(path, body, headers: headers, audit_log_reason: audit_log_reason, **kwargs).wait
|
@@ -132,12 +122,7 @@ module Discorb
|
|
132
122
|
def put(path, body = "", headers: nil, audit_log_reason: nil, **kwargs)
|
133
123
|
Async do |task|
|
134
124
|
resp = http.put(get_path(path), get_body(body), get_headers(headers, body, audit_log_reason), **kwargs)
|
135
|
-
|
136
|
-
data = if rd.nil? || rd.empty?
|
137
|
-
nil
|
138
|
-
else
|
139
|
-
JSON.parse(rd, symbolize_names: true)
|
140
|
-
end
|
125
|
+
data = get_response_data(resp)
|
141
126
|
test_error(if resp.code == "429"
|
142
127
|
task.sleep(data[:retry_after])
|
143
128
|
put(path, body, headers: headers, audit_log_reason: audit_log_reason, **kwargs).wait
|
@@ -164,12 +149,7 @@ module Discorb
|
|
164
149
|
def delete(path, headers: nil, audit_log_reason: nil, **kwargs)
|
165
150
|
Async do |task|
|
166
151
|
resp = http.delete(get_path(path), get_headers(headers, "", audit_log_reason))
|
167
|
-
|
168
|
-
data = if rd.nil? || rd.empty?
|
169
|
-
nil
|
170
|
-
else
|
171
|
-
JSON.parse(rd, symbolize_names: true)
|
172
|
-
end
|
152
|
+
data = get_response_data(resp)
|
173
153
|
test_error(if resp.code == "429"
|
174
154
|
task.sleep(data[:retry_after])
|
175
155
|
delete(path, headers: headers, audit_log_reason: audit_log_reason, **kwargs).wait
|
@@ -257,6 +237,18 @@ module Discorb
|
|
257
237
|
URI(full_path).path
|
258
238
|
end
|
259
239
|
|
240
|
+
def get_response_data(resp)
|
241
|
+
if resp["Via"].nil?
|
242
|
+
raise CloudFlareBanError.new(@client, resp)
|
243
|
+
end
|
244
|
+
rd = resp.body
|
245
|
+
if rd.nil? || rd.empty?
|
246
|
+
nil
|
247
|
+
else
|
248
|
+
JSON.parse(rd, symbolize_names: true)
|
249
|
+
end
|
250
|
+
end
|
251
|
+
|
260
252
|
def http
|
261
253
|
https = Net::HTTP.new("discord.com", 443)
|
262
254
|
https.use_ssl = true
|
data/lib/discorb/intents.rb
CHANGED
data/lib/discorb/log.rb
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
module Discorb
|
4
4
|
# @!visibility private
|
5
5
|
class Logger
|
6
|
-
|
6
|
+
attr_accessor :out, :colorize_log
|
7
7
|
|
8
8
|
@levels = %i[debug info warn error fatal].freeze
|
9
9
|
|
@@ -14,11 +14,12 @@ module Discorb
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def level
|
17
|
-
|
17
|
+
self.class.levels[@level]
|
18
18
|
end
|
19
19
|
|
20
20
|
def level=(level)
|
21
|
-
@level =
|
21
|
+
@level = self.class.levels.index(level)
|
22
|
+
raise ArgumentError, "Invalid log level: #{level}" unless @level
|
22
23
|
end
|
23
24
|
|
24
25
|
def debug(message)
|
data/lib/discorb/permission.rb
CHANGED
@@ -216,8 +216,8 @@ tt {
|
|
216
216
|
font-family: var(--monospace-font);
|
217
217
|
}
|
218
218
|
|
219
|
-
pre.code {
|
220
|
-
color: var(--header-secondary);
|
219
|
+
pre.code code {
|
220
|
+
color: var(--header-secondary) !important;
|
221
221
|
tab-size: 2;
|
222
222
|
}
|
223
223
|
|
@@ -310,6 +310,11 @@ li.even {
|
|
310
310
|
background: var(--background-secondary);
|
311
311
|
}
|
312
312
|
|
313
|
+
li.current {
|
314
|
+
background: var(--background-tertiary);
|
315
|
+
}
|
316
|
+
|
317
|
+
|
313
318
|
.item:hover {
|
314
319
|
background: var(--background-secondary-alt);
|
315
320
|
}
|
@@ -516,4 +521,10 @@ li.r2 {
|
|
516
521
|
border-color: var(--background-tertiary);
|
517
522
|
color: var(--interactive-active);
|
518
523
|
fill: var(--interactive-active);
|
524
|
+
}
|
525
|
+
|
526
|
+
dd pre.code {
|
527
|
+
padding: 9px 14px;
|
528
|
+
border-radius: 4px;
|
529
|
+
border: 1px solid var(--background-tertiary);
|
519
530
|
}
|
@@ -47,9 +47,9 @@
|
|
47
47
|
<ul id="full_list" class="method">
|
48
48
|
<!--replace-->
|
49
49
|
<!--template-->
|
50
|
-
<li class="!
|
50
|
+
<li class="!class!">
|
51
51
|
<div class="item">
|
52
|
-
<span class='object_link'><a href="
|
52
|
+
<span class='object_link'><a href="!path!/index.html" title="!version!">!version!</a></span>
|
53
53
|
<small class='git_sha'>!sha!</small>
|
54
54
|
</div>
|
55
55
|
</li>
|
@@ -1,12 +1,24 @@
|
|
1
|
-
def build_version_sidebar(dir)
|
1
|
+
def build_version_sidebar(dir, version)
|
2
2
|
raw = File.read("template-replace/resources/version_list.html")
|
3
3
|
template = raw.match(/<!--template-->(.*)<!--endtemplate-->/m)[1]
|
4
4
|
raw.gsub!(template, "")
|
5
5
|
res = +""
|
6
|
-
|
6
|
+
i = 0
|
7
|
+
`git tag`.force_encoding("utf-8").split("\n").each.with_index do |tag|
|
8
|
+
i += 1
|
7
9
|
sha = `git rev-parse #{tag}`.force_encoding("utf-8").strip
|
8
10
|
version = tag.delete_prefix("v")
|
9
|
-
|
11
|
+
cls = i % 2 == 0 ? "even" : "odd"
|
12
|
+
if version == "."
|
13
|
+
cls += " current"
|
14
|
+
end
|
15
|
+
res += template.gsub("!version!", version).gsub("!path!", "../" + version).gsub("!class!", cls).gsub("!sha!", sha)
|
10
16
|
end
|
17
|
+
i += 1
|
18
|
+
cls = i % 2 == 0 ? "even" : "odd"
|
19
|
+
if version == "main"
|
20
|
+
cls += " current"
|
21
|
+
end
|
22
|
+
res += template.gsub("!version!", "main").gsub("!path!", "../main").gsub("!class!", cls).gsub("!sha!", "(Latest on GitHub)")
|
11
23
|
File.write(dir + "/version_list.html", raw.gsub("<!--replace-->", res))
|
12
24
|
end
|
metadata
CHANGED
@@ -1,57 +1,57 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: discorb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- sevenc-nanashi
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-09-
|
11
|
+
date: 2021-09-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: async
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 1.30.1
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 1.30.1
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: async-http
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 0.56.5
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 0.56.5
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: async-websocket
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
47
|
+
version: 0.19.0
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - "
|
52
|
+
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
54
|
+
version: 0.19.0
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: mime-types
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -70,10 +70,11 @@ description:
|
|
70
70
|
email:
|
71
71
|
- sevenc-nanashi@sevenbot.jp
|
72
72
|
executables:
|
73
|
-
-
|
73
|
+
- discorb
|
74
74
|
extensions: []
|
75
75
|
extra_rdoc_files: []
|
76
76
|
files:
|
77
|
+
- ".github/workflows/build_main.yml"
|
77
78
|
- ".gitignore"
|
78
79
|
- ".yardopts"
|
79
80
|
- Changelog.md
|
@@ -88,7 +89,11 @@ files:
|
|
88
89
|
- discorb.gemspec
|
89
90
|
- docs/Examples.md
|
90
91
|
- docs/application_command.md
|
91
|
-
- docs/
|
92
|
+
- docs/cli.md
|
93
|
+
- docs/cli/init.md
|
94
|
+
- docs/cli/irb.md
|
95
|
+
- docs/cli/run.md
|
96
|
+
- docs/cli/setup.md
|
92
97
|
- docs/events.md
|
93
98
|
- docs/extension.md
|
94
99
|
- docs/voice_events.md
|
@@ -103,7 +108,7 @@ files:
|
|
103
108
|
- examples/simple/ping_pong.rb
|
104
109
|
- examples/simple/rolepanel.rb
|
105
110
|
- examples/simple/wait_for_message.rb
|
106
|
-
- exe/
|
111
|
+
- exe/discorb
|
107
112
|
- lib/discorb.rb
|
108
113
|
- lib/discorb/application.rb
|
109
114
|
- lib/discorb/asset.rb
|
@@ -120,6 +125,12 @@ files:
|
|
120
125
|
- lib/discorb/emoji_table.rb
|
121
126
|
- lib/discorb/error.rb
|
122
127
|
- lib/discorb/event.rb
|
128
|
+
- lib/discorb/exe/about.rb
|
129
|
+
- lib/discorb/exe/init.rb
|
130
|
+
- lib/discorb/exe/irb.rb
|
131
|
+
- lib/discorb/exe/run.rb
|
132
|
+
- lib/discorb/exe/setup.rb
|
133
|
+
- lib/discorb/exe/show.rb
|
123
134
|
- lib/discorb/extend.rb
|
124
135
|
- lib/discorb/extension.rb
|
125
136
|
- lib/discorb/file.rb
|
@@ -145,6 +156,7 @@ files:
|
|
145
156
|
- lib/discorb/sticker.rb
|
146
157
|
- lib/discorb/user.rb
|
147
158
|
- lib/discorb/utils.rb
|
159
|
+
- lib/discorb/utils/colored_puts.rb
|
148
160
|
- lib/discorb/voice_state.rb
|
149
161
|
- lib/discorb/webhook.rb
|
150
162
|
- po/yard.pot
|
@@ -161,7 +173,7 @@ metadata:
|
|
161
173
|
allowed_push_host: https://rubygems.org
|
162
174
|
homepage_uri: https://github.com/discorb-lib/discorb
|
163
175
|
source_code_uri: https://github.com/discorb-lib/discorb
|
164
|
-
changelog_uri: https://
|
176
|
+
changelog_uri: https://discorb-lib.github.io/file.Changelog.html
|
165
177
|
documentation_uri: https://discorb-lib.github.io
|
166
178
|
post_install_message:
|
167
179
|
rdoc_options: []
|