Merge pull request #487 from TheDevYellowy/main

feat: switch user
This commit is contained in:
Elysia
2023-01-26 12:06:39 +07:00
committed by GitHub
2 changed files with 40 additions and 1 deletions

View File

@@ -418,6 +418,26 @@ class Client extends BaseClient {
}
}
/**
* Switch the user
* @param {string | switchUserOptions} options Either the token or an object with the username, password, and mfaCode
*/
async switchUser(options) {
await this.logout();
// There is a better way to code this but it's a temp fix - TheDevYellowy
await this.clearCache(this.channels.cache);
await this.clearCache(this.guilds.cache);
await this.clearCache(this.relationships.cache);
await this.clearCache(this.sessions.cache);
await this.clearCache(this.users.cache);
await this.clearCache(this.voiceStates.cache);
if (typeof options == 'string') {
await this.login(options);
} else {
await this.normalLogin(options.username, options.password, options.mfaCode);
}
}
/**
* Sign in with the QR code on your phone.
* @param {boolean} debug Debug mode
@@ -557,6 +577,7 @@ class Client extends BaseClient {
this.sweepers.destroy();
this.ws.destroy();
this.token = null;
this.password = null;
}
/**
@@ -570,7 +591,7 @@ class Client extends BaseClient {
voip_provider: null,
},
});
this.destroy();
await this.destroy();
}
/**
@@ -752,6 +773,16 @@ class Client extends BaseClient {
}
}
/**
* Clear a cache
* @param {Collection} cache The cache to clear
*/
async clearCache(cache) {
await cache.forEach(async (V, K) => {
await cache.delete(K);
});
}
/**
* Sweeps all text-based channels' messages and removes the ones older than the max message lifetime.
* If the message has been edited, the time of the edit is used rather than the time of the original message.