Clean up Message#mentions and message updates

This commit is contained in:
Schuyler Cebulskie
2017-04-10 03:01:50 -04:00
parent 878e5d7c76
commit fa016b6b41
3 changed files with 194 additions and 89 deletions

View File

@@ -1,6 +1,5 @@
const Action = require('./Action');
const Constants = require('../../util/Constants');
const Message = require('../../structures/Message');
class MessageUpdateAction extends Action {
handle(data) {
@@ -10,14 +9,11 @@ class MessageUpdateAction extends Action {
if (channel) {
const message = channel.messages.get(data.id);
if (message) {
const newMessage = new Message(message.channel, this.patchDataPacket(data, message), client);
newMessage._edits.push(message, ...message._edits);
newMessage.reactions = message.reactions;
channel.messages.set(data.id, newMessage);
client.emit(Constants.Events.MESSAGE_UPDATE, message, newMessage);
message.patch(data);
client.emit(Constants.Events.MESSAGE_UPDATE, message._edits[0], message);
return {
old: message,
updated: newMessage,
old: message._edits[0],
updated: message,
};
}
@@ -32,29 +28,6 @@ class MessageUpdateAction extends Action {
updated: null,
};
}
patchDataPacket(data, message) {
data.type = 'type' in data ? data.type : Constants.MessageTypes.indexOf(message.type);
data.tts = 'tts' in data ? data.tts : message.tts;
data.timestamp = 'timestamp' in data ? data.timestamp : message.createdAt.toString();
data.pinned = 'pinned' in data ? data.pinned : message.pinned;
data.nonce = 'nonce' in data ? data.nonce : message.nonce;
data.mentions = 'mentions' in data ? data.mentions : message.mentions.users.keyArray();
data.mentions_roles = 'mentions_roles' in data ?
data.mentions_roles : message.mentions.roles.keyArray();
data.mention_everyone = 'mention_everyone' in data ? data.mention_everyone : message.mentions.everyone;
data.embeds = 'embeds' in data ? data.embeds : message.embeds;
data.content = 'content' in data ? data.content : message.content;
data.author = 'author' in data ? data.author : {
username: message.author.username,
id: message.author.id,
discriminator: message.author.discriminator,
avatar: message.author.avatar,
};
data.attachments = 'attachments' in data ? data.attachments : message.attachments.array();
return data;
}
}
/**