const Discord = require('discord.js'); const client = new Discord.Client({ intents: [Discord.IntentsBitField.Flags.Guilds, Discord.IntentsBitField.Flags.GuildMembers] }); // Load quick.replit const { Database } = require('quick.replit'); const db = new Database(); // Check the DB when it is ready db.once('ready', async () => { if (!Array.isArray(await db.get('giveaways'))) await db.set('giveaways', []); // Start the manager only after the DB got checked to prevent an error client.giveawaysManager._init(); }); const { GiveawaysManager } = require('discord-giveaways'); const GiveawayManagerWithOwnDatabase = class extends GiveawaysManager { // This function is called when the manager needs to get all giveaways which are stored in the database. async getAllGiveaways() { // Get all giveaways from the database return await db.get('giveaways'); } // This function is called when a giveaway needs to be saved in the database. async saveGiveaway(messageId, giveawayData) { // Add the new giveaway to the database await db.push('giveaways', giveawayData); // Don't forget to return something! return true; } // This function is called when a giveaway needs to be edited in the database. async editGiveaway(messageId, giveawayData) { // Get all giveaways from the database const giveaways = await db.get('giveaways'); // Remove the unedited giveaway from the array const newGiveawaysArray = giveaways.filter((giveaway) => giveaway.messageId !== messageId); // Push the edited giveaway into the array newGiveawaysArray.push(giveawayData); // Save the updated array await db.set('giveaways', newGiveawaysArray); // Don't forget to return something! return true; } // This function is called when a giveaway needs to be deleted from the database. async deleteGiveaway(messageId) { // Get all giveaways from the database const giveaways = await db.get('giveaways'); // Remove the giveaway from the array const newGiveawaysArray = giveaways.filter((giveaway) => giveaway.messageId !== messageId); // Save the updated array await db.set('giveaways', newGiveawaysArray); // Don't forget to return something! return true; } }; // Create a new instance of your new class const manager = new GiveawayManagerWithOwnDatabase(client, { default: { buttonEmoji: '🎉', buttonStyle: Discord.ButtonStyle.Secondary, embedColor: '#FF0000', embedColorEnd: '#000000', } }); // We now have a giveawaysManager property to access the manager everywhere! client.giveawaysManager = manager; client.giveawaysManager.on('giveawayJoined', (giveaway, member, interaction) => { if (!giveaway.isDrop) return interaction.reply({ content: `:tada: Congratulations **${member.user.username}**, you have joined the giveaway`, ephemeral: true }) interaction.reply({ content: `:tada: Congratulations **${member.user.username}**, you have joined the drop giveaway`, ephemeral: true }) }); client.giveawaysManager.on('giveawayLeaved', (giveaway, member, interaction) => { if (!giveaway.isDrop) return interaction.reply({ content: `**${member.user.username}**, you have left the giveaway`, ephemeral: true }) interaction.reply({ content: `**${member.user.username}**, you have left the drop giveaway`, ephemeral: true }) }); client.on('ready', () => { console.log('Bot is ready!'); }); client.login(process.env.DISCORD_BOT_TOKEN);