music-start-pro
Version:
Music Start Pro is a discord bot that can play YouTube music by slash command.
567 lines (566 loc) • 33.5 kB
JavaScript
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (g && (g = 0, op[0] && (_ = 0)), _) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.main = main;
var discord_js_1 = require("discord.js");
var ytdl_core_1 = __importDefault(require("@distube/ytdl-core"));
var musicInfo_1 = require("./musicInfo");
var util_1 = require("./util");
var bucket_1 = require("./bucket");
var commands_1 = require("./commands");
var language_json_1 = require("./language.json");
var fs = __importStar(require("node:fs"));
var yaml_1 = __importDefault(require("yaml"));
var node_path_1 = __importDefault(require("node:path"));
var logFile = 'data.json';
function main(token, useLog) {
var _this = this;
// load buckets
if (useLog) {
console.log("The log file will be read/written at:", logFile);
console.log("You can disable log file by -d or --disable-log");
bucket_1.Bucket.load(logFile);
}
else {
console.log("Log file: disable");
bucket_1.Bucket.disableLog();
}
var progressBarLen = 35;
var client = new discord_js_1.Client({
intents: [discord_js_1.GatewayIntentBits.Guilds, discord_js_1.GatewayIntentBits.GuildMessages, discord_js_1.GatewayIntentBits.GuildVoiceStates]
});
client.login(token);
client.once(discord_js_1.Events.ClientReady, function (client) {
var _a;
console.log("Logged in as ".concat((_a = client.user) === null || _a === void 0 ? void 0 : _a.tag, "!"));
});
client.on(discord_js_1.Events.GuildCreate, function (guild) { return __awaiter(_this, void 0, void 0, function () {
return __generator(this, function (_a) {
console.log("guild crated! ".concat(guild.id));
commands_1.Commands.register(guild);
return [2 /*return*/];
});
}); });
client.on(discord_js_1.Events.Error, function (e) {
console.log('client on error', e);
});
client.on(discord_js_1.Events.InteractionCreate, function (interaction) { return __awaiter(_this, void 0, void 0, function () {
var bucket, ids, currentPage, _a, url, res, info, currentState, query, e_1, description, index, index1, index2, index, offset, vol, batch, j, url, i, list, downloadListener_1, e_2, file, data, done, lang;
var _b, _c, _d, _e, _f, _g, _h, _j;
return __generator(this, function (_k) {
switch (_k.label) {
case 0:
if (!interaction.guildId)
return [2 /*return*/];
bucket = bucket_1.Bucket.find(interaction.guildId);
if (!interaction.isButton()) return [3 /*break*/, 15];
ids = interaction.customId.split('-');
if (!(ids.length === 2 || ids.length === 3)) return [3 /*break*/, 10];
currentPage = parseInt(ids[1]);
_a = ids[0];
switch (_a) {
case 'next': return [3 /*break*/, 1];
case 'pre': return [3 /*break*/, 3];
case 'nextSearch': return [3 /*break*/, 5];
case 'preSearch': return [3 /*break*/, 7];
}
return [3 /*break*/, 9];
case 1: return [4 /*yield*/, interaction.update(bucket.queue.showList(bucket.lang, bucket.queue.genericPage(currentPage + 1), false))];
case 2:
_k.sent();
return [3 /*break*/, 9];
case 3: return [4 /*yield*/, interaction.update(bucket.queue.showList(bucket.lang, bucket.queue.genericPage(currentPage - 1), false))];
case 4:
_k.sent();
return [3 /*break*/, 9];
case 5: return [4 /*yield*/, interaction.update(bucket.queue.showList(bucket.lang, bucket.queue.genericPage(currentPage + 1), true))];
case 6:
_k.sent();
return [3 /*break*/, 9];
case 7: return [4 /*yield*/, interaction.update(bucket.queue.showList(bucket.lang, bucket.queue.genericPage(currentPage - 1), true))];
case 8:
_k.sent();
return [3 /*break*/, 9];
case 9: return [3 /*break*/, 14];
case 10:
if (!(ids.length === 1)) return [3 /*break*/, 14];
if (!(ids[0] === 'refresh')) return [3 /*break*/, 12];
return [4 /*yield*/, interaction.update(bucket.queue.showList(bucket.lang))];
case 11:
_k.sent();
return [3 /*break*/, 14];
case 12:
if (!(ids[0] === 'refreshSearch')) return [3 /*break*/, 14];
// search again
bucket.queue.search(null);
return [4 /*yield*/, interaction.update(bucket.queue.showList(bucket.lang, 0, true))];
case 13:
_k.sent();
_k.label = 14;
case 14: return [3 /*break*/, 124];
case 15:
if (!interaction.isCommand()) return [3 /*break*/, 124];
if (!(interaction.commandName === 'attach')) return [3 /*break*/, 20];
commands_1.Commands.register(interaction.guild, bucket === null || bucket === void 0 ? void 0 : bucket.lang);
if (!bucket.connect(interaction)) return [3 /*break*/, 17];
return [4 /*yield*/, interaction.reply("\u2606".concat(language_json_1.messages.hello[bucket.lang], " ").concat(util_1.Util.randomHappy(), " \u2606"))];
case 16:
_k.sent();
return [3 /*break*/, 19];
case 17: return [4 /*yield*/, interaction.reply("".concat(language_json_1.messages.attach_fail[bucket.lang], " ").concat(util_1.Util.randomCry()))];
case 18:
_k.sent();
_k.label = 19;
case 19: return [3 /*break*/, 124];
case 20:
if (!(interaction.commandName === 'detach')) return [3 /*break*/, 22];
bucket.player.pause();
bucket.disconnect();
return [4 /*yield*/, interaction.reply("".concat(language_json_1.messages.detach[bucket.lang], " ").concat(util_1.Util.randomHappy()))];
case 21:
_k.sent();
return [3 /*break*/, 124];
case 22:
if (!(interaction.commandName === 'append')) return [3 /*break*/, 31];
return [4 /*yield*/, interaction.deferReply()];
case 23:
_k.sent();
url = (_b = interaction.options.get('youtube')) === null || _b === void 0 ? void 0 : _b.value;
if (!(!ytdl_core_1.default.validateURL(url) && !ytdl_core_1.default.validateID(url))) return [3 /*break*/, 25];
return [4 /*yield*/, interaction.editReply(util_1.Util.createEmbedMessage(language_json_1.messages.error[bucket.lang], "".concat(language_json_1.messages.song_is_not_found[bucket.lang], " ").concat(util_1.Util.randomCry()), true))];
case 24:
_k.sent();
return [2 /*return*/];
case 25: return [4 /*yield*/, ytdl_core_1.default.getInfo(url)];
case 26:
res = _k.sent();
info = musicInfo_1.MusicInfo.fromDetails(res);
if (!(info !== null)) return [3 /*break*/, 28];
bucket.queue.add(info);
return [4 /*yield*/, interaction.editReply(new discord_js_1.MessagePayload(interaction, util_1.Util.createEmbedMessage(language_json_1.messages.appended_to_the_playlist[bucket.lang], info.title)))];
case 27:
_k.sent();
return [3 /*break*/, 30];
case 28: return [4 /*yield*/, interaction.editReply(new discord_js_1.MessagePayload(interaction, util_1.Util.createEmbedMessage(language_json_1.messages.error[bucket.lang], "".concat(language_json_1.messages.song_is_not_found[bucket.lang], " ").concat(util_1.Util.randomCry()), true)))];
case 29:
_k.sent();
_k.label = 30;
case 30: return [3 /*break*/, 124];
case 31:
if (!(interaction.commandName === 'pause' || interaction.commandName === 'resume')) return [3 /*break*/, 40];
if (!bucket.queue.isEmpty()) return [3 /*break*/, 33];
return [4 /*yield*/, interaction.reply(language_json_1.messages.playlist_is_empty_error[bucket.lang])];
case 32:
_k.sent();
return [3 /*break*/, 39];
case 33:
if (!(interaction.commandName === 'pause' && bucket.player.pause())) return [3 /*break*/, 35];
return [4 /*yield*/, interaction.reply(language_json_1.messages.paused[bucket.lang])];
case 34:
_k.sent();
return [3 /*break*/, 39];
case 35:
if (!(interaction.commandName === 'resume' && bucket.player.unpause())) return [3 /*break*/, 37];
return [4 /*yield*/, interaction.reply(language_json_1.messages.resume[bucket.lang])];
case 36:
_k.sent();
return [3 /*break*/, 39];
case 37: return [4 /*yield*/, interaction.reply(new discord_js_1.MessagePayload(interaction, util_1.Util.createEmbedMessage(language_json_1.messages.error[bucket.lang], "".concat(language_json_1.messages.pause_error[bucket.lang], " ").concat(util_1.Util.randomCry()), true)))];
case 38:
_k.sent();
_k.label = 39;
case 39: return [3 /*break*/, 124];
case 40:
if (!(interaction.commandName === 'stop')) return [3 /*break*/, 45];
if (!bucket.queue.isEmpty()) return [3 /*break*/, 42];
return [4 /*yield*/, interaction.reply(language_json_1.messages.playlist_is_empty_error[bucket.lang])];
case 41:
_k.sent();
return [3 /*break*/, 44];
case 42:
bucket.player.pause();
bucket.queue.jump(0);
return [4 /*yield*/, interaction.reply(language_json_1.messages.stopped[bucket.lang])];
case 43:
_k.sent();
_k.label = 44;
case 44: return [3 /*break*/, 124];
case 45:
if (!(interaction.commandName === 'repeat')) return [3 /*break*/, 52];
if (!bucket.queue.isEmpty()) return [3 /*break*/, 47];
return [4 /*yield*/, interaction.reply(language_json_1.messages.playlist_is_empty_error[bucket.lang])];
case 46:
_k.sent();
return [3 /*break*/, 51];
case 47:
currentState = bucket.toggleRepeat();
if (!currentState) return [3 /*break*/, 49];
return [4 /*yield*/, interaction.reply(language_json_1.messages.repeat_on[bucket.lang])];
case 48:
_k.sent();
return [3 /*break*/, 51];
case 49: return [4 /*yield*/, interaction.reply(language_json_1.messages.repeat_off[bucket.lang])];
case 50:
_k.sent();
_k.label = 51;
case 51: return [3 /*break*/, 124];
case 52:
if (!(interaction.commandName === 'list' || interaction.commandName === 'distinct')) return [3 /*break*/, 54];
if (interaction.commandName === 'distinct') {
// remove duplicate songs and show list
bucket.queue.removeDuplicate();
}
return [4 /*yield*/, interaction.reply(new discord_js_1.MessagePayload(interaction, bucket.queue.showList(bucket.lang)))];
case 53:
_k.sent();
return [3 /*break*/, 124];
case 54:
if (!(interaction.commandName === 'search')) return [3 /*break*/, 60];
query = null;
_k.label = 55;
case 55:
_k.trys.push([55, 56, , 58]);
query = new RegExp((_c = interaction.options.get('regexp')) === null || _c === void 0 ? void 0 : _c.value, "i");
return [3 /*break*/, 58];
case 56:
e_1 = _k.sent();
return [4 /*yield*/, interaction.reply(new discord_js_1.MessagePayload(interaction, util_1.Util.createEmbedMessage(language_json_1.messages.error[bucket.lang], "Invalid Regular Expression ".concat(util_1.Util.randomCry(), "\n").concat(e_1), true)))];
case 57:
_k.sent();
return [2 /*return*/];
case 58:
bucket.queue.search(query);
return [4 /*yield*/, interaction.reply(new discord_js_1.MessagePayload(interaction, bucket.queue.showList(bucket.lang, 0, true)))];
case 59:
_k.sent();
return [3 /*break*/, 124];
case 60:
if (!(interaction.commandName === 'current')) return [3 /*break*/, 64];
description = "Volume: ".concat(bucket.volume, "\n");
description += "Is playing: ".concat(bucket.playing ? "yes" : "no", "\n");
description += "Number of songs: ".concat(bucket.queue.len);
return [4 /*yield*/, interaction.reply(new discord_js_1.MessagePayload(interaction, util_1.Util.createEmbedMessage("current", description)))];
case 61:
_k.sent();
if (!bucket.playing) return [3 /*break*/, 63];
return [4 /*yield*/, interaction.followUp(new discord_js_1.MessagePayload(interaction, util_1.Util.createMusicInfoMessage(bucket.queue.current)))];
case 62:
_k.sent();
_k.label = 63;
case 63: return [3 /*break*/, 124];
case 64:
if (!(interaction.commandName === 'jump' || interaction.commandName === 'go')) return [3 /*break*/, 69];
if (!bucket.queue.isEmpty()) return [3 /*break*/, 66];
return [4 /*yield*/, interaction.reply(language_json_1.messages.playlist_is_empty_error[bucket.lang])];
case 65:
_k.sent();
return [2 /*return*/];
case 66: return [4 /*yield*/, interaction.deferReply()];
case 67:
_k.sent();
index = (_d = interaction.options.get('index')) === null || _d === void 0 ? void 0 : _d.value;
bucket.queue.jump(index);
return [4 /*yield*/, bucket.playAndEditReplyDefault(bucket.queue.current, interaction)];
case 68:
_k.sent();
return [3 /*break*/, 124];
case 69:
if (!(interaction.commandName === 'swap')) return [3 /*break*/, 73];
if (!bucket.queue.isEmpty()) return [3 /*break*/, 71];
return [4 /*yield*/, interaction.reply(language_json_1.messages.playlist_is_empty_error[bucket.lang])];
case 70:
_k.sent();
return [2 /*return*/];
case 71:
index1 = (_e = interaction.options.get('index1')) === null || _e === void 0 ? void 0 : _e.value;
index2 = (_f = interaction.options.get('index2')) === null || _f === void 0 ? void 0 : _f.value;
bucket.queue.swap(index1, index2);
return [4 /*yield*/, interaction.reply("Done!")];
case 72:
_k.sent();
return [3 /*break*/, 124];
case 73:
if (!(interaction.commandName === 'remove')) return [3 /*break*/, 79];
if (!bucket.queue.isEmpty()) return [3 /*break*/, 75];
return [4 /*yield*/, interaction.reply(language_json_1.messages.playlist_is_empty_error[bucket.lang])];
case 74:
_k.sent();
return [2 /*return*/];
case 75:
index = (_g = interaction.options.get('index')) === null || _g === void 0 ? void 0 : _g.value;
if (!bucket.queue.remove(index, bucket.playing)) return [3 /*break*/, 77];
return [4 /*yield*/, interaction.reply(new discord_js_1.MessagePayload(interaction, util_1.Util.createEmbedMessage(language_json_1.messages.success[bucket.lang], "".concat(language_json_1.messages.removed_successfully[bucket.lang], " ").concat(util_1.Util.randomHappy()))))];
case 76:
_k.sent();
return [2 /*return*/];
case 77: return [4 /*yield*/, interaction.reply(new discord_js_1.MessagePayload(interaction, util_1.Util.createEmbedMessage(language_json_1.messages.error[bucket.lang], "".concat(language_json_1.messages.cannot_remove_the_playing_song[bucket.lang], " ").concat(util_1.Util.randomCry()), true)))];
case 78:
_k.sent();
return [3 /*break*/, 124];
case 79:
if (!(interaction.commandName === 'clear')) return [3 /*break*/, 81];
if (bucket.playing) {
bucket.player.stop();
}
bucket.queue.removeAll();
bucket.store();
return [4 /*yield*/, interaction.reply(language_json_1.messages.playlist_is_reset[bucket.lang])];
case 80:
_k.sent();
return [3 /*break*/, 124];
case 81:
if (!(interaction.commandName === 'sort')) return [3 /*break*/, 85];
if (!bucket.queue.isEmpty()) return [3 /*break*/, 83];
return [4 /*yield*/, interaction.reply(language_json_1.messages.playlist_is_empty_error[bucket.lang])];
case 82:
_k.sent();
return [2 /*return*/];
case 83:
bucket.queue.sort();
return [4 /*yield*/, interaction.reply("".concat(language_json_1.messages.is_sorted[bucket.lang], " ").concat(util_1.Util.randomHappy()))];
case 84:
_k.sent();
return [3 /*break*/, 124];
case 85:
if (!(interaction.commandName === 'shuffle')) return [3 /*break*/, 87];
bucket.queue.shuffle();
return [4 /*yield*/, interaction.reply("".concat(language_json_1.messages.is_shuffled[bucket.lang], " ").concat(util_1.Util.randomHappy()))];
case 86:
_k.sent();
return [3 /*break*/, 124];
case 87:
if (!(interaction.commandName === 'next')) return [3 /*break*/, 92];
if (!bucket.queue.isEmpty()) return [3 /*break*/, 89];
return [4 /*yield*/, interaction.reply(language_json_1.messages.playlist_is_empty_error[bucket.lang])];
case 88:
_k.sent();
return [2 /*return*/];
case 89:
offset = 1;
if (interaction.options.get("offset") != null) {
offset = interaction.options.get("offset").value;
}
return [4 /*yield*/, interaction.deferReply()];
case 90:
_k.sent();
bucket.queue.next(offset);
return [4 /*yield*/, bucket.playAndEditReplyDefault(bucket.queue.current, interaction)];
case 91:
_k.sent();
return [3 /*break*/, 124];
case 92:
if (!(interaction.commandName === 'pre')) return [3 /*break*/, 97];
if (!bucket.queue.isEmpty()) return [3 /*break*/, 94];
return [4 /*yield*/, interaction.reply(language_json_1.messages.playlist_is_empty_error[bucket.lang])];
case 93:
_k.sent();
return [2 /*return*/];
case 94: return [4 /*yield*/, interaction.deferReply()];
case 95:
_k.sent();
bucket.queue.next(-1);
return [4 /*yield*/, bucket.playAndEditReplyDefault(bucket.queue.current, interaction)];
case 96:
_k.sent();
return [3 /*break*/, 124];
case 97:
if (!(interaction.commandName === 'vol')) return [3 /*break*/, 99];
return [4 /*yield*/, interaction.deferReply()];
case 98:
_k.sent();
if (interaction.options.get('volume') === null) {
interaction.editReply("".concat(language_json_1.messages.current_volume[bucket.lang]).concat(bucket.volume, " ").concat(util_1.Util.randomHappy()));
}
else {
vol = interaction.options.get('volume').value;
if (vol < 0 || vol > 1) {
interaction.editReply("".concat(language_json_1.messages.volume_format_error[bucket.lang], " ").concat(util_1.Util.randomCry()));
}
else {
bucket.volume = vol;
interaction.editReply("".concat(language_json_1.messages.volume_is_changed_to[bucket.lang], "\u3000").concat(vol, " ").concat(util_1.Util.randomHappy()));
}
}
return [3 /*break*/, 124];
case 99:
if (!(interaction.commandName === 'verbose')) return [3 /*break*/, 100];
bucket.verbose = (_h = interaction.options.get('truth')) === null || _h === void 0 ? void 0 : _h.value;
interaction.reply(new discord_js_1.MessagePayload(interaction, util_1.Util.createEmbedMessage('verbose: ', bucket.verbose ? 'on' : 'off')));
return [3 /*break*/, 124];
case 100:
if (!(interaction.commandName === 'json')) return [3 /*break*/, 115];
return [4 /*yield*/, interaction.deferReply()];
case 101:
_k.sent();
if (!(interaction.options.get('json') === null)) return [3 /*break*/, 111];
batch = 100;
if (!bucket.queue.isEmpty()) return [3 /*break*/, 103];
return [4 /*yield*/, interaction.reply(language_json_1.messages.playlist_is_empty[bucket.lang])];
case 102:
_k.sent();
_k.label = 103;
case 103:
j = 0;
_k.label = 104;
case 104:
if (!(j < bucket.queue.len / batch)) return [3 /*break*/, 110];
url = [];
for (i = batch * j; i < Math.min(bucket.queue.len, batch * (j + 1)); i++) {
url.push(bucket.queue.list[i].url.replace('https://www.youtube.com/watch?v=', ''));
}
if (!(j == 0)) return [3 /*break*/, 106];
return [4 /*yield*/, interaction.editReply('```\n' + JSON.stringify(url, null, '') + '\n```')];
case 105:
_k.sent();
return [3 /*break*/, 109];
case 106: return [4 /*yield*/, interaction.followUp("".concat(j * batch, "~").concat(Math.min(bucket.queue.len, batch * (j + 1))))];
case 107:
_k.sent();
return [4 /*yield*/, interaction.followUp('```\n' + JSON.stringify(url, null, '') + '\n```')];
case 108:
_k.sent();
_k.label = 109;
case 109:
j++;
return [3 /*break*/, 104];
case 110: return [3 /*break*/, 114];
case 111:
_k.trys.push([111, 112, , 114]);
list = JSON.parse(interaction.options.get('json').value);
downloadListener_1 = util_1.Util.sequentialEnqueueWithBatchListener();
downloadListener_1.on('progress', function (current, all) {
interaction.editReply('```yaml\n' + util_1.Util.progressBar(current, all, progressBarLen) + '\n```');
});
downloadListener_1.once('done', function (all, fail) {
downloadListener_1.removeAllListeners();
interaction.editReply('```yaml\n' + util_1.Util.progressBar(all, all, progressBarLen) + ' ✅\n\n' + "\u2705: ".concat(all - fail, " \u274C: ").concat(fail) + '```');
});
downloadListener_1.once('error', function (e) {
downloadListener_1.removeAllListeners();
interaction.editReply(util_1.Util.createEmbedMessage('Error sequentialEnQueueWithBatch()', "".concat(util_1.Util.randomCry(), "\n").concat(e), true));
});
util_1.Util.sequentialEnQueueWithBatch(list, bucket.queue, downloadListener_1);
return [3 /*break*/, 114];
case 112:
e_2 = _k.sent();
return [4 /*yield*/, interaction.editReply(util_1.Util.createEmbedMessage('Error JSON.parse()', "".concat(util_1.Util.randomCry(), "\n").concat(e_2), true))];
case 113:
_k.sent();
return [2 /*return*/];
case 114: return [3 /*break*/, 124];
case 115:
if (!(interaction.commandName === 'aqours' ||
interaction.commandName === 'llss' ||
interaction.commandName === 'genjitsu' ||
interaction.commandName === 'azalea' ||
interaction.commandName === 'muse' ||
interaction.commandName === 'liella' ||
interaction.commandName === 'nijigasaki' ||
interaction.commandName === 'q4' ||
interaction.commandName === 'hasunosora' ||
interaction.commandName === '5yncri5e')) return [3 /*break*/, 117];
file = fs.readFileSync(node_path_1.default.join(__dirname, "../recommend/".concat(interaction.commandName, ".yaml")), 'utf-8');
data = yaml_1.default.parse(file);
done = "";
if (interaction.commandName === 'aqours' || interaction.commandName === 'llss' || interaction.commandName === 'genjitsu') {
done = 'Aqours SunShine!';
}
else if (interaction.commandName === 'azalea') {
done = '恋の喜び咲かせます、AZALEAです! ';
}
else if (interaction.commandName === 'muse') {
done = "μ's music start!";
}
else if (interaction.commandName === 'liella') {
done = 'Song for me, song for you, song for all!';
}
return [4 /*yield*/, interaction.deferReply()];
case 116:
_k.sent();
util_1.Util.enQueueCached(data.list, bucket.queue);
interaction.editReply('```yaml\n' + util_1.Util.progressBar(data.list.length, data.list.length, 35) + ' ✅\n```' + "".concat(done));
return [3 /*break*/, 124];
case 117:
if (!(interaction.commandName === 'lang')) return [3 /*break*/, 122];
lang = (_j = interaction.options.get('language')) === null || _j === void 0 ? void 0 : _j.value;
if (!['zh', 'en'].includes(lang)) return [3 /*break*/, 119];
bucket.lang = lang;
return [4 /*yield*/, interaction.reply(language_json_1.messages.language_changed_successfully[bucket.lang])];
case 118:
_k.sent();
return [3 /*break*/, 121];
case 119: return [4 /*yield*/, interaction.reply("Should be either zh or en!")];
case 120:
_k.sent();
_k.label = 121;
case 121: return [3 /*break*/, 124];
case 122: return [4 /*yield*/, interaction.reply("Command not found")];
case 123:
_k.sent();
_k.label = 124;
case 124: return [2 /*return*/];
}
});
}); });
}