discord-giveaway-easy
Version:
A module allowing the simple creation of a discord giveaway with your bot supported by Discord.js^14.0.0
128 lines (108 loc) • 3.62 kB
JavaScript
const Discord = require("discord.js")
const {EmbedGeneratorOptions} = require("./Constants")
module.exports = class EmbedGeneratorBuilder {
/**
* @param {Number} time
* @param {EmbedGeneratorOptions} options
*
* @exemple
* ```
* let time = "10m"
*
* new EmbedGeneratorBuilder(time, {
* interaction: message,
* winnerNumber: options.winnerNumber,
* Title: "TitleExemple",
* Color: "#ffffff",
* })
* ```
*/
constructor(time, options) {
this.time = time;
this.emoji = options.Emoji;
this.winnerNumber = options.winnerNumber;
this.interaction = options.interaction;
this.Title = options.Title;
this.Color = options.Color;
this.winnerRandom = options.winnerRandom;
this.entries = options.entries;
}
Embed() {
let Embed = new Discord.EmbedBuilder()
.setTitle(this.Title)
.setColor(this.Color)
.setDescription(`React with ${this.emoji} to participate!\nTime remaining: <t:${this.time}:R>\nHosted by: ${this.interaction.user}`)
.setTimestamp()
.setFooter({text: `Entrie: 0 | winner(s): ${this.winnerNumber}`})
return Embed;
}
/**
*
* @param {Number} Entrie
* @param {Number} newTime
* @returns
*/
unpauseEmbed(Entrie, newTime) {
let Embed = new Discord.EmbedBuilder()
.setTitle(this.Title)
.setColor(this.Color)
.setDescription(`React with ${this.emoji} to participate!\nTime remaining: <t:${newTime}:R>\nHosted by: ${this.interaction.user}`)
.setTimestamp()
.setFooter({text: `Entrie: ${Entrie} | winner(s): ${this.winnerNumber}`})
return Embed;
}
/**
*
* @param {Number} Entrie
* @returns
*/
pauseEmbed(Entrie) {
let Embed = new Discord.EmbedBuilder()
.setTitle(this.Title)
.setColor("C89C15")
.setDescription(`\n\n⚠️ **Giveaway Paused**\n\nReact with ${this.emoji} to participate!\nTime remaining: **infinite**\nHosted by: ${this.interaction.user}`)
.setTimestamp()
.setFooter({text: `Entrie: ${Entrie} | winner(s): ${this.winnerNumber}`})
return Embed;
}
/**
*
* @param {Number} Entrie
* @returns
*/
editEmbed(Entrie) {
let Embed = new Discord.EmbedBuilder()
.setTitle(this.Title)
.setColor(this.Color)
.setDescription(`React with ${this.emoji} to participate!\nTime remaining: <t:${this.time}:R>\nHosted by: ${this.interaction.user}`)
.setFooter({text: `Entrie: ${Entrie} | winner(s): ${this.winnerNumber}`})
.setTimestamp()
return Embed;
}
/**
*
* @param {Number} Entrie
* @param {Number} FinishTime
* @returns
*/
endEmbed(Entrie, FinishTime) {
let Embed = new Discord.EmbedBuilder()
.setTitle(this.Title)
.setColor("#2f3136")
.setDescription(`Ended: <t:${FinishTime === undefined ? this.time : this.time + FinishTime}:R> (<t:${FinishTime === undefined ? this.time : this.time + FinishTime}:f>)\nWinner(s): \n${this.winnerRandom.join("\n")}\nHosted by: ${this.interaction.user}`)
.setFooter({text: `Entrie: ${Entrie} | winner(s): ${this.winnerNumber}`})
.setTimestamp()
return Embed;
}
/**
*
* @param {Discord.Message} message
* @returns
*/
entrieEmbed(message) {
let EntrieEmbed = new Discord.EmbedBuilder()
.setDescription(`**${this.entries}** entries. [↗️](${message.url})`)
.setColor("#2f3136")
return EntrieEmbed;
}
}