diff --git a/lib/Client.js b/lib/Client.js index f832da526..40a50d048 100644 --- a/lib/Client.js +++ b/lib/Client.js @@ -609,10 +609,20 @@ var Client = (function () { //we're QUEUEING messages, so sending them sequentially based on servers. self.addMessageQueue(destination); } else { - self._sendMessage("text", destination, message, mentions); + self._sendMessage(destination, message, mentions).then(mgood)["catch"](mbad); } } + function mgood(msg) { + callback(null, msg); + resolve(msg); + } + + function mbad(error) { + callback(error); + reject(error); + } + function resolveMessage() { var msg = message; if (message instanceof Array) { @@ -1316,11 +1326,58 @@ var Client = (function () { } }, { key: "_sendMessage", - value: function _sendMessage(messageType, destination, content, mentions) { + value: function _sendMessage(destination, content, mentions) { var self = this; - return new Promise(function (resolve, reject) {}); + return new Promise(function (resolve, reject) { + request.post(Endpoints.CHANNELS + "/" + destination + "/messages").set("authorization", self.token).send({ + content: content, + mentions: mentions + }).end(function (err, res) { + + if (err) { + reject(err); + } else { + var data = res.body; + + var mentions = []; + + data.mentions = data.mentions || []; //for some reason this was not defined at some point? + + var _iteratorNormalCompletion14 = true; + var _didIteratorError14 = false; + var _iteratorError14 = undefined; + + try { + for (var _iterator14 = data.mentions[Symbol.iterator](), _step14; !(_iteratorNormalCompletion14 = (_step14 = _iterator14.next()).done); _iteratorNormalCompletion14 = true) { + var mention = _step14.value; + + mentions.push(self.addUser(mention)); + } + } catch (err) { + _didIteratorError14 = true; + _iteratorError14 = err; + } finally { + try { + if (!_iteratorNormalCompletion14 && _iterator14["return"]) { + _iterator14["return"](); + } + } finally { + if (_didIteratorError14) { + throw _iteratorError14; + } + } + } + + var channel = self.getChannel("id", data.channel_id); + if (channel) { + var msg = channel.addMessage(new Message(data, channel, mentions, self.addUser(data.author))); + resolve(msg); + } + } + }); + }); } }, { key: "uptime", @@ -1358,27 +1415,27 @@ var Client = (function () { get: function get() { var msgs = []; - var _iteratorNormalCompletion14 = true; - var _didIteratorError14 = false; - var _iteratorError14 = undefined; + var _iteratorNormalCompletion15 = true; + var _didIteratorError15 = false; + var _iteratorError15 = undefined; try { - for (var _iterator14 = this.channelCache[Symbol.iterator](), _step14; !(_iteratorNormalCompletion14 = (_step14 = _iterator14.next()).done); _iteratorNormalCompletion14 = true) { - var channel = _step14.value; + for (var _iterator15 = this.channelCache[Symbol.iterator](), _step15; !(_iteratorNormalCompletion15 = (_step15 = _iterator15.next()).done); _iteratorNormalCompletion15 = true) { + var channel = _step15.value; msgs = msgs.concat(channel.messages); } } catch (err) { - _didIteratorError14 = true; - _iteratorError14 = err; + _didIteratorError15 = true; + _iteratorError15 = err; } finally { try { - if (!_iteratorNormalCompletion14 && _iterator14["return"]) { - _iterator14["return"](); + if (!_iteratorNormalCompletion15 && _iterator15["return"]) { + _iterator15["return"](); } } finally { - if (_didIteratorError14) { - throw _iteratorError14; + if (_didIteratorError15) { + throw _iteratorError15; } } } diff --git a/src/Client.js b/src/Client.js index 4a7e86571..d0aa5d768 100644 --- a/src/Client.js +++ b/src/Client.js @@ -627,10 +627,20 @@ class Client { //we're QUEUEING messages, so sending them sequentially based on servers. self.addMessageQueue(destination); }else{ - self._sendMessage("text", destination, message, mentions); + self._sendMessage(destination, message, mentions).then(mgood).catch(mbad); } } + + function mgood(msg){ + callback(null, msg); + resolve(msg); + } + + function mbad(error){ + callback(error); + reject(error); + } function resolveMessage() { var msg = message; @@ -1090,12 +1100,41 @@ class Client { }); } - _sendMessage(messageType, destination, content, mentions){ + _sendMessage(destination, content, mentions){ var self = this; return new Promise(function(resolve, reject){ - + request + .post(`${Endpoints.CHANNELS}/${destination}/messages`) + .set("authorization", self.token) + .send({ + content: content, + mentions: mentions + }) + .end(function (err, res) { + + if (err) { + reject(err); + } else { + var data = res.body; + + var mentions = []; + + data.mentions = data.mentions || []; //for some reason this was not defined at some point? + + for (var mention of data.mentions) { + mentions.push(self.addUser(mention)); + } + + var channel = self.getChannel("id", data.channel_id); + if (channel) { + var msg = channel.addMessage(new Message(data, channel, mentions, self.addUser(data.author))); + resolve(msg); + } + } + + }); }); }