From 223a1fff364f09b730939620de2b1c9dfed06c61 Mon Sep 17 00:00:00 2001 From: *x1 Date: Mon, 8 Jul 2024 22:55:50 +0200 Subject: [PATCH] Add bingo --- commands/bot control/bingo.js | 44 ++++++++++++++++++++++++++++ events/messageCreateBingo.js | 55 +++++++++++++++++++++++++++++++++++ fonctions/database.js | 5 ++++ 3 files changed, 104 insertions(+) create mode 100644 commands/bot control/bingo.js create mode 100644 events/messageCreateBingo.js diff --git a/commands/bot control/bingo.js b/commands/bot control/bingo.js new file mode 100644 index 0000000..891dec7 --- /dev/null +++ b/commands/bot control/bingo.js @@ -0,0 +1,44 @@ +const { EmbedBuilder } = require("discord.js"); +const db = require("../../fonctions/database.js"); +const embedColor = require("../../fonctions/embedColor.js"); + +module.exports = { + aliases: [], + description: "joue au bingo", + emote: "🎱", + utilisation: " ", + permission: 5, + + async execute(message, args, client) { + const guild = await new Promise((resolve, reject) => { + db.get( + `SELECT * FROM config WHERE guildId = ?`, + [message.guild.id], + (err, row) => { + if (err) reject(err); + resolve(row); + }, + ); + }); + if (guild.bingo == ! null) return message.reply(`:x: Un bingo est deja en cours dans <#${guild.bingo}>`) + else { + message.delete() + const random = Math.floor(Math.random() * args[0]); + db.run( + `UPDATE config SET nombre = ?, bingo = ?, max = ?, recompense = ?, aide = ? WHERE guildId = ?`, + [random, message.channel.id, args[0], args[1], args[2], message.guild.id], + ); + const embed = new EmbedBuilder() + .setTitle("Bingo") + .setDescription(`Un bingo a été lancer, le nombre est compris entre 0 et ${args[0]}.\nLa recompense est de ${args[1]}coins`) + .setColor(await embedColor(message.author.id, message.guild.id)) + .setTimestamp() + .setFooter({ + text: `Demandé par ${message.author.tag}`, + iconURL: message.author.displayAvatarURL(), + }); + message.channel.send({ embeds: [embed], allowedMentions: { repliedUser: false } }); + message.channel.send('## Bonne chance !') + } + }, +}; diff --git a/events/messageCreateBingo.js b/events/messageCreateBingo.js new file mode 100644 index 0000000..fadbfaa --- /dev/null +++ b/events/messageCreateBingo.js @@ -0,0 +1,55 @@ +const { Events, EmbedBuilder } = require("discord.js"); +const db = require("../fonctions/database.js"); +const embedColor = require("../fonctions/embedColor.js"); + +module.exports = { + name: Events.MessageCreate, + + async execute(message, client) { + if (message.channel.type === "DM") return; + if (message.author.bot) return; + + const guild = await new Promise((resolve, reject) => { + db.get( + `SELECT * FROM config WHERE guildId = ?`, + [message.guild.id], + (err, row) => { + if (err) reject(err); + resolve(row); + }, + ); + }); + if (guild.bingo == null) return + if (guild.bingo == message.channel.id) { + if (guild.nombre == message.content) { + const embed = new EmbedBuilder() + .setTitle("Bingo Terminé") + .setDescription('GG le nombre a touver était **__' + guild.nombre + '__**!!\n\nTu as recu **__' + guild.recompense + '__**coins dans ta poche !') + .setColor(await embedColor(message.author.id, message.guild.id)) + .setTimestamp() + .setFooter({ + text: `Gagné par ${message.author.tag}`, + iconURL: message.author.displayAvatarURL(), + }) + + message.reply({ embeds: [embed], allowedMentions: { repliedUser: false } }); + db.run(`UPDATE config SET bingo = ?, nombre = ? WHERE guildId = ?`, [ + null, null, message.guild.id, + ]); + db.run( + `UPDATE users SET pocket = pocket + ? WHERE guildId = ? AND userId = ?`, + [guild.recompense, message.guild.id, message.author.id], + ); + } else { + if (isNaN(message.content)) return + if (guild.aide == 'true') { + if (Number(message.content) < Number(guild.nombre)) { + message.react('➕') + } else { + message.react('➖') + } + } + } + } + }, +}; diff --git a/fonctions/database.js b/fonctions/database.js index 777799a..f542990 100644 --- a/fonctions/database.js +++ b/fonctions/database.js @@ -6,6 +6,11 @@ db.run(`CREATE TABLE IF NOT EXISTS config ( guildId TEXT, name TEXT, value TEXT, + bingo TEXT, + nombre TEXT, + max TEXT, + aide TEXT, + recompense TEXT, PRIMARY KEY (guildId, name) )`);