<?php
/**
 * Script para registrar los Slash Commands en Discord.
 * Ejecutar manualmente una sola vez o cuando los comandos cambien.
 * php discord/register_commands.php
 */

require_once __DIR__ . '/../vendor/autoload.php';

use Discord\Discord;
use Discord\Builders\Components\ActionRow;
use Discord\Builders\Components\Button;
use Discord\Builders\MessageBuilder;
use Discord\Builders\CommandBuilder;
use Discord\Parts\Interactions\Command\Command;

// Cargar variables de entorno
if (file_exists(__DIR__ . '/../.env')) {
    $lines = file(__DIR__ . '/../.env', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
    foreach ($lines as $line) {
        if (strpos(trim($line), '#') === 0) continue;
        if (strpos($line, '=') === false) continue;
        list($key, $value) = explode('=', $line, 2);
        $_ENV[trim($key)] = trim($value);
    }
}

$discord = new Discord([
    'token' => $_ENV['DISCORD_BOT_TOKEN'],
]);

$discord->on('ready', function (Discord $discord) {
    echo "Bot de registro iniciado..." . PHP_EOL;

    // Crear el comando
    $command = new Command($discord, [
        'name' => 'start',
        'description' => 'Muestra el mensaje de bienvenida y las opciones de idioma.',
    ]);

    // Registrar el comando globalmente
    $discord->application->commands->save($command)->then(
        function (Command $command) {
            echo "Comando '/{$command->name}' registrado exitosamente!" . PHP_EOL;
        },
        function (\Exception $e) {
            echo "Error al registrar el comando: " . $e->getMessage() . PHP_EOL;
        }
    )->done(function() use ($discord) {
        echo "Registro de comandos completado. Cerrando." . PHP_EOL;
        $discord->close();
    });
});

$discord->run();
