const { SlashCommandBuilder, EmbedBuilder, ChannelType } = require('discord.js'); module.exports = { data: new SlashCommandBuilder() .setName('serverinfo') .setDescription('View information about this server'), async execute(interaction, supabase, client) { const guild = interaction.guild; const textChannels = guild.channels.cache.filter(c => c.type === ChannelType.GuildText).size; const voiceChannels = guild.channels.cache.filter(c => c.type === ChannelType.GuildVoice).size; const categories = guild.channels.cache.filter(c => c.type === ChannelType.GuildCategory).size; const roles = guild.roles.cache.size - 1; const emojis = guild.emojis.cache.size; const boostLevel = guild.premiumTier; const boostCount = guild.premiumSubscriptionCount || 0; const owner = await guild.fetchOwner().catch(() => null); const embed = new EmbedBuilder() .setColor(0x7c3aed) .setTitle(guild.name) .setThumbnail(guild.iconURL({ size: 256 })) .addFields( { name: 'ID', value: guild.id, inline: true }, { name: 'Owner', value: owner ? owner.user.tag : 'Unknown', inline: true }, { name: 'Created', value: ``, inline: true }, { name: 'Members', value: `${guild.memberCount}`, inline: true }, { name: 'Roles', value: `${roles}`, inline: true }, { name: 'Emojis', value: `${emojis}`, inline: true }, { name: 'Text Channels', value: `${textChannels}`, inline: true }, { name: 'Voice Channels', value: `${voiceChannels}`, inline: true }, { name: 'Categories', value: `${categories}`, inline: true }, { name: 'Boost Level', value: `Tier ${boostLevel}`, inline: true }, { name: 'Boosts', value: `${boostCount}`, inline: true }, { name: 'Verification', value: guild.verificationLevel.toString(), inline: true } ) .setTimestamp(); if (guild.description) { embed.setDescription(guild.description); } if (guild.bannerURL()) { embed.setImage(guild.bannerURL({ size: 512 })); } await interaction.reply({ embeds: [embed] }); }, };