require('dotenv').config();
const { Client, GatewayIntentBits } = require('discord.js');

async function checkServerAccess() {
    const client = new Client({
        intents: [
            GatewayIntentBits.Guilds,
            GatewayIntentBits.GuildMessages,
            GatewayIntentBits.MessageContent,
        ],
    });

    try {
        await client.login(process.env.BOT_TOKEN);
        console.log('\nBot Information:');
        console.log(`Bot Name: ${client.user.tag}`);
        
        // List all servers the bot is in
        console.log('\nServers the bot is in:');
        client.guilds.cache.forEach(guild => {
            console.log(`- ${guild.name} (ID: ${guild.id})`);
            
            // Check if the notification channel is in this server
            const channel = guild.channels.cache.get(process.env.NOTIFICATION_CHANNEL_ID);
            if (channel) {
                console.log(`  ✅ Found notification channel: #${channel.name}`);
                
                // Check bot's permissions in this channel
                const botMember = guild.members.cache.get(client.user.id);
                const permissions = channel.permissionsFor(botMember);
                
                console.log('\nPermissions in notification channel:');
                console.log(`  View Channel: ${permissions.has('ViewChannel') ? '✅' : '❌'}`);
                console.log(`  Send Messages: ${permissions.has('SendMessages') ? '✅' : '❌'}`);
                console.log(`  Embed Links: ${permissions.has('EmbedLinks') ? '✅' : '❌'}`);
            }
        });

        // If notification channel wasn't found
        if (!client.guilds.cache.some(guild => 
            guild.channels.cache.has(process.env.NOTIFICATION_CHANNEL_ID))) {
            console.log('\n❌ Notification channel not found in any server!');
            console.log('Channel ID:', process.env.NOTIFICATION_CHANNEL_ID);
        }

    } catch (error) {
        console.error('Error:', error);
    } finally {
        client.destroy();
    }
}

checkServerAccess().catch(console.error);