diff --git a/src/managers/GuildEmojiManager.js b/src/managers/GuildEmojiManager.js index 74807238f..c13ad1328 100644 --- a/src/managers/GuildEmojiManager.js +++ b/src/managers/GuildEmojiManager.js @@ -50,29 +50,28 @@ class GuildEmojiManager extends BaseManager { * .then(emoji => console.log(`Created new emoji with name ${emoji.name}!`)) * .catch(console.error); */ - create(attachment, name, { roles, reason } = {}) { - if (typeof attachment === 'string' && attachment.startsWith('data:')) { - const data = { image: attachment, name }; - if (roles) { - data.roles = []; - for (let role of roles instanceof Collection ? roles.values() : roles) { - role = this.guild.roles.resolve(role); - if (!role) { - return Promise.reject( - new TypeError('INVALID_TYPE', 'options.roles', 'Array or Collection of Roles or Snowflakes', true), - ); - } - data.roles.push(role.id); - } - } + async create(attachment, name, { roles, reason } = {}) { + attachment = await DataResolver.resolveImage(attachment); + if (!attachment) throw new TypeError('REQ_RESOURCE_TYPE'); - return this.client.api - .guilds(this.guild.id) - .emojis.post({ data, reason }) - .then(emoji => this.client.actions.GuildEmojiCreate.handle(this.guild, emoji).emoji); + const data = { image: attachment, name }; + if (roles) { + data.roles = []; + for (let role of roles instanceof Collection ? roles.values() : roles) { + role = this.guild.roles.resolve(role); + if (!role) { + return Promise.reject( + new TypeError('INVALID_TYPE', 'options.roles', 'Array or Collection of Roles or Snowflakes', true), + ); + } + data.roles.push(role.id); + } } - return DataResolver.resolveImage(attachment).then(image => this.create(image, name, { roles, reason })); + return this.client.api + .guilds(this.guild.id) + .emojis.post({ data, reason }) + .then(emoji => this.client.actions.GuildEmojiCreate.handle(this.guild, emoji).emoji); } /**