message: Return early if client has no channels
diff: @@ -567,6 +567,15 @@ export class ClientPool {
  );
  }
  + const isBot = bridgedClient.isBot;
  + const chanList = bridgedClient.chanList;
  +
  + if (chanList.length === 0 && !isBot && bridgedClient.disconnectReason !== "iwanttoreconnect") {
  + // Never drop the bot, or users that really want to reconnect.
  + log.info(`Dropping ${bridgedClient.id} (${bridgedClient.nick}) because they are not joined to any channels`);
  + return;
  + }
  +
  if (bridgedClient.explicitDisconnect) {
  log.info(`Dropping ${bridgedClient.id} (${bridgedClient.nick}) because explicitDisconnect is true`);
  // don't reconnect users which explicitly disconnected e.g. client
  @@ -587,20 +596,13 @@ export class ClientPool {
  }
  cliConfig.setDesiredNick(bridgedClient.nick);
  -
  const cli = this.createIrcClient(
  cliConfig, bridgedClient.matrixUser || null, bridgedClient.isBot
  );
  - const isBot = bridgedClient.isBot;
  - const chanList = bridgedClient.chanList;
  // remove ref to the disconnected client so it can be GC'd. If we don't do this,
  // the timeout below holds it in a closure, preventing it from being GC'd.
  (bridgedClient as unknown) = undefined;
  - if (chanList.length === 0 && !isBot) { // Never drop the bot.
  - log.info(`Dropping ${cli.id} (${cli.nick}) because they are not joined to any channels`);
  - return;
  - }
  const queue = this.getOrCreateReconnectQueue(cli.server);
  if (queue === null) {
  this.reconnectClient({
  