@@ -188,13 +188,43 @@ export class BaseInteractionCommandOption<ParsedArgsFinished = Interaction.Parse
188
188
}
189
189
190
190
191
+ export class BaseInteractionAudioOrVideoCommandOption < ParsedArgsFinished = Interaction . ParsedArgs > extends BaseInteractionCommandOption < ParsedArgsFinished > {
192
+ constructor ( data : Interaction . InteractionCommandOptionOptions = { } ) {
193
+ super ( {
194
+ ...data ,
195
+ options : [
196
+ ...( data . options || [ ] ) ,
197
+ { name : 'media' , description : 'Emoji/Media URL/User' , label : 'url' , default : DefaultParameters . lastMediaUrl ( { image : false } ) , value : Parameters . lastMediaUrl ( { image : false } ) } ,
198
+ { name : 'file' , description : 'Audio/Video File' , type : ApplicationCommandOptionTypes . ATTACHMENT } ,
199
+ ] ,
200
+ } ) ;
201
+ }
202
+
203
+ onBeforeRun ( context : Interaction . InteractionContext , args : { url ?: null | string } ) {
204
+ if ( args . url ) {
205
+ context . metadata = Object . assign ( { } , context . metadata , { contentUrl : args . url } ) ;
206
+ }
207
+ return ! ! args . url ;
208
+ }
209
+
210
+ onCancelRun ( context : Interaction . InteractionContext , args : { url ?: null | string } ) {
211
+ if ( args . url === undefined ) {
212
+ return editOrReply ( context , '⚠ Unable to find any media in the last 50 messages.' ) ;
213
+ } else if ( args . url === null ) {
214
+ return editOrReply ( context , '⚠ Unable to find that user or it was an invalid url.' ) ;
215
+ }
216
+ return super . onCancelRun ( context , args ) ;
217
+ }
218
+ }
219
+
220
+
191
221
export class BaseInteractionImageCommandOption < ParsedArgsFinished = Interaction . ParsedArgs > extends BaseInteractionCommandOption < ParsedArgsFinished > {
192
222
constructor ( data : Interaction . InteractionCommandOptionOptions = { } ) {
193
223
super ( {
194
224
...data ,
195
225
options : [
196
226
...( data . options || [ ] ) ,
197
- { name : 'image' , description : 'Emoji/Image URL/User' , label : 'url' , default : DefaultParameters . lastImageUrl , value : Parameters . lastImageUrl } ,
227
+ { name : 'image' , description : 'Emoji/Image URL/User' , label : 'url' , default : DefaultParameters . lastMediaUrl ( { audio : false , video : false } ) , value : Parameters . lastMediaUrl ( { audio : false , video : false } ) } ,
198
228
{ name : 'file' , description : 'Image File' , type : ApplicationCommandOptionTypes . ATTACHMENT } ,
199
229
] ,
200
230
} ) ;
@@ -224,7 +254,7 @@ export class BaseInteractionVideoCommandOption<ParsedArgsFinished = Interaction.
224
254
...data ,
225
255
options : [
226
256
...( data . options || [ ] ) ,
227
- { name : 'video' , description : 'Emoji/Media URL/User' , label : 'url' , default : DefaultParameters . lastVideoUrl , value : Parameters . lastVideoUrl } ,
257
+ { name : 'video' , description : 'Emoji/Media URL/User' , label : 'url' , default : DefaultParameters . lastMediaUrl ( { audio : false , image : false } ) , value : Parameters . lastMediaUrl ( { audio : false , image : false } ) } ,
228
258
{ name : 'file' , description : 'Video File' , type : ApplicationCommandOptionTypes . ATTACHMENT } ,
229
259
] ,
230
260
} ) ;
@@ -239,7 +269,7 @@ export class BaseInteractionVideoCommandOption<ParsedArgsFinished = Interaction.
239
269
240
270
onCancelRun ( context : Interaction . InteractionContext , args : { url ?: null | string } ) {
241
271
if ( args . url === undefined ) {
242
- return editOrReply ( context , '⚠ Unable to find any media in the last 50 messages.' ) ;
272
+ return editOrReply ( context , '⚠ Unable to find any videos in the last 50 messages.' ) ;
243
273
} else if ( args . url === null ) {
244
274
return editOrReply ( context , '⚠ Unable to find that user or it was an invalid url.' ) ;
245
275
}
0 commit comments