const { SlashCommandBuilder, EmbedBuilder, PermissionFlagsBits, Colors } = require('discord.js');
const sqlite3 = require('sqlite3').verbose();

const db = new sqlite3.Database('./database.sqlite');

module.exports = {
  data: new SlashCommandBuilder()
    .setName('warn')
    .setDescription('Warn a user')
    .addUserOption(option => option.setName('target').setDescription('User to warn').setRequired(true))
    .addStringOption(option => option.setName('reason').setDescription('Reason for the warning').setRequired(false)),
  
  async execute(interaction) {
    // Ellenőrizzük, hogy a felhasználónak van-e megfelelő joga
    if (!interaction.member.permissions.has(PermissionFlagsBits.ModerateMembers)) {
      return interaction.reply({ content: 'You do not have permission to warn members.', ephemeral: true });
    }

    // Ellenőrizzük, hogy a felhasználó említve lett-e
    const member = interaction.options.getMember('target');

    // Ok megadása
    const reason = interaction.options.getString('reason') || 'No reason provided';

    // Figyelmeztetés hozzáadása az adatbázishoz
    db.run(`INSERT INTO warnings (user_id, guild_id, reason) VALUES (?, ?, ?)`, [member.id, interaction.guild.id, reason], function(err) {
      if (err) {
        console.error(err.message);
        return interaction.reply({ content: 'An error occurred while logging the warning.', ephemeral: true });
      }

      // Embed létrehozása
      const warnEmbed = new EmbedBuilder()
        .setTitle('User Warned')
        .setColor(Colors.Yellow)
        .setDescription(`🔸 **User:** ${member.user.tag}\n🔸 **Reason:** ${reason}`)
        .setFooter({ text: `Moderator: ${interaction.user.tag}` })
        .setTimestamp();

      // Üzenet a csatornán
      interaction.reply({ embeds: [warnEmbed] });

      // Üzenet küldése a figyelmeztetett felhasználónak
      member.user.send({
        embeds: [new EmbedBuilder()
          .setTitle('You Have Been Warned')
          .setColor(Colors.Red)
          .setDescription(`⚠️ You have been warned in **${interaction.guild.name}**\n🔸 **Reason:** ${reason}`)
          .setTimestamp()
        ]
      }).catch(err => {
        console.log('Failed to send DM to the user.', err);
      });
    });
  }
};