mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-19 21:13:30 +01:00
feat(guildemojimanager): add delete and edit methods (#7286)
Co-authored-by: Rodry <38259440+ImRodry@users.noreply.github.com> Co-authored-by: Antonio Román <kyradiscord@gmail.com>
This commit is contained in:
@@ -100,6 +100,48 @@ class GuildEmojiManager extends BaseGuildEmojiManager {
|
|||||||
for (const emoji of data) emojis.set(emoji.id, this._add(emoji, cache));
|
for (const emoji of data) emojis.set(emoji.id, this._add(emoji, cache));
|
||||||
return emojis;
|
return emojis;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deletes an emoji.
|
||||||
|
* @param {EmojiResolvable} emoji The Emoji resolvable to delete
|
||||||
|
* @param {string} [reason] Reason for deleting the emoji
|
||||||
|
* @returns {Promise<void>}
|
||||||
|
*/
|
||||||
|
async delete(emoji, reason) {
|
||||||
|
const id = this.resolveId(emoji);
|
||||||
|
if (!id) throw new TypeError('INVALID_TYPE', 'emoji', 'EmojiResolvable', true);
|
||||||
|
await this.client.api.guilds(this.guild.id).emojis(id).delete({ reason });
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Edits an emoji.
|
||||||
|
* @param {EmojiResolvable} emoji The Emoji resolvable to edit
|
||||||
|
* @param {GuildEmojiEditData} data The new data for the emoji
|
||||||
|
* @param {string} [reason] Reason for editing this emoji
|
||||||
|
* @returns {Promise<GuildEmoji>}
|
||||||
|
*/
|
||||||
|
async edit(emoji, data, reason) {
|
||||||
|
const id = this.resolveId(emoji);
|
||||||
|
if (!id) throw new TypeError('INVALID_TYPE', 'emoji', 'EmojiResolvable', true);
|
||||||
|
const roles = data.roles?.map(r => this.guild.roles.resolveId(r));
|
||||||
|
const newData = await this.client.api
|
||||||
|
.guilds(this.guild.id)
|
||||||
|
.emojis(id)
|
||||||
|
.patch({
|
||||||
|
data: {
|
||||||
|
name: data.name,
|
||||||
|
roles,
|
||||||
|
},
|
||||||
|
reason,
|
||||||
|
});
|
||||||
|
const existing = this.cache.get(id);
|
||||||
|
if (existing) {
|
||||||
|
const clone = existing._clone();
|
||||||
|
clone._patch(newData);
|
||||||
|
return clone;
|
||||||
|
}
|
||||||
|
return this._add(newData);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = GuildEmojiManager;
|
module.exports = GuildEmojiManager;
|
||||||
|
|||||||
@@ -104,21 +104,8 @@ class GuildEmoji extends BaseGuildEmoji {
|
|||||||
* .then(e => console.log(`Edited emoji ${e}`))
|
* .then(e => console.log(`Edited emoji ${e}`))
|
||||||
* .catch(console.error);
|
* .catch(console.error);
|
||||||
*/
|
*/
|
||||||
async edit(data, reason) {
|
edit(data, reason) {
|
||||||
const roles = data.roles?.map(r => r.id ?? r);
|
return this.guild.emojis.edit(this.id, data, reason);
|
||||||
const newData = await this.client.api
|
|
||||||
.guilds(this.guild.id)
|
|
||||||
.emojis(this.id)
|
|
||||||
.patch({
|
|
||||||
data: {
|
|
||||||
name: data.name,
|
|
||||||
roles,
|
|
||||||
},
|
|
||||||
reason,
|
|
||||||
});
|
|
||||||
const clone = this._clone();
|
|
||||||
clone._patch(newData);
|
|
||||||
return clone;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -137,7 +124,7 @@ class GuildEmoji extends BaseGuildEmoji {
|
|||||||
* @returns {Promise<GuildEmoji>}
|
* @returns {Promise<GuildEmoji>}
|
||||||
*/
|
*/
|
||||||
async delete(reason) {
|
async delete(reason) {
|
||||||
await this.client.api.guilds(this.guild.id).emojis(this.id).delete({ reason });
|
await this.guild.emojis.delete(this.id, reason);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
2
packages/discord.js/typings/index.d.ts
vendored
2
packages/discord.js/typings/index.d.ts
vendored
@@ -2874,6 +2874,8 @@ export class GuildEmojiManager extends BaseGuildEmojiManager {
|
|||||||
): Promise<GuildEmoji>;
|
): Promise<GuildEmoji>;
|
||||||
public fetch(id: Snowflake, options?: BaseFetchOptions): Promise<GuildEmoji>;
|
public fetch(id: Snowflake, options?: BaseFetchOptions): Promise<GuildEmoji>;
|
||||||
public fetch(id?: undefined, options?: BaseFetchOptions): Promise<Collection<Snowflake, GuildEmoji>>;
|
public fetch(id?: undefined, options?: BaseFetchOptions): Promise<Collection<Snowflake, GuildEmoji>>;
|
||||||
|
public delete(emoji: EmojiResolvable, reason?: string): Promise<void>;
|
||||||
|
public edit(emoji: EmojiResolvable, data: GuildEmojiEditData, reason?: string): Promise<GuildEmoji>;
|
||||||
}
|
}
|
||||||
|
|
||||||
export class GuildEmojiRoleManager extends DataManager<Snowflake, Role, RoleResolvable> {
|
export class GuildEmojiRoleManager extends DataManager<Snowflake, Role, RoleResolvable> {
|
||||||
|
|||||||
Reference in New Issue
Block a user