mrmBot-Matrix/classes/command.js

71 lines
2 KiB
JavaScript
Raw Normal View History

class Command {
success = true;
constructor(client, options) {
this.client = client;
this.origOptions = options;
2022-03-22 20:43:26 +00:00
this.type = options.type;
this.args = options.args;
if (options.type === "classic") {
this.message = options.message;
this.channel = options.message.channel;
this.guild = options.message.guild;
this.author = options.message.author;
this.member = options.message.member;
2022-03-22 20:43:26 +00:00
this.content = options.content;
this.options = options.specialArgs;
2022-03-22 20:43:26 +00:00
this.reference = {
messageReference: {
channelID: this.message.channelID,
2022-03-22 20:43:26 +00:00
messageID: this.message.id,
guildID: this.message.guildID ?? undefined,
2022-03-22 20:43:26 +00:00
failIfNotExists: false
},
allowedMentions: {
repliedUser: false
}
};
} else if (options.type === "application") {
2022-03-22 20:43:26 +00:00
this.interaction = options.interaction;
this.args = [];
this.channel = options.interaction.channel;
this.guild = options.interaction.guild;
this.author = this.member = options.interaction.guildID ? options.interaction.member : options.interaction.user;
if (options.interaction.data.options) {
this.options = options.interaction.data.options.raw.reduce((obj, item) => {
obj[item.name] = item.value;
return obj;
}, {});
this.optionsArray = options.interaction.data.options.raw;
} else {
this.options = {};
}
2022-03-22 20:43:26 +00:00
}
}
async run() {
return "It works!";
}
2022-03-22 20:43:26 +00:00
async acknowledge() {
if (this.type === "classic") {
const channel = this.channel ?? await this.client.rest.channels.get(this.message.channelID);
await channel.sendTyping();
} else if (!this.interaction.acknowledged) {
await this.interaction.defer();
2022-03-22 20:43:26 +00:00
}
}
static init() {
return this;
}
static description = "No description found";
static aliases = [];
static arguments = [];
static flags = [];
2022-03-22 20:43:26 +00:00
static slashAllowed = true;
static directAllowed = true;
static adminOnly = false;
}
export default Command;