Add timeouts to many projectlounge requests, fixed command bug
This commit is contained in:
		
							parent
							
								
									4684db06e8
								
							
						
					
					
						commit
						516570efe4
					
				
					 6 changed files with 60 additions and 22 deletions
				
			
		| 
						 | 
					@ -4,7 +4,13 @@ const Command = require("../../classes/command.js");
 | 
				
			||||||
class AncientCommand extends Command {
 | 
					class AncientCommand extends Command {
 | 
				
			||||||
  async run() {
 | 
					  async run() {
 | 
				
			||||||
    this.client.sendChannelTyping(this.message.channel.id);
 | 
					    this.client.sendChannelTyping(this.message.channel.id);
 | 
				
			||||||
    const data = await fetch("https://projectlounge.pw/meme/", { redirect: "manual" });
 | 
					    const controller = new AbortController(); // eslint-disable-line no-undef
 | 
				
			||||||
 | 
					    const timeout = setTimeout(() => {
 | 
				
			||||||
 | 
					      controller.abort();
 | 
				
			||||||
 | 
					    }, 15000);
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					      const data = await fetch("https://projectlounge.pw/meme/", { redirect: "manual", signal: controller.signal });
 | 
				
			||||||
 | 
					      clearTimeout(timeout);
 | 
				
			||||||
      return {
 | 
					      return {
 | 
				
			||||||
        embed: {
 | 
					        embed: {
 | 
				
			||||||
          color: 16711680,
 | 
					          color: 16711680,
 | 
				
			||||||
| 
						 | 
					@ -13,6 +19,11 @@ class AncientCommand extends Command {
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      };
 | 
					      };
 | 
				
			||||||
 | 
					    } catch (e) {
 | 
				
			||||||
 | 
					      if (e.name === "AbortError") {
 | 
				
			||||||
 | 
					        return "I couldn't get a meme in time. Maybe try again?";
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    } 
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  static description = "Gets a random ancient meme";
 | 
					  static description = "Gets a random ancient meme";
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,7 +4,13 @@ const Command = require("../../classes/command.js");
 | 
				
			||||||
class CatCommand extends Command {
 | 
					class CatCommand extends Command {
 | 
				
			||||||
  async run() {
 | 
					  async run() {
 | 
				
			||||||
    this.client.sendChannelTyping(this.message.channel.id);
 | 
					    this.client.sendChannelTyping(this.message.channel.id);
 | 
				
			||||||
    const data = await fetch("https://projectlounge.pw/cta/", { redirect: "manual" });
 | 
					    const controller = new AbortController(); // eslint-disable-line no-undef
 | 
				
			||||||
 | 
					    const timeout = setTimeout(() => {
 | 
				
			||||||
 | 
					      controller.abort();
 | 
				
			||||||
 | 
					    }, 15000);
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					      const data = await fetch("https://projectlounge.pw/cta/", { redirect: "manual", signal: controller.signal });
 | 
				
			||||||
 | 
					      clearTimeout(timeout);
 | 
				
			||||||
      return {
 | 
					      return {
 | 
				
			||||||
        embed: {
 | 
					        embed: {
 | 
				
			||||||
          color: 16711680,
 | 
					          color: 16711680,
 | 
				
			||||||
| 
						 | 
					@ -14,6 +20,11 @@ class CatCommand extends Command {
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      };
 | 
					      };
 | 
				
			||||||
 | 
					    } catch (e) {
 | 
				
			||||||
 | 
					      if (e.name === "AbortError") {
 | 
				
			||||||
 | 
					        return "I couldn't get a cat image in time. Maybe try again?";
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  static description = "Gets a random cat picture";
 | 
					  static description = "Gets a random cat picture";
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -15,6 +15,7 @@ class CommandCommand extends Command {
 | 
				
			||||||
    if (this.args[0].toLowerCase() === "disable") {
 | 
					    if (this.args[0].toLowerCase() === "disable") {
 | 
				
			||||||
      if (!collections.commands.has(this.args[1].toLowerCase()) && !collections.aliases.has(this.args[1].toLowerCase())) return "That isn't a command!";
 | 
					      if (!collections.commands.has(this.args[1].toLowerCase()) && !collections.aliases.has(this.args[1].toLowerCase())) return "That isn't a command!";
 | 
				
			||||||
      const command = collections.aliases.has(this.args[1].toLowerCase()) ? collections.aliases.get(this.args[1].toLowerCase()) : this.args[1].toLowerCase();
 | 
					      const command = collections.aliases.has(this.args[1].toLowerCase()) ? collections.aliases.get(this.args[1].toLowerCase()) : this.args[1].toLowerCase();
 | 
				
			||||||
 | 
					      if (command === "command") return "You can't disable that command!";
 | 
				
			||||||
      if (disabled && disabled.includes(command)) return "That command is already disabled!";
 | 
					      if (disabled && disabled.includes(command)) return "That command is already disabled!";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      await db.disableCommand(this.message.channel.guild.id, command);
 | 
					      await db.disableCommand(this.message.channel.guild.id, command);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3,13 +3,23 @@ const Command = require("../../classes/command.js");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class DonateCommand extends Command {
 | 
					class DonateCommand extends Command {
 | 
				
			||||||
  async run() {
 | 
					  async run() {
 | 
				
			||||||
 | 
					    this.client.sendChannelTyping(this.message.channel.id);
 | 
				
			||||||
    let prefix = "";
 | 
					    let prefix = "";
 | 
				
			||||||
    const patrons = await fetch("https://projectlounge.pw/patrons").then(data => data.json());
 | 
					    const controller = new AbortController(); // eslint-disable-line no-undef
 | 
				
			||||||
 | 
					    const timeout = setTimeout(() => {
 | 
				
			||||||
 | 
					      controller.abort();
 | 
				
			||||||
 | 
					    }, 5000);
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					      const patrons = await fetch("https://projectlounge.pw/patrons", { signal: controller.signal }).then(data => data.json());
 | 
				
			||||||
 | 
					      clearTimeout(timeout);
 | 
				
			||||||
      prefix = "Thanks to the following patrons for their support:\n";
 | 
					      prefix = "Thanks to the following patrons for their support:\n";
 | 
				
			||||||
      for (const patron of patrons) {
 | 
					      for (const patron of patrons) {
 | 
				
			||||||
        prefix += `**- ${patron}**\n`;
 | 
					        prefix += `**- ${patron}**\n`;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      prefix += "\n";
 | 
					      prefix += "\n";
 | 
				
			||||||
 | 
					    } catch (e) {
 | 
				
			||||||
 | 
					      // no-op
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
    return `${prefix}Like esmBot? Consider supporting the developer on Patreon to help keep it running! https://patreon.com/TheEssem`;
 | 
					    return `${prefix}Like esmBot? Consider supporting the developer on Patreon to help keep it running! https://patreon.com/TheEssem`;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -23,7 +23,7 @@ class InfoCommand extends Command {
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
          "name": "💬 Total Servers:",
 | 
					          "name": "💬 Total Servers:",
 | 
				
			||||||
          "value": stats.guilds ? stats.guilds : `${this.client.guilds.size} (for this cluster only)`
 | 
					          "value": stats && stats.guilds ? stats.guilds : `${this.client.guilds.size} (for this cluster only)`
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
          "name": "✅ Official Server:",
 | 
					          "name": "✅ Official Server:",
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -118,8 +118,13 @@ module.exports = async (client, cluster, worker, ipc, message) => {
 | 
				
			||||||
        const filename = `${Math.random().toString(36).substring(2, 15)}.${result.name.split(".")[1]}`;
 | 
					        const filename = `${Math.random().toString(36).substring(2, 15)}.${result.name.split(".")[1]}`;
 | 
				
			||||||
        await fs.promises.writeFile(`${process.env.TEMPDIR}/${filename}`, result.file);
 | 
					        await fs.promises.writeFile(`${process.env.TEMPDIR}/${filename}`, result.file);
 | 
				
			||||||
        const imageURL = `${process.env.TMP_DOMAIN == "" ? "https://tmp.projectlounge.pw" : process.env.TMP_DOMAIN}/${filename}`;
 | 
					        const imageURL = `${process.env.TMP_DOMAIN == "" ? "https://tmp.projectlounge.pw" : process.env.TMP_DOMAIN}/${filename}`;
 | 
				
			||||||
 | 
					        const controller = new AbortController(); // eslint-disable-line no-undef
 | 
				
			||||||
 | 
					        const timeout = setTimeout(() => {
 | 
				
			||||||
 | 
					          controller.abort();
 | 
				
			||||||
 | 
					        }, 5000);
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
          await fetch(imageURL);
 | 
					          await fetch(imageURL, { signal: controller.signal });
 | 
				
			||||||
 | 
					          clearTimeout(timeout);
 | 
				
			||||||
        } catch {
 | 
					        } catch {
 | 
				
			||||||
          // this is here to make sure the image is properly cached by discord
 | 
					          // this is here to make sure the image is properly cached by discord
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue