mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-10 08:33:30 +01:00
add catchup options
This commit is contained in:
133
src/Client.js
133
src/Client.js
@@ -35,7 +35,7 @@ class Client extends EventEmitter {
|
||||
super();
|
||||
|
||||
this.options = options;
|
||||
this.options.catchup options.catchup;
|
||||
this.options.catchup = options.catchup;
|
||||
this.options.compress = options.compress;
|
||||
|
||||
if (this.options.compress) {
|
||||
@@ -73,6 +73,7 @@ class Client extends EventEmitter {
|
||||
this.guildRoleCreateIgnoreList = {};
|
||||
this.__idleTime = null;
|
||||
this.__gameId = null;
|
||||
this.timeoffset = 0;
|
||||
}
|
||||
|
||||
get uptime() {
|
||||
@@ -512,7 +513,7 @@ class Client extends EventEmitter {
|
||||
});
|
||||
}
|
||||
|
||||
getChannelLogs(channel, amount = 500, callback = function (err, logs) { }) {
|
||||
getChannelLogs(channel, amount = 500, options = {}, callback = function (err, logs) { }) {
|
||||
|
||||
var self = this;
|
||||
|
||||
@@ -523,8 +524,20 @@ class Client extends EventEmitter {
|
||||
channelID = channel.id;
|
||||
}
|
||||
|
||||
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}`)
|
||||
.get(`${Endpoints.CHANNELS}/${channelID}/messages?limit=${amount}${joinedParams}`)
|
||||
.set("authorization", self.token)
|
||||
.end(function (err, res) {
|
||||
|
||||
@@ -560,7 +573,6 @@ class Client extends EventEmitter {
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
@@ -1138,39 +1150,39 @@ class Client extends EventEmitter {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
getBans(serverResource, callback=function(err, arrayOfBans){}){
|
||||
|
||||
|
||||
getBans(serverResource, callback = function (err, arrayOfBans) { }) {
|
||||
|
||||
var self = this;
|
||||
return new Promise(function(resolve, reject){
|
||||
|
||||
return new Promise(function (resolve, reject) {
|
||||
|
||||
var serverID = self.resolveServerID(serverResource);
|
||||
|
||||
|
||||
request
|
||||
.get(`${Endpoints.SERVERS}/${serverID}/bans`)
|
||||
.set("authorization", self.token)
|
||||
.end(function(err, res){
|
||||
|
||||
if(err){
|
||||
.end(function (err, res) {
|
||||
|
||||
if (err) {
|
||||
callback(err);
|
||||
reject(err);
|
||||
}else{
|
||||
|
||||
} else {
|
||||
|
||||
var banList = [];
|
||||
|
||||
for(var user of res.body){
|
||||
banList.push( self.addUser(user.user) );
|
||||
|
||||
for (var user of res.body) {
|
||||
banList.push(self.addUser(user.user));
|
||||
}
|
||||
|
||||
|
||||
callback(null, banList);
|
||||
resolve(banList);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
});
|
||||
|
||||
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
|
||||
//def createws
|
||||
@@ -1219,7 +1231,9 @@ class Client extends EventEmitter {
|
||||
switch (dat.t) {
|
||||
|
||||
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);
|
||||
@@ -1241,7 +1255,7 @@ class Client extends EventEmitter {
|
||||
setInterval(function () {
|
||||
self.keepAlive.apply(self);
|
||||
}, data.heartbeat_interval);
|
||||
self.checkCatchUp();
|
||||
self.checkCatchUp(data.read_state);
|
||||
break;
|
||||
case "MESSAGE_CREATE":
|
||||
self.debug("received message");
|
||||
@@ -1263,6 +1277,8 @@ class Client extends EventEmitter {
|
||||
self.emit("message", msg);
|
||||
}
|
||||
|
||||
self.ack(msg);
|
||||
|
||||
break;
|
||||
case "MESSAGE_DELETE":
|
||||
self.debug("message deleted");
|
||||
@@ -1362,15 +1378,15 @@ class Client extends EventEmitter {
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
|
||||
case "GUILD_UPDATE":
|
||||
|
||||
|
||||
var server = self.getServer("id", data.id);
|
||||
var newserver = self.addServer(data, true);
|
||||
|
||||
|
||||
self.serverCache.splice(self.serverCache.indexOf(server), 1);
|
||||
self.emit("serverUpdate", server, newserver);
|
||||
|
||||
|
||||
break;
|
||||
case "GUILD_CREATE":
|
||||
|
||||
@@ -1664,7 +1680,7 @@ class Client extends EventEmitter {
|
||||
}
|
||||
|
||||
//def addServer
|
||||
addServer(data, force=false) {
|
||||
addServer(data, force = false) {
|
||||
|
||||
var self = this;
|
||||
var server = this.getServer("id", data.id);
|
||||
@@ -1683,7 +1699,7 @@ class Client extends EventEmitter {
|
||||
server.channels.push(this.addChannel(channel, server.id));
|
||||
}
|
||||
}
|
||||
if(data.presences){
|
||||
if (data.presences) {
|
||||
for (var presence of data.presences) {
|
||||
var user = self.getUser("id", presence.user.id);
|
||||
user.status = presence.status;
|
||||
@@ -1820,11 +1836,24 @@ class Client extends EventEmitter {
|
||||
});
|
||||
}
|
||||
|
||||
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();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
_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)
|
||||
@@ -1838,6 +1867,10 @@ class Client extends EventEmitter {
|
||||
if (err) {
|
||||
reject(err);
|
||||
} else {
|
||||
|
||||
lag -= Date.parse(res.body.timestamp);
|
||||
self.timeoffset = lag;
|
||||
|
||||
var data = res.body;
|
||||
|
||||
var mentions = [];
|
||||
@@ -2075,9 +2108,43 @@ class Client extends EventEmitter {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
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((results) => {
|
||||
|
||||
checkCatchUp(){
|
||||
|
||||
for (var m of results) {
|
||||
if(self.options.catchupIsolate)
|
||||
self.emit("catchupMessage", m);
|
||||
else
|
||||
self.emit("message", m);
|
||||
}
|
||||
|
||||
self.ack(results[0]);
|
||||
|
||||
});
|
||||
}else{
|
||||
self.getChannelLogs(catchup.id, 2500).then((results) => {
|
||||
|
||||
for (var m of results) {
|
||||
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]);
|
||||
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -10,7 +10,6 @@ class Message {
|
||||
this.everyoneMentioned = data.mention_everyone;
|
||||
this.id = data.id;
|
||||
this.embeds = [];
|
||||
|
||||
if (data.embeds) {
|
||||
for (var embed of data.embeds) {
|
||||
this.embeds.push( Embeddable.createEmbed(embed) );
|
||||
|
||||
Reference in New Issue
Block a user