import { SlashCommandBuilder, EmbedBuilder, PermissionFlagsBits, ChannelType } from "discord.js"
import type { ChatInputCommandInteraction } from "discord.js"
import { t } from "@/utils/i18n"
import { logConsole } from "@/utils/console"

export const data = new SlashCommandBuilder()
	.setName("boost")
	.setDescription("Test the server boost")
	.setDescriptionLocalizations({ fr: "Tester le boost du serveur" })
	.setDefaultMemberPermissions(PermissionFlagsBits.Administrator)

export async function execute(interaction: ChatInputCommandInteraction) {
	if (interaction.guild?.id !== "796327643783626782") return interaction.reply({ content: t(interaction.locale, "boost.not_authorized") }) // Jujul Community

	const member = interaction.member
	if (!member) { logConsole('discordjs', 'boost.no_member'); return }

	const guild = interaction.guild
	if (!guild.members.me) { logConsole('discordjs', 'boost.not_in_guild'); return }

	const channel = await guild.channels.fetch("924353449930412153")
	if (!channel || (channel.type !== ChannelType.GuildText && channel.type !== ChannelType.GuildAnnouncement)) {
		logConsole('discordjs', 'boost.no_channel', { channelId: "924353449930412153" })
		return
	}

	const boostRole = guild.roles.premiumSubscriberRole
	if (!boostRole) { logConsole('discordjs', 'boost.no_boost_role'); return }

	const embed = new EmbedBuilder()
		.setColor(guild.members.me.displayHexColor)
		.setTitle(t(interaction.locale, "boost.new_boost_title", { username: member.user.username }))
		.setDescription(t(interaction.locale, "boost.new_boost_description", { count: (guild.premiumSubscriptionCount ?? 0).toString() }))
		.setThumbnail(member.user.avatar)
		.setTimestamp(new Date())

	await channel.send({ embeds: [embed] })
	return interaction.reply({ content: t(interaction.locale, "boost.check_channel", { channelId: "924353449930412153" }) })
}
