muse/src/inversify.config.ts

92 lines
3.1 KiB
TypeScript
Raw Normal View History

2020-03-13 04:41:26 +01:00
import 'reflect-metadata';
import {Container} from 'inversify';
import {TYPES} from './types.js';
import Bot from './bot.js';
2021-11-12 20:30:18 +01:00
import {Client, Intents} from 'discord.js';
import ConfigProvider from './services/config.js';
2020-03-13 04:41:26 +01:00
// Managers
import PlayerManager from './managers/player.js';
2020-03-13 04:41:26 +01:00
// Services
import AddQueryToQueue from './services/add-query-to-queue.js';
import GetSongs from './services/get-songs.js';
import YoutubeAPI from './services/youtube-api.js';
import SpotifyAPI from './services/spotify-api.js';
2020-03-18 03:36:48 +01:00
2020-03-13 04:41:26 +01:00
// Comands
import Command from './commands';
import Clear from './commands/clear.js';
import Config from './commands/config.js';
import Disconnect from './commands/disconnect.js';
import Favorites from './commands/favorites.js';
import ForwardSeek from './commands/fseek.js';
import Pause from './commands/pause.js';
import Play from './commands/play.js';
import QueueCommand from './commands/queue.js';
import Remove from './commands/remove.js';
import Resume from './commands/resume.js';
import Seek from './commands/seek.js';
import Shuffle from './commands/shuffle.js';
import Skip from './commands/skip.js';
import Stop from './commands/stop.js';
import Unskip from './commands/unskip.js';
import ThirdParty from './services/third-party.js';
import FileCacheProvider from './services/file-cache.js';
2021-11-19 02:55:57 +01:00
import KeyValueCacheProvider from './services/key-value-cache.js';
2020-03-13 04:41:26 +01:00
2021-09-20 04:24:46 +02:00
const container = new Container();
2020-03-13 04:41:26 +01:00
2021-11-12 20:30:18 +01:00
// Intents
const intents = new Intents();
intents.add(Intents.FLAGS.GUILDS); // To listen for guildCreate event
intents.add(Intents.FLAGS.GUILD_MESSAGES); // To listen for messages (messageCreate event)
intents.add(Intents.FLAGS.DIRECT_MESSAGE_REACTIONS); // To listen for message reactions (messageReactionAdd event)
intents.add(Intents.FLAGS.DIRECT_MESSAGES); // To receive the prefix message
2021-11-12 20:30:18 +01:00
intents.add(Intents.FLAGS.GUILD_VOICE_STATES); // To listen for voice state changes (voiceStateUpdate event)
2020-03-13 04:41:26 +01:00
// Bot
container.bind<Bot>(TYPES.Bot).to(Bot).inSingletonScope();
2021-11-12 20:30:18 +01:00
container.bind<Client>(TYPES.Client).toConstantValue(new Client({intents}));
2020-03-13 04:41:26 +01:00
// Managers
container.bind<PlayerManager>(TYPES.Managers.Player).to(PlayerManager).inSingletonScope();
2020-03-13 04:41:26 +01:00
// Services
2020-03-18 03:36:48 +01:00
container.bind<GetSongs>(TYPES.Services.GetSongs).to(GetSongs).inSingletonScope();
container.bind<AddQueryToQueue>(TYPES.Services.AddQueryToQueue).to(AddQueryToQueue).inSingletonScope();
container.bind<YoutubeAPI>(TYPES.Services.YoutubeAPI).to(YoutubeAPI).inSingletonScope();
container.bind<SpotifyAPI>(TYPES.Services.SpotifyAPI).to(SpotifyAPI).inSingletonScope();
2020-03-18 03:36:48 +01:00
2020-03-13 04:41:26 +01:00
// Commands
2020-03-19 00:29:32 +01:00
[
Clear,
Config,
Disconnect,
Favorites,
2020-03-19 00:29:32 +01:00
ForwardSeek,
Pause,
Play,
QueueCommand,
Remove,
Resume,
2020-03-19 00:29:32 +01:00
Seek,
Shuffle,
Skip,
Stop,
2021-09-20 04:24:46 +02:00
Unskip,
2020-03-19 00:29:32 +01:00
].forEach(command => {
container.bind<Command>(TYPES.Command).to(command).inSingletonScope();
});
2020-03-13 04:41:26 +01:00
// Config values
2021-09-20 01:50:25 +02:00
container.bind(TYPES.Config).toConstantValue(new ConfigProvider());
2020-03-13 04:41:26 +01:00
// Static libraries
2021-09-20 01:50:25 +02:00
container.bind(TYPES.ThirdParty).to(ThirdParty);
2020-03-13 04:41:26 +01:00
container.bind(TYPES.FileCache).to(FileCacheProvider);
2021-11-19 02:55:57 +01:00
container.bind(TYPES.KeyValueCache).to(KeyValueCacheProvider);
2020-03-13 04:41:26 +01:00
export default container;