]> git.localhorst.tv Git - alttp.git/blobdiff - app/DiscordAppCommands/AosrPresetCommand.php
aos seed generation
[alttp.git] / app / DiscordAppCommands / AosrPresetCommand.php
index 8ec3eb4bf1d4c4bd43d9ac1dd2e0de5f38e150e4..a023fcbd45752ff704f223cf1a789260bbb33960 100644 (file)
@@ -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;
                });
        }