Use the built-in defer reply method #15

Merged
Quaternions merged 1 commits from use-defer-reply into master 2024-04-24 22:55:48 +00:00
3 changed files with 15 additions and 11 deletions

View File

@ -85,13 +85,13 @@ async function execute(interaction) {
}
}
const mapValidatePromise = validateMapAsset(id, game);
// Show "Bot is thinking..."
await interaction.deferReply();
const message = await interaction.reply("⌛ Validating map...");
const validation = await mapValidatePromise;
// Validate and send the validation result
const validation = await validateMapAsset(id, game);
const msg = getValidationMessage(validation, game, true);
await message.edit(msg);
await interaction.editReply(msg);
if (!validation.valid) {
await interaction.followUp("Due to having problems, your map was **NOT submitted**.");

View File

@ -51,16 +51,20 @@ async function execute(interaction) {
}
};
// Show "Bot is thinking..."
await interaction.deferReply();
// Kick off the buy request
const buyPromise = noblox.buy({product: productInfo, price: 0});
const mapValidatePromise = validateMapAsset(id, game);
const message = await interaction.reply("⌛ Validating map...");
const validation = await mapValidatePromise;
// Validate and send the validation result
const validation = await validateMapAsset(id, game);
const msg = getValidationMessage(validation, game, false);
await message.edit(msg);
await interaction.editReply(msg);
// Make sure the buy request is done
await buyPromise;
await interaction.followUp(
`
Now that your [map (id: ${id})](<https://create.roblox.com/store/asset/${id}/>) has been taken by the bot you can load it into the [${game} maptest place](<${gamePlaces[game]}>).

View File

@ -177,7 +177,7 @@ async function validateMapAsset(assetId, game) {
const values = getMapStringValues(model);
if (!values) {
errors.push("Your map is missing a `StringValue` named `Creator` and/or a `StringValue` named `DisplayName`. You must add both to your map and they must be parented directly to the root model. These are used to set the map name and creator in-game.");
errors.push("Your map is missing a `StringValue` named `Creator` and/or a `StringValue` named `DisplayName`. You must add both to your map and they must be parented directly to the root model. These are used to set the map's creator and name in-game.");
}
else {
if (!values.creator) {