muse/src/index.ts

34 lines
990 B
TypeScript
Raw Normal View History

2020-03-13 04:41:26 +01:00
import Spotify from 'spotify-web-api-node';
2020-03-17 01:37:54 +01:00
import makeDir from 'make-dir';
2020-03-17 18:30:27 +01:00
import path from 'path';
2020-03-17 01:37:54 +01:00
import container from './inversify.config';
2020-03-13 04:41:26 +01:00
import {TYPES} from './types';
import Bot from './bot';
2020-03-17 01:37:54 +01:00
import {sequelize} from './utils/db';
2020-03-09 17:57:39 +01:00
2020-03-13 04:41:26 +01:00
let bot = container.get<Bot>(TYPES.Bot);
const spotify = container.get<Spotify>(TYPES.Lib.Spotify);
2020-03-09 17:57:39 +01:00
2020-10-31 15:42:06 +01:00
const refreshSpotifyToken = async () => {
2020-03-13 04:41:26 +01:00
const auth = await spotify.clientCredentialsGrant();
2020-03-09 17:57:39 +01:00
2020-03-13 04:41:26 +01:00
spotify.setAccessToken(auth.body.access_token);
2020-03-09 17:57:39 +01:00
2020-10-31 15:42:06 +01:00
return auth.body.expires_in;
};
(async () => {
const spotifyRefreshIntervalSeconds = await refreshSpotifyToken();
setInterval(async () => refreshSpotifyToken(), (spotifyRefreshIntervalSeconds / 2) * 1000);
2020-03-17 01:37:54 +01:00
// Create data directories if necessary
await makeDir(container.get(TYPES.Config.DATA_DIR));
await makeDir(container.get(TYPES.Config.CACHE_DIR));
2020-03-17 18:30:27 +01:00
await makeDir(path.join(container.get(TYPES.Config.CACHE_DIR), 'tmp'));
2020-03-17 01:37:54 +01:00
await sequelize.sync({});
2020-05-31 04:37:40 +02:00
await bot.listen();
2020-03-13 04:41:26 +01:00
})();