diff --git a/lib/Client/InternalClient.js b/lib/Client/InternalClient.js index c8ada0bc6..5fe65e694 100644 --- a/lib/Client/InternalClient.js +++ b/lib/Client/InternalClient.js @@ -126,7 +126,9 @@ var InternalClient = (function () { if (user) { // start the PM - request.post("" + Endpoints.USER_CHANNELS(user.id)).set("authorization", self.token).end(function (err, res) { + request.post("" + Endpoints.USER_CHANNELS(user.id)).set("authorization", self.token).send({ + recipient_id: user.id + }).end(function (err, res) { if (err) { reject(new Error(err.response.text)); } else { @@ -160,7 +162,7 @@ var InternalClient = (function () { return new Promise(function (resolve, reject) { self.resolver.resolveChannel(where).then(next)["catch"](function (e) { - return reject(new Error("Error resolving destination")); + return reject(new Error("Error resolving destination - " + e)); }); function next(destination) { @@ -336,39 +338,6 @@ 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/Client/Resolver/Resolver.js b/lib/Client/Resolver/Resolver.js index 971678b5b..0f2af0ce8 100644 --- a/lib/Client/Resolver/Resolver.js +++ b/lib/Client/Resolver/Resolver.js @@ -12,10 +12,10 @@ var User = require("../../Structures/User.js"), Message = require("../../Structures/Message.js"); var Resolver = (function () { - function Resolver(client) { + function Resolver(internal) { _classCallCheck(this, Resolver); - this.client = client; + this.internal = internal; } Resolver.prototype.resolveMentions = function resolveMentions(resource) { @@ -58,7 +58,9 @@ var Resolver = (function () { accepts a Message, Channel, Server, String ID, User, PMChannel */ var found = null; - if (resource instanceof Message) { + if (resource instanceof User) { + found = resource; + } else if (resource instanceof Message) { found = resource.author; } else if (resource instanceof TextChannel) { var lmsg = resource.lastMessage; @@ -104,11 +106,11 @@ var Resolver = (function () { } else if (resource instanceof Server) { found = resource.channels.get("id", resource.id); } else if (resource instanceof String || typeof resource === "string") { - found = self.client.internal.channels.get("id", resource); + found = self.internal.channels.get("id", resource); } else if (resource instanceof User) { // see if a PM exists var chatFound = false; - for (var _iterator2 = self.client.internal.private_channels, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) { + for (var _iterator2 = self.internal.private_channels, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) { var _ref2; if (_isArray2) { @@ -132,7 +134,7 @@ var Resolver = (function () { found = chatFound; } else { // PM does not exist :\ - self.client.internal.startPM(resource).then(function (pmchannel) { + self.internal.startPM(resource).then(function (pmchannel) { return resolve(pmchannel); })["catch"](function (e) { return reject(e); diff --git a/lib/Structures/PMChannel.js b/lib/Structures/PMChannel.js index c93b3b590..dc28d1c66 100644 --- a/lib/Structures/PMChannel.js +++ b/lib/Structures/PMChannel.js @@ -7,7 +7,9 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } var Channel = require("./Channel.js"); +var User = require("./User.js"); var Equality = require("../Util/Equality.js"); +var Cache = require("../Util/Cache.js"); var PMChannel = (function (_Equality) { _inherits(PMChannel, _Equality); @@ -21,7 +23,8 @@ var PMChannel = (function (_Equality) { this.type = data.type || "text"; this.id = data.id; this.lastMessageId = data.last_message_id; - this.recipient = this.client.internal.users.add(data.recipient); + this.messages = new Cache("id", 1000); + this.recipient = this.client.internal.users.add(new User(data.recipient, this.client)); } /* warning! may return null */ diff --git a/lib/index.js b/lib/index.js index a58430916..050cd0c83 100644 --- a/lib/index.js +++ b/lib/index.js @@ -10,24 +10,11 @@ a.on("debug", function (m) { }); a.on("message", function (m) { - if (m.content === "$$$") a.reply(m, "hi man!").then(function (m) { - a.updateMessage(m, "!!!").then(function (m) { - a.updateMessage(m, "the old content was " + m.content); - }); + if (m.content === "$$$") a.sendMessage(m.author, "hi!")["catch"](function (e) { + return console.log(e); }); }); -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/Client/InternalClient.js b/src/Client/InternalClient.js index 0e892aea0..9e32e9701 100644 --- a/src/Client/InternalClient.js +++ b/src/Client/InternalClient.js @@ -129,6 +129,9 @@ class InternalClient { request .post(`${Endpoints.USER_CHANNELS(user.id) }`) .set("authorization", self.token) + .send({ + recipient_id: user.id + }) .end((err, res) => { if (err) { reject(new Error(err.response.text)); @@ -169,7 +172,7 @@ class InternalClient { self.resolver.resolveChannel(where) .then(next) - .catch(e => reject(new Error("Error resolving destination"))); + .catch(e => reject(new Error("Error resolving destination - "+e))); function next(destination) { //var destination; diff --git a/src/Client/Resolver/Resolver.js b/src/Client/Resolver/Resolver.js index 31f8da2c5..e8213d2d3 100644 --- a/src/Client/Resolver/Resolver.js +++ b/src/Client/Resolver/Resolver.js @@ -10,8 +10,8 @@ var User = require("../../Structures/User.js"), Message = require("../../Structures/Message.js"); class Resolver { - constructor(client) { - this.client = client; + constructor(internal) { + this.internal = internal; } resolveMentions(resource) { @@ -41,7 +41,9 @@ class Resolver { accepts a Message, Channel, Server, String ID, User, PMChannel */ var found = null; - if (resource instanceof Message) { + if( resource instanceof User ){ + found = resource; + }else if (resource instanceof Message) { found = resource.author; } else if (resource instanceof TextChannel) { var lmsg = resource.lastMessage; @@ -87,11 +89,11 @@ class Resolver { } else if (resource instanceof Server) { found = resource.channels.get("id", resource.id); } else if (resource instanceof String || typeof resource === "string") { - found = self.client.internal.channels.get("id", resource); + found = self.internal.channels.get("id", resource); } else if (resource instanceof User) { // see if a PM exists var chatFound = false; - for (var pmchat of self.client.internal.private_channels) { + for (var pmchat of self.internal.private_channels) { if (pmchat.recipient.equals(resource)) { chatFound = pmchat; break; @@ -102,7 +104,7 @@ class Resolver { found = chatFound; } else { // PM does not exist :\ - self.client.internal.startPM(resource) + self.internal.startPM(resource) .then(pmchannel => resolve(pmchannel)) .catch(e => reject(e)); return; diff --git a/src/Structures/PMChannel.js b/src/Structures/PMChannel.js index ffecfde8a..1975a2d8d 100644 --- a/src/Structures/PMChannel.js +++ b/src/Structures/PMChannel.js @@ -1,7 +1,9 @@ "use strict"; var Channel = require("./Channel.js"); +var User = require("./User.js"); var Equality = require("../Util/Equality.js"); +var Cache = require("../Util/Cache.js"); class PMChannel extends Equality{ constructor(data, client){ @@ -11,7 +13,8 @@ class PMChannel extends Equality{ this.type = data.type || "text"; this.id = data.id; this.lastMessageId = data.last_message_id; - this.recipient = this.client.internal.users.add(data.recipient); + this.messages = new Cache("id", 1000); + this.recipient = this.client.internal.users.add(new User(data.recipient, this.client)); } /* warning! may return null */ diff --git a/src/index.js b/src/index.js index 557cbff5d..358bebce2 100644 --- a/src/index.js +++ b/src/index.js @@ -7,12 +7,7 @@ a.on("debug", (m) => console.log("[debug]",m)); a.on("message", m => { if(m.content === "$$$") - a.reply(m, "hi man!") - .then( m => { - a.updateMessage(m, "!!!").then( m => { - a.updateMessage(m, "the old content was " + m.content); - }); - }); + a.sendMessage(m.author, "hi!").catch(e => console.log(e)); }); a.login(process.env["discordEmail"], process.env["discordPass"]).catch((e)=>console.log(e)); \ No newline at end of file