UNPKG

@tryforge/forge.music

Version:

Extension to add music functionality to your ForgeScript bot.

53 lines (52 loc) 2.15 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const discord_player_1 = require("discord-player"); const forgescript_1 = require("@tryforge/forgescript"); const ForgeMusic_1 = require("../classes/structures/ForgeMusic"); exports.default = new forgescript_1.NativeFunction({ name: "$playTrack", version: "1.0.0", description: "Play a track by query.", brackets: true, unwrap: true, args: [ { name: "Channel ID", description: "Voice channel ID to play the track on.", type: forgescript_1.ArgType.Channel, required: true, rest: false, check: (c) => c.isVoiceBased() }, forgescript_1.Arg.requiredString("Query", "Track name to be searched."), forgescript_1.Arg.optionalString("Engine", "The query search engine, can be extractor name to target an specific one. (custom)"), forgescript_1.Arg.optionalEnum(discord_player_1.QueryType, "Fallback Engine", "Fallback search engine to use."), { name: "Block Extractors", description: "List of extractors to block.", type: forgescript_1.ArgType.String, required: false, rest: true } ], async execute(ctx, [voiceChannel, query, searchEngine, fallbackSearchEngine, blockExtractors]) { const player = (0, discord_player_1.useMainPlayer)(); const connectOptions = ctx.getExtension(ForgeMusic_1.ForgeMusic).connectOptions ?? {}; const connectionOptionsUnion = { metadata: { text: ctx.channel }, ...connectOptions }; let executed = true; const result = await player.play(voiceChannel, query, { nodeOptions: connectionOptionsUnion, searchEngine: searchEngine, fallbackSearchEngine, blockExtractors, requestedBy: ctx.user }).catch((e) => { executed = false; return e; }); return executed ? this.success() : this.error(result); } });