Files
custom_discordjs/structures/guilds/GuildStickers.js
T

120 lines
2.8 KiB
JavaScript
Raw Normal View History

2023-04-02 09:49:47 -04:00
import axios from "axios";
import user from "../messages/User.js";
import Guild from "./Guild.js";
2023-04-07 19:13:15 -04:00
import { BaseStruct } from "../baseStruct.js";
2023-04-02 09:49:47 -04:00
2023-04-07 19:13:15 -04:00
2023-04-07 20:12:16 -04:00
export class guildSticker extends BaseStruct {
2023-04-02 09:49:47 -04:00
/** @type {String} */
id;
/** @type {String} */
pack_id;
/** @type {String} */
name;
/** @type {String} */
description;
/** @type {String} */
tags;
/** @type {String} */
asset;
/** @type {Number} */
type;
/** @type {Number} */
format_type;
/** @type {Boolean} */
available;
/** @type {Guild} */
guild;
/** @type {user} */
user;
/** @type {Number} */
sort_value;
#construcorHelper(o) {
for (const k in this) {
if (o[k]) this[k] = o[k];
else this[k] = 0;
}
}
/**
* @description modifies the guild sticker IN PLACE
* @param {{name: String, description: String, tags: String}} params
* @returns {Promise<Boolean>}
*/
async modify(params) {
return new Promise(async (resolve) => {
2023-04-07 20:12:16 -04:00
const response = await this.client.axiosCustom.patch(`/guilds/${this.guild.id}/stickers/${this.id}`, params);
2023-04-02 09:49:47 -04:00
this.#construcorHelper(response.data);
resolve(true);
});
}
async delete() {
return new Promise(async (resolve) => {
2023-04-07 20:12:16 -04:00
await this.client.axiosCustom.delete(`/guilds/${this.guild.id}/stickers/${this.id}`);
2023-04-02 09:49:47 -04:00
resolve(true);
});
}
2023-04-07 20:12:16 -04:00
constructor(o, guild, client) {
super(client);
2023-04-02 09:49:47 -04:00
this.guild = guild;
this.#construcorHelper(o);
}
}
2023-04-07 20:12:16 -04:00
export class guildStickerManager extends BaseStruct{
2023-04-02 09:49:47 -04:00
/** @type {Map<String, guildSticker>} */
cache;
/** @type {Guild} */
guild;
/**
* @description Creates the new stickers and adds it to cache
* @returns {Promise<guildSticker>}
* @param {{name: String, description: String, tags: String }} sticker
*/
async create(sticker) {
//HOW DO YOU DEAL WITH FILES????????
//see https://discord.com/developers/docs/reference#image-data maybe?
return Promise.reject(undefined);
return new Promise(async (resolve) => {
if (!sticker.name || !sticker.description || !sticker.tags) return resolve(undefined);
2023-04-07 20:12:16 -04:00
const response = await this.client.axiosCustom.post(`https://discord.com/api/guilds/${this.guild.id}/stickers/${this.id}`);
2023-04-02 09:49:47 -04:00
resolve(new guildSticker(response.data));
});
}
/**
* @param {Guild} guild
* @param {Object[]} o
*/
2023-04-07 20:12:16 -04:00
constructor(guild, o, client) {
super(client);
2023-04-02 09:49:47 -04:00
this.guild = guild;
2023-04-07 20:12:16 -04:00
2023-04-02 09:49:47 -04:00
for (const stickerRaw of o) {
const sticker = new guildSticker(stickerRaw);
this.cache.set(sticker.id, sticker);
}
}
}