diff --git a/lib/Client/InternalClient.js b/lib/Client/InternalClient.js index cda848a03..c8ada0bc6 100644 --- a/lib/Client/InternalClient.js +++ b/lib/Client/InternalClient.js @@ -336,6 +336,39 @@ var InternalClient = (function () { client.emit("warn", "message created but channel is not cached"); } break; + + case PacketType.MESSAGE_DELETE: + // format https://discordapi.readthedocs.org/en/latest/reference/channels/messages.html#message-delete + var channel = self.channels.get("id", data.channel_id); + if (channel) { + // potentially blank + var msg = channel.messages.get("id", data.id); + client.emit("messageDeleted", msg); + if(msg){ + channel.messages.remove(msg); + } + } else { + client.emit("warn", "message was deleted but channel is not cached"); + } + break; + case PacketType.MESSAGE_UPDATE: + // format https://discordapi.readthedocs.org/en/latest/reference/channels/messages.html#message-format + var channel = self.channels.get("id", data.channel_id); + if (channel) { + // potentially blank + var msg = channel.messages.get("id", data.id); + if(msg){ + // old message exists + var nmsg = channel.messages.update(msg, new Message(data, channel, client)); + client.emit("messageUpdated", nmsg, msg); + }else{ + var nmsg = channel.messages.add(new Message(data, channel, client)); + client.emit("messageUpdated", nmsg); + } + } else { + client.emit("warn", "message was updated but channel is not cached"); + } + break; } }; diff --git a/lib/Constants.js b/lib/Constants.js index 47c0ea7a9..e41b7430c 100644 --- a/lib/Constants.js +++ b/lib/Constants.js @@ -100,7 +100,9 @@ var Permissions = { var PacketType = { READY: "READY", - MESSAGE_CREATE: "MESSAGE_CREATE" + MESSAGE_CREATE: "MESSAGE_CREATE", + MESSAGE_UPDATE: "MESSAGE_UPDATE", + MESSAGE_DELETE: "MESSAGE_DELETE" }; exports.API_ENDPOINT = API; diff --git a/lib/index.js b/lib/index.js index bc9bb3d45..a58430916 100644 --- a/lib/index.js +++ b/lib/index.js @@ -17,6 +17,17 @@ a.on("message", function (m) { }); }); +a.on("messageUpdated", function(newm, oldm){ + if(oldm){ + a.sendMessage(oldm, `woah! ${newm.author} changed their message! how rude`) + } +}) +a.on("messageDeleted", function(oldm){ + if(oldm){ + a.sendMessage(oldm, `woah! ${oldm.author} deleted their message! how rude`) + } +}) + a.login(process.env["discordEmail"], process.env["discordPass"])["catch"](function (e) { return console.log(e); }); \ No newline at end of file diff --git a/src/Constants.js b/src/Constants.js index b6ca95ef5..81ec7f38d 100644 --- a/src/Constants.js +++ b/src/Constants.js @@ -62,7 +62,9 @@ var Permissions = { var PacketType = { READY : "READY", - MESSAGE_CREATE : "MESSAGE_CREATE" + MESSAGE_CREATE : "MESSAGE_CREATE", + MESSAGE_UPDATE : "MESSAGE_UPDATE", + MESSAGE_DELETE : "MESSAGE_DELETE", } exports.API_ENDPOINT = API;