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);
}
});