2021-12-10 21:39:54 +05:00
|
|
|
const Command = require("../../base/Command.js"),
|
|
|
|
ms = require("ms");
|
|
|
|
|
|
|
|
class Giveaway extends Command {
|
2021-12-26 19:29:37 +05:00
|
|
|
constructor(client) {
|
2021-12-10 21:39:54 +05:00
|
|
|
super(client, {
|
|
|
|
name: "giveaway",
|
|
|
|
dirname: __dirname,
|
|
|
|
enabled: true,
|
|
|
|
guildOnly: true,
|
2021-12-26 19:29:37 +05:00
|
|
|
aliases: ["gway"],
|
|
|
|
memberPermissions: ["MENTION_EVERYONE"],
|
|
|
|
botPermissions: ["SEND_MESSAGES", "EMBED_LINKS"],
|
2021-12-10 21:39:54 +05:00
|
|
|
nsfw: false,
|
|
|
|
ownerOnly: false,
|
2021-12-22 17:32:50 +05:00
|
|
|
cooldown: 3000
|
2021-12-10 21:39:54 +05:00
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2021-12-26 19:29:37 +05:00
|
|
|
async run(message, args, data) {
|
2021-12-10 21:39:54 +05:00
|
|
|
const status = args[0];
|
2021-12-20 19:50:52 +05:00
|
|
|
if (!status) return message.error("moderation/giveaway:MISSING_STATUS");
|
2021-12-10 21:39:54 +05:00
|
|
|
|
2021-12-11 01:11:50 +05:00
|
|
|
if (status === "create") {
|
2021-12-10 21:39:54 +05:00
|
|
|
const currentGiveaways = this.client.giveawaysManager.giveaways.filter((g) => g.guildID === message.guild.id && !g.ended).length;
|
2021-12-11 01:11:50 +05:00
|
|
|
if (currentGiveaways > 3) return message.error("moderation/giveaway:MAX_COUNT");
|
|
|
|
|
2021-12-10 21:39:54 +05:00
|
|
|
const time = args[1];
|
2021-12-11 01:11:50 +05:00
|
|
|
if (!time) return message.error("moderation/giveaway:INVALID_CREATE", { prefix: data.guild.prefix });
|
|
|
|
if (isNaN(ms(time))) return message.error("misc:INVALID_TIME");
|
|
|
|
if (ms(time) > ms("15d")) return message.error("moderation/giveaway:MAX_DURATION");
|
|
|
|
|
2021-12-10 21:39:54 +05:00
|
|
|
const winnersCount = args[2];
|
2021-12-11 01:11:50 +05:00
|
|
|
if (!winnersCount) return message.error("moderation/giveaway:INVALID_CREATE", { prefix: data.guild.prefix });
|
|
|
|
if (isNaN(winnersCount) || winnersCount > 10 || winnersCount < 1) return message.error("misc:INVALID_NUMBER_RANGE", { min: 1, max: 10 });
|
|
|
|
|
2021-12-10 21:39:54 +05:00
|
|
|
const prize = args.slice(3).join(" ");
|
2021-12-11 01:11:50 +05:00
|
|
|
if (!prize) return message.error("moderation/giveaway:INVALID_CREATE", { prefix: data.guild.prefix });
|
2021-12-26 19:29:37 +05:00
|
|
|
|
2021-12-10 21:39:54 +05:00
|
|
|
this.client.giveawaysManager.start(message.channel, {
|
|
|
|
time: ms(time),
|
|
|
|
prize: prize,
|
|
|
|
winnerCount: parseInt(winnersCount, 10),
|
|
|
|
messages: {
|
|
|
|
giveaway: message.translate("moderation/giveaway:TITLE"),
|
|
|
|
giveawayEnded: message.translate("moderation/giveaway:ENDED"),
|
|
|
|
timeRemaining: message.translate("moderation/giveaway:TIME_REMAINING"),
|
|
|
|
inviteToParticipate: message.translate("moderation/giveaway:INVITE_PARTICIPATE"),
|
|
|
|
winMessage: message.translate("moderation/giveaway:WIN_MESSAGE"),
|
|
|
|
embedFooter: message.translate("moderation/giveaway:FOOTER"),
|
|
|
|
noWinner: message.translate("moderation/giveaway:NO_WINNER"),
|
|
|
|
winners: message.translate("moderation/giveaway:WINNERS"),
|
|
|
|
endedAt: message.translate("moderation/giveaway:END_AT"),
|
|
|
|
units: {
|
2021-12-26 19:29:37 +05:00
|
|
|
seconds: message.translate("time:SECONDS", {
|
|
|
|
amount: ""
|
|
|
|
}).trim(),
|
|
|
|
minutes: message.translate("time:MINUTES", {
|
|
|
|
amount: ""
|
|
|
|
}).trim(),
|
|
|
|
hours: message.translate("time:HOURS", {
|
|
|
|
amount: ""
|
|
|
|
}).trim(),
|
|
|
|
days: message.translate("time:DAYS", {
|
|
|
|
amount: ""
|
|
|
|
}).trim()
|
2021-12-11 01:11:50 +05:00
|
|
|
}
|
2021-12-10 21:39:54 +05:00
|
|
|
}
|
|
|
|
}).then(() => {
|
|
|
|
message.success("moderation/giveaway:GIVEAWAY_CREATED");
|
|
|
|
});
|
2021-12-11 21:08:37 +05:00
|
|
|
} else if (status === "reroll") {
|
2021-12-10 21:39:54 +05:00
|
|
|
const messageID = args[1];
|
2021-12-26 19:29:37 +05:00
|
|
|
if (!messageID) return message.error("moderation/giveaway:MISSING_ID");
|
2021-12-11 01:11:50 +05:00
|
|
|
|
2021-12-10 21:39:54 +05:00
|
|
|
this.client.giveawaysManager.reroll(messageID, {
|
|
|
|
congrat: message.translate("moderation/giveaway:REROLL_CONGRAT"),
|
|
|
|
error: message.translate("moderation/giveaway:REROLL_ERROR")
|
|
|
|
}).then(() => {
|
|
|
|
return message.success("moderation/giveaway:GIVEAWAY_REROLLED");
|
|
|
|
}).catch(() => {
|
2021-12-26 19:29:37 +05:00
|
|
|
return message.error("moderation/giveaway:NOT_FOUND_ENDED", {
|
|
|
|
messageID
|
|
|
|
});
|
2021-12-10 21:39:54 +05:00
|
|
|
});
|
2021-12-11 21:08:37 +05:00
|
|
|
} else if (status === "delete") {
|
2021-12-10 21:39:54 +05:00
|
|
|
const messageID = args[1];
|
2021-12-11 21:08:37 +05:00
|
|
|
if (!messageID) return message.error("moderation/giveaway:MISSING_ID");
|
2021-12-11 01:11:50 +05:00
|
|
|
|
2021-12-10 21:39:54 +05:00
|
|
|
this.client.giveawaysManager.delete(messageID).then(() => {
|
|
|
|
return message.success("moderation/giveaway:GIVEAWAY_DELETED");
|
|
|
|
}).catch(() => {
|
2021-12-26 19:29:37 +05:00
|
|
|
return message.error("moderation/giveaway:NOT_FOUND", {
|
|
|
|
messageID
|
|
|
|
});
|
2021-12-10 21:39:54 +05:00
|
|
|
});
|
2021-12-11 21:08:37 +05:00
|
|
|
} else if (status === "end") {
|
2021-12-10 21:39:54 +05:00
|
|
|
const messageID = args[1];
|
2021-12-11 01:11:50 +05:00
|
|
|
if (!messageID) return message.error("moderation/giveaway:MISSING_ID");
|
|
|
|
|
2021-12-10 21:39:54 +05:00
|
|
|
try {
|
2021-12-26 19:29:37 +05:00
|
|
|
this.client.giveawaysManager.edit(messageID, {
|
|
|
|
setEndTimestamp: Date.now()
|
|
|
|
});
|
2021-12-10 21:39:54 +05:00
|
|
|
return message.success("moderation/giveaway:GIVEAWAY_ENDED");
|
2021-12-26 19:29:37 +05:00
|
|
|
} catch (e) {
|
|
|
|
return message.error("moderation/giveaway:NOT_FOUND", {
|
|
|
|
messageID
|
|
|
|
});
|
2021-12-11 01:11:50 +05:00
|
|
|
};
|
2021-12-10 21:39:54 +05:00
|
|
|
} else {
|
|
|
|
return message.error("moderation/giveaway:MISSING_STATUS");
|
|
|
|
}
|
|
|
|
}
|
2021-12-11 01:11:50 +05:00
|
|
|
};
|
2021-12-10 21:39:54 +05:00
|
|
|
|
|
|
|
module.exports = Giveaway;
|