2021-08-19 14:19:14 +00:00
import { play } from "../../utils/soundplayer.js" ;
import MusicCommand from "../../classes/musicCommand.js" ;
2022-06-07 23:26:40 +00:00
const prefixes = [ "ytsearch:" , "ytmsearch:" , "scsearch:" , "spsearch:" , "amsearch:" ] ;
Class commands, improved sharding, and many other changes (#88)
* Load commands recursively
* Sort commands
* Missed a couple of spots
* missed even more spots apparently
* Ported commands in "fun" category to new class-based format, added babel eslint plugin
* Ported general commands, removed old/unneeded stuff, replaced moment with day, many more fixes I lost track of
* Missed a spot
* Removed unnecessary abort-controller package, add deprecation warning for mongo database
* Added imagereload, clarified premature end message
* Fixed docker-compose path issue, added total bot uptime to stats, more fixes for various parts
* Converted image commands into classes, fixed reload, ignore another WS event, cleaned up command handler and image runner
* Converted music/soundboard commands to class format
* Cleanup unnecessary logs
* awful tag command class port
* I literally somehow just learned that you can leave out the constructor in classes
* Pass client directly to commands/events, cleaned up command handler
* Migrated bot to eris-sharder, fixed some error handling stuff
* Remove unused modules
* Fixed type returning
* Switched back to Eris stable
* Some fixes and cleanup
* might wanna correct this
* Implement image command ratelimiting
* Added Bot token prefix, added imagestats, added running endpoint to API
2021-04-12 16:16:12 +00:00
class PlayCommand extends MusicCommand {
async run ( ) {
2022-06-07 23:26:40 +00:00
const input = this . options . query ? ? this . args . join ( " " ) ;
2022-04-05 03:05:28 +00:00
if ( ! input && ( this . type === "classic" ? ( ! this . message || this . message . attachments . length <= 0 ) : ! this . options . file ) ) return "You need to provide what you want to play!" ;
let query = input ? input . trim ( ) : "" ;
2022-04-10 16:20:52 +00:00
const attachment = this . type === "classic" ? this . message . attachments [ 0 ] : ( this . options . file ? this . interaction . data . resolved . attachments [ this . options . file ] : null ) ;
2022-01-27 05:02:18 +00:00
if ( query . startsWith ( "||" ) && query . endsWith ( "||" ) ) {
query = query . substring ( 2 , query . length - 2 ) ;
}
if ( query . startsWith ( "<" ) && query . endsWith ( ">" ) ) {
query = query . substring ( 1 , query . length - 1 ) ;
}
try {
const url = new URL ( query ) ;
2022-04-10 16:20:52 +00:00
return await play ( this . client , url , { channel : this . channel , member : this . member , type : this . type , interaction : this . interaction } , true ) ;
2022-01-27 05:02:18 +00:00
} catch {
2022-06-07 23:26:40 +00:00
const search = prefixes . some ( v => query . startsWith ( v ) ) ? query : ! query && attachment ? attachment . url : ` ytsearch: ${ query } ` ;
2022-04-10 16:20:52 +00:00
return await play ( this . client , search , { channel : this . channel , member : this . member , type : this . type , interaction : this . interaction } , true ) ;
2022-01-27 05:02:18 +00:00
}
Class commands, improved sharding, and many other changes (#88)
* Load commands recursively
* Sort commands
* Missed a couple of spots
* missed even more spots apparently
* Ported commands in "fun" category to new class-based format, added babel eslint plugin
* Ported general commands, removed old/unneeded stuff, replaced moment with day, many more fixes I lost track of
* Missed a spot
* Removed unnecessary abort-controller package, add deprecation warning for mongo database
* Added imagereload, clarified premature end message
* Fixed docker-compose path issue, added total bot uptime to stats, more fixes for various parts
* Converted image commands into classes, fixed reload, ignore another WS event, cleaned up command handler and image runner
* Converted music/soundboard commands to class format
* Cleanup unnecessary logs
* awful tag command class port
* I literally somehow just learned that you can leave out the constructor in classes
* Pass client directly to commands/events, cleaned up command handler
* Migrated bot to eris-sharder, fixed some error handling stuff
* Remove unused modules
* Fixed type returning
* Switched back to Eris stable
* Some fixes and cleanup
* might wanna correct this
* Implement image command ratelimiting
* Added Bot token prefix, added imagestats, added running endpoint to API
2021-04-12 16:16:12 +00:00
}
2022-04-05 03:05:28 +00:00
static flags = [ {
name : "file" ,
type : 11 ,
description : "An audio file attachment"
} , {
name : "query" ,
type : 3 ,
description : "An audio search query or URL"
} ] ;
Class commands, improved sharding, and many other changes (#88)
* Load commands recursively
* Sort commands
* Missed a couple of spots
* missed even more spots apparently
* Ported commands in "fun" category to new class-based format, added babel eslint plugin
* Ported general commands, removed old/unneeded stuff, replaced moment with day, many more fixes I lost track of
* Missed a spot
* Removed unnecessary abort-controller package, add deprecation warning for mongo database
* Added imagereload, clarified premature end message
* Fixed docker-compose path issue, added total bot uptime to stats, more fixes for various parts
* Converted image commands into classes, fixed reload, ignore another WS event, cleaned up command handler and image runner
* Converted music/soundboard commands to class format
* Cleanup unnecessary logs
* awful tag command class port
* I literally somehow just learned that you can leave out the constructor in classes
* Pass client directly to commands/events, cleaned up command handler
* Migrated bot to eris-sharder, fixed some error handling stuff
* Remove unused modules
* Fixed type returning
* Switched back to Eris stable
* Some fixes and cleanup
* might wanna correct this
* Implement image command ratelimiting
* Added Bot token prefix, added imagestats, added running endpoint to API
2021-04-12 16:16:12 +00:00
static description = "Plays a song or adds it to the queue" ;
static aliases = [ "p" ] ;
static arguments = [ "[url]" ] ;
}
2021-11-11 00:14:37 +00:00
export default PlayCommand ;