mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-10 16:43:31 +01:00
add catchup options
This commit is contained in:
112
lib/Client.js
112
lib/Client.js
@@ -48,7 +48,7 @@ var Client = (function (_EventEmitter) {
|
||||
_EventEmitter.call(this);
|
||||
|
||||
this.options = options;
|
||||
this.options.catchup = fals;e;
|
||||
this.options.catchup = options.catchup;
|
||||
this.options.compress = options.compress;
|
||||
|
||||
if (this.options.compress) {
|
||||
@@ -86,6 +86,7 @@ var Client = (function (_EventEmitter) {
|
||||
this.guildRoleCreateIgnoreList = {};
|
||||
this.__idleTime = null;
|
||||
this.__gameId = null;
|
||||
this.timeoffset = 0;
|
||||
}
|
||||
|
||||
Client.prototype.sendPacket = function sendPacket(JSONObject) {
|
||||
@@ -450,7 +451,8 @@ var Client = (function (_EventEmitter) {
|
||||
|
||||
Client.prototype.getChannelLogs = function getChannelLogs(channel) {
|
||||
var amount = arguments.length <= 1 || arguments[1] === undefined ? 500 : arguments[1];
|
||||
var callback = arguments.length <= 2 || arguments[2] === undefined ? function (err, logs) {} : arguments[2];
|
||||
var options = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2];
|
||||
var callback = arguments.length <= 3 || arguments[3] === undefined ? function (err, logs) {} : arguments[3];
|
||||
|
||||
var self = this;
|
||||
|
||||
@@ -461,7 +463,18 @@ var Client = (function (_EventEmitter) {
|
||||
channelID = channel.id;
|
||||
}
|
||||
|
||||
request.get(Endpoints.CHANNELS + "/" + channelID + "/messages?limit=" + amount).set("authorization", self.token).end(function (err, res) {
|
||||
var params = [];
|
||||
if (options.before) {
|
||||
params.push("before=" + (options.before instanceof Message ? options.before.id : options.before));
|
||||
}
|
||||
if (options.after) {
|
||||
params.push("after=" + (options.after instanceof Message ? options.after.id : options.after));
|
||||
}
|
||||
|
||||
var joinedParams = params.join();
|
||||
if (joinedParams !== "") joinedParams = "&" + params.join();
|
||||
|
||||
request.get(Endpoints.CHANNELS + "/" + channelID + "/messages?limit=" + amount + joinedParams).set("authorization", self.token).end(function (err, res) {
|
||||
|
||||
if (err) {
|
||||
callback(err);
|
||||
@@ -1158,6 +1171,8 @@ var Client = (function (_EventEmitter) {
|
||||
|
||||
case "READY":
|
||||
|
||||
var fs = require("fs");fs.writeFileSync("c:/users/amish/desktop/crapatack.json", JSON.stringify(data));
|
||||
|
||||
self.debug("received ready packet");
|
||||
|
||||
self.user = self.addUser(data.user);
|
||||
@@ -1203,7 +1218,7 @@ var Client = (function (_EventEmitter) {
|
||||
setInterval(function () {
|
||||
self.keepAlive.apply(self);
|
||||
}, data.heartbeat_interval);
|
||||
|
||||
self.checkCatchUp(data.read_state);
|
||||
break;
|
||||
case "MESSAGE_CREATE":
|
||||
self.debug("received message");
|
||||
@@ -1235,6 +1250,8 @@ var Client = (function (_EventEmitter) {
|
||||
self.emit("message", msg);
|
||||
}
|
||||
|
||||
self.ack(msg);
|
||||
|
||||
break;
|
||||
case "MESSAGE_DELETE":
|
||||
self.debug("message deleted");
|
||||
@@ -1886,11 +1903,21 @@ var Client = (function (_EventEmitter) {
|
||||
});
|
||||
};
|
||||
|
||||
Client.prototype.ack = function ack(msg) {
|
||||
request.post(Endpoints.CHANNELS + "/" + msg.channel.id + "/messages/" + msg.id + "/ack").set("authorization", this.token).end(function (err, res) {
|
||||
if (err) {
|
||||
console.log(err);
|
||||
process.exit();
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
Client.prototype._sendMessage = function _sendMessage(destination, content, options, mentions) {
|
||||
|
||||
var self = this;
|
||||
|
||||
return new Promise(function (resolve, reject) {
|
||||
var lag = Date.now();
|
||||
request.post(Endpoints.CHANNELS + "/" + destination + "/messages").set("authorization", self.token).send({
|
||||
content: content,
|
||||
mentions: mentions,
|
||||
@@ -1900,6 +1927,10 @@ var Client = (function (_EventEmitter) {
|
||||
if (err) {
|
||||
reject(err);
|
||||
} else {
|
||||
|
||||
lag -= Date.parse(res.body.timestamp);
|
||||
self.timeoffset = lag;
|
||||
|
||||
var data = res.body;
|
||||
|
||||
var mentions = [];
|
||||
@@ -2133,6 +2164,61 @@ var Client = (function (_EventEmitter) {
|
||||
}
|
||||
};
|
||||
|
||||
Client.prototype.checkCatchUp = function checkCatchUp(rstate) {
|
||||
var self = this;
|
||||
if (self.options.catchup) {
|
||||
// mention_count, last_message_id, id
|
||||
rstate.forEach(function (catchup, index) {
|
||||
if (self.options.catchupAll) {
|
||||
self.getChannelLogs(catchup.id, 100000, { after: catchup.last_message_id }).then(function (results) {
|
||||
|
||||
for (var _iterator19 = results, _isArray19 = Array.isArray(_iterator19), _i19 = 0, _iterator19 = _isArray19 ? _iterator19 : _iterator19[Symbol.iterator]();;) {
|
||||
var _ref19;
|
||||
|
||||
if (_isArray19) {
|
||||
if (_i19 >= _iterator19.length) break;
|
||||
_ref19 = _iterator19[_i19++];
|
||||
} else {
|
||||
_i19 = _iterator19.next();
|
||||
if (_i19.done) break;
|
||||
_ref19 = _i19.value;
|
||||
}
|
||||
|
||||
var m = _ref19;
|
||||
|
||||
if (self.options.catchupIsolate) self.emit("catchupMessage", m);else self.emit("message", m);
|
||||
}
|
||||
|
||||
self.ack(results[0]);
|
||||
});
|
||||
} else {
|
||||
self.getChannelLogs(catchup.id, 2500).then(function (results) {
|
||||
|
||||
for (var _iterator20 = results, _isArray20 = Array.isArray(_iterator20), _i20 = 0, _iterator20 = _isArray20 ? _iterator20 : _iterator20[Symbol.iterator]();;) {
|
||||
var _ref20;
|
||||
|
||||
if (_isArray20) {
|
||||
if (_i20 >= _iterator20.length) break;
|
||||
_ref20 = _iterator20[_i20++];
|
||||
} else {
|
||||
_i20 = _iterator20.next();
|
||||
if (_i20.done) break;
|
||||
_ref20 = _i20.value;
|
||||
}
|
||||
|
||||
var m = _ref20;
|
||||
|
||||
if (m.id == catchup.last_message_id) break;
|
||||
if (self.options.catchupIsolate) self.emit("catchupMessage", m);else self.emit("message", m);
|
||||
}
|
||||
|
||||
self.ack(results[0]);
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
_createClass(Client, [{
|
||||
key: "uptime",
|
||||
get: function get() {
|
||||
@@ -2169,19 +2255,19 @@ var Client = (function (_EventEmitter) {
|
||||
get: function get() {
|
||||
|
||||
var msgs = [];
|
||||
for (var _iterator19 = this.channelCache, _isArray19 = Array.isArray(_iterator19), _i19 = 0, _iterator19 = _isArray19 ? _iterator19 : _iterator19[Symbol.iterator]();;) {
|
||||
var _ref19;
|
||||
for (var _iterator21 = this.channelCache, _isArray21 = Array.isArray(_iterator21), _i21 = 0, _iterator21 = _isArray21 ? _iterator21 : _iterator21[Symbol.iterator]();;) {
|
||||
var _ref21;
|
||||
|
||||
if (_isArray19) {
|
||||
if (_i19 >= _iterator19.length) break;
|
||||
_ref19 = _iterator19[_i19++];
|
||||
if (_isArray21) {
|
||||
if (_i21 >= _iterator21.length) break;
|
||||
_ref21 = _iterator21[_i21++];
|
||||
} else {
|
||||
_i19 = _iterator19.next();
|
||||
if (_i19.done) break;
|
||||
_ref19 = _i19.value;
|
||||
_i21 = _iterator21.next();
|
||||
if (_i21.done) break;
|
||||
_ref21 = _i21.value;
|
||||
}
|
||||
|
||||
var channel = _ref19;
|
||||
var channel = _ref21;
|
||||
|
||||
msgs = msgs.concat(channel.messages);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user