Add full guild emoji functionality (#749)

* all the emoji stuff

* fix things for hydra 😘

* feck i need to stop committing on github

* update docs again

* Butts
This commit is contained in:
Gus Caplan
2016-09-27 19:44:09 -05:00
committed by Schuyler Cebulskie
parent 682e33cad9
commit aed75e1f9a
10 changed files with 112 additions and 8 deletions

View File

@@ -20,6 +20,9 @@ class ActionsManager {
this.register('UserGet');
this.register('UserUpdate');
this.register('GuildSync');
this.register('GuildEmojiCreate');
this.register('GuildEmojiDelete');
this.register('GuildEmojiUpdate');
}
register(name) {

View File

@@ -0,0 +1,18 @@
const Action = require('./Action');
class EmojiCreateAction extends Action {
handle(data, guild) {
const client = this.client;
const emoji = client.dataManager.newEmoji(data, guild);
return {
emoji,
};
}
}
/**
* Emitted whenever an emoji is created
* @event Client#guildEmojiCreate
* @param {Emoji} emoji The emoji that was created.
*/
module.exports = EmojiCreateAction;

View File

@@ -0,0 +1,18 @@
const Action = require('./Action');
class EmojiDeleteAction extends Action {
handle(data) {
const client = this.client;
client.dataManager.killEmoji(data);
return {
data,
};
}
}
/**
* Emitted whenever an emoji is deleted
* @event Client#guildEmojiDelete
* @param {Emoji} emoji The emoji that was deleted.
*/
module.exports = EmojiDeleteAction;

View File

@@ -0,0 +1,27 @@
const Action = require('./Action');
const Constants = require('../../util/Constants');
class GuildEmojiUpdateAction extends Action {
handle(data, guild) {
const client = this.client;
for (let emoji of data.emojis) {
const already = guild.emojis.has(emoji.id);
emoji = client.dataManager.newEmoji(emoji, guild);
if (already) client.emit(Constants.Events.GUILD_EMOJI_UPDATE, guild, emoji);
}
for (let emoji of guild.emojis) {
if (!data.emoijs.has(emoji.id)) client.dataManager.killEmoji(emoji);
}
return {
emojis: data.emojis,
};
}
}
/**
* Emitted whenever an emoji is updated
* @event Client#guildEmojiUpdate
* @param {Guild} guild The guild that the emoji was updated in.
* @param {Emoji} emoji The emoji that was updated.
*/
module.exports = GuildEmojiUpdateAction;