discorb 0.9.6 → 0.10.0
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 +298 -266
- data/docs/extension.md +16 -22
- data/docs/license.md +4 -0
- data/examples/extension/main.rb +1 -1
- data/examples/extension/message_expander.rb +4 -6
- data/lib/discorb/client.rb +22 -23
- data/lib/discorb/common.rb +4 -23
- data/lib/discorb/components.rb +1 -1
- data/lib/discorb/extension.rb +60 -47
- data/template-replace/files/css/common.css +1 -0
- data/template-replace/scripts/version.rb +20 -5
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d1b87a672806fd34b5a1a3308bd96db493c13a645a2f4ae7cd6a3b9622cf7a01
|
4
|
+
data.tar.gz: fc1b8e0b433489e1390b958b7b4ebeb9c39c1f2d38ff80c05334dda5f19f3bd8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4c666466d4c10d93e974ecd843d14d9e92b424c18e6fab784dba54ff8c0caf9c5f54feaaa7c03e32f640a237af4ee6795e653691035c3e80e3c7a4af79740143
|
7
|
+
data.tar.gz: 344ecd871e7c1e98a1ad2b68f75f988ee2aabfbe78e24ecf4e8a58da069e04b8e3327f5348414c33a619381c520ea7dbb4fb173cbea6fa153cb2dd5b07b9f9e2
|
data/Changelog.md
CHANGED
@@ -1,266 +1,298 @@
|
|
1
|
-
# Changelog
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
- Add: Add
|
19
|
-
- Fix:
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
- Add:
|
43
|
-
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
-
|
53
|
-
- Add: Add `
|
54
|
-
- Add: Add
|
55
|
-
|
56
|
-
##
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
- Fix: Fix
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
- Add: Add
|
76
|
-
- Change:
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
- Fix: Fix
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
- Add:
|
113
|
-
- Fix: Fix
|
114
|
-
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
-
|
139
|
-
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
- Fix: Fix issue with client with no guilds
|
144
|
-
- Add: Add rbs (experimental)
|
145
|
-
- Add: Add `-t`, `--token` option to `discorb run`
|
146
|
-
- Add: Add `-g`, `--guild` option to `discorb setup`
|
147
|
-
- Change: Use `Async::Task<R>` instead of `R` in return value
|
148
|
-
|
149
|
-
##
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
- Fix: Fix
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
-
|
185
|
-
-
|
186
|
-
- Add: Add
|
187
|
-
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
- Add: Add `
|
210
|
-
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
- Add: Add
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
-
|
253
|
-
- Add: Add
|
254
|
-
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
-
|
265
|
-
|
266
|
-
|
1
|
+
# @title Changelog
|
2
|
+
|
3
|
+
# Changelog
|
4
|
+
|
5
|
+
## v0.10
|
6
|
+
|
7
|
+
### v0.10.0
|
8
|
+
|
9
|
+
- Change: Sort versions
|
10
|
+
- Change: Snowflake is now String
|
11
|
+
- Change: Extension is now Class
|
12
|
+
- Add: Add `SelectMenu#disabled=`
|
13
|
+
|
14
|
+
## v0.9
|
15
|
+
|
16
|
+
### v0.9.6
|
17
|
+
|
18
|
+
- Add: Add `Messageable#send_message` as alias of `Messageable#post`
|
19
|
+
- Fix: Fix interaction responding with updating message
|
20
|
+
- Fix: Fix `MessageComponentInteraction#message`
|
21
|
+
|
22
|
+
### v0.9.5
|
23
|
+
|
24
|
+
- Fix: Fix editing message
|
25
|
+
- Add: Add `required` in slash command argument
|
26
|
+
- Add: Add `default` in slash command argument
|
27
|
+
|
28
|
+
### v0.9.4
|
29
|
+
|
30
|
+
- Change: `Messageable#typing` with block is now synchronous
|
31
|
+
- Fix: Fix some issues in document
|
32
|
+
- Add: Add some attributes to `Message`
|
33
|
+
- Fix: Fix guild parameter in message of message command
|
34
|
+
|
35
|
+
### v0.9.3
|
36
|
+
|
37
|
+
- Fix: Fix interaction responding
|
38
|
+
|
39
|
+
### v0.9.2 (yanked)
|
40
|
+
|
41
|
+
- Add: Make `Async::Task#inspect` shorter
|
42
|
+
- Add: `SourceResponse#post` will return message now
|
43
|
+
- Fix: Fix member caching
|
44
|
+
|
45
|
+
### v0.9.1
|
46
|
+
|
47
|
+
- Fix: Fix member fetching
|
48
|
+
|
49
|
+
### v0.9.0
|
50
|
+
|
51
|
+
- Delete: Delete `-d` parameter from `discorb run`; This is caused by segement fault error.
|
52
|
+
- Change: Rename `-t`, `--token` to `-e`, `--env` parameter
|
53
|
+
- Add: Add `-t`, `--title` parameter to `discorb run`
|
54
|
+
- Add: Add `title` parameter to `Client#initialize`
|
55
|
+
|
56
|
+
## v0.8
|
57
|
+
|
58
|
+
### v0.8.2
|
59
|
+
|
60
|
+
- Fix: Fix `Client#initialize`
|
61
|
+
|
62
|
+
### v0.8.1
|
63
|
+
|
64
|
+
- Add: Add FAQ
|
65
|
+
- Fix: Fix sending files
|
66
|
+
- Add: Add `File.from_string`
|
67
|
+
- Fix: Fix `Client#update_presence`
|
68
|
+
- Add: Add information in `discorb run -d`
|
69
|
+
|
70
|
+
### v0.8.0
|
71
|
+
|
72
|
+
- Add: Add `Guild#fetch_members`
|
73
|
+
- Add: Add `Guild#fetch_member_list` as alias of `Guild#fetch_members`
|
74
|
+
- Add: Add `Intents#to_h`
|
75
|
+
- Add: Add `fetch_member` parameter to `Client#initialize`; Note you should set `false` if your bot doesn't have `GUILD_MEMBERS` intent
|
76
|
+
- Change: Change `ready` to `standby` event
|
77
|
+
- Change: `ready` will be fired when client receives `READY` event
|
78
|
+
|
79
|
+
## v0.7
|
80
|
+
|
81
|
+
### v0.7.6
|
82
|
+
|
83
|
+
- Fix: Fix heartbeating error
|
84
|
+
|
85
|
+
### v0.7.5 (yanked)
|
86
|
+
|
87
|
+
- Fix: Fix critical error
|
88
|
+
|
89
|
+
### v0.7.4 (yanked)
|
90
|
+
|
91
|
+
- Fix: Fix disconnected client
|
92
|
+
|
93
|
+
### v0.7.3
|
94
|
+
|
95
|
+
- Add: Improve `discorb init`
|
96
|
+
|
97
|
+
### v0.7.2
|
98
|
+
|
99
|
+
- Add: Add `Member#owner?`
|
100
|
+
- Fix: Fix `Member#permissions`
|
101
|
+
- Add: Add `Member#guild_permissions` as alias of `Member#permissions`
|
102
|
+
- Add: Add default role to `Member#roles`
|
103
|
+
- Fix: Fix error in `Integration#_set_data`
|
104
|
+
- Change: Reverse `Member#roles`
|
105
|
+
|
106
|
+
### v0.7.1
|
107
|
+
|
108
|
+
- Fix: Fix error of responding to interaction
|
109
|
+
|
110
|
+
### v0.7.0
|
111
|
+
|
112
|
+
- Add: Add `error` event
|
113
|
+
- Fix: Fix some issues with client without guild intent
|
114
|
+
- Add: Add alias for `#fired_by`
|
115
|
+
- Change!: Change block usage of `ApplicationCommand::Handler#group`
|
116
|
+
|
117
|
+
```ruby
|
118
|
+
# before
|
119
|
+
client.slash_group do
|
120
|
+
slash "help", "Help" do |interaction|
|
121
|
+
# ...
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
# after
|
126
|
+
client.slash_group do |group|
|
127
|
+
group.slash "help", "Help" do |interaction|
|
128
|
+
# ...
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
```
|
133
|
+
|
134
|
+
## v0.6
|
135
|
+
|
136
|
+
### v0.6.1
|
137
|
+
|
138
|
+
- Change: Rename `Event#discriminator` to `Event#metadata`
|
139
|
+
- Add: Add `:override` to `Client#on`
|
140
|
+
|
141
|
+
### v0.6.0
|
142
|
+
|
143
|
+
- Fix: Fix issue with client with no guilds
|
144
|
+
- Add: Add rbs (experimental)
|
145
|
+
- Add: Add `-t`, `--token` option to `discorb run`
|
146
|
+
- Add: Add `-g`, `--guild` option to `discorb setup`
|
147
|
+
- Change: Use `Async::Task<R>` instead of `R` in return value
|
148
|
+
|
149
|
+
## v0.5
|
150
|
+
|
151
|
+
### v0.5.6
|
152
|
+
|
153
|
+
- Add: Raise error when intents are invalid
|
154
|
+
- Fix: Fix Emoji#==
|
155
|
+
|
156
|
+
### v0.5.5
|
157
|
+
|
158
|
+
- Fix: Fix some bugs
|
159
|
+
|
160
|
+
### v0.5.4
|
161
|
+
|
162
|
+
- Fix: Fix issue of receiving component events
|
163
|
+
|
164
|
+
### v0.5.3
|
165
|
+
|
166
|
+
- Add: Add way to handle raw events with `event_xxx`
|
167
|
+
- Add: Add `Client#session_id`
|
168
|
+
- Add: Add `Connectable`
|
169
|
+
- Fix: Fix error by sending DM
|
170
|
+
|
171
|
+
### v0.5.2
|
172
|
+
|
173
|
+
- Fix: Fix bug of registering commands
|
174
|
+
- Add: Add way to register commands in Extension
|
175
|
+
|
176
|
+
### v0.5.1
|
177
|
+
|
178
|
+
- Add: Can use block for defining group commands
|
179
|
+
- Fix: Fix bug in subcommands
|
180
|
+
- Fix: Fix bug in receiving commands
|
181
|
+
|
182
|
+
### v0.5.0
|
183
|
+
|
184
|
+
- Change: Use zlib stream instead
|
185
|
+
- Add: Add tutorials
|
186
|
+
- Add: Add ratelimit handler
|
187
|
+
- Change: Make `--git` option in `discorb init` false
|
188
|
+
|
189
|
+
## v0.4
|
190
|
+
|
191
|
+
### v0.4.2
|
192
|
+
|
193
|
+
- Fix: Fix error in `discorb run`
|
194
|
+
|
195
|
+
### v0.4.1
|
196
|
+
|
197
|
+
- Add: Add `-s` option to `discorb run`
|
198
|
+
|
199
|
+
### v0.4.0
|
200
|
+
|
201
|
+
- Add: Add `discorb setup`
|
202
|
+
- Add: Add `discorb run`
|
203
|
+
- Add: Add realtime documentation
|
204
|
+
|
205
|
+
## v0.3
|
206
|
+
|
207
|
+
### v0.3.1
|
208
|
+
|
209
|
+
- Add: Add `discorb show`
|
210
|
+
- Fix: Fix documenting
|
211
|
+
|
212
|
+
### v0.3.0
|
213
|
+
|
214
|
+
- Add: Improve CLI tools
|
215
|
+
- Add: Add `discorb init`
|
216
|
+
- Change: Change `discord-irb` to `discorb irb`
|
217
|
+
|
218
|
+
## v0.2
|
219
|
+
|
220
|
+
### v0.2.5
|
221
|
+
|
222
|
+
- Add: Add way to add event listener
|
223
|
+
- Change: Move document to https://discorb-lib.github.io/
|
224
|
+
|
225
|
+
### v0.2.4
|
226
|
+
|
227
|
+
- Fix: Fix error in `Embed#image=`, `Embed#thumbnail=`
|
228
|
+
|
229
|
+
### v0.2.3
|
230
|
+
|
231
|
+
- Fix: Fix critical error
|
232
|
+
|
233
|
+
### v0.2.2 (yanked)
|
234
|
+
|
235
|
+
- Add: Add `Snowflake#to_str`
|
236
|
+
|
237
|
+
### v0.2.1
|
238
|
+
|
239
|
+
- Fix: Fix NoMethodError in reaction event
|
240
|
+
- Add: Add Changelog.md to document
|
241
|
+
|
242
|
+
### v0.2.0
|
243
|
+
|
244
|
+
- Fix: Fix unused dependency
|
245
|
+
- Add: Add `Client#close!`
|
246
|
+
- Add: Add discord-irb
|
247
|
+
|
248
|
+
## v0.1
|
249
|
+
|
250
|
+
### v0.1.0
|
251
|
+
|
252
|
+
- Add: Add `User#created_at`
|
253
|
+
- Add: Add `Member#to_s_user`
|
254
|
+
- Add: Add `DefaultAvatar`
|
255
|
+
- Add: Support application commands
|
256
|
+
- Add: Add `Client#ping`
|
257
|
+
- Add: Allow `String` for `Embed#initialize`
|
258
|
+
- Change: Change log format
|
259
|
+
|
260
|
+
## v0.0
|
261
|
+
|
262
|
+
### v0.0.8
|
263
|
+
|
264
|
+
- Delete: Delete task parameter
|
265
|
+
|
266
|
+
### v0.0.7
|
267
|
+
|
268
|
+
- Fix: Fix `member_xxx` event
|
269
|
+
|
270
|
+
### v0.0.6
|
271
|
+
|
272
|
+
- Fix: Fix error in client without members intent
|
273
|
+
- Add: Add ThreadChannel::News
|
274
|
+
- Add: Add official discord link
|
275
|
+
|
276
|
+
### v0.0.5
|
277
|
+
|
278
|
+
- Fix: Fix GitHub link
|
279
|
+
- Change: Internet to HTTP
|
280
|
+
|
281
|
+
### v0.0.4
|
282
|
+
|
283
|
+
- Fix: Fix NoMethodError by webhook message
|
284
|
+
- Add: Add `#author` to webhook message
|
285
|
+
- Fix: Add `#bot?` to webhook author
|
286
|
+
|
287
|
+
### v0.0.3
|
288
|
+
|
289
|
+
- Fix: Fix no dependencies
|
290
|
+
|
291
|
+
### v0.0.2
|
292
|
+
|
293
|
+
- Fix: Fix rubygems description
|
294
|
+
|
295
|
+
### v0.0.1
|
296
|
+
|
297
|
+
- Initial release
|
298
|
+
|
data/docs/extension.md
CHANGED
@@ -2,16 +2,16 @@
|
|
2
2
|
|
3
3
|
# Extension
|
4
4
|
|
5
|
-
Extension allows you to
|
5
|
+
Extension allows you to seperate your code from the main application.
|
6
|
+
|
7
|
+
# @since
|
6
8
|
|
7
9
|
## Make a new extension
|
8
10
|
|
9
|
-
Make a new
|
11
|
+
Make a new class that extends Extension.
|
10
12
|
|
11
13
|
```ruby
|
12
|
-
|
13
|
-
extend Discorb::Extension
|
14
|
-
|
14
|
+
class MyExtension < Discorb::Extension
|
15
15
|
# ...
|
16
16
|
end
|
17
17
|
```
|
@@ -21,27 +21,25 @@ end
|
|
21
21
|
Use {Discorb::Extension.event} to register event, or {Discorb::Extension.once_event} to register event only once.
|
22
22
|
|
23
23
|
```ruby
|
24
|
-
|
25
|
-
extend Discorb::Extension
|
26
|
-
|
24
|
+
class MyExtension < Discorb::Extension
|
27
25
|
event :message do |message|
|
28
26
|
# ...
|
29
27
|
end
|
30
28
|
|
31
|
-
once_event :
|
29
|
+
once_event :standby do |message|
|
32
30
|
# ...
|
33
31
|
end
|
34
32
|
end
|
35
33
|
```
|
36
34
|
|
35
|
+
Note block will be binded to the extension instance.
|
36
|
+
|
37
37
|
## Register Command
|
38
38
|
|
39
|
-
|
39
|
+
Use `Discorb::Extension.command` to register command, see {Discorb::ApplicationCommand::Handler} for more information.
|
40
40
|
|
41
41
|
```ruby
|
42
|
-
|
43
|
-
extend Discorb::Extension
|
44
|
-
|
42
|
+
class MyExtension < Discorb::Extension
|
45
43
|
slash("command", "Command") do |interaction|
|
46
44
|
# ...
|
47
45
|
end
|
@@ -63,18 +61,16 @@ end
|
|
63
61
|
|
64
62
|
## Load extension
|
65
63
|
|
66
|
-
Use {Discorb::Client#
|
64
|
+
Use {Discorb::Client#load_extension} to load extension.
|
67
65
|
|
68
66
|
```ruby
|
69
|
-
|
70
|
-
extend Discorb::Extension
|
71
|
-
|
67
|
+
class MyExtension < Discorb::Extension
|
72
68
|
event :message do |message|
|
73
69
|
# ...
|
74
70
|
end
|
75
71
|
end
|
76
72
|
|
77
|
-
client.
|
73
|
+
client.load_extension(MyExtension)
|
78
74
|
```
|
79
75
|
|
80
76
|
## Access Client from extension
|
@@ -82,10 +78,8 @@ client.extend MyExtension
|
|
82
78
|
You can access {Discorb::Client} from extension with `@client`.
|
83
79
|
|
84
80
|
```ruby
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
event :ready do |message|
|
81
|
+
class MyExtension < Discorb::Extension
|
82
|
+
event :standby do |message|
|
89
83
|
puts "Logged in as #{@client.user}"
|
90
84
|
end
|
91
85
|
end
|
data/docs/license.md
CHANGED
data/examples/extension/main.rb
CHANGED
@@ -1,9 +1,7 @@
|
|
1
1
|
require "discorb"
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
@message_regex = Regexp.new(
|
3
|
+
class MessageExpander < Discorb::Extension
|
4
|
+
@@message_regex = Regexp.new(
|
7
5
|
'(?!<)https://(?:ptb\.|canary\.)?discord(?:app)?\.com/channels/' \
|
8
6
|
"(?<guild>[0-9]{18})/(?<channel>[0-9]{18})/(?<message>[0-9]{18})(?!>)"
|
9
7
|
)
|
@@ -11,7 +9,7 @@ module MessageExpander
|
|
11
9
|
event :message do |message|
|
12
10
|
next if message.author.bot?
|
13
11
|
|
14
|
-
message.content.to_enum(:scan,
|
12
|
+
message.content.to_enum(:scan, @@message_regex).map { Regexp.last_match }.each do |match|
|
15
13
|
ch = @client.channels[match[:channel]]
|
16
14
|
next if ch.nil?
|
17
15
|
|
@@ -27,7 +25,7 @@ module MessageExpander
|
|
27
25
|
author: Discorb::Embed::Author.new(
|
28
26
|
url_message.author.name,
|
29
27
|
url: url_message.jump_url,
|
30
|
-
icon: url_message.author.
|
28
|
+
icon: url_message.author.avatar.url,
|
31
29
|
),
|
32
30
|
footer: Discorb::Embed::Footer.new(
|
33
31
|
"#{url_message.guild.name} / #{ch.name}",
|
data/lib/discorb/client.rb
CHANGED
@@ -369,31 +369,30 @@ module Discorb
|
|
369
369
|
#
|
370
370
|
# Load the extension.
|
371
371
|
#
|
372
|
-
# @param [
|
373
|
-
#
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
end
|
386
|
-
@commands.delete_if do |cmd|
|
387
|
-
cmd.respond_to? :extension and cmd.extension == mod.name
|
388
|
-
end
|
389
|
-
mod.commands.each do |cmd|
|
390
|
-
cmd.define_singleton_method(:extension) { mod.name }
|
391
|
-
@commands << cmd
|
372
|
+
# @param [Class] ext The extension to load.
|
373
|
+
# @param [Object] ... The arguments to pass to the `ext#initialize`.
|
374
|
+
#
|
375
|
+
def load_extension(ext, ...)
|
376
|
+
raise ArgumentError, "#{ext} is not a extension" unless ext.is_a?(Class) && ext < Discorb::Extension
|
377
|
+
ins = ext.new(self, ...)
|
378
|
+
@events.each_value do |event|
|
379
|
+
event.delete_if { |c| c.metadata[:extension] == ins.class.name }
|
380
|
+
end
|
381
|
+
ins.events.each do |name, events|
|
382
|
+
@events[name] ||= []
|
383
|
+
events.each do |event|
|
384
|
+
@events[name] << event
|
392
385
|
end
|
393
|
-
@bottom_commands += mod.bottom_commands
|
394
|
-
mod.client = self
|
395
386
|
end
|
396
|
-
|
387
|
+
@commands.delete_if do |cmd|
|
388
|
+
cmd.respond_to? :extension and cmd.extension == ins.name
|
389
|
+
end
|
390
|
+
ins.class.commands.each do |cmd|
|
391
|
+
cmd.define_singleton_method(:extension) { ins.name }
|
392
|
+
@commands << cmd
|
393
|
+
end
|
394
|
+
@bottom_commands += ins.class.bottom_commands
|
395
|
+
ins
|
397
396
|
end
|
398
397
|
|
399
398
|
include Discorb::Gateway::Handler
|
data/lib/discorb/common.rb
CHANGED
@@ -4,9 +4,9 @@ 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.
|
7
|
+
VERSION = "0.10.0"
|
8
8
|
# @return [String] The user agent for the bot.
|
9
|
-
USER_AGENT = "DiscordBot (https://
|
9
|
+
USER_AGENT = "DiscordBot (https://discorb-lib.github.io #{VERSION}) Ruby/#{RUBY_VERSION}"
|
10
10
|
|
11
11
|
#
|
12
12
|
# @abstract
|
@@ -39,10 +39,11 @@ module Discorb
|
|
39
39
|
# Represents Snowflake of Discord.
|
40
40
|
#
|
41
41
|
# @see https://discord.com/developers/docs/reference#snowflakes Official Discord API docs
|
42
|
-
class Snowflake <
|
42
|
+
class Snowflake < String
|
43
43
|
# @private
|
44
44
|
def initialize(value)
|
45
45
|
@value = value.to_i
|
46
|
+
super(@value.to_s)
|
46
47
|
end
|
47
48
|
|
48
49
|
# @!attribute [r] timestamp
|
@@ -64,26 +65,6 @@ module Discorb
|
|
64
65
|
#
|
65
66
|
# @return [Integer] Increment of snowflake.
|
66
67
|
|
67
|
-
#
|
68
|
-
# Stringify snowflake.
|
69
|
-
#
|
70
|
-
# @return [String] Stringified snowflake.
|
71
|
-
#
|
72
|
-
def to_s
|
73
|
-
@value.to_s
|
74
|
-
end
|
75
|
-
|
76
|
-
alias to_str to_s
|
77
|
-
|
78
|
-
#
|
79
|
-
# Integerize snowflake.
|
80
|
-
#
|
81
|
-
# @return [Integer] Integerized snowflake.
|
82
|
-
#
|
83
|
-
def to_i
|
84
|
-
@value.to_i
|
85
|
-
end
|
86
|
-
|
87
68
|
#
|
88
69
|
# Compares snowflake with other object.
|
89
70
|
#
|
data/lib/discorb/components.rb
CHANGED
@@ -180,7 +180,7 @@ module Discorb
|
|
180
180
|
# @return [Integer] The maximum number of values.
|
181
181
|
attr_accessor :max_values
|
182
182
|
# @return [Boolean] Whether the select menu is disabled.
|
183
|
-
|
183
|
+
attr_accessor :disabled
|
184
184
|
alias disabled? disabled
|
185
185
|
|
186
186
|
#
|
data/lib/discorb/extension.rb
CHANGED
@@ -2,65 +2,78 @@
|
|
2
2
|
|
3
3
|
module Discorb
|
4
4
|
#
|
5
|
-
#
|
6
|
-
#
|
5
|
+
# Abstract class to make extension.
|
6
|
+
# Inherit from this class to make your own extension.
|
7
7
|
# @see file:docs/extension.md
|
8
8
|
# @abstract
|
9
9
|
#
|
10
|
-
|
11
|
-
|
12
|
-
undef setup_commands
|
10
|
+
class Extension
|
11
|
+
extend Discorb::ApplicationCommand::Handler
|
13
12
|
|
14
13
|
@events = {}
|
15
|
-
@client = nil
|
16
14
|
|
17
|
-
|
18
|
-
|
19
|
-
#
|
20
|
-
# @param [Symbol] event_name The name of the event.
|
21
|
-
# @param [Symbol] id The id of the event. Used to delete the event.
|
22
|
-
# @param [Hash] metadata Other metadata.
|
23
|
-
# @param [Proc] block The block to execute when the event is triggered.
|
24
|
-
#
|
25
|
-
# @return [Discorb::Event] The event.
|
26
|
-
#
|
27
|
-
def event(event_name, id: nil, **metadata, &block)
|
28
|
-
raise ArgumentError, "Event name must be a symbol" unless event_name.is_a?(Symbol)
|
29
|
-
raise ArgumentError, "block must be a Proc" unless block.is_a?(Proc)
|
30
|
-
|
31
|
-
@events[event_name] ||= []
|
32
|
-
metadata[:extension] = self.name
|
33
|
-
@events[event_name] << Discorb::Event.new(block, id, metadata)
|
15
|
+
def initialize(client)
|
16
|
+
@client = client
|
34
17
|
end
|
35
18
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
#
|
46
|
-
def once_event(event_name, id: nil, **metadata, &block)
|
47
|
-
event(event_name, id: id, once: true, **metadata, &block)
|
19
|
+
def events
|
20
|
+
return @events if @events
|
21
|
+
ret = {}
|
22
|
+
self.class.events.each do |event, handlers|
|
23
|
+
ret[event] = handlers.map do |handler|
|
24
|
+
Discorb::Event.new(Proc.new { |*args, **kwargs| instance_exec(*args, **kwargs, &handler[2]) }, handler[0], handler[1])
|
25
|
+
end
|
26
|
+
end
|
27
|
+
@events = ret
|
48
28
|
end
|
49
29
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
30
|
+
class << self
|
31
|
+
undef setup_commands
|
32
|
+
|
33
|
+
#
|
34
|
+
# Define a new event.
|
35
|
+
#
|
36
|
+
# @param [Symbol] event_name The name of the event.
|
37
|
+
# @param [Symbol] id The id of the event. Used to delete the event.
|
38
|
+
# @param [Hash] metadata Other metadata.
|
39
|
+
#
|
40
|
+
# @return [Discorb::Event] The event.
|
41
|
+
#
|
42
|
+
def event(event_name, id: nil, **metadata, &block)
|
43
|
+
raise ArgumentError, "Event name must be a symbol" unless event_name.is_a?(Symbol)
|
44
|
+
raise ArgumentError, "block must be given" unless block_given?
|
45
|
+
|
46
|
+
@events[event_name] ||= []
|
47
|
+
metadata[:extension] = self.name
|
48
|
+
@events[event_name] << [id, metadata, block]
|
49
|
+
end
|
50
|
+
|
51
|
+
#
|
52
|
+
# Define a new once event.
|
53
|
+
#
|
54
|
+
# @param [Symbol] event_name The name of the event.
|
55
|
+
# @param [Symbol] id The id of the event. Used to delete the event.
|
56
|
+
# @param [Hash] metadata Other metadata.
|
57
|
+
# @param [Proc] block The block to execute when the event is triggered.
|
58
|
+
#
|
59
|
+
# @return [Discorb::Event] The event.
|
60
|
+
#
|
61
|
+
def once_event(event_name, id: nil, **metadata, &block)
|
62
|
+
event(event_name, id: id, once: true, **metadata, &block)
|
63
|
+
end
|
56
64
|
|
57
|
-
|
58
|
-
|
65
|
+
# @return [Hash{Symbol => Array<Discorb::Event>}] The events of the extension.
|
66
|
+
attr_reader :events
|
67
|
+
# @return [Array<Discorb::ApplicationCommand::Command>] The commands of the extension.
|
68
|
+
attr_reader :commands
|
69
|
+
# @private
|
70
|
+
attr_reader :bottom_commands
|
59
71
|
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
72
|
+
def inherited(klass)
|
73
|
+
klass.instance_variable_set(:@commands, [])
|
74
|
+
klass.instance_variable_set(:@bottom_commands, [])
|
75
|
+
klass.instance_variable_set(:@events, {})
|
76
|
+
end
|
64
77
|
end
|
65
78
|
end
|
66
79
|
end
|
@@ -4,21 +4,36 @@ def build_version_sidebar(dir, version)
|
|
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|
|
7
|
+
`git tag`.force_encoding("utf-8").split("\n").reverse.each.with_index do |tag|
|
8
8
|
i += 1
|
9
9
|
sha = `git rev-parse #{tag}`.force_encoding("utf-8").strip
|
10
|
-
|
10
|
+
tag_version = tag.delete_prefix("v")
|
11
11
|
cls = i % 2 == 0 ? "even" : "odd"
|
12
|
-
if
|
12
|
+
if tag_version == version
|
13
13
|
cls += " current"
|
14
14
|
end
|
15
|
-
res += template
|
15
|
+
res += template
|
16
|
+
.gsub("!version!", tag_version)
|
17
|
+
.gsub("!path!", "/" + tag_version)
|
18
|
+
.gsub("!class!", cls)
|
19
|
+
.gsub("!sha!", sha)
|
16
20
|
end
|
17
21
|
i += 1
|
18
22
|
cls = i % 2 == 0 ? "even" : "odd"
|
19
23
|
if version == "main"
|
20
24
|
cls += " current"
|
21
25
|
end
|
22
|
-
res
|
26
|
+
res.insert 0, template
|
27
|
+
.gsub("!version!", "main")
|
28
|
+
.gsub("!path!", "/main")
|
29
|
+
.gsub("!class!", cls)
|
30
|
+
.gsub("!sha!", "Latest on GitHub")
|
31
|
+
i += 1
|
32
|
+
cls = i % 2 == 0 ? "even" : "odd"
|
33
|
+
res.insert 0, template
|
34
|
+
.gsub("!version!", "Latest")
|
35
|
+
.gsub("!path!", "/")
|
36
|
+
.gsub("!class!", cls)
|
37
|
+
.gsub("!sha!", "Latest on RubyGems")
|
23
38
|
File.write(dir + "/version_list.html", raw.gsub("<!--replace-->", res))
|
24
39
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: discorb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.10.0
|
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-
|
11
|
+
date: 2021-10-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: async
|