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> {
if(!this.unavailable) return; return await new Promise((resolve, reject) => {
var loaded = false; if(!this.unavailable) return;
var listener = (guild: Guild): void => { loaded = loaded || guild.id === this.id }; var listener = (guild: Guild): void => {
this.client.on('guildLoaded', listener); if (guild.id === this.id) {
while(true) { this.removeListener('guildLoaded', listener);
await new Promise(resolve => setTimeout(resolve, delay)); resolve();
if(loaded) { }
this.client.removeListener('guildLoaded', listener); };
return; this.client.on('guildLoaded', listener);
}
} }
} }
} }