namespace App\DiscordAppCommands;
+use App\Models\AosSeed;
use Discord\Builders\MessageBuilder;
use Discord\Discord;
use Discord\Parts\Embed\Embed;
$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' => [[
'type' => 3,
'required' => true,
'choices' => $choices,
+ ], [
+ 'name' => 'race',
+ 'description' => 'Generate race ROM, seed will be hidden',
+ 'description_localizations' => [
+ 'de' => 'Race ROM generieren, Seed wird versteckt.',
+ ],
+ 'type' => 5,
+ 'required' => false,
]],
]],
]);
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;
+ $race = isset($interaction->data->options['preset']->options['race'])
+ ? $interaction->data->options['preset']->options['race']->value : false;
+ $message = MessageBuilder::new();
+ if (isset(static::$presets[$presetName])) {
+ $preset = static::$presets[$presetName];
+ $seed = AosSeed::generateSurge($presetName, $preset['settings'], $race);
+
+ $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;
});
}