const { SlashCommandBuilder, EmbedBuilder } = require('discord.js');
const fs = require('fs');
const path = require('path');
const config = require('../config.js');

const BLACKLIST_FILE = path.join(__dirname, '../blacklist.json');

// دوال مساعدة للقراءة والحفظ من ملف JSON
function safeLoadJSON(file) {
  try {
    if (!fs.existsSync(file)) return {};
    const raw = fs.readFileSync(file, 'utf8');
    return JSON.parse(raw || '{}');
  } catch (err) {
    console.error(`❌ خطأ أثناء تحميل JSON من ${file}:`, err);
    return {};
  }
}

function safeSaveJSON(file, data) {
  try {
    fs.writeFileSync(file, JSON.stringify(data, null, 2), 'utf8');
  } catch (err) {
    console.error(`❌ خطأ أثناء حفظ JSON إلى ${file}:`, err);
  }
}

module.exports = {
  data: new SlashCommandBuilder()
    .setName('removeblacklist')
    .setDescription('🗑 إزالة عضو أو سيرفر من البلاك ليست')
    .addStringOption(opt =>
      opt.setName('type')
        .setDescription('اختر النوع')
        .setRequired(true)
        .addChoices({ name: 'Server', value: 'servers' }, { name: 'User', value: 'users' })
    )
    .addStringOption(opt =>
      opt.setName('id')
        .setDescription('ID العضو أو السيرفر')
        .setRequired(true)
    ),

  async execute(interaction) {
    try {
      const guildId = interaction.guild.id;
      const guildConfig = config[guildId];
      if (!guildConfig)
        return interaction.reply({ content: '⚠ إعدادات السيرفر غير موجودة', ephemeral: true });

      // ✅ فحص Owner متعدد
      const ownerList = guildConfig.ownerPartnerIDs || [];
      if (!ownerList.includes(interaction.user.id)) {
        return interaction.reply({ content: '🚫 هذا الأمر مخصص فقط للأونرز المعتمدين.', ephemeral: true });
      }

      const type = interaction.options.getString('type');
      const id = interaction.options.getString('id').trim();
      if (!/^\d{6,30}$/.test(id))
        return interaction.reply({ content: '⚠ ID غير صالح', ephemeral: true });

const data = safeLoadJSON(BLACKLIST_FILE);
const blacklistData = data.blacklist || { servers: [], users: [] };

if (!blacklistData[type]?.includes(id))
  return interaction.reply({ content: '⚠ هذا الإدخال غير موجود في البلاك ليست', ephemeral: true });

// إزالة من القائمة
blacklistData[type] = blacklistData[type].filter(x => x !== id);
data.blacklist = blacklistData;
safeSaveJSON(BLACKLIST_FILE, data);

      // جلب الاسم إذا كان مستخدم أو سيرفر
      let name = id;
      if (type === 'users') {
        try {
          const user = await interaction.client.users.fetch(id);
          if (user) name = `${user.tag} (${id})`;
        } catch { name = `Unknown User (${id})`; }
      } else if (type === 'servers') {
        const server = interaction.client.guilds.cache.get(id);
        if (server) name = `${server.name} (${id})`;
        else name = `Unknown Server (${id})`;
      }

      const embed = new EmbedBuilder()
        .setTitle('♻ إزالة من البلاك ليست')
        .setDescription(`✅ تم إزالة **${name}** من قائمة ${type}`)
        .setColor('Orange')
        .setTimestamp();

      await interaction.reply({ embeds: [embed], ephemeral: true });

    } catch (err) {
      console.error('RemoveBlacklist error:', err);
      if (!interaction.replied)
        await interaction.reply({ content: '❌ حدث خطأ أثناء تنفيذ الأمر', ephemeral: true });
    }
  }
};
