mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-11 00:53:31 +01:00
Add support to edit emojis (#1142)
* Add support to edit emojis * Fixes for coding style. * Add and use guildEmoji constants for updateEmoji * Just use the Constant * Fix typo in edit documentation * Specify property types * Fix ridiculous typo. * Update Emoji.js
This commit is contained in:
@@ -123,6 +123,7 @@ class ClientDataManager {
|
||||
const oldEmoji = cloneObject(currentEmoji);
|
||||
currentEmoji.setup(newData);
|
||||
this.client.emit(Constants.Events.GUILD_EMOJI_UPDATE, oldEmoji, currentEmoji);
|
||||
return currentEmoji;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -2,7 +2,10 @@ const Action = require('./Action');
|
||||
|
||||
class GuildEmojiUpdateAction extends Action {
|
||||
handle(oldEmoji, newEmoji) {
|
||||
this.client.dataManager.updateEmoji(oldEmoji, newEmoji);
|
||||
const emoji = this.client.dataManager.updateEmoji(oldEmoji, newEmoji);
|
||||
return {
|
||||
emoji,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -564,6 +564,14 @@ class RESTMethods {
|
||||
.then(data => this.client.actions.GuildEmojiCreate.handle(data, guild).emoji);
|
||||
}
|
||||
|
||||
updateEmoji(emoji, _data) {
|
||||
const data = {};
|
||||
if (_data.name) data.name = _data.name;
|
||||
if (_data.roles) data.roles = _data.roles.map(r => r.id ? r.id : r);
|
||||
return this.rest.makeRequest('patch', Constants.Endpoints.guildEmoji(emoji.guild.id, emoji.id), true, data)
|
||||
.then(newEmoji => this.client.actions.GuildEmojiUpdate.handle(emoji, newEmoji).emoji);
|
||||
}
|
||||
|
||||
deleteEmoji(emoji) {
|
||||
return this.rest.makeRequest('delete', `${Constants.Endpoints.guildEmojis(emoji.guild.id)}/${emoji.id}`, true)
|
||||
.then(() => this.client.actions.GuildEmojiDelete.handle(emoji).data);
|
||||
|
||||
@@ -101,6 +101,27 @@ class Emoji {
|
||||
return encodeURIComponent(this.name);
|
||||
}
|
||||
|
||||
/**
|
||||
* Data for editing an emoji
|
||||
* @typedef {Object} EmojiEditData
|
||||
* @property {string} [name] The name of the emoji
|
||||
* @property {Collection<string, Role>|Array<string|Role>} [roles] Roles to restrict emoji to
|
||||
*/
|
||||
|
||||
/**
|
||||
* Edits the emoji
|
||||
* @param {EmojiEditData} data The new data for the emoji
|
||||
* @returns {Promise<Emoji>}
|
||||
* @example
|
||||
* // edit a emoji
|
||||
* emoji.edit({name: 'newemoji'})
|
||||
* .then(e => console.log(`Edited emoji ${e}`))
|
||||
* .catch(console.error);
|
||||
*/
|
||||
edit(data) {
|
||||
return this.client.rest.methods.updateEmoji(this, data);
|
||||
}
|
||||
|
||||
/**
|
||||
* When concatenated with a string, this automatically returns the emoji mention rather than the object.
|
||||
* @returns {string}
|
||||
|
||||
@@ -125,6 +125,7 @@ const Endpoints = exports.Endpoints = {
|
||||
guildMemberNickname: (guildID) => `${Endpoints.guildMember(guildID, '@me')}/nick`,
|
||||
guildChannels: (guildID) => `${Endpoints.guild(guildID)}/channels`,
|
||||
guildEmojis: (guildID) => `${Endpoints.guild(guildID)}/emojis`,
|
||||
guildEmoji: (guildID, emojiID) => `${Endpoints.guildEmojis(guildID)}/${emojiID}`,
|
||||
guildSearch: (guildID) => `${Endpoints.guild(guildID)}/messages/search`,
|
||||
guildVoiceRegions: (guildID) => `${Endpoints.guild(guildID)}/regions`,
|
||||
|
||||
|
||||
Reference in New Issue
Block a user