mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-09 16:13:31 +01:00
39 lines
1.0 KiB
JavaScript
39 lines
1.0 KiB
JavaScript
const Action = require('./Action');
|
|
|
|
function mappify(iterable) {
|
|
const map = new Map();
|
|
for (const x of iterable) map.set(...x);
|
|
return map;
|
|
}
|
|
|
|
class GuildEmojisUpdateAction extends Action {
|
|
handle(data) {
|
|
const guild = this.client.guilds.get(data.guild_id);
|
|
if (!guild || !guild.emojis) return;
|
|
|
|
const deletions = mappify(guild.emojis.entries());
|
|
|
|
for (const emoji of data.emojis) {
|
|
// Determine type of emoji event
|
|
const cachedEmoji = guild.emojis.get(emoji.id);
|
|
if (cachedEmoji) {
|
|
deletions.delete(emoji.id);
|
|
if (!cachedEmoji.equals(emoji, true)) {
|
|
// Emoji updated
|
|
this.client.actions.GuildEmojiUpdate.handle(cachedEmoji, emoji);
|
|
}
|
|
} else {
|
|
// Emoji added
|
|
this.client.actions.GuildEmojiCreate.handle(guild, emoji);
|
|
}
|
|
}
|
|
|
|
for (const emoji of deletions.values()) {
|
|
// Emoji deleted
|
|
this.client.actions.GuildEmojiDelete.handle(emoji);
|
|
}
|
|
}
|
|
}
|
|
|
|
module.exports = GuildEmojisUpdateAction;
|