aboutsummaryrefslogtreecommitdiff
path: root/src/index.ts
blob: 2cdd6f196674c4bf249cf6ca664e66e0e6cc37b4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import Spotify from 'spotify-web-api-node';
import makeDir from 'make-dir';
import path from 'path';
import container from './inversify.config';
import {TYPES} from './types';
import Bot from './bot';
import {sequelize} from './utils/db';

let bot = container.get<Bot>(TYPES.Bot);
const spotify = container.get<Spotify>(TYPES.Lib.Spotify);

const refreshSpotifyToken = async () => {
  const auth = await spotify.clientCredentialsGrant();

  spotify.setAccessToken(auth.body.access_token);

  return auth.body.expires_in;
};

(async () => {
  const spotifyRefreshIntervalSeconds = await refreshSpotifyToken();

  setInterval(async () => refreshSpotifyToken(), (spotifyRefreshIntervalSeconds / 2) * 1000);

  // Create data directories if necessary
  await makeDir(container.get(TYPES.Config.DATA_DIR));
  await makeDir(container.get(TYPES.Config.CACHE_DIR));
  await makeDir(path.join(container.get(TYPES.Config.CACHE_DIR), 'tmp'));

  await sequelize.sync({});

  await bot.listen();
})();