diff --git a/src/client/actions/MessageUpdate.js b/src/client/actions/MessageUpdate.js index 59c84dd30..042382af7 100644 --- a/src/client/actions/MessageUpdate.js +++ b/src/client/actions/MessageUpdate.js @@ -12,6 +12,7 @@ class MessageUpdateAction extends Action { if (message && !message.equals(data, true)) { const oldMessage = cloneObject(message); message.patch(data); + message._edits.unshift(oldMessage); client.emit(Constants.Events.MESSAGE_UPDATE, oldMessage, message); return { old: oldMessage, diff --git a/src/structures/Message.js b/src/structures/Message.js index 63b492c55..8a0fcc83d 100644 --- a/src/structures/Message.js +++ b/src/structures/Message.js @@ -123,6 +123,8 @@ class Message { } } + this._edits = []; + /** * Whether or not this message was sent by Discord, not actually a user (e.g. pin notifications) * @type {boolean} @@ -147,6 +149,15 @@ class Message { return new Date(this._editedTimestamp); } + /** + * An array of cached versions of the message, including the current version. + * Sorted from latest (first) to oldest (last). + * @type {Message[]} + */ + get edits() { + return this._edits.slice().unshift(this); + } + patch(data) { // eslint-disable-line complexity if (data.author) { this.author = this.client.users.get(data.author.id);