const BananenBase = require("bananenbase"); const discord = require("discord.js"); const moment = require("moment"); new BananenBase({ token: "NTQ5NTQ3MDM5NDk1NTUzMDI3.XKuBAw.CKR8Fd6NzM4sVa7X2QRw0TszIXk", keepTrackOfDatabase: true, database: { package: "keyv", type: "sqlite", code: `${process.cwd()}/database.sqlite` }, permissionLevels: [ (client, message, args) => { // Permission level 0 return true; }, (client, message, args) => { // Permission level 1 if (message.member.roles.some(r => ["Giveaway", "giveaway"].includes(r.name))) return true; return false; }, (client, message, args) => { // Permission level 2 if (client.config.botOwners.includes(message.author.id)) return true; // A bot owner else return false; // No bot owner } ], ignore: { pm: true }, botConfig: { authorSettings: {}, guildSettings: { embed: { color: "#34363c", footerText: "© ZeuvenCode || order", time: true }, prefix: "." } }, language: "NL", bot: (client) => { setInterval(async () => { let giveaways = await client.db.get("giveaways"); if (!giveaways) giveaways = []; let newGiveaways = []; let count = 0; await giveaways.forEach(async (giveaway) => { let channel = client.channels.find(c => c.id === giveaway.channel.id); if (!channel) { count++; newGiveaways.push(giveaway); return; } let msg = await channel.fetchMessage(giveaway.msg); if (!msg) { count++; newGiveaways.push(giveaway); return; } if (giveaway.endsOn < Date.now()) { if (giveaway.done) { count++; newGiveaways.push(giveaway); return; } if (giveaway.mensenDieMeedoen.length === 0) return msg.edit(new discord.RichEmbed() .setTitle(giveaway.titel) .setColor("#ff0000") .setDescription(`Niemand heeft gewonnen, want niemand deed mee!`) ); let winnaars = []; for (let i = 0; i < giveaway.winnaars; i++) { let w = giveaway.mensenDieMeedoen[Math.floor(Math.random() * giveaway.mensenDieMeedoen.length)]; if (!winnaars.includes(w)) winnaars.push(w); } channel.send(new discord.RichEmbed() .setTitle(giveaway.titel) .setColor("RANDOM") .setDescription(`De winnaars zijn: **<@${winnaars.join(">**, **<@")}>**`) ); await msg.edit(new discord.RichEmbed() .setTitle(`? ${giveaway.titel} ?`) .setColor("#ff0000") .setDescription(`${giveaway.beschrijving}\nWinnaars: **<@${winnaars.join(">**, **<@")}>**\nGiveaway is geëindigd!`) .setFooter(`Door ${giveaway.author.username}. Geëindigd op `) .setTimestamp() ); giveaway.done = true; if (giveaway.role) { let guild = client.guilds.find(g => g.id === giveaway.guild.id); let role = guild.roles.find(r => r.name === giveaway.role); winnaars.forEach(winnaar => { let member = guild.members.find(m => m.id === winnaar); try { member.addRole(role); member.user.send(new discord.RichEmbed() .setTitle("Gefeliciteerd!") .setColor("RANDOM") .setDescription(`Je hebt de giveaway **${giveaway.titel}** gewonnen op **${giveaway.guild.name}**! Daarom heb je de rol **${giveaway.role}** ontvangen! Gefeliciteerd!`) ); } catch(e) {} }); } newGiveaways.push(giveaway); count++; return; } msg.edit(new discord.RichEmbed() .setTitle(`? ${giveaway.titel} ?`) .setColor("RANDOM") .setDescription(`${giveaway.beschrijving}\nWinnaars: **${giveaway.winnaars}**\nGiveaway eindigd **${moment(giveaway.endsOn).fromNow()}**`) .setFooter(`Door ${giveaway.author.username}. Actief tot `) .setTimestamp(giveaway.endsOn) ); newGiveaways.push(giveaway); count++; }); let interval = setInterval(async () => { if (count === giveaways.length) { clearInterval(interval); await client.db.set("giveaways", newGiveaways); } }); }, 10000); } });