Added the ability to add/remove slash commands

This commit is contained in:
ION606
2023-04-18 16:50:15 -04:00
parent 0c278857ce
commit 04af684e13
7 changed files with 84 additions and 121 deletions
@@ -0,0 +1,46 @@
import { DataManager } from "../DataManager.js";
import { Interaction } from "./interaction.js";
import {interactionOptionRaw} from "./interactionOptionRaw.js";
export class InteractionManager extends DataManager {
/** @type {Map<String, interactionOptionRaw>} */
#commands;
/**
* @param {String} name
*/
async delete(name) {
if (!this.#commands.has(name)) return;
const int = this.#commands.get(name);
await this.client.axiosCustom.delete(`/applications/${this.client.id}/commands/${int.id}`);
this.#commands.delete(name);
return int;
}
/**
* @param {{name: string, description: string, options: [interactionOptionRaw], type: number, dm_permission: false}} int
*/
async set(int) {
const response = await this.client.axiosCustom.post(`/applications/${this.client.id}/commands`, int);
this.#commands.set(int.name, response);
return true;
}
/**
* @description returns a map of <name, raw_interaction>
*/
list() {
return new Map(this.#commands);
}
constructor(data, client) {
super(client);
this.#commands = new Map();
for (const commandRaw of data) {
this.#commands.set(commandRaw.name, commandRaw);
}
}
}