reworked fetching procedure

This commit is contained in:
mmacierzanka committed 2021-08-02 21:12:16 +02:00
1 parent 8ff79484c5
commit 8bd3dbd8d2
3 files changed
+25 -45

No files matched your search

+2 -2
View File
@@ -2,8 +2,8 @@ export type ArgumentType = "STRING" | "BOOLEAN" | "INTEGER" | "FLOAT";
export type ArgumentResolvable = string | boolean | number;
export interface Argument {
name: string;
isOptional?: boolean;
type?: ArgumentType;
optional: boolean;
type: ArgumentType;
}
export const ProcessArgument = (
a: string,
+4 -4
View File
@@ -112,9 +112,8 @@ export class Bot extends EventEmitter {
this.emit("READY");
});
this.client.on("message", async (m) => {
const cmdMsg: CommandMessageStructure | null =
this.commands.fetch(m);
if (cmdMsg?.command) {
const cmdMsg = this.commands.fetch(m);
if (cmdMsg) {
this.emit("COMMAND", m, cmdMsg);
try {
await cmdMsg.command.start(m, cmdMsg.arguments);
@@ -143,7 +142,8 @@ export class Bot extends EventEmitter {
this.emit("ERROR", e);
return;
}
} else if (cmdMsg) {
} else if (m.content.startsWith(this.commands.prefix)) {
this.emit("MESSAGE", m);
this.messages.system.send(
"NOT_FOUND",
{ phrase: m.content, user: m.member || undefined },
+19 -39
View File
@@ -6,15 +6,14 @@ import {
GuildMember,
MessageEmbed,
} from "discord.js";
import { Argument, ArgumentResolvable } from "./Arguments.js";
import { Argument, ArgumentResolvable, ProcessArgument } from "./Arguments.js";
//TYPE DEFINITIONS
type GetMode = "ALL" | "PREFIX" | "NO_PREFIX";
type PermissionCheckTypes = "ALL" | "ANY";
export interface CommandMessageStructure {
name: string;
command: Command;
arguments: ArgumentResolvable[];
command: Command | null;
}
interface CommandBuilder {
name: string;
@@ -145,7 +144,7 @@ export class Command {
let usageTemplate: string = "";
this.arguments.map((e) => {
usageTemplate += `[${e.name} (${e.type}${
e.isOptional ? ", optional" : ""
e.optional ? ", optional" : ""
})] `;
});
return usageTemplate;
@@ -261,47 +260,28 @@ export class CommandManager {
* @returns *CommandMessagesStructure* | *null*
*/
fetch(message: Message): CommandMessageStructure | null {
if (!message.author.bot && message.content.startsWith(this.prefix)) {
let msgContent = message.content.replace(this.prefix, "");
const cmdName = msgContent.split(" ")[0];
const cmd: Command | null = this.get(cmdName, "PREFIX");
msgContent = msgContent.replace(cmdName, "");
let cmdArguments: string[] = msgContent.split(
this.argumentSeparator
);
cmdArguments = cmdArguments.map((a) => {
if (!message.author.bot) {
const content = message.content.startsWith(this.prefix)
? message.content.replace(this.prefix, "")
: message.content;
const name = content.split(" ")[0];
const command = this.get(name, "ALL");
if (command) {
const argumentsText = content.replace(name, "");
const argumentsList = argumentsText
.split(this.argumentSeparator)
.map((a) => {
return a.replace(" ", "");
});
if (
(cmdArguments[0] == "" || cmdArguments[0] == " ") &&
cmdArguments.length == 1
(argumentsList[0] == "" || argumentsList[0] == " ") &&
argumentsList.length == 1
) {
cmdArguments = [];
argumentsList.splice(0, 1);
}
return {
name: cmdName,
arguments: cmdArguments,
command: cmd,
};
} else if (!message.author.bot) {
const cmdName = message.content.split(" ")[0];
const cmd: Command | null = this.get(cmdName, "NO_PREFIX");
if (cmd) {
const cmdArgumentsStr = message.content.replace(cmdName, "");
let cmdArguments: string[] = cmdArgumentsStr.split(",");
cmdArguments = cmdArguments.map((a) => {
return a.replace(" ", "");
});
if (
(cmdArguments[0] == "" || cmdArguments[0] == " ") &&
cmdArguments.length == 1
) {
cmdArguments = [];
}
return {
name: cmdName,
arguments: cmdArguments,
command: cmd,
command: command,
arguments: argumentsList,
};
} else {
return null;