import db from '../../models/index.js';
const guildBlacklist = db.guildBlacklist;
import { EmbedBuilder } from 'discord.js';

const { statusChannel, NODE_ENV } = process.env;

export default {
	name: 'guildCreate',
	async execute(guild, client) {
		const guildOwner = await client.users.fetch(guild.ownerId);

		const isOptOut = await db.optout.findOne({ where: { userID: guildOwner.id } });

		if (isOptOut) {
			console.log(`A guild\n${guild.memberCount} users`);
			if (statusChannel && NODE_ENV !== 'development') {
				const channel = client.channels.resolve(statusChannel);

				channel.send({ content: `An anonymous guild just added me.\nI'm now in ${client.guilds.cache.size} servers!` });
			}
			return;
		}

		console.log(`${guild.name}\n${guild.memberCount} users\nOwner: ${guildOwner.username}\nOwner ID: ${guild.ownerId}`);

		const blacklist = await guildBlacklist.findOne({ where: { guildID:guild.id } });

		if (blacklist) {
			guild.leave();
		}

		// If stats channel settings exist, send bot stats to it
		if (statusChannel && NODE_ENV !== 'development') {
			const channel = client.channels.resolve(statusChannel);
			const botCount = guild.members.cache.filter(member => member.user.bot).size;
			console.log(guild.memberCount);
			const addEmbed = new EmbedBuilder()
				.setColor('#52e80d')
				.setTitle('New boiz in town')
				.setURL('https://www.youtube.com/watch?v=6n3pFFPSlW4')
				.setThumbnail(guild.iconURL())
				.addFields(
					{ name: 'Guild', value: `${guild.name} (${guild.id})` },
					{ name: 'Total number of members', value: guild.memberCount.toString(), inline: true },
					{ name: 'Number of users', value: (guild.memberCount - botCount).toString(), inline: true },
					{ name: 'Number of bots', value: botCount.toString(), inline: true },
					{ name: 'Owner', value: `${guildOwner.username} (${guild.ownerId})`, inline: true },
				)
				.setFooter({ text: `I'm now in ${client.guilds.cache.size} servers!` })
				.setTimestamp();

			if (blacklist) {
				return channel.send(`${guildOwner.username} (${guild.ownerId}) tried to add me to their guild while being blacklisted!\n${guild.name} (${guild.id})`);
			}

			channel.send({ embeds: [addEmbed] });
		}
	},
};