Added message sending

This commit is contained in:
hydrabolt
2015-10-31 22:59:53 +00:00
parent cc3f9d931a
commit 28308433da
14 changed files with 585 additions and 82 deletions

View File

@@ -12,6 +12,7 @@ var Constants = require("../Constants.js"),
PacketType = Constants.PacketType;
var Cache = require("../Util/Cache.js");
var Resolver = require("./Resolver/Resolver.js");
var User = require("../Structures/User.js"),
Channel = require("../Structures/Channel.js"),
@@ -40,6 +41,7 @@ var InternalClient = (function () {
this.channels = new Cache();
this.servers = new Cache();
this.private_channels = new Cache();
this.resolver = new Resolver(this);
}
// def login
@@ -114,6 +116,29 @@ var InternalClient = (function () {
});
};
// def startPM
InternalClient.prototype.startPM = function startPM(resUser) {
var self = this;
return new Promise(function (resolve, reject) {
var user = self.resolver.resolveUser(resUser);
if (user) {
// start the PM
request.post("" + Endpoints.USER_CHANNELS(user.id)).set("authorization", self.token).end(function (err, res) {
if (err) {
reject(new Error(err.response.text));
} else {
resolve(self.private_channels.add(new PMChannel(res.body, self.client)));
}
});
} else {
reject(new Error("Unable to resolve resUser to a User"));
}
});
};
// def getGateway
InternalClient.prototype.getGateway = function getGateway() {
@@ -126,6 +151,39 @@ var InternalClient = (function () {
});
};
// def sendMessage
InternalClient.prototype.sendMessage = function sendMessage(where, _content) {
var options = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2];
var self = this;
return new Promise(function (resolve, reject) {
self.resolver.resolveChannel(where).then(next)["catch"](function (e) {
return reject(new Error("Error resolving destination"));
});
function next(destination) {
//var destination;
var content = self.resolver.resolveString(_content);
var mentions = self.resolver.resolveMentions(content);
request.post(Endpoints.CHANNEL_MESSAGES(destination.id)).set("authorization", self.token).send({
content: content,
mentions: mentions,
tts: options.tts
}).end(function (err, res) {
if (err) {
reject(new Error(err.response.text));
} else {
resolve(destination.messages.add(new Message(res.body, destination, self.client)));
}
});
}
});
};
InternalClient.prototype.sendWS = function sendWS(object) {
this.websocket.send(JSON.stringify(object));
};
@@ -207,7 +265,8 @@ var InternalClient = (function () {
// format: https://discordapi.readthedocs.org/en/latest/reference/channels/messages.html#message-format
var channel = self.channels.get("id", data.channel_id);
if (channel) {
channel.messages.add(new Message(data, channel, client));
var msg = channel.messages.add(new Message(data, channel, client));
client.emit("message", msg);
} else {
client.emit("warn", "message created but channel is not cached");
}