From e3bce85f097ea9779483ddf3334e969616b11463 Mon Sep 17 00:00:00 2001 From: DjDeveloperr Date: Fri, 1 Jan 2021 10:30:11 +0530 Subject: [PATCH] fix channels.array and add guildLoaded event --- src/gateway/handlers/guildCreate.ts | 2 +- src/gateway/handlers/index.ts | 5 +++++ src/managers/channels.ts | 1 + src/models/cacheAdapter.ts | 6 +----- src/test/chunk.ts | 25 ++++++++++++++----------- 5 files changed, 22 insertions(+), 17 deletions(-) diff --git a/src/gateway/handlers/guildCreate.ts b/src/gateway/handlers/guildCreate.ts index b2251c5..4549834 100644 --- a/src/gateway/handlers/guildCreate.ts +++ b/src/gateway/handlers/guildCreate.ts @@ -30,5 +30,5 @@ export const guildCreate: GatewayEventHandler = async ( if (hasGuild === undefined) { // It wasn't lazy load, so emit event gateway.client.emit('guildCreate', guild) - } + } else gateway.client.emit('guildLoaded', guild) } diff --git a/src/gateway/handlers/index.ts b/src/gateway/handlers/index.ts index 6dacb68..e305d9c 100644 --- a/src/gateway/handlers/index.ts +++ b/src/gateway/handlers/index.ts @@ -154,6 +154,11 @@ export interface ClientEvents { * @param guild The new Guild object */ guildCreate: [guild: Guild] + /** + * A Guild was successfully loaded. + * @param guild The Guild object + */ + guildLoaded: [guild: Guild] /** * A Guild in which Client was either deleted, or bot was kicked * @param guild The Guild object diff --git a/src/managers/channels.ts b/src/managers/channels.ts index a729983..f7bdae4 100644 --- a/src/managers/channels.ts +++ b/src/managers/channels.ts @@ -29,6 +29,7 @@ export class ChannelsManager extends BaseManager { const arr = await (this.client.cache.array( this.cacheName ) as ChannelPayload[]) + if (arr === undefined) return [] const result: any[] = [] for (const elem of arr) { let guild diff --git a/src/models/cacheAdapter.ts b/src/models/cacheAdapter.ts index 6f3ff82..b9f5193 100644 --- a/src/models/cacheAdapter.ts +++ b/src/models/cacheAdapter.ts @@ -1,9 +1,5 @@ import { Collection } from '../utils/collection.ts' -import { - connect, - Redis, - RedisConnectOptions -} from '../../deps.ts' +import { connect, Redis, RedisConnectOptions } from '../../deps.ts' /** * ICacheAdapter is the interface to be implemented by Cache Adapters for them to be usable with Harmony. diff --git a/src/test/chunk.ts b/src/test/chunk.ts index 7e4aab8..d1fdbad 100644 --- a/src/test/chunk.ts +++ b/src/test/chunk.ts @@ -7,17 +7,20 @@ client.on('debug', console.log) client.on('ready', () => { console.log(`Logged in as ${client.user?.tag}!`) - client.guilds.get('783319033205751809').then((guild) => { - if (guild === undefined) return console.log('Guild not found') - guild - .chunk({ presences: true }, true) - .then((guild) => { - console.log(`Chunked guild:`, guild.id) - }) - .catch((e) => { - console.log(`Failed to Chunk: ${guild.id} - ${e}`) - }) - }) +}) + +client.on('guildLoaded', async (guild) => { + if (guild.id !== '783319033205751809') return + const arr = await guild.channels.array() + console.log(arr.length) + guild + .chunk({ presences: true }, true) + .then((guild) => { + console.log(`Chunked guild:`, guild.id) + }) + .catch((e) => { + console.log(`Failed to Chunk: ${guild.id} - ${e}`) + }) }) console.log('Connecting...')