mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-09 16:13:31 +01:00
Always fire messageUpdated, reset on login (#294,#295)
This commit is contained in:
@@ -213,8 +213,10 @@ var InternalClient = (function () {
|
||||
this.messageAwaits = {};
|
||||
this.retryAfters = {};
|
||||
|
||||
this.tokenCacher = new _UtilTokenCacher2["default"](this.client);
|
||||
this.tokenCacher.init(0);
|
||||
if (!this.tokenCacher) {
|
||||
this.tokenCacher = new _UtilTokenCacher2["default"](this.client);
|
||||
this.tokenCacher.init(0);
|
||||
}
|
||||
};
|
||||
|
||||
InternalClient.prototype.cleanIntervals = function cleanIntervals() {
|
||||
@@ -255,7 +257,6 @@ var InternalClient = (function () {
|
||||
if (!_this2.email && !_this2.token) {
|
||||
return;
|
||||
}
|
||||
_this2.setup();
|
||||
|
||||
// Check whether the email is set (if not, only a token has been used for login)
|
||||
_this2.loginWithToken(_this2.token, _this2.email, _this2.password)["catch"](function () {
|
||||
@@ -588,6 +589,8 @@ var InternalClient = (function () {
|
||||
InternalClient.prototype.loginWithToken = function loginWithToken(token, email, password) {
|
||||
var _this10 = this;
|
||||
|
||||
this.setup();
|
||||
|
||||
this.state = _ConnectionState2["default"].LOGGED_IN;
|
||||
this.token = token;
|
||||
this.email = email;
|
||||
@@ -1819,8 +1822,11 @@ var InternalClient = (function () {
|
||||
data.content = data.content || msg.content;
|
||||
data.mentions = data.mentions || msg.mentions;
|
||||
data.author = data.author || msg.author;
|
||||
var nmsg = new _StructuresMessage2["default"](data, channel, client);
|
||||
client.emit("messageUpdated", new _StructuresMessage2["default"](msg, channel, client), nmsg);
|
||||
msg = new _StructuresMessage2["default"](msg, channel, client);
|
||||
}
|
||||
var nmsg = new _StructuresMessage2["default"](data, channel, client);
|
||||
client.emit("messageUpdated", msg, nmsg);
|
||||
if (msg) {
|
||||
channel.messages.update(msg, nmsg);
|
||||
}
|
||||
} else {
|
||||
|
||||
@@ -133,10 +133,8 @@ var Server = (function (_Equality) {
|
||||
var presence = _ref;
|
||||
|
||||
var user = client.internal.users.get("id", presence.user.id);
|
||||
if (user) {
|
||||
user.status = presence.status;
|
||||
user.game = presence.game;
|
||||
}
|
||||
user.status = presence.status;
|
||||
user.game = presence.game;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -53,8 +53,8 @@ export default class InternalClient {
|
||||
|
||||
apiRequest(method, url, useAuth, data, file) {
|
||||
var endpoint = url.replace(/\/[0-9]+/g, "/:id");
|
||||
if(this.retryAfters[endpoint]) {
|
||||
if(this.retryAfters[endpoint] < Date.now()) {
|
||||
if (this.retryAfters[endpoint]) {
|
||||
if (this.retryAfters[endpoint] < Date.now()) {
|
||||
delete this.retryAfters[endpoint];
|
||||
} else {
|
||||
return new Promise((resolve, reject) => {
|
||||
@@ -93,7 +93,7 @@ export default class InternalClient {
|
||||
|
||||
if (data.headers["retry-after"] || data.headers["Retry-After"]) {
|
||||
var toWait = data.headers["retry-after"] || data.headers["Retry-After"];
|
||||
if(!this.retryAfters[endpoint])
|
||||
if (!this.retryAfters[endpoint])
|
||||
this.retryAfters[endpoint] = Date.now() + parseInt(toWait);
|
||||
setTimeout(() => {
|
||||
this.apiRequest.apply(this, arguments).then(resolve).catch(reject);
|
||||
@@ -150,8 +150,10 @@ export default class InternalClient {
|
||||
this.messageAwaits = {};
|
||||
this.retryAfters = {};
|
||||
|
||||
this.tokenCacher = new TokenCacher(this.client);
|
||||
this.tokenCacher.init(0);
|
||||
if (!this.tokenCacher) {
|
||||
this.tokenCacher = new TokenCacher(this.client);
|
||||
this.tokenCacher.init(0);
|
||||
}
|
||||
}
|
||||
|
||||
cleanIntervals() {
|
||||
@@ -173,10 +175,9 @@ export default class InternalClient {
|
||||
if (autoReconnect) {
|
||||
this.autoReconnectInterval = Math.min(this.autoReconnectInterval * (Math.random() + 1), 60000);
|
||||
setTimeout(() => {
|
||||
if(!this.email && !this.token) {
|
||||
if (!this.email && !this.token) {
|
||||
return;
|
||||
}
|
||||
this.setup();
|
||||
|
||||
// Check whether the email is set (if not, only a token has been used for login)
|
||||
this.loginWithToken(this.token, this.email, this.password).catch(() => this.disconnected(true));
|
||||
@@ -305,7 +306,7 @@ export default class InternalClient {
|
||||
chan.on("error", reject);
|
||||
chan.on("close", reject);
|
||||
|
||||
if(timeout) {
|
||||
if (timeout) {
|
||||
clearTimeout(timeout);
|
||||
}
|
||||
this.websocket.removeListener("message", check);
|
||||
@@ -344,7 +345,7 @@ export default class InternalClient {
|
||||
|
||||
getGuildMembers(serverID, chunkCount) {
|
||||
this.forceFetchCount[serverID] = chunkCount;
|
||||
if(this.forceFetchLength + 3 + serverID.length > 4082) { // 4096 - '{"op":8,"d":[]}'.length + 1 for lazy comma offset
|
||||
if (this.forceFetchLength + 3 + serverID.length > 4082) { // 4096 - '{"op":8,"d":[]}'.length + 1 for lazy comma offset
|
||||
this.requestGuildMembers(this.forceFetchQueue);
|
||||
this.forceFetchQueue = [serverID];
|
||||
this.forceFetchLength = 1 + serverID.length + 3;
|
||||
@@ -365,8 +366,8 @@ export default class InternalClient {
|
||||
}
|
||||
|
||||
checkReady() {
|
||||
if(!this.readyTime) {
|
||||
if(this.forceFetchQueue.length > 0) {
|
||||
if (!this.readyTime) {
|
||||
if (this.forceFetchQueue.length > 0) {
|
||||
this.requestGuildMembers(this.forceFetchQueue);
|
||||
this.forceFetchQueue = [];
|
||||
this.forceFetchLength = 1;
|
||||
@@ -383,11 +384,11 @@ export default class InternalClient {
|
||||
}
|
||||
|
||||
restartServerCreateTimeout() {
|
||||
if(this.guildCreateTimeout) {
|
||||
if (this.guildCreateTimeout) {
|
||||
clearTimeout(this.guildCreateTimeout);
|
||||
this.guildCreateTimeout = null;
|
||||
}
|
||||
if(!this.readyTime) {
|
||||
if (!this.readyTime) {
|
||||
this.guildCreateTimeout = setTimeout(() => {
|
||||
this.checkReady();
|
||||
}, this.client.options.guildCreateTimeout);
|
||||
@@ -489,6 +490,8 @@ export default class InternalClient {
|
||||
// def loginWithToken
|
||||
// email and password are optional
|
||||
loginWithToken(token, email, password) {
|
||||
this.setup();
|
||||
|
||||
this.state = ConnectionState.LOGGED_IN;
|
||||
this.token = token;
|
||||
this.email = email;
|
||||
@@ -582,7 +585,7 @@ export default class InternalClient {
|
||||
|
||||
// def getGateway
|
||||
getGateway() {
|
||||
if(this.gatewayURL) {
|
||||
if (this.gatewayURL) {
|
||||
return Promise.resolve(this.gatewayURL);
|
||||
}
|
||||
return this.apiRequest("get", Endpoints.GATEWAY, true)
|
||||
@@ -1500,7 +1503,7 @@ export default class InternalClient {
|
||||
data.guilds.forEach(server => {
|
||||
if (!server.unavailable) {
|
||||
server = self.servers.add(new Server(server, client));
|
||||
if(self.client.options.forceFetchUsers && server.members && server.members.length < server.memberCount) {
|
||||
if (self.client.options.forceFetchUsers && server.members && server.members.length < server.memberCount) {
|
||||
self.getGuildMembers(server.id, Math.ceil(server.memberCount / 1000));
|
||||
}
|
||||
} else {
|
||||
@@ -1591,8 +1594,11 @@ export default class InternalClient {
|
||||
data.content = data.content || msg.content;
|
||||
data.mentions = data.mentions || msg.mentions;
|
||||
data.author = data.author || msg.author;
|
||||
var nmsg = new Message(data, channel, client);
|
||||
client.emit("messageUpdated", new Message(msg, channel, client), nmsg);
|
||||
msg = new Message(msg, channel, client);
|
||||
}
|
||||
var nmsg = new Message(data, channel, client);
|
||||
client.emit("messageUpdated", msg, nmsg);
|
||||
if (msg) {
|
||||
channel.messages.update(msg, nmsg);
|
||||
}
|
||||
} else {
|
||||
@@ -1604,14 +1610,14 @@ export default class InternalClient {
|
||||
if (!server) {
|
||||
if (!data.unavailable) {
|
||||
server = self.servers.add(new Server(data, client));
|
||||
if(client.readyTime) {
|
||||
if (client.readyTime) {
|
||||
client.emit("serverCreated", server);
|
||||
}
|
||||
if (self.client.options.forceFetchUsers && server.large && server.members.length < server.memberCount) {
|
||||
self.getGuildMembers(server.id, Math.ceil(server.memberCount / 1000));
|
||||
}
|
||||
var unavailable = self.unavailableServers.get("id", server.id);
|
||||
if(unavailable) {
|
||||
if (unavailable) {
|
||||
self.unavailableServers.remove(unavailable);
|
||||
}
|
||||
self.restartServerCreateTimeout();
|
||||
@@ -2016,8 +2022,8 @@ export default class InternalClient {
|
||||
server.members.add(self.users.add(new User(user.user, client)));
|
||||
}
|
||||
|
||||
if(self.forceFetchCount.hasOwnProperty(server.id)) {
|
||||
if(self.forceFetchCount[server.id] <= 1) {
|
||||
if (self.forceFetchCount.hasOwnProperty(server.id)) {
|
||||
if (self.forceFetchCount[server.id] <= 1) {
|
||||
delete self.forceFetchCount[server.id];
|
||||
self.checkReady();
|
||||
} else {
|
||||
|
||||
@@ -83,10 +83,8 @@ export default class Server extends Equality {
|
||||
if (data.presences) {
|
||||
for (var presence of data.presences) {
|
||||
var user = client.internal.users.get("id", presence.user.id);
|
||||
if (user) {
|
||||
user.status = presence.status;
|
||||
user.game = presence.game;
|
||||
}
|
||||
user.status = presence.status;
|
||||
user.game = presence.game;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user