X-Git-Url: https://git.localhorst.tv/?a=blobdiff_plain;ds=sidebyside;f=app%2FDiscordAppCommands%2FAosrPresetCommand.php;fp=app%2FDiscordAppCommands%2FAosrPresetCommand.php;h=a023fcbd45752ff704f223cf1a789260bbb33960;hb=ca90048a9fb2d8c3c65d81096ecd36bbf7c51ff5;hp=8ec3eb4bf1d4c4bd43d9ac1dd2e0de5f38e150e4;hpb=75b3b5826c781e47b3db693fa6d3d17f67c79e56;p=alttp.git diff --git a/app/DiscordAppCommands/AosrPresetCommand.php b/app/DiscordAppCommands/AosrPresetCommand.php index 8ec3eb4..a023fcb 100644 --- a/app/DiscordAppCommands/AosrPresetCommand.php +++ b/app/DiscordAppCommands/AosrPresetCommand.php @@ -2,6 +2,7 @@ namespace App\DiscordAppCommands; +use App\Models\AosSeed; use Discord\Builders\MessageBuilder; use Discord\Discord; use Discord\Parts\Embed\Embed; @@ -22,15 +23,15 @@ class AosrPresetCommand { $cmd = $discord->application->commands->create([ 'name' => 'aosr', 'type' => 1, - 'description' => '(testing) Generate an AoSRando seed.', + 'description' => 'Generate an AoSRando seed.', 'description_localizations' => [ - 'de' => '(test) Generiert einen AoSRando Seed.', + 'de' => 'Generiert einen AoSRando Seed.', ], 'options' => [[ 'name' => 'preset', - 'description' => '(testing) Generate an AoSRando seed from preset.', + 'description' => 'Generate an AoSRando seed from preset.', 'description_localizations' => [ - 'de' => '(test) Generiert einen AoSRando Seed anhand eines Presets.', + 'de' => 'Generiert einen AoSRando Seed anhand eines Presets.', ], 'type' => 1, 'options' => [[ @@ -50,36 +51,40 @@ class AosrPresetCommand { public static function listen(Discord $discord) { $discord->listenCommand(['aosr', 'preset'], function(Interaction $interaction) use ($discord) { - $presetName = $interaction->data->options['preset']->options['preset']->value; - $message = MessageBuilder::new(); - if (isset(static::$presets[$presetName])) { - $preset = static::$presets[$presetName]; - $seed = strval(random_int(-2147483648, 2147483647)); - $params = array_merge(['seed' => $seed], $preset['settings']); - $url = 'https://aosrando.surge.sh/?'.http_build_query($params, '', '&'); - $embed = new Embed($discord, [ - 'fields' => [ - new Field($discord, [ 'name' => 'Preset', 'value' => $preset['name'], 'inline' => true ]), - new Field($discord, [ 'name' => 'Seed', 'value' => $seed, 'inline' => true ]), - new Field($discord, [ 'name' => 'Logic', 'value' => $preset['settings']['logic'], 'inline' => true ]), - new Field($discord, [ 'name' => 'Area', 'value' => $preset['settings']['area'], 'inline' => true ]), - new Field($discord, [ 'name' => 'Boss', 'value' => $preset['settings']['boss'], 'inline' => true ]), - new Field($discord, [ 'name' => 'Enemy', 'value' => $preset['settings']['enemy'], 'inline' => true ]), - new Field($discord, [ 'name' => 'Link', 'value' => $url ]), - ], - 'footer' => new Footer($discord, [ - 'text' => 'Grün', - ]), - 'timestamp' => now(), - 'title' => 'AoSRando Seed', - 'type' => 'rich', - 'url' => $url, - ]); - $message->addEmbed($embed); - } else { - $message->setContent('unknown preset '.$presetName); - } - $interaction->respondWithMessage($message); + $interaction + ->acknowledgeWithResponse() + ->done(function() use($discord, $interaction) { + $presetName = $interaction->data->options['preset']->options['preset']->value; + $message = MessageBuilder::new(); + if (isset(static::$presets[$presetName])) { + $preset = static::$presets[$presetName]; + $seed = AosSeed::generateSurge($presetName, $preset['settings']); + + $embed = new Embed($discord, [ + 'fields' => [ + new Field($discord, [ 'name' => 'Generator', 'value' => 'This seed has been generated with fusecv\'s randomizer on aosrando.surge.sh.' ]), + new Field($discord, [ 'name' => 'Preset', 'value' => $preset['name'], 'inline' => true ]), + new Field($discord, [ 'name' => 'Seed', 'value' => $seed->seed, 'inline' => true ]), + new Field($discord, [ 'name' => 'Logic', 'value' => $preset['settings']['logic'], 'inline' => true ]), + new Field($discord, [ 'name' => 'Area', 'value' => $preset['settings']['area'], 'inline' => true ]), + new Field($discord, [ 'name' => 'Boss', 'value' => $preset['settings']['boss'], 'inline' => true ]), + new Field($discord, [ 'name' => 'Enemy', 'value' => $preset['settings']['enemy'], 'inline' => true ]), + new Field($discord, [ 'name' => 'Permalink', 'value' => $seed->permalink ]), + ], + 'footer' => new Footer($discord, [ + 'text' => 'Grün', + ]), + 'timestamp' => now(), + 'title' => 'AoSRando Seed', + 'type' => 'rich', + 'url' => $seed->permalink, + ]); + $message->addEmbed($embed); + } else { + $message->setContent('unknown preset '.$presetName); + } + $interaction->updateOriginalResponse($message); + }); return true; }); }