Немного переделал giveaway, должно быть удобнее в пользовании

This commit is contained in:
JonnyBro 2022-09-27 12:48:23 +05:00
parent 38c4ac94c9
commit 26205d1416
2 changed files with 26 additions and 12 deletions

View file

@ -17,7 +17,7 @@ class Giveaway extends BaseCommand {
.setDescription(client.translate("moderation/giveaway:GIVEAWAY_ID"))) .setDescription(client.translate("moderation/giveaway:GIVEAWAY_ID")))
.addStringOption(option => option.setName("duration") .addStringOption(option => option.setName("duration")
.setDescription(client.translate("common:DURATION"))) .setDescription(client.translate("common:DURATION")))
.addStringOption(option => option.setName("winners_count") .addIntegerOption(option => option.setName("winners_count")
.setDescription(client.translate("moderation/giveaway:WINNERS_COUNT"))) .setDescription(client.translate("moderation/giveaway:WINNERS_COUNT")))
.addStringOption(option => option.setName("prize") .addStringOption(option => option.setName("prize")
.setDescription(client.translate("moderation/giveaway:PRIZE"))) .setDescription(client.translate("moderation/giveaway:PRIZE")))
@ -42,19 +42,29 @@ class Giveaway extends BaseCommand {
* @param {Object} data * @param {Object} data
*/ */
async execute(client, interaction) { async execute(client, interaction) {
const options = ["create", "reroll", "delete", "end"].map(tag =>
JSON.parse(JSON.stringify({
label: tag,
value: tag
}))
);
const row = new ActionRowBuilder() const row = new ActionRowBuilder()
.addComponents( .addComponents(
new SelectMenuBuilder() new SelectMenuBuilder()
.setCustomId("giveaway_select") .setCustomId("giveaway_select")
.setPlaceholder(client.translate("common:NOTHING_SELECTED")) .setPlaceholder(client.translate("common:NOTHING_SELECTED"))
.addOptions(options) .addOptions([
{
label: interaction.translate("moderation/giveaway:CREATE"),
value: "create"
},
{
label: interaction.translate("moderation/giveaway:REROLL"),
value: "reroll"
},
{
label: interaction.translate("moderation/giveaway:DELETE"),
value: "delete"
},
{
label: interaction.translate("moderation/giveaway:END"),
value: "end"
}
])
); );
const msg = await interaction.reply({ const msg = await interaction.reply({
@ -83,13 +93,13 @@ class Giveaway extends BaseCommand {
if (!duration) return i.update({ content: interaction.translate("moderation/giveaway:INVALID_CREATE") }); if (!duration) return i.update({ content: interaction.translate("moderation/giveaway:INVALID_CREATE") });
if (ms(duration) > ms("10d")) return i.update({ content: interaction.translate("moderation/giveaway:MAX_DURATION") }); if (ms(duration) > ms("10d")) return i.update({ content: interaction.translate("moderation/giveaway:MAX_DURATION") });
const winnersCount = interaction.options.getString("winners_count"); const winnersCount = interaction.options.getInteger("winners_count");
if (!winnersCount) return i.update({ content: interaction.translate("moderation/giveaway:INVALID_CREATE") }); if (!winnersCount) return i.update({ content: interaction.translate("moderation/giveaway:INVALID_CREATE") });
if (isNaN(winnersCount) || winnersCount > 10 || winnersCount < 1) return i.update({ content: interaction.translate("misc:INVALID_NUMBER_RANGE", { min: 1, max: 10 }) }); if (winnersCount > 10 || winnersCount < 1) return i.update({ content: interaction.translate("misc:INVALID_NUMBER_RANGE", { min: 1, max: 10 }) });
const prize = interaction.options.getString("prize"); const prize = interaction.options.getString("prize");
if (!prize) return i.update({ content: interaction.translate("moderation/giveaway:INVALID_CREATE") }); if (!prize) return i.update({ content: interaction.translate("moderation/giveaway:INVALID_CREATE") });
const isdrop = interaction.options.getString("isdrop"); const isdrop = interaction.options.getBoolean("isdrop");
client.giveawaysManager.start(interaction.channel, { client.giveawaysManager.start(interaction.channel, {
duration: ms(duration), duration: ms(duration),

View file

@ -2,6 +2,10 @@
"DESCRIPTION": "Управление раздачами", "DESCRIPTION": "Управление раздачами",
"USAGE": "[create/reroll/delete/end] [время] [кол-во победителей] [приз] (Дроп?)", "USAGE": "[create/reroll/delete/end] [время] [кол-во победителей] [приз] (Дроп?)",
"EXAMPLES": "giveaway create 1d 2 Discord Нитро!\ngiveaway create 1d 2 true Discord Нитро\ngiveaway reroll 597812898022031374", "EXAMPLES": "giveaway create 1d 2 Discord Нитро!\ngiveaway create 1d 2 true Discord Нитро\ngiveaway reroll 597812898022031374",
"CREATE": "Создать",
"REROLL": "Заролить снова",
"DELETE": "Удалить",
"END": "Закончить принудительно",
"INVALID_CREATE": "Какой-то из аргументов указан неверно, попробуйте снова!", "INVALID_CREATE": "Какой-то из аргументов указан неверно, попробуйте снова!",
"GIVEAWAY_ID": "ID сообщения раздачи", "GIVEAWAY_ID": "ID сообщения раздачи",
"WINNERS_COUNT": "Количество победителей", "WINNERS_COUNT": "Количество победителей",