import {App, LogLevel} from '@slack/bolt';
import config from "config";

import {SlackWorker} from "./slack-worker";

export class SlackBootstrapper {

  public slackApp: App;

  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
  // @ts-ignore
  public worker: SlackWorker | undefined;

  constructor() {
    this.slackApp = new App({
      token: process.env.SLACK_BOT_TOKEN,
      signingSecret: process.env.SLACK_SIGNING_SECRET,
      logLevel: LogLevel.DEBUG
    });

    this.start();
  }

  private async start() {
    await this.slackApp.start(config.get('slackPort'));
    console.log('Slack Bolt started');

    this.worker = new SlackWorker(this);
  }

}

export default new SlackBootstrapper();
