fix(Client): login not properly rejecting on invalid token

This commit is contained in:
Lewdcario
2018-06-29 19:28:21 -05:00
parent 3fa9ed1f42
commit 448f38429d
3 changed files with 8 additions and 3 deletions

View File

@@ -273,7 +273,7 @@ class Client extends EventEmitter {
* @example
* client.login('my token');
*/
login(token) {
login(token = this.token) {
return this.rest.methods.login(token);
}

View File

@@ -43,6 +43,7 @@ class ClientManager {
const gateway = `${res.url}/?v=${protocolVersion}&encoding=${WebSocketConnection.ENCODING}`;
this.client.emit(Constants.Events.DEBUG, `Using gateway ${gateway}`);
this.client.ws.connect(gateway);
this.client.ws.connection.once('error', reject);
this.client.ws.connection.once('close', event => {
if (event.code === 4004) reject(new Error(Constants.Errors.BAD_LOGIN));
if (event.code === 4010) reject(new Error(Constants.Errors.INVALID_SHARD));

View File

@@ -29,9 +29,13 @@ class RESTMethods {
login(token = this.client.token) {
return new Promise((resolve, reject) => {
if (typeof token !== 'string') throw new Error(Constants.Errors.INVALID_TOKEN);
if (!token || typeof token !== 'string') throw new Error(Constants.Errors.INVALID_TOKEN);
token = token.replace(/^Bot\s*/i, '');
this.client.manager.connectToWebSocket(token, resolve, reject);
this.client.manager.connectToWebSocket(token, resolve, reject)
.catch(e => {
this.client.destroy();
return Promise.reject(e);
});
});
}