diff --git a/events/messageCreate.js b/events/messageCreate.js index 5ff5630..ae4e417 100644 --- a/events/messageCreate.js +++ b/events/messageCreate.js @@ -3,6 +3,7 @@ const database = require("../utils/database.js"); const logger = require("../utils/logger.js"); const collections = require("../utils/collections.js"); const parseCommand = require("../utils/parseCommand.js"); +const { clean } = require("../utils/misc.js"); // run when someone sends a message module.exports = async (client, cluster, worker, ipc, message) => { @@ -141,7 +142,7 @@ module.exports = async (client, cluster, worker, ipc, message) => { await client.createMessage(message.channel.id, Object.assign({ content: "Uh oh! I ran into an error while running this command. Please report the content of the attached file at the following link or on the esmBot Support server: " }, reference), [{ - file: `Message: ${error}\n\nStack Trace: ${error.stack}`, + file: `Message: ${await clean(error)}\n\nStack Trace: ${await clean(error.stack)}`, name: "error.txt" }]); } catch { /* silently ignore */ } diff --git a/utils/misc.js b/utils/misc.js index 0ac75df..09521ba 100644 --- a/utils/misc.js +++ b/utils/misc.js @@ -1,4 +1,5 @@ const util = require("util"); +const fs = require("fs"); // random(array) to select a random entry in array exports.random = (array) => { @@ -22,6 +23,11 @@ exports.clean = async (text) => { .replaceAll("@", `@${String.fromCharCode(8203)}`); const { parsed } = require("dotenv").config(); + const imageServers = JSON.parse(fs.readFileSync("./servers.json", { encoding: "utf8" })).image; + + for (const server of imageServers) { + text = text.replaceAll(server, ""); + } for (const env of Object.keys(parsed)) { text = text.replaceAll(parsed[env], optionalReplace(parsed[env])); diff --git a/utils/services/image.js b/utils/services/image.js index 681bafc..d223816 100644 --- a/utils/services/image.js +++ b/utils/services/image.js @@ -213,13 +213,9 @@ class ImageWorker extends BaseServiceWorker { const num = Math.floor(Math.random() * 100000).toString().slice(0, 5); const timeout = setTimeout(() => { if (this.jobs[num]) delete this.jobs[num]; - reject("the image request timed out after 25 seconds. Try uploading your image elsewhere."); + reject("The image request timed out after 25 seconds. Try uploading your image elsewhere."); }, 25000); - this.start(object, num).catch(err => { // incredibly hacky code incoming - clearTimeout(timeout); - if (err instanceof Error) return reject(err); - return err; - }).then((data) => { + this.start(object, num).then((data) => { clearTimeout(timeout); if (!data.event) reject("Not connected to image server"); data.event.once("image", (image, type) => { @@ -256,7 +252,8 @@ class ImageWorker extends BaseServiceWorker { async handleCommand(data) { try { if (data.type === "run") { - return await this.run(data.obj); + const result = await this.run(data.obj); + return result; } else if (data.type === "reload") { await this.disconnect(); await this.repopulate(); @@ -274,7 +271,7 @@ class ImageWorker extends BaseServiceWorker { return await this.getRunning(); } } catch (err) { - return { err: err.message }; + return { err: typeof err === "string" ? err : err.message }; } }