import chalk from 'chalk';
import Discord, { GatewayIntentBits } from 'discord.js';
import { Track } from "./track";
import { MusicSubscription } from './subscription';
import { configs } from "./configs.ts";
import { parseCommand } from "./commands.ts";
import { helpCommand } from "./commands/help.ts";
import { leaveCommand } from "./commands/leave.ts";
import { loopCommand } from "./commands/loop.ts";
import { npCommand } from "./commands/np.ts";
import { pauseCommand, stopCommand } from "./commands/pause.ts";
import { playCommand } from "./commands/play.ts";
import { skipCommand } from "./commands/skip.ts";
import { unloopCommand } from "./commands/unloop.ts";


export const client = new Discord.Client({ intents: [GatewayIntentBits.GuildVoiceStates, GatewayIntentBits.GuildMessages, GatewayIntentBits.Guilds] });
export const subscriptions = new Map();

client.on('ready', () => {
	//await registerCommands(bot);
	console.log(`${chalk.cyan("permanent waves")} is ready to go`);
});

client.on('interactionCreate', async (interaction) => {
	if (!interaction.isCommand() || !interaction.guildId) return;
	let subscription = subscriptions.get(interaction.guildId);
	parseCommand(interaction, subscription);
});

client.on('error', (e) => {
	console.warn;
	console.log(e);
});

void client.login(configs.discord_token);

async function registerCommands() {
	//console.log(await upsertGlobalApplicationCommands(bot, [helpCommand, leaveCommand, loopCommand, npCommand, pauseCommand, playCommand, skipCommand, stopCommand, unloopCommand]));
}
