Fixed options + message cache limit + server member count + leaving users

This commit is contained in:
abalabahaha
2016-03-10 22:16:05 -08:00
parent ef679e87c4
commit d2a9f15e82
8 changed files with 68 additions and 23 deletions

View File

@@ -73,8 +73,9 @@ var Client = (function (_EventEmitter) {
this.options = options || {}; this.options = options || {};
this.options.compress = options.compress || !process.browser; this.options.compress = options.compress || !process.browser;
this.options.revive = options.revive || false; this.options.revive = options.revive || false;
this.options.rate_limit_as_error = options.rate_limit_as_error || false; this.options.rateLimitAsError = options.rateLimitAsError || false;
this.options.large_threshold = options.large_threshold || 250; this.options.largeThreshold = options.largeThreshold || 250;
this.options.maxCachedMessages = options.maxCachedMessages || 1000;
/** /**
* Internal Client that the Client wraps around. * Internal Client that the Client wraps around.
* @readonly * @readonly

View File

@@ -132,7 +132,7 @@ var InternalClient = (function () {
return new Promise(function (resolve, reject) { return new Promise(function (resolve, reject) {
ret.end(function (error, data) { ret.end(function (error, data) {
if (error) { if (error) {
if (!_this.client.options.rate_limit_as_error && error.response && error.response.error && error.response.error.status && error.response.error.status === 429) { if (!_this.client.options.rateLimitAsError && error.response && error.response.error && error.response.error.status && error.response.error.status === 429) {
if (data.headers["retry-after"] || data.headers["Retry-After"]) { if (data.headers["retry-after"] || data.headers["Retry-After"]) {
var toWait = data.headers["retry-after"] || data.headers["Retry-After"]; var toWait = data.headers["retry-after"] || data.headers["Retry-After"];
@@ -1361,7 +1361,7 @@ var InternalClient = (function () {
token: self.token, token: self.token,
v: 3, v: 3,
compress: self.client.options.compress, compress: self.client.options.compress,
large_threshold: self.client.options.large_threshold, large_threshold: self.client.options.largeThreshold,
properties: { properties: {
"$os": "discord.js", "$os": "discord.js",
"$browser": "discord.js", "$browser": "discord.js",
@@ -1528,6 +1528,28 @@ var InternalClient = (function () {
} }
self.servers.remove(server); self.servers.remove(server);
for (var _iterator8 = self.users, _isArray8 = Array.isArray(_iterator8), _i8 = 0, _iterator8 = _isArray8 ? _iterator8 : _iterator8[Symbol.iterator]();;) {
var _ref8;
if (_isArray8) {
if (_i8 >= _iterator8.length) break;
_ref8 = _iterator8[_i8++];
} else {
_i8 = _iterator8.next();
if (_i8.done) break;
_ref8 = _i8.value;
}
var user = _ref8;
if (!self.servers.find(function (s) {
return !!s.members.get("id", user.id);
})) {
self.users.remove(user);
}
}
client.emit("serverDeleted", server); client.emit("serverDeleted", server);
} else { } else {
client.emit("warn", "server was unavailable, could not update"); client.emit("warn", "server was unavailable, could not update");
@@ -1680,6 +1702,8 @@ var InternalClient = (function () {
joinedAt: Date.parse(data.joined_at) joinedAt: Date.parse(data.joined_at)
}; };
server.memberCount++;
client.emit("serverNewMember", server, server.members.add(self.users.add(new _StructuresUser2["default"](data.user, client)))); client.emit("serverNewMember", server, server.members.add(self.users.add(new _StructuresUser2["default"](data.user, client))));
} else { } else {
client.emit("warn", "server member added but server doesn't exist in cache"); client.emit("warn", "server member added but server doesn't exist in cache");
@@ -1692,7 +1716,13 @@ var InternalClient = (function () {
if (user) { if (user) {
server.memberMap[data.user.id] = null; server.memberMap[data.user.id] = null;
server.members.remove(user); server.members.remove(user);
server.memberCount--;
client.emit("serverMemberRemoved", server, user); client.emit("serverMemberRemoved", server, user);
if (!self.servers.find(function (s) {
return !!s.members.get("id", user.id);
})) {
self.users.remove(user);
}
} else { } else {
client.emit("warn", "server member removed but user doesn't exist in cache"); client.emit("warn", "server member removed but user doesn't exist in cache");
} }
@@ -1846,19 +1876,19 @@ var InternalClient = (function () {
var testtime = new Date().getTime(); var testtime = new Date().getTime();
for (var _iterator8 = data.members, _isArray8 = Array.isArray(_iterator8), _i8 = 0, _iterator8 = _isArray8 ? _iterator8 : _iterator8[Symbol.iterator]();;) { for (var _iterator9 = data.members, _isArray9 = Array.isArray(_iterator9), _i9 = 0, _iterator9 = _isArray9 ? _iterator9 : _iterator9[Symbol.iterator]();;) {
var _ref8; var _ref9;
if (_isArray8) { if (_isArray9) {
if (_i8 >= _iterator8.length) break; if (_i9 >= _iterator9.length) break;
_ref8 = _iterator8[_i8++]; _ref9 = _iterator9[_i9++];
} else { } else {
_i8 = _iterator8.next(); _i9 = _iterator9.next();
if (_i8.done) break; if (_i9.done) break;
_ref8 = _i8.value; _ref9 = _i9.value;
} }
var user = _ref8; var user = _ref9;
server.memberMap[user.user.id] = { server.memberMap[user.user.id] = {
roles: user.roles.map(function (pid) { roles: user.roles.map(function (pid) {

View File

@@ -33,8 +33,8 @@ var PMChannel = (function (_Channel) {
_Channel.call(this, data, client); _Channel.call(this, data, client);
this.type = data.type || "text"; this.type = data.type || "text";
this.lastMessageId = data.last_message_id || data.lastMessageId; this.lastMessageID = data.last_message_id || data.lastMessageID;
this.messages = new _UtilCache2["default"]("id", 1000); this.messages = new _UtilCache2["default"]("id", client.options.maxCachedMessages);
this.recipient = this.client.internal.users.add(new _User2["default"](data.recipient, this.client)); this.recipient = this.client.internal.users.add(new _User2["default"](data.recipient, this.client));
} }

View File

@@ -30,7 +30,7 @@ var TextChannel = (function (_ServerChannel) {
this.topic = data.topic; this.topic = data.topic;
this.lastMessageID = data.last_message_id || data.lastMessageID; this.lastMessageID = data.last_message_id || data.lastMessageID;
this.messages = new _UtilCache2["default"]("id", client.options.maximumMessages); this.messages = new _UtilCache2["default"]("id", client.options.maxCachedMessages);
} }
/* warning! may return null */ /* warning! may return null */

View File

@@ -47,8 +47,9 @@ export default class Client extends EventEmitter {
this.options = options || {}; this.options = options || {};
this.options.compress = options.compress || (!process.browser); this.options.compress = options.compress || (!process.browser);
this.options.revive = options.revive || false; this.options.revive = options.revive || false;
this.options.rate_limit_as_error = options.rate_limit_as_error || false; this.options.rateLimitAsError = options.rateLimitAsError || false;
this.options.large_threshold = options.large_threshold || 250; this.options.largeThreshold = options.largeThreshold || 250;
this.options.maxCachedMessages = options.maxCachedMessages || 1000;
/** /**
* Internal Client that the Client wraps around. * Internal Client that the Client wraps around.
* @readonly * @readonly

View File

@@ -65,7 +65,7 @@ export default class InternalClient {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
ret.end((error, data) => { ret.end((error, data) => {
if (error) { if (error) {
if (!this.client.options.rate_limit_as_error && if (!this.client.options.rateLimitAsError &&
error.response && error.response &&
error.response.error && error.response.error &&
error.response.error.status error.response.error.status
@@ -1122,7 +1122,7 @@ export default class InternalClient {
token: self.token, token: self.token,
v: 3, v: 3,
compress: self.client.options.compress, compress: self.client.options.compress,
large_threshold : self.client.options.large_threshold, large_threshold : self.client.options.largeThreshold,
properties: { properties: {
"$os": "discord.js", "$os": "discord.js",
"$browser": "discord.js", "$browser": "discord.js",
@@ -1270,6 +1270,13 @@ export default class InternalClient {
} }
self.servers.remove(server); self.servers.remove(server);
for (var user of self.users) {
if (!self.servers.find((s) => !!s.members.get("id", user.id))) {
self.users.remove(user);
}
}
client.emit("serverDeleted", server); client.emit("serverDeleted", server);
} else { } else {
client.emit("warn", "server was unavailable, could not update"); client.emit("warn", "server was unavailable, could not update");
@@ -1424,6 +1431,8 @@ export default class InternalClient {
joinedAt: Date.parse(data.joined_at) joinedAt: Date.parse(data.joined_at)
}; };
server.memberCount++;
client.emit( client.emit(
"serverNewMember", "serverNewMember",
server, server,
@@ -1441,7 +1450,11 @@ export default class InternalClient {
if (user) { if (user) {
server.memberMap[data.user.id] = null; server.memberMap[data.user.id] = null;
server.members.remove(user); server.members.remove(user);
server.memberCount--;
client.emit("serverMemberRemoved", server, user); client.emit("serverMemberRemoved", server, user);
if (!self.servers.find((s) => !!s.members.get("id", user.id))) {
self.users.remove(user);
}
} else { } else {
client.emit("warn", "server member removed but user doesn't exist in cache"); client.emit("warn", "server member removed but user doesn't exist in cache");
} }

View File

@@ -10,8 +10,8 @@ export default class PMChannel extends Channel {
super(data, client); super(data, client);
this.type = data.type || "text"; this.type = data.type || "text";
this.lastMessageId = data.last_message_id || data.lastMessageId; this.lastMessageID = data.last_message_id || data.lastMessageID;
this.messages = new Cache("id", 1000); this.messages = new Cache("id", client.options.maxCachedMessages);
this.recipient = this.client.internal.users.add(new User(data.recipient, this.client)); this.recipient = this.client.internal.users.add(new User(data.recipient, this.client));
} }

View File

@@ -10,7 +10,7 @@ export default class TextChannel extends ServerChannel{
this.topic = data.topic; this.topic = data.topic;
this.lastMessageID = data.last_message_id || data.lastMessageID; this.lastMessageID = data.last_message_id || data.lastMessageID;
this.messages = new Cache("id", client.options.maximumMessages); this.messages = new Cache("id", client.options.maxCachedMessages);
} }
/* warning! may return null */ /* warning! may return null */