Make soundreload apply to all clusters

This commit is contained in:
TheEssem 2021-05-22 10:10:42 -05:00
parent 55a150c0c9
commit 96f8ec6353
No known key found for this signature in database
GPG Key ID: A3F9F02129092FCA
4 changed files with 35 additions and 16 deletions

@ -1 +1 @@
Subproject commit b26219baeb920506e40bc6db42fcde609fb499c7 Subproject commit e2887e42da18273f2c2eaac1ae5a973111434c90

View File

@ -1,16 +1,23 @@
const soundPlayer = require("../../utils/soundplayer.js");
const Command = require("../../classes/command.js"); const Command = require("../../classes/command.js");
class SoundReloadCommand extends Command { class SoundReloadCommand extends Command {
async run() { // another very hacky command
if (this.message.author.id !== process.env.OWNER) return "Only the bot owner can reload Lavalink!"; run() {
const soundStatus = await soundPlayer.checkStatus(); return new Promise((resolve) => {
if (!soundStatus) { if (this.message.author.id !== process.env.OWNER) return "Only the bot owner can reload Lavalink!";
const length = await soundPlayer.connect(this.client); this.message.channel.sendTyping();
return `Successfully connected to ${length} Lavalink node(s).`; this.ipc.broadcast("soundreload");
} else { this.ipc.register("soundReloadSuccess", (msg) => {
return "I couldn't connect to any Lavalink nodes!"; this.ipc.unregister("soundReloadSuccess");
} this.ipc.unregister("soundReloadFail");
resolve(`Successfully connected to ${msg.length} Lavalink node(s).`);
});
this.ipc.register("soundReloadFail", () => {
this.ipc.unregister("soundReloadSuccess");
this.ipc.unregister("soundReloadFail");
resolve("I couldn't connect to any Lavalink nodes!");
});
});
} }
static description = "Attempts to reconnect to all available Lavalink nodes"; static description = "Attempts to reconnect to all available Lavalink nodes";

View File

@ -152,6 +152,16 @@ connected_workers ${image.connections.length}
if (result2) return this.ipc.broadcast("reloadFail", { result: result2 }); if (result2) return this.ipc.broadcast("reloadFail", { result: result2 });
return this.ipc.broadcast("reloadSuccess"); return this.ipc.broadcast("reloadSuccess");
}); });
this.ipc.register("soundreload", async () => {
const soundStatus = await sound.checkStatus();
if (!soundStatus) {
const length = await sound.connect(this.bot);
return this.ipc.broadcast("soundReloadSuccess", { length });
} else {
return this.ipc.broadcast("soundReloadFail");
}
});
// connect to lavalink // connect to lavalink
if (!sound.status && !sound.connected) await sound.connect(this.bot); if (!sound.status && !sound.connected) await sound.connect(this.bot);

View File

@ -85,7 +85,7 @@ exports.connect = (server) => {
this.jobs[req].event.emit("uuid", uuid); this.jobs[req].event.emit("uuid", uuid);
} }
} else if (opcode === 0x01) { // Job completed successfully } else if (opcode === 0x01) { // Job completed successfully
// the image API sends all job responses over the same socket; make sure this is ours // the image API sends all job responses over the same socket; make sure this is ours
if (this.jobs[uuid]) { if (this.jobs[uuid]) {
const imageReq = await fetch(`http://${connection.remoteAddress}:8081/image?id=${uuid}`); const imageReq = await fetch(`http://${connection.remoteAddress}:8081/image?id=${uuid}`);
const image = await imageReq.buffer(); const image = await imageReq.buffer();
@ -232,9 +232,11 @@ exports.getType = async (image) => {
controller.abort(); controller.abort();
}, 25000); }, 25000);
try { try {
const imageRequest = await fetch(image, { signal: controller.signal, headers: { const imageRequest = await fetch(image, {
"Range": "bytes=0-1023" signal: controller.signal, headers: {
}}); "Range": "bytes=0-1023"
}
});
clearTimeout(timeout); clearTimeout(timeout);
const size = imageRequest.headers.has("Content-Range") ? imageRequest.headers.get("Content-Range").split("/")[1] : imageRequest.headers.get("Content-Length"); const size = imageRequest.headers.has("Content-Range") ? imageRequest.headers.get("Content-Range").split("/")[1] : imageRequest.headers.get("Content-Length");
if (parseInt(size) > 20971520) { if (parseInt(size) > 20971520) {
@ -277,7 +279,7 @@ exports.run = object => {
data.event.once("image", (image, type) => { data.event.once("image", (image, type) => {
delete this.jobs[data.uuid]; delete this.jobs[data.uuid];
const payload = { const payload = {
// Take just the image data // Take just the image data
buffer: image, buffer: image,
type: type type: type
}; };