diff --git a/lib/Client.js b/lib/Client.js index 8bb9e87ba..059d09628 100644 --- a/lib/Client.js +++ b/lib/Client.js @@ -347,15 +347,33 @@ var Client = (function () { } function remove() { - request.del(Endpoints.CHANNELS + "/" + message.channel.id + "/messages/" + message.id).set("authorization", self.token).end(function (err, res) { - if (err) { - callback(err); - reject(err); - } else { - callback(null); - resolve(); + if (self.options.queue) { + if (!self.queue[message.channel.id]) { + self.queue[message.channel.id] = []; } - }); + self.queue[message.channel.id].push({ + action: "deleteMessage", + message: message, + then: good, + error: bad + }); + + self.checkQueue(message.channel.id); + } else { + self._deleteMessage(message).then(good)["catch"](bad); + } + } + + function good() { + prom.success = true; + callback(null); + resolve(); + } + + function bad(err) { + prom.error = err; + callback(err); + reject(err); } }); @@ -1468,6 +1486,20 @@ var Client = (function () { }); }); } + }, { + key: "_deleteMessage", + value: function _deleteMessage(message) { + var self = this; + return new Promise(function (resolve, reject) { + request.del(Endpoints.CHANNELS + "/" + message.channel.id + "/messages/" + message.id).set("authorization", self.token).end(function (err, res) { + if (err) { + reject(err); + } else { + resolve(); + } + }); + }); + } }, { key: "checkQueue", value: function checkQueue(channelID) { @@ -1520,6 +1552,18 @@ var Client = (function () { doNext(); }); break; + case "deleteMessage": + var msgToDel = queuedEvent; + self._deleteMessage(msgToDel.message).then(function (msg) { + msgToDel.then(msg); + self.queue[channelID].shift(); + doNext(); + })["catch"](function (err) { + msgToDel.error(err); + self.queue[channelID].shift(); + doNext(); + }); + break; default: done(); break; diff --git a/src/Client.js b/src/Client.js index 52ec644d9..3d6523b78 100644 --- a/src/Client.js +++ b/src/Client.js @@ -384,18 +384,33 @@ class Client { } function remove() { - request - .del(`${Endpoints.CHANNELS}/${message.channel.id}/messages/${message.id}`) - .set("authorization", self.token) - .end(function (err, res) { - if (err) { - callback(err); - reject(err); - } else { - callback(null); - resolve(); - } + if(self.options.queue){ + if (!self.queue[message.channel.id]) { + self.queue[message.channel.id] = []; + } + self.queue[message.channel.id].push({ + action: "deleteMessage", + message: message, + then: good, + error: bad }); + + self.checkQueue(message.channel.id); + }else{ + self._deleteMessage(message).then(good).catch(bad); + } + } + + function good(){ + prom.success = true; + callback(null); + resolve(); + } + + function bad(err){ + prom.error = err; + callback(err); + reject(err); } }); @@ -1225,6 +1240,22 @@ class Client { }); }); } + + _deleteMessage(message){ + var self = this; + return new Promise(function(resolve, reject){ + request + .del(`${Endpoints.CHANNELS}/${message.channel.id}/messages/${message.id}`) + .set("authorization", self.token) + .end(function (err, res) { + if (err) { + reject(err); + } else { + resolve(); + } + }); + }); + } checkQueue(channelID) { @@ -1284,6 +1315,20 @@ class Client { doNext(); }); break; + case "deleteMessage": + var msgToDel = queuedEvent; + self._deleteMessage(msgToDel.message) + .then(function(msg){ + msgToDel.then(msg); + self.queue[channelID].shift(); + doNext(); + }) + .catch(function(err){ + msgToDel.error(err); + self.queue[channelID].shift(); + doNext(); + }); + break; default: done(); break; diff --git a/test/bot.1.js b/test/bot.1.js index 31f344fac..2805bdc78 100644 --- a/test/bot.1.js +++ b/test/bot.1.js @@ -20,11 +20,11 @@ mybot.on("message", function (message) { var action2 = mybot.sendMessage(message.channel, "this is message " + 2).then(log); function log() { - console.log("w", action1.message); mybot.updateMessage(action1.message, "blurg"); mybot.sendMessage(message.channel, "This is message 3 million minus the million so basically just 3"); + mybot.deleteMessage(action1.message); + mybot.sendMessage(message.channel, "This is message RJNGEIKGNER").then(log2); } - }); function dump(msg) {