Added sticker, reimplemented reload, removed user count from stats
This commit is contained in:
		
							parent
							
								
									7009ff339f
								
							
						
					
					
						commit
						f0e19d6ad3
					
				
					 7 changed files with 50 additions and 74 deletions
				
			
		| 
						 | 
					@ -4,7 +4,7 @@ class ReloadCommand extends Command {
 | 
				
			||||||
  // quite possibly one of the hackiest commands in the bot
 | 
					  // quite possibly one of the hackiest commands in the bot
 | 
				
			||||||
  run() {
 | 
					  run() {
 | 
				
			||||||
    return new Promise((resolve) => {
 | 
					    return new Promise((resolve) => {
 | 
				
			||||||
      /*if (this.message.author.id !== process.env.OWNER) resolve("Only the bot owner can reload commands!");
 | 
					      if (this.message.author.id !== process.env.OWNER) resolve("Only the bot owner can reload commands!");
 | 
				
			||||||
      if (this.args.length === 0) resolve("You need to provide a command to reload!");
 | 
					      if (this.args.length === 0) resolve("You need to provide a command to reload!");
 | 
				
			||||||
      this.ipc.broadcast("reload", this.args[0]);
 | 
					      this.ipc.broadcast("reload", this.args[0]);
 | 
				
			||||||
      this.ipc.register("reloadSuccess", () => {
 | 
					      this.ipc.register("reloadSuccess", () => {
 | 
				
			||||||
| 
						 | 
					@ -16,8 +16,7 @@ class ReloadCommand extends Command {
 | 
				
			||||||
        this.ipc.unregister("reloadSuccess");
 | 
					        this.ipc.unregister("reloadSuccess");
 | 
				
			||||||
        this.ipc.unregister("reloadFail");
 | 
					        this.ipc.unregister("reloadFail");
 | 
				
			||||||
        resolve(message);
 | 
					        resolve(message);
 | 
				
			||||||
      });*/
 | 
					      });
 | 
				
			||||||
      resolve("This command is currently disabled until the ECMAScript module format supports unloading imported files.");
 | 
					 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -42,7 +42,8 @@ class StatsCommand extends Command {
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
          "name": "Host",
 | 
					          "name": "Host",
 | 
				
			||||||
          "value": `${os.type()} ${os.release()} (${os.arch()})`
 | 
					          "value": `${os.type()} ${os.release()} (${os.arch()})`,
 | 
				
			||||||
 | 
					          "inline": true
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
          "name": "Library",
 | 
					          "name": "Library",
 | 
				
			||||||
| 
						 | 
					@ -68,11 +69,6 @@ class StatsCommand extends Command {
 | 
				
			||||||
          "name": "Servers",
 | 
					          "name": "Servers",
 | 
				
			||||||
          "value": stats && 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)`,
 | 
				
			||||||
          "inline": true
 | 
					          "inline": true
 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
          "name": "Users (approximation)",
 | 
					 | 
				
			||||||
          "value": stats && stats.users ? stats.users : `${this.client.users.size} (for this cluster only)`,
 | 
					 | 
				
			||||||
          "inline": true
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        ]
 | 
					        ]
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										31
									
								
								commands/general/sticker.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								commands/general/sticker.js
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,31 @@
 | 
				
			||||||
 | 
					import Command from "../../classes/command.js";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class StickerCommand extends Command {
 | 
				
			||||||
 | 
					  async run() {
 | 
				
			||||||
 | 
					    if (!this.message.stickerItems) return "You need to provide a sticker!";
 | 
				
			||||||
 | 
					    const sticker = this.message.stickerItems[0];
 | 
				
			||||||
 | 
					    if (sticker.format_type === 1) { // PNG
 | 
				
			||||||
 | 
					      return `https://cdn.discordapp.com/stickers/${sticker.id}.png`;
 | 
				
			||||||
 | 
					    } else if (sticker.format_type === 2) { // APNG
 | 
				
			||||||
 | 
					      return {
 | 
				
			||||||
 | 
					        embed: {
 | 
				
			||||||
 | 
					          color: 16711680,
 | 
				
			||||||
 | 
					          description: `[This sticker is an APNG; however, since Discord doesn't allow displaying APNGs outside of stickers, you'll have to save it or open it in your browser to view it.](https://cdn.discordapp.com/stickers/${sticker.id}.png)`,
 | 
				
			||||||
 | 
					          image: {
 | 
				
			||||||
 | 
					            url: `https://cdn.discordapp.com/stickers/${sticker.id}.png`
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      };
 | 
				
			||||||
 | 
					    } else if (sticker.format_type === 3) { // Lottie
 | 
				
			||||||
 | 
					      return `I can't display this sticker because it uses the Lottie animation format; however, I can give you the raw JSON link to it: https://cdn.discordapp.com/stickers/${sticker.id}.json`;
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					      return "I don't recognize that sticker format!";
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  static description = "Gets a raw sticker image";
 | 
				
			||||||
 | 
					  static aliases = ["s", "stick"];
 | 
				
			||||||
 | 
					  static arguments = ["[sticker]"];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export default StickerCommand;
 | 
				
			||||||
							
								
								
									
										17
									
								
								package-lock.json
									
										
									
										generated
									
									
									
								
							
							
						
						
									
										17
									
								
								package-lock.json
									
										
									
										generated
									
									
									
								
							| 
						 | 
					@ -13,7 +13,7 @@
 | 
				
			||||||
        "cowsay2": "^2.0.4",
 | 
					        "cowsay2": "^2.0.4",
 | 
				
			||||||
        "dotenv": "^9.0.2",
 | 
					        "dotenv": "^9.0.2",
 | 
				
			||||||
        "emoji-regex": "^9.2.2",
 | 
					        "emoji-regex": "^9.2.2",
 | 
				
			||||||
        "eris": "^0.15.1",
 | 
					        "eris": "github:abalabahaha/eris#dev",
 | 
				
			||||||
        "eris-fleet": "github:esmBot/eris-fleet",
 | 
					        "eris-fleet": "github:esmBot/eris-fleet",
 | 
				
			||||||
        "file-type": "^16.1.0",
 | 
					        "file-type": "^16.1.0",
 | 
				
			||||||
        "format-duration": "^1.4.0",
 | 
					        "format-duration": "^1.4.0",
 | 
				
			||||||
| 
						 | 
					@ -1232,11 +1232,11 @@
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/eris": {
 | 
					    "node_modules/eris": {
 | 
				
			||||||
      "version": "0.15.1",
 | 
					      "version": "0.16.0-dev",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/eris/-/eris-0.15.1.tgz",
 | 
					      "resolved": "git+ssh://git@github.com/abalabahaha/eris.git#5246da9589bdc22d610d960202d1f84dc865c3a2",
 | 
				
			||||||
      "integrity": "sha512-IQ3BPW6OjgFoqjdh+irPOa1jFlkotk+WNu2GQQ7QAQfbzQEPZgn+F+hpOxfMUXPHOZMX4sPKLkVDkMHAssBYhw==",
 | 
					      "license": "MIT",
 | 
				
			||||||
      "dependencies": {
 | 
					      "dependencies": {
 | 
				
			||||||
        "ws": "^7.2.1"
 | 
					        "ws": "^7.4.6"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "engines": {
 | 
					      "engines": {
 | 
				
			||||||
        "node": ">=10.4.0"
 | 
					        "node": ">=10.4.0"
 | 
				
			||||||
| 
						 | 
					@ -4990,13 +4990,12 @@
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "eris": {
 | 
					    "eris": {
 | 
				
			||||||
      "version": "0.15.1",
 | 
					      "version": "git+ssh://git@github.com/abalabahaha/eris.git#5246da9589bdc22d610d960202d1f84dc865c3a2",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/eris/-/eris-0.15.1.tgz",
 | 
					      "from": "eris@abalabahaha/eris#dev",
 | 
				
			||||||
      "integrity": "sha512-IQ3BPW6OjgFoqjdh+irPOa1jFlkotk+WNu2GQQ7QAQfbzQEPZgn+F+hpOxfMUXPHOZMX4sPKLkVDkMHAssBYhw==",
 | 
					 | 
				
			||||||
      "requires": {
 | 
					      "requires": {
 | 
				
			||||||
        "opusscript": "^0.0.8",
 | 
					        "opusscript": "^0.0.8",
 | 
				
			||||||
        "tweetnacl": "^1.0.1",
 | 
					        "tweetnacl": "^1.0.1",
 | 
				
			||||||
        "ws": "^7.2.1"
 | 
					        "ws": "^7.4.6"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "eris-fleet": {
 | 
					    "eris-fleet": {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -29,7 +29,7 @@
 | 
				
			||||||
    "cowsay2": "^2.0.4",
 | 
					    "cowsay2": "^2.0.4",
 | 
				
			||||||
    "dotenv": "^9.0.2",
 | 
					    "dotenv": "^9.0.2",
 | 
				
			||||||
    "emoji-regex": "^9.2.2",
 | 
					    "emoji-regex": "^9.2.2",
 | 
				
			||||||
    "eris": "^0.15.1",
 | 
					    "eris": "github:abalabahaha/eris#dev",
 | 
				
			||||||
    "eris-fleet": "github:esmBot/eris-fleet",
 | 
					    "eris-fleet": "github:esmBot/eris-fleet",
 | 
				
			||||||
    "file-type": "^16.1.0",
 | 
					    "file-type": "^16.1.0",
 | 
				
			||||||
    "format-duration": "^1.4.0",
 | 
					    "format-duration": "^1.4.0",
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										6
									
								
								shard.js
									
										
									
									
									
								
							
							
						
						
									
										6
									
								
								shard.js
									
										
									
									
									
								
							| 
						 | 
					@ -62,10 +62,8 @@ class Shard extends BaseClusterWorker {
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    this.ipc.register("reload", async (message) => {
 | 
					    this.ipc.register("reload", async (message) => {
 | 
				
			||||||
      //const result = await unload(message.msg);
 | 
					      const result = await load(paths.get(message.msg));
 | 
				
			||||||
      //if (result) return this.ipc.broadcast("reloadFail", { result: result });
 | 
					      if (result) return this.ipc.broadcast("reloadFail", { result });
 | 
				
			||||||
      const result2 = await load(paths.get(message.msg));
 | 
					 | 
				
			||||||
      if (result2) return this.ipc.broadcast("reloadFail", { result: result2 });
 | 
					 | 
				
			||||||
      return this.ipc.broadcast("reloadSuccess");
 | 
					      return this.ipc.broadcast("reloadSuccess");
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,27 +1,12 @@
 | 
				
			||||||
import { paths, commands, info, aliases as _aliases } from "./collections.js";
 | 
					import { paths, commands, info, aliases as _aliases } from "./collections.js";
 | 
				
			||||||
import { log } from "./logger.js";
 | 
					import { log } from "./logger.js";
 | 
				
			||||||
//import { Worker, isMainThread, workerData, parentPort } from "worker_threads";
 | 
					 | 
				
			||||||
//import { join, dirname } from "path";
 | 
					 | 
				
			||||||
//import { fileURLToPath } from "url";
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*const importNoCache = (module) => {
 | 
					let queryValue = 0;
 | 
				
			||||||
  return new Promise((resolve, reject) => {
 | 
					 | 
				
			||||||
    const worker = new Worker(new URL("./handler.js", import.meta.url), {
 | 
					 | 
				
			||||||
      workerData: { module: module }
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
    worker.once("message", (result) => {
 | 
					 | 
				
			||||||
      resolve(result);
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
    worker.once("error", (result) => {
 | 
					 | 
				
			||||||
      reject(result);
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
  });
 | 
					 | 
				
			||||||
};*/
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
// load command into memory
 | 
					// load command into memory
 | 
				
			||||||
export async function load(command, soundStatus) {
 | 
					export async function load(command, soundStatus) {
 | 
				
			||||||
  //const props = await importNoCache(`../${command}`);
 | 
					  const { default: props } = await import(`../${command}?v=${queryValue}`);
 | 
				
			||||||
  const { default: props } = await import(`../${command}`);
 | 
					  queryValue++;
 | 
				
			||||||
  if (props.requires.includes("mashape") && process.env.MASHAPE === "") return log("warn", `Mashape/RapidAPI info not provided in config, skipped loading command ${command}...`);
 | 
					  if (props.requires.includes("mashape") && process.env.MASHAPE === "") return log("warn", `Mashape/RapidAPI info not provided in config, skipped loading command ${command}...`);
 | 
				
			||||||
  if (props.requires.includes("sound") && soundStatus) return log("warn", `Failed to connect to some Lavalink nodes, skipped loading command ${command}...`);
 | 
					  if (props.requires.includes("sound") && soundStatus) return log("warn", `Failed to connect to some Lavalink nodes, skipped loading command ${command}...`);
 | 
				
			||||||
  const commandArray = command.split("/");
 | 
					  const commandArray = command.split("/");
 | 
				
			||||||
| 
						 | 
					@ -46,35 +31,3 @@ export async function load(command, soundStatus) {
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  return false;
 | 
					  return false;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					 | 
				
			||||||
// unload command from memory
 | 
					 | 
				
			||||||
/*export async function unload(command) {
 | 
					 | 
				
			||||||
  let cmd;
 | 
					 | 
				
			||||||
  if (commands.has(command)) {
 | 
					 | 
				
			||||||
    cmd = commands.get(command);
 | 
					 | 
				
			||||||
  } else if (_aliases.has(command)) {
 | 
					 | 
				
			||||||
    cmd = commands.get(_aliases.get(command));
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  if (!cmd) return `The command \`${command}\` doesn't seem to exist, nor is it an alias.`;
 | 
					 | 
				
			||||||
  const path = paths.get(command);
 | 
					 | 
				
			||||||
  const mod = require.cache[require.resolve(`../${path}`)];
 | 
					 | 
				
			||||||
  delete require.cache[require.resolve(`../${path}`)];
 | 
					 | 
				
			||||||
  for (let i = 0; i < module.children.length; i++) {
 | 
					 | 
				
			||||||
    if (module.children[i] === mod) {
 | 
					 | 
				
			||||||
      module.children.splice(i, 1);
 | 
					 | 
				
			||||||
      break;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  return false;
 | 
					 | 
				
			||||||
}*/
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/*if (!isMainThread) {
 | 
					 | 
				
			||||||
  const getModule = async () => {
 | 
					 | 
				
			||||||
    console.log("test");
 | 
					 | 
				
			||||||
    const module = await import(workerData.module);
 | 
					 | 
				
			||||||
    console.log("test 2");
 | 
					 | 
				
			||||||
    parentPort.postMessage(module);
 | 
					 | 
				
			||||||
    process.exit();
 | 
					 | 
				
			||||||
  };
 | 
					 | 
				
			||||||
  getModule();
 | 
					 | 
				
			||||||
}*/
 | 
					 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue