event based await in guildAvailability method

This commit is contained in:
ZiomaleQ 2021-01-05 14:42:27 +01:00
parent c4a3fbc45c
commit 6b5c15d19a

View file

@ -311,16 +311,15 @@ export class Guild extends Base {
* @param delay the delay between checking guild availability * @param delay the delay between checking guild availability
*/ */
async awaitAvailability(delay: number = 1000): Promise<void> { async awaitAvailability(delay: number = 1000): Promise<void> {
return await new Promise((resolve, reject) => {
if(!this.unavailable) return; if(!this.unavailable) return;
var loaded = false; var listener = (guild: Guild): void => {
var listener = (guild: Guild): void => { loaded = loaded || guild.id === this.id }; if (guild.id === this.id) {
this.client.on('guildLoaded', listener); this.removeListener('guildLoaded', listener);
while(true) { resolve();
await new Promise(resolve => setTimeout(resolve, delay));
if(loaded) {
this.client.removeListener('guildLoaded', listener);
return;
} }
};
this.client.on('guildLoaded', listener);
} }
} }
} }