mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-10 08:33:30 +01:00
4
examples/auth.json
Normal file
4
examples/auth.json
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"email" : "your discord email here",
|
||||
"password" : "your discord password here"
|
||||
}
|
||||
34
examples/pingpong.js
Normal file
34
examples/pingpong.js
Normal file
@@ -0,0 +1,34 @@
|
||||
/*
|
||||
this bot is a ping pong bot, and every time a message
|
||||
beginning with "ping" is sent, it will reply with
|
||||
"pong".
|
||||
*/
|
||||
|
||||
var Discord = require("../");
|
||||
|
||||
// Get the email and password
|
||||
var AuthDetails = require("./auth.json");
|
||||
|
||||
var bot = new Discord.Client();
|
||||
|
||||
bot.on("ready", function(){
|
||||
console.log("Ready to begin! Serving in " + bot.channels.length + " channels");
|
||||
});
|
||||
|
||||
bot.on("disconnected", function(){
|
||||
|
||||
console.log("Disconnected!");
|
||||
process.exit(1); //exit node.js with an error
|
||||
|
||||
});
|
||||
|
||||
bot.on("message", function(msg){
|
||||
if(msg.content.substring(0,4) === "ping"){
|
||||
|
||||
//send a message to the channel the ping message was sent in.
|
||||
bot.sendMessage( msg.channel, "pong!" );
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
bot.login(AuthDetails.email, AuthDetails.password);
|
||||
454
lib/Client.js
454
lib/Client.js
@@ -19,7 +19,7 @@ var WebSocket = require("ws");
|
||||
var fs = require("fs");
|
||||
|
||||
var defaultOptions = {
|
||||
cache_tokens: false
|
||||
queue: []
|
||||
};
|
||||
|
||||
var Client = (function () {
|
||||
@@ -35,6 +35,7 @@ var Client = (function () {
|
||||
further efforts will be made to connect.
|
||||
*/
|
||||
this.options = options;
|
||||
this.options.queue = this.options.queue || [];
|
||||
this.token = token;
|
||||
this.state = 0;
|
||||
this.websocket = null;
|
||||
@@ -60,6 +61,8 @@ var Client = (function () {
|
||||
this.serverCache = [];
|
||||
this.pmChannelCache = [];
|
||||
this.readyTime = null;
|
||||
this.checkingQueue = {};
|
||||
this.messageQueue = {};
|
||||
}
|
||||
|
||||
_createClass(Client, [{
|
||||
@@ -590,7 +593,7 @@ var Client = (function () {
|
||||
|
||||
var self = this;
|
||||
|
||||
return new Promise(function (resolve, reject) {
|
||||
var prom = new Promise(function (resolve, reject) {
|
||||
|
||||
message = premessage + resolveMessage(message);
|
||||
var mentions = resolveMentions();
|
||||
@@ -602,55 +605,36 @@ var Client = (function () {
|
||||
}
|
||||
|
||||
function send(destination) {
|
||||
|
||||
request.post(Endpoints.CHANNELS + "/" + destination + "/messages").set("authorization", self.token).send({
|
||||
content: message,
|
||||
mentions: mentions
|
||||
}).end(function (err, res) {
|
||||
|
||||
if (err) {
|
||||
callback(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 _iteratorNormalCompletion3 = true;
|
||||
var _didIteratorError3 = false;
|
||||
var _iteratorError3 = undefined;
|
||||
|
||||
try {
|
||||
for (var _iterator3 = data.mentions[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
|
||||
var mention = _step3.value;
|
||||
|
||||
mentions.push(self.addUser(mention));
|
||||
}
|
||||
} catch (err) {
|
||||
_didIteratorError3 = true;
|
||||
_iteratorError3 = err;
|
||||
} finally {
|
||||
try {
|
||||
if (!_iteratorNormalCompletion3 && _iterator3["return"]) {
|
||||
_iterator3["return"]();
|
||||
}
|
||||
} finally {
|
||||
if (_didIteratorError3) {
|
||||
throw _iteratorError3;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var channel = self.getChannel("id", data.channel_id);
|
||||
if (channel) {
|
||||
var msg = channel.addMessage(new Message(data, channel, mentions, self.addUser(data.author)));
|
||||
callback(null, msg);
|
||||
resolve(msg);
|
||||
}
|
||||
if (~self.options.queue.indexOf("sendMessage")) {
|
||||
//we're QUEUEING messages, so sending them sequentially based on servers.
|
||||
if (!self.messageQueue[destination]) {
|
||||
self.messageQueue[destination] = [];
|
||||
}
|
||||
});
|
||||
|
||||
self.messageQueue[destination].push({
|
||||
action: "sendMessage",
|
||||
content: message,
|
||||
mentions: mentions,
|
||||
then: [mgood],
|
||||
error: [mbad]
|
||||
});
|
||||
|
||||
self.checkQueue(destination);
|
||||
} else {
|
||||
self._sendMessage(destination, message, mentions).then(mgood)["catch"](mbad);
|
||||
}
|
||||
}
|
||||
|
||||
function mgood(msg) {
|
||||
prom.message = msg;
|
||||
callback(null, msg);
|
||||
resolve(msg);
|
||||
}
|
||||
|
||||
function mbad(error) {
|
||||
prom.error = error;
|
||||
callback(error);
|
||||
reject(error);
|
||||
}
|
||||
|
||||
function resolveMessage() {
|
||||
@@ -663,27 +647,27 @@ var Client = (function () {
|
||||
|
||||
function resolveMentions() {
|
||||
var _mentions = [];
|
||||
var _iteratorNormalCompletion4 = true;
|
||||
var _didIteratorError4 = false;
|
||||
var _iteratorError4 = undefined;
|
||||
var _iteratorNormalCompletion3 = true;
|
||||
var _didIteratorError3 = false;
|
||||
var _iteratorError3 = undefined;
|
||||
|
||||
try {
|
||||
for (var _iterator4 = (message.match(/<@[^>]*>/g) || [])[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {
|
||||
var mention = _step4.value;
|
||||
for (var _iterator3 = (message.match(/<@[^>]*>/g) || [])[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
|
||||
var mention = _step3.value;
|
||||
|
||||
_mentions.push(mention.substring(2, mention.length - 1));
|
||||
}
|
||||
} catch (err) {
|
||||
_didIteratorError4 = true;
|
||||
_iteratorError4 = err;
|
||||
_didIteratorError3 = true;
|
||||
_iteratorError3 = err;
|
||||
} finally {
|
||||
try {
|
||||
if (!_iteratorNormalCompletion4 && _iterator4["return"]) {
|
||||
_iterator4["return"]();
|
||||
if (!_iteratorNormalCompletion3 && _iterator3["return"]) {
|
||||
_iterator3["return"]();
|
||||
}
|
||||
} finally {
|
||||
if (_didIteratorError4) {
|
||||
throw _iteratorError4;
|
||||
if (_didIteratorError3) {
|
||||
throw _iteratorError3;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -691,6 +675,8 @@ var Client = (function () {
|
||||
return _mentions;
|
||||
}
|
||||
});
|
||||
|
||||
return prom;
|
||||
}
|
||||
|
||||
//def createws
|
||||
@@ -736,15 +722,40 @@ var Client = (function () {
|
||||
|
||||
self.user = self.addUser(data.user);
|
||||
|
||||
var _iteratorNormalCompletion4 = true;
|
||||
var _didIteratorError4 = false;
|
||||
var _iteratorError4 = undefined;
|
||||
|
||||
try {
|
||||
for (var _iterator4 = data.guilds[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {
|
||||
var _server = _step4.value;
|
||||
|
||||
var server = self.addServer(_server);
|
||||
}
|
||||
} catch (err) {
|
||||
_didIteratorError4 = true;
|
||||
_iteratorError4 = err;
|
||||
} finally {
|
||||
try {
|
||||
if (!_iteratorNormalCompletion4 && _iterator4["return"]) {
|
||||
_iterator4["return"]();
|
||||
}
|
||||
} finally {
|
||||
if (_didIteratorError4) {
|
||||
throw _iteratorError4;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var _iteratorNormalCompletion5 = true;
|
||||
var _didIteratorError5 = false;
|
||||
var _iteratorError5 = undefined;
|
||||
|
||||
try {
|
||||
for (var _iterator5 = data.guilds[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {
|
||||
var _server = _step5.value;
|
||||
for (var _iterator5 = data.private_channels[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {
|
||||
var _pmc = _step5.value;
|
||||
|
||||
var server = self.addServer(_server);
|
||||
var pmc = self.addPMChannel(_pmc);
|
||||
}
|
||||
} catch (err) {
|
||||
_didIteratorError5 = true;
|
||||
@@ -761,31 +772,6 @@ var Client = (function () {
|
||||
}
|
||||
}
|
||||
|
||||
var _iteratorNormalCompletion6 = true;
|
||||
var _didIteratorError6 = false;
|
||||
var _iteratorError6 = undefined;
|
||||
|
||||
try {
|
||||
for (var _iterator6 = data.private_channels[Symbol.iterator](), _step6; !(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done); _iteratorNormalCompletion6 = true) {
|
||||
var _pmc = _step6.value;
|
||||
|
||||
var pmc = self.addPMChannel(_pmc);
|
||||
}
|
||||
} catch (err) {
|
||||
_didIteratorError6 = true;
|
||||
_iteratorError6 = err;
|
||||
} finally {
|
||||
try {
|
||||
if (!_iteratorNormalCompletion6 && _iterator6["return"]) {
|
||||
_iterator6["return"]();
|
||||
}
|
||||
} finally {
|
||||
if (_didIteratorError6) {
|
||||
throw _iteratorError6;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
self.trigger("ready");
|
||||
self.readyTime = Date.now();
|
||||
self.debug("cached " + self.serverCache.length + " servers, " + self.channelCache.length + " channels, " + self.pmChannelCache.length + " PMs and " + self.userCache.length + " users.");
|
||||
@@ -800,27 +786,27 @@ var Client = (function () {
|
||||
|
||||
var mentions = [];
|
||||
data.mentions = data.mentions || []; //for some reason this was not defined at some point?
|
||||
var _iteratorNormalCompletion7 = true;
|
||||
var _didIteratorError7 = false;
|
||||
var _iteratorError7 = undefined;
|
||||
var _iteratorNormalCompletion6 = true;
|
||||
var _didIteratorError6 = false;
|
||||
var _iteratorError6 = undefined;
|
||||
|
||||
try {
|
||||
for (var _iterator7 = data.mentions[Symbol.iterator](), _step7; !(_iteratorNormalCompletion7 = (_step7 = _iterator7.next()).done); _iteratorNormalCompletion7 = true) {
|
||||
var mention = _step7.value;
|
||||
for (var _iterator6 = data.mentions[Symbol.iterator](), _step6; !(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done); _iteratorNormalCompletion6 = true) {
|
||||
var mention = _step6.value;
|
||||
|
||||
mentions.push(self.addUser(mention));
|
||||
}
|
||||
} catch (err) {
|
||||
_didIteratorError7 = true;
|
||||
_iteratorError7 = err;
|
||||
_didIteratorError6 = true;
|
||||
_iteratorError6 = err;
|
||||
} finally {
|
||||
try {
|
||||
if (!_iteratorNormalCompletion7 && _iterator7["return"]) {
|
||||
_iterator7["return"]();
|
||||
if (!_iteratorNormalCompletion6 && _iterator6["return"]) {
|
||||
_iterator6["return"]();
|
||||
}
|
||||
} finally {
|
||||
if (_didIteratorError7) {
|
||||
throw _iteratorError7;
|
||||
if (_didIteratorError6) {
|
||||
throw _iteratorError6;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -865,27 +851,27 @@ var Client = (function () {
|
||||
}
|
||||
|
||||
var mentions = [];
|
||||
var _iteratorNormalCompletion8 = true;
|
||||
var _didIteratorError8 = false;
|
||||
var _iteratorError8 = undefined;
|
||||
var _iteratorNormalCompletion7 = true;
|
||||
var _didIteratorError7 = false;
|
||||
var _iteratorError7 = undefined;
|
||||
|
||||
try {
|
||||
for (var _iterator8 = info.mentions[Symbol.iterator](), _step8; !(_iteratorNormalCompletion8 = (_step8 = _iterator8.next()).done); _iteratorNormalCompletion8 = true) {
|
||||
var mention = _step8.value;
|
||||
for (var _iterator7 = info.mentions[Symbol.iterator](), _step7; !(_iteratorNormalCompletion7 = (_step7 = _iterator7.next()).done); _iteratorNormalCompletion7 = true) {
|
||||
var mention = _step7.value;
|
||||
|
||||
mentions.push(self.addUser(mention));
|
||||
}
|
||||
} catch (err) {
|
||||
_didIteratorError8 = true;
|
||||
_iteratorError8 = err;
|
||||
_didIteratorError7 = true;
|
||||
_iteratorError7 = err;
|
||||
} finally {
|
||||
try {
|
||||
if (!_iteratorNormalCompletion8 && _iterator8["return"]) {
|
||||
_iterator8["return"]();
|
||||
if (!_iteratorNormalCompletion7 && _iterator7["return"]) {
|
||||
_iterator7["return"]();
|
||||
}
|
||||
} finally {
|
||||
if (_didIteratorError8) {
|
||||
throw _iteratorError8;
|
||||
if (_didIteratorError7) {
|
||||
throw _iteratorError7;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1100,27 +1086,27 @@ var Client = (function () {
|
||||
server = new Server(data, this);
|
||||
this.serverCache.push(server);
|
||||
if (data.channels) {
|
||||
var _iteratorNormalCompletion9 = true;
|
||||
var _didIteratorError9 = false;
|
||||
var _iteratorError9 = undefined;
|
||||
var _iteratorNormalCompletion8 = true;
|
||||
var _didIteratorError8 = false;
|
||||
var _iteratorError8 = undefined;
|
||||
|
||||
try {
|
||||
for (var _iterator9 = data.channels[Symbol.iterator](), _step9; !(_iteratorNormalCompletion9 = (_step9 = _iterator9.next()).done); _iteratorNormalCompletion9 = true) {
|
||||
var channel = _step9.value;
|
||||
for (var _iterator8 = data.channels[Symbol.iterator](), _step8; !(_iteratorNormalCompletion8 = (_step8 = _iterator8.next()).done); _iteratorNormalCompletion8 = true) {
|
||||
var channel = _step8.value;
|
||||
|
||||
server.channels.push(this.addChannel(channel, server.id));
|
||||
}
|
||||
} catch (err) {
|
||||
_didIteratorError9 = true;
|
||||
_iteratorError9 = err;
|
||||
_didIteratorError8 = true;
|
||||
_iteratorError8 = err;
|
||||
} finally {
|
||||
try {
|
||||
if (!_iteratorNormalCompletion9 && _iterator9["return"]) {
|
||||
_iterator9["return"]();
|
||||
if (!_iteratorNormalCompletion8 && _iterator8["return"]) {
|
||||
_iterator8["return"]();
|
||||
}
|
||||
} finally {
|
||||
if (_didIteratorError9) {
|
||||
throw _iteratorError9;
|
||||
if (_didIteratorError8) {
|
||||
throw _iteratorError8;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1134,16 +1120,50 @@ var Client = (function () {
|
||||
}, {
|
||||
key: "getUser",
|
||||
value: function getUser(key, value) {
|
||||
var _iteratorNormalCompletion9 = true;
|
||||
var _didIteratorError9 = false;
|
||||
var _iteratorError9 = undefined;
|
||||
|
||||
try {
|
||||
for (var _iterator9 = this.userCache[Symbol.iterator](), _step9; !(_iteratorNormalCompletion9 = (_step9 = _iterator9.next()).done); _iteratorNormalCompletion9 = true) {
|
||||
var user = _step9.value;
|
||||
|
||||
if (user[key] === value) {
|
||||
return user;
|
||||
}
|
||||
}
|
||||
} catch (err) {
|
||||
_didIteratorError9 = true;
|
||||
_iteratorError9 = err;
|
||||
} finally {
|
||||
try {
|
||||
if (!_iteratorNormalCompletion9 && _iterator9["return"]) {
|
||||
_iterator9["return"]();
|
||||
}
|
||||
} finally {
|
||||
if (_didIteratorError9) {
|
||||
throw _iteratorError9;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
//def getChannel
|
||||
}, {
|
||||
key: "getChannel",
|
||||
value: function getChannel(key, value) {
|
||||
var _iteratorNormalCompletion10 = true;
|
||||
var _didIteratorError10 = false;
|
||||
var _iteratorError10 = undefined;
|
||||
|
||||
try {
|
||||
for (var _iterator10 = this.userCache[Symbol.iterator](), _step10; !(_iteratorNormalCompletion10 = (_step10 = _iterator10.next()).done); _iteratorNormalCompletion10 = true) {
|
||||
var user = _step10.value;
|
||||
for (var _iterator10 = this.channelCache[Symbol.iterator](), _step10; !(_iteratorNormalCompletion10 = (_step10 = _iterator10.next()).done); _iteratorNormalCompletion10 = true) {
|
||||
var channel = _step10.value;
|
||||
|
||||
if (user[key] === value) {
|
||||
return user;
|
||||
if (channel[key] === value) {
|
||||
return channel;
|
||||
}
|
||||
}
|
||||
} catch (err) {
|
||||
@@ -1161,19 +1181,17 @@ var Client = (function () {
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
return this.getPMChannel(key, value); //might be a PM
|
||||
}
|
||||
|
||||
//def getChannel
|
||||
}, {
|
||||
key: "getChannel",
|
||||
value: function getChannel(key, value) {
|
||||
key: "getPMChannel",
|
||||
value: function getPMChannel(key, value) {
|
||||
var _iteratorNormalCompletion11 = true;
|
||||
var _didIteratorError11 = false;
|
||||
var _iteratorError11 = undefined;
|
||||
|
||||
try {
|
||||
for (var _iterator11 = this.channelCache[Symbol.iterator](), _step11; !(_iteratorNormalCompletion11 = (_step11 = _iterator11.next()).done); _iteratorNormalCompletion11 = true) {
|
||||
for (var _iterator11 = this.pmChannelCache[Symbol.iterator](), _step11; !(_iteratorNormalCompletion11 = (_step11 = _iterator11.next()).done); _iteratorNormalCompletion11 = true) {
|
||||
var channel = _step11.value;
|
||||
|
||||
if (channel[key] === value) {
|
||||
@@ -1195,21 +1213,23 @@ var Client = (function () {
|
||||
}
|
||||
}
|
||||
|
||||
return this.getPMChannel(key, value); //might be a PM
|
||||
return null;
|
||||
}
|
||||
|
||||
//def getServer
|
||||
}, {
|
||||
key: "getPMChannel",
|
||||
value: function getPMChannel(key, value) {
|
||||
key: "getServer",
|
||||
value: function getServer(key, value) {
|
||||
var _iteratorNormalCompletion12 = true;
|
||||
var _didIteratorError12 = false;
|
||||
var _iteratorError12 = undefined;
|
||||
|
||||
try {
|
||||
for (var _iterator12 = this.pmChannelCache[Symbol.iterator](), _step12; !(_iteratorNormalCompletion12 = (_step12 = _iterator12.next()).done); _iteratorNormalCompletion12 = true) {
|
||||
var channel = _step12.value;
|
||||
for (var _iterator12 = this.serverCache[Symbol.iterator](), _step12; !(_iteratorNormalCompletion12 = (_step12 = _iterator12.next()).done); _iteratorNormalCompletion12 = true) {
|
||||
var server = _step12.value;
|
||||
|
||||
if (channel[key] === value) {
|
||||
return channel;
|
||||
if (server[key] === value) {
|
||||
return server;
|
||||
}
|
||||
}
|
||||
} catch (err) {
|
||||
@@ -1230,40 +1250,6 @@ var Client = (function () {
|
||||
return null;
|
||||
}
|
||||
|
||||
//def getServer
|
||||
}, {
|
||||
key: "getServer",
|
||||
value: function getServer(key, value) {
|
||||
var _iteratorNormalCompletion13 = true;
|
||||
var _didIteratorError13 = false;
|
||||
var _iteratorError13 = undefined;
|
||||
|
||||
try {
|
||||
for (var _iterator13 = this.serverCache[Symbol.iterator](), _step13; !(_iteratorNormalCompletion13 = (_step13 = _iterator13.next()).done); _iteratorNormalCompletion13 = true) {
|
||||
var server = _step13.value;
|
||||
|
||||
if (server[key] === value) {
|
||||
return server;
|
||||
}
|
||||
}
|
||||
} catch (err) {
|
||||
_didIteratorError13 = true;
|
||||
_iteratorError13 = err;
|
||||
} finally {
|
||||
try {
|
||||
if (!_iteratorNormalCompletion13 && _iterator13["return"]) {
|
||||
_iterator13["return"]();
|
||||
}
|
||||
} finally {
|
||||
if (_didIteratorError13) {
|
||||
throw _iteratorError13;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
//def trySendConnData
|
||||
}, {
|
||||
key: "trySendConnData",
|
||||
@@ -1316,13 +1302,13 @@ var Client = (function () {
|
||||
} else if (destination instanceof User) {
|
||||
|
||||
//check if we have a PM
|
||||
var _iteratorNormalCompletion14 = true;
|
||||
var _didIteratorError14 = false;
|
||||
var _iteratorError14 = undefined;
|
||||
var _iteratorNormalCompletion13 = true;
|
||||
var _didIteratorError13 = false;
|
||||
var _iteratorError13 = undefined;
|
||||
|
||||
try {
|
||||
for (var _iterator14 = self.pmChannelCache[Symbol.iterator](), _step14; !(_iteratorNormalCompletion14 = (_step14 = _iterator14.next()).done); _iteratorNormalCompletion14 = true) {
|
||||
var pmc = _step14.value;
|
||||
for (var _iterator13 = self.pmChannelCache[Symbol.iterator](), _step13; !(_iteratorNormalCompletion13 = (_step13 = _iterator13.next()).done); _iteratorNormalCompletion13 = true) {
|
||||
var pmc = _step13.value;
|
||||
|
||||
if (pmc.user.equals(destination)) {
|
||||
return pmc.id;
|
||||
@@ -1330,6 +1316,61 @@ var Client = (function () {
|
||||
}
|
||||
|
||||
//we don't, at this point we're late
|
||||
} catch (err) {
|
||||
_didIteratorError13 = true;
|
||||
_iteratorError13 = err;
|
||||
} finally {
|
||||
try {
|
||||
if (!_iteratorNormalCompletion13 && _iterator13["return"]) {
|
||||
_iterator13["return"]();
|
||||
}
|
||||
} finally {
|
||||
if (_didIteratorError13) {
|
||||
throw _iteratorError13;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
self.startPM(destination).then(function (pmc) {
|
||||
resolve(pmc.id);
|
||||
})["catch"](reject);
|
||||
} else {
|
||||
channId = destination;
|
||||
}
|
||||
if (channId) resolve(channId);
|
||||
});
|
||||
}
|
||||
}, {
|
||||
key: "_sendMessage",
|
||||
value: function _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?
|
||||
|
||||
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;
|
||||
@@ -1345,15 +1386,60 @@ var Client = (function () {
|
||||
}
|
||||
}
|
||||
|
||||
self.startPM(destination).then(function (pmc) {
|
||||
resolve(pmc.id);
|
||||
})["catch"](reject);
|
||||
} else {
|
||||
channId = destination;
|
||||
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);
|
||||
}
|
||||
}
|
||||
if (channId) resolve(channId);
|
||||
});
|
||||
});
|
||||
}
|
||||
}, {
|
||||
key: "checkQueue",
|
||||
value: function checkQueue(channelID) {
|
||||
var _this = this;
|
||||
|
||||
var self = this;
|
||||
|
||||
if (!this.checkingQueue[channelID]) {
|
||||
(function () {
|
||||
var doNext = function doNext() {
|
||||
if (self.messageQueue[channelID].length === 0) {
|
||||
done();
|
||||
return;
|
||||
}
|
||||
var queuedEvent = self.messageQueue[channelID][0];
|
||||
switch (queuedEvent.action) {
|
||||
case "sendMessage":
|
||||
var msgToSend = queuedEvent;
|
||||
self._sendMessage(channelID, msgToSend.content, msgToSend.mentions).then(function (msg) {
|
||||
msgToSend.then[0](msg);
|
||||
self.messageQueue[channelID].shift();
|
||||
doNext();
|
||||
})["catch"](function (err) {
|
||||
msgToSend["catch"][0](err);
|
||||
self.messageQueue[channelID].shift();
|
||||
doNext();
|
||||
});
|
||||
break;
|
||||
default:
|
||||
done();
|
||||
break;
|
||||
}
|
||||
};
|
||||
|
||||
var done = function done() {
|
||||
self.checkingQueue[channelID] = false;
|
||||
return;
|
||||
};
|
||||
|
||||
//if we aren't already checking this queue.
|
||||
_this.checkingQueue[channelID] = true;
|
||||
doNext();
|
||||
})();
|
||||
}
|
||||
}
|
||||
}, {
|
||||
key: "uptime",
|
||||
get: function get() {
|
||||
|
||||
153
src/Client.js
153
src/Client.js
@@ -13,7 +13,7 @@ var WebSocket = require("ws");
|
||||
var fs = require("fs");
|
||||
|
||||
var defaultOptions = {
|
||||
cache_tokens: false
|
||||
queue: []
|
||||
}
|
||||
|
||||
class Client {
|
||||
@@ -25,6 +25,7 @@ class Client {
|
||||
further efforts will be made to connect.
|
||||
*/
|
||||
this.options = options;
|
||||
this.options.queue = this.options.queue || [];
|
||||
this.token = token;
|
||||
this.state = 0;
|
||||
this.websocket = null;
|
||||
@@ -50,6 +51,8 @@ class Client {
|
||||
this.serverCache = [];
|
||||
this.pmChannelCache = [];
|
||||
this.readyTime = null;
|
||||
this.checkingQueue = {};
|
||||
this.messageQueue = {};
|
||||
}
|
||||
|
||||
get uptime() {
|
||||
@@ -372,8 +375,8 @@ class Client {
|
||||
deleteMessage(message, timeout, callback = function (err, msg) { }) {
|
||||
|
||||
var self = this;
|
||||
|
||||
return new Promise(function (resolve, reject) {
|
||||
|
||||
var prom = new Promise(function (resolve, reject) {
|
||||
if (timeout) {
|
||||
setTimeout(remove, timeout)
|
||||
} else {
|
||||
@@ -395,6 +398,8 @@ class Client {
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
return prom;
|
||||
}
|
||||
|
||||
updateMessage(message, content, callback = function (err, msg) { }) {
|
||||
@@ -608,7 +613,7 @@ class Client {
|
||||
|
||||
var self = this;
|
||||
|
||||
return new Promise(function (resolve, reject) {
|
||||
var prom = new Promise(function (resolve, reject) {
|
||||
|
||||
message = premessage + resolveMessage(message);
|
||||
var mentions = resolveMentions();
|
||||
@@ -620,40 +625,37 @@ class Client {
|
||||
}
|
||||
|
||||
function send(destination) {
|
||||
if (~self.options.queue.indexOf("sendMessage")) {
|
||||
//we're QUEUEING messages, so sending them sequentially based on servers.
|
||||
if (!self.messageQueue[destination]) {
|
||||
self.messageQueue[destination] = [];
|
||||
}
|
||||
|
||||
request
|
||||
.post(`${Endpoints.CHANNELS}/${destination}/messages`)
|
||||
.set("authorization", self.token)
|
||||
.send({
|
||||
self.messageQueue[destination].push({
|
||||
action: "sendMessage",
|
||||
content: message,
|
||||
mentions: mentions
|
||||
})
|
||||
.end(function (err, res) {
|
||||
|
||||
if (err) {
|
||||
callback(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)));
|
||||
callback(null, msg);
|
||||
resolve(msg);
|
||||
}
|
||||
}
|
||||
|
||||
mentions: mentions,
|
||||
then: [mgood],
|
||||
error: [mbad]
|
||||
});
|
||||
|
||||
self.checkQueue(destination);
|
||||
} else {
|
||||
self._sendMessage(destination, message, mentions).then(mgood).catch(mbad);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function mgood(msg) {
|
||||
prom.message = msg;
|
||||
callback(null, msg);
|
||||
resolve(msg);
|
||||
}
|
||||
|
||||
function mbad(error) {
|
||||
prom.error = error;
|
||||
callback(error);
|
||||
reject(error);
|
||||
}
|
||||
|
||||
function resolveMessage() {
|
||||
@@ -673,6 +675,8 @@ class Client {
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
return prom;
|
||||
}
|
||||
|
||||
//def createws
|
||||
@@ -1114,6 +1118,87 @@ class Client {
|
||||
});
|
||||
}
|
||||
|
||||
_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);
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
checkQueue(channelID) {
|
||||
|
||||
var self = this;
|
||||
|
||||
if (!this.checkingQueue[channelID]) {
|
||||
//if we aren't already checking this queue.
|
||||
this.checkingQueue[channelID] = true;
|
||||
doNext();
|
||||
|
||||
function doNext() {
|
||||
if (self.messageQueue[channelID].length === 0) {
|
||||
done();
|
||||
return;
|
||||
}
|
||||
var queuedEvent = self.messageQueue[channelID][0];
|
||||
switch (queuedEvent.action) {
|
||||
case "sendMessage":
|
||||
var msgToSend = queuedEvent;
|
||||
self._sendMessage(channelID, msgToSend.content, msgToSend.mentions)
|
||||
.then(function (msg) {
|
||||
msgToSend.then[0](msg);
|
||||
self.messageQueue[channelID].shift();
|
||||
doNext();
|
||||
})
|
||||
.catch(function (err) {
|
||||
msgToSend.catch[0](err);
|
||||
self.messageQueue[channelID].shift();
|
||||
doNext();
|
||||
});
|
||||
break;
|
||||
default:
|
||||
done();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
function done() {
|
||||
self.checkingQueue[channelID] = false;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function getGateway() {
|
||||
|
||||
27
test/bot.1.js
Normal file
27
test/bot.1.js
Normal file
@@ -0,0 +1,27 @@
|
||||
var Discord = require("../");
|
||||
var mybot = new Discord.Client({
|
||||
queue : ["sendMessage"]
|
||||
});
|
||||
|
||||
var server, channel, message, sentMessage = false;
|
||||
|
||||
mybot.on("message", function(message){
|
||||
|
||||
if( mybot.user.equals(message.sender) ){
|
||||
return;
|
||||
}
|
||||
|
||||
var action1 = mybot.sendMessage(message.channel, "this is message " + 1);
|
||||
var action2 = mybot.sendMessage(message.channel, "this is message " + 2).then(log);
|
||||
|
||||
function log(){
|
||||
mybot.sendMessage(message.channel, action1.message ? action1.message : action1.error);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
function error(err){
|
||||
console.log(err);
|
||||
}
|
||||
|
||||
mybot.login(process.env["ds_email"], process.env["ds_password"]).catch(error);
|
||||
0
test/msgbot.js
Normal file
0
test/msgbot.js
Normal file
Reference in New Issue
Block a user