mirror of
https://github.com/arthur-pbty/New-discord-bot-coins.git
synced 2026-06-21 13:54:35 +02:00
add command pay
This commit is contained in:
+1
-1
@@ -74,7 +74,7 @@ module.exports = addCommand(
|
||||
const welcomeEmbed = new EmbedBuilder()
|
||||
.setTitle("📚・Accueil")
|
||||
.setDescription(
|
||||
`Voici le panel d'aide du bot. Pour plus d'informations sur une commande, utilisez \`${prefix}help <commande>\``,
|
||||
`Voici le panel d'aide du bot. Pour plus d'informations sur une commande, utilisez ${prefix}help <commande>\n\n> **🎙️ Récompenses vocales :**\n> Vous gagnez \`100\` coins toutes les \`15\`minutes lorsque vous êtes en vocal (**NON MUTE** sinon c'est \`50\`coins).\n \n> **📺 Récompenses de streaming :**\n> Activer un stream vous fera gagner \`200\`.\n \n> **📷 Récompenses de caméra :**\n> Activer votre caméra vous fera gagner \`200\`.\n\n> Le coins est une monnaie fictive.`,
|
||||
)
|
||||
.setColor("#0099FF")
|
||||
.setTimestamp()
|
||||
|
||||
@@ -0,0 +1,172 @@
|
||||
const addCommand = require("../../fonctions/addCommand");
|
||||
const { SlashCommandBuilder, EmbedBuilder } = require("discord.js");
|
||||
const db = require("../../fonctions/setDatabase");
|
||||
const createAccount = require("../../fonctions/createAccount");
|
||||
const getEmbedColor = require("../../fonctions/getEmbedColor");
|
||||
|
||||
module.exports = addCommand(
|
||||
(this.name = "deposit"),
|
||||
(this.description = "Dépose vos coins dans votre compte en banque."),
|
||||
(this.aliases = ["dep", "depot"]),
|
||||
(this.permissions = []),
|
||||
(this.botOwnerOnly = false),
|
||||
(this.dm = false),
|
||||
(this.executePrefix = async (client, message, args) => {
|
||||
let user = await new Promise((resolve, reject) => {
|
||||
db.get(
|
||||
`SELECT * FROM users WHERE guildId = ? AND userId = ?`,
|
||||
[message.guild.id, message.author.id],
|
||||
(err, row) => {
|
||||
if (err) {
|
||||
reject(err);
|
||||
}
|
||||
resolve(row);
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
if (!user) {
|
||||
user = await createAccount(message.guild.id, message.author.id);
|
||||
}
|
||||
|
||||
const embedColor = await getEmbedColor(message.guild.id, message.author.id);
|
||||
|
||||
function createErrorEmbed(message, description) {
|
||||
return new EmbedBuilder()
|
||||
.setTitle("Erreur")
|
||||
.setDescription(description)
|
||||
.setColor(embedColor)
|
||||
.setTimestamp()
|
||||
.setFooter({
|
||||
text: `Demandé par ${message.author.tag}`,
|
||||
iconURL: message.author.displayAvatarURL(),
|
||||
});
|
||||
}
|
||||
|
||||
function isValidAmount(amount, userPocket) {
|
||||
if (isNaN(amount) || amount <= 0) {
|
||||
return "Le montant doit être un nombre supérieur à 0.";
|
||||
} else if (amount > userPocket) {
|
||||
return "Vous n'avez pas assez de coins.";
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
let amount = args.join("").toLowerCase();
|
||||
const suffixMultiplier = { k: 1000, m: 1000000, b: 1000000000 };
|
||||
const suffix = amount.slice(-1);
|
||||
|
||||
if (amount === "all") {
|
||||
amount = user.pocket;
|
||||
} else {
|
||||
let multiplier = 1;
|
||||
if (suffix in suffixMultiplier) {
|
||||
multiplier = suffixMultiplier[suffix];
|
||||
amount = amount.slice(0, -1);
|
||||
}
|
||||
const errorMessage = isValidAmount(amount, user.pocket);
|
||||
amount = parseFloat(amount) * multiplier;
|
||||
if (errorMessage) {
|
||||
const embed = createErrorEmbed(message, errorMessage);
|
||||
return message.reply({ embeds: [embed] });
|
||||
}
|
||||
}
|
||||
|
||||
db.run(
|
||||
`UPDATE users SET pocket = pocket - ?, bank = bank + ? WHERE guildId = ? AND userId = ?`,
|
||||
[amount, amount, message.guild.id, message.author.id],
|
||||
(err) => {
|
||||
if (err) {
|
||||
console.error(err.message);
|
||||
return;
|
||||
}
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle("Dépôt")
|
||||
.setDescription(`Vous avez déposé ${amount} coins dans votre compte en banque.`)
|
||||
.setColor(embedColor)
|
||||
.setTimestamp()
|
||||
.setFooter({
|
||||
text: `Demandé par ${message.author.tag}`,
|
||||
iconURL: message.author.displayAvatarURL(),
|
||||
});
|
||||
message.reply({ embeds: [embed] });
|
||||
}
|
||||
);
|
||||
}),
|
||||
(this.executeSlash = async (client, interaction) => {
|
||||
const user = await new Promise((resolve, reject) => {
|
||||
db.get(
|
||||
`SELECT * FROM users WHERE guildId = ? AND userId = ?`,
|
||||
[interaction.guild.id, interaction.user.id],
|
||||
(err, row) => {
|
||||
if (err) {
|
||||
reject(err);
|
||||
}
|
||||
resolve(row);
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
if (!user) {
|
||||
user = await createAccount(interaction.guild.id, interaction.user.id);
|
||||
}
|
||||
|
||||
const embedColor = await getEmbedColor(interaction.guild.id, interaction.user.id);
|
||||
|
||||
function createErrorEmbed(description) {
|
||||
return new EmbedBuilder()
|
||||
.setTitle("Erreur")
|
||||
.setDescription(description)
|
||||
.setColor(embedColor)
|
||||
.setTimestamp()
|
||||
.setFooter({
|
||||
text: `Demandé par ${interaction.user.tag}`,
|
||||
iconURL: interaction.user.displayAvatarURL(),
|
||||
});
|
||||
}
|
||||
|
||||
function isValidAmount(amount, userPocket) {
|
||||
if (isNaN(amount) || amount <= 0) {
|
||||
return "Le montant doit être un nombre supérieur à 0.";
|
||||
} else if (amount > userPocket) {
|
||||
return "Vous n'avez pas assez de coins.";
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
const amount = interaction.options.getInteger("montant");
|
||||
const errorMessage = isValidAmount(amount, user.pocket);
|
||||
if (errorMessage) {
|
||||
const embed = createErrorEmbed(errorMessage);
|
||||
return interaction.reply({ embeds: [embed] });
|
||||
}
|
||||
|
||||
db.run(
|
||||
`UPDATE users SET pocket = pocket - ?, bank = bank + ? WHERE guildId = ? AND userId = ?`,
|
||||
[amount, amount, interaction.guild.id, interaction.user.id],
|
||||
(err) => {
|
||||
if (err) {
|
||||
console.error(err.message);
|
||||
return;
|
||||
}
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle("Dépôt")
|
||||
.setDescription(`Vous avez déposé ${amount} coins dans votre compte en banque.`)
|
||||
.setColor(embedColor)
|
||||
.setTimestamp()
|
||||
.setFooter({
|
||||
text: `Demandé par ${interaction.user.tag}`,
|
||||
iconURL: interaction.user.displayAvatarURL(),
|
||||
});
|
||||
interaction.reply({ embeds: [embed] });
|
||||
}
|
||||
);
|
||||
}),
|
||||
(this.slashOptions = new SlashCommandBuilder()
|
||||
.addIntegerOption((option) =>
|
||||
option
|
||||
.setName("montant")
|
||||
.setDescription("Le montant à déposer.")
|
||||
.setRequired(true)
|
||||
)),
|
||||
);
|
||||
+29
-1
@@ -29,6 +29,20 @@ module.exports = addCommand(
|
||||
const member = message.mentions.members.first() || message.guild.members.cache.get(args[0]) || message.member;
|
||||
const embedColor = await getEmbedColor(message.guild.id, message.author.id);
|
||||
|
||||
if (member.user.bot) {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle("Erreur")
|
||||
.setDescription("Vous ne pouvez pas afficher les informations d'un bot.")
|
||||
.setColor(embedColor)
|
||||
.setTimestamp()
|
||||
.setFooter({
|
||||
text: `Demandé par ${message.author.tag}`,
|
||||
iconURL: message.author.displayAvatarURL(),
|
||||
});
|
||||
|
||||
return message.reply({ embeds: [embed] });
|
||||
}
|
||||
|
||||
let user = await new Promise((resolve, reject) => {
|
||||
db.get(
|
||||
`SELECT * FROM users WHERE guildId = ? AND userId = ?`,
|
||||
@@ -74,6 +88,20 @@ module.exports = addCommand(
|
||||
const member = interaction.options.getMember("membre") || interaction.member;
|
||||
const embedColor = await getEmbedColor(interaction.guild.id, interaction.user.id);
|
||||
|
||||
if (member.user.bot) {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle("Erreur")
|
||||
.setDescription("Vous ne pouvez pas afficher les informations d'un bot.")
|
||||
.setColor(embedColor)
|
||||
.setTimestamp()
|
||||
.setFooter({
|
||||
text: `Demandé par ${interaction.user.tag}`,
|
||||
iconURL: interaction.user.displayAvatarURL(),
|
||||
});
|
||||
|
||||
return interaction.reply({ embeds: [embed] });
|
||||
}
|
||||
|
||||
let user = await new Promise((resolve, reject) => {
|
||||
db.get(
|
||||
`SELECT * FROM users WHERE guildId = ? AND userId = ?`,
|
||||
@@ -119,6 +147,6 @@ module.exports = addCommand(
|
||||
.addUserOption((option) => option
|
||||
.setName("membre")
|
||||
.setDescription("Membre à afficher.")
|
||||
.setRequired(false),
|
||||
.setRequired(false)
|
||||
)),
|
||||
);
|
||||
|
||||
@@ -0,0 +1,285 @@
|
||||
const addCommand = require("../../fonctions/addCommand");
|
||||
const { SlashCommandBuilder, EmbedBuilder } = require("discord.js");
|
||||
const db = require("../../fonctions/setDatabase");
|
||||
const createAccount = require("../../fonctions/createAccount");
|
||||
const getEmbedColor = require("../../fonctions/getEmbedColor");
|
||||
const getPrefix = require("../../fonctions/getPrefix");
|
||||
|
||||
module.exports = addCommand(
|
||||
(this.name = "pay"),
|
||||
(this.description = "Paye un membre de votre serveur."),
|
||||
(this.aliases = []),
|
||||
(this.permissions = []),
|
||||
(this.botOwnerOnly = false),
|
||||
(this.dm = false),
|
||||
(this.executePrefix = async (client, message, args) => {
|
||||
const prefix = await getPrefix(message.guild.id);
|
||||
const embedColor = await getEmbedColor(message.guild.id, message.author.id);
|
||||
const user = message.mentions.members.first() || message.guild.members.cache.get(args[0]) || message.member;
|
||||
|
||||
if (user.user.bot) {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle("Erreur")
|
||||
.setDescription("Vous ne pouvez pas payer un bot.")
|
||||
.setColor(embedColor)
|
||||
.setTimestamp()
|
||||
.setFooter({
|
||||
text: `Demandé par ${message.author.tag}`,
|
||||
iconURL: message.author.displayAvatarURL(),
|
||||
});
|
||||
return message.reply({ embeds: [embed] });
|
||||
}
|
||||
|
||||
if (!args[0]) {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle("Erreur")
|
||||
.setDescription(`Vous devez mentionner un membre à payer. Exemple: \`${prefix}pay @membre 100\`.`)
|
||||
.setColor(embedColor)
|
||||
.setTimestamp()
|
||||
.setFooter({
|
||||
text: `Demandé par ${message.author.tag}`,
|
||||
iconURL: message.author.displayAvatarURL(),
|
||||
});
|
||||
return message.reply({ embeds: [embed] });
|
||||
} else if (!args[1]) {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle("Erreur")
|
||||
.setDescription(`Vous devez spécifier un montant à payer. Exemple: \`${prefix}pay @membre 100\``)
|
||||
.setColor(embedColor)
|
||||
.setTimestamp()
|
||||
.setFooter({
|
||||
text: `Demandé par ${message.author.tag}`,
|
||||
iconURL: message.author.displayAvatarURL(),
|
||||
});
|
||||
return message.reply({ embeds: [embed] });
|
||||
}
|
||||
|
||||
let author = await new Promise((resolve, reject) => {
|
||||
db.get(
|
||||
`SELECT * FROM users WHERE guildId = ? AND userId = ?`,
|
||||
[message.guild.id, message.author.id],
|
||||
(err, row) => {
|
||||
if (err) {
|
||||
reject(err);
|
||||
}
|
||||
resolve(row);
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
if (!author) {
|
||||
author = await createAccount(message.guild.id, message.author.id);
|
||||
}
|
||||
|
||||
let userData = await new Promise((resolve, reject) => {
|
||||
db.get(
|
||||
`SELECT * FROM users WHERE guildId = ? AND userId = ?`,
|
||||
[message.guild.id, user.id],
|
||||
(err, row) => {
|
||||
if (err) {
|
||||
reject(err);
|
||||
}
|
||||
resolve(row);
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
if (!userData) {
|
||||
userData = await createAccount(message.guild.id, user.id);
|
||||
}
|
||||
|
||||
function createErrorEmbed(message, description) {
|
||||
return new EmbedBuilder()
|
||||
.setTitle("Erreur")
|
||||
.setDescription(description)
|
||||
.setColor(embedColor)
|
||||
.setTimestamp()
|
||||
.setFooter({
|
||||
text: `Demandé par ${message.author.tag}`,
|
||||
iconURL: message.author.displayAvatarURL(),
|
||||
});
|
||||
}
|
||||
|
||||
function isValidAmount(amount, userPocket) {
|
||||
if (isNaN(amount) || amount <= 0) {
|
||||
return `Le montant doit être un nombre supérieur à 0. Exemple: \`${prefix}pay @membre 100\``;
|
||||
} else if (amount > userPocket) {
|
||||
return "Vous n'avez pas assez de coins.";
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
let amount = args.slice(1).join("").toLowerCase();
|
||||
const suffixMultiplier = { k: 1000, m: 1000000, b: 1000000000 };
|
||||
const suffix = amount.slice(-1);
|
||||
|
||||
if (amount === "all") {
|
||||
amount = author.pocket;
|
||||
} else {
|
||||
let multiplier = 1;
|
||||
if (suffix in suffixMultiplier) {
|
||||
multiplier = suffixMultiplier[suffix];
|
||||
amount = amount.slice(0, -1);
|
||||
}
|
||||
const errorMessage = isValidAmount(amount, author.pocket);
|
||||
amount = parseFloat(amount) * multiplier;
|
||||
if (errorMessage) {
|
||||
const embed = createErrorEmbed(message, errorMessage);
|
||||
return message.reply({ embeds: [embed] });
|
||||
}
|
||||
}
|
||||
|
||||
db.run(
|
||||
`UPDATE users SET pocket = pocket - ? WHERE guildId = ? AND userId = ?`,
|
||||
[amount, message.guild.id, message.author.id],
|
||||
(err) => {
|
||||
if (err) {
|
||||
return console.error(err);
|
||||
}
|
||||
db.run(
|
||||
`UPDATE users SET pocket = pocket + ? WHERE guildId = ? AND userId = ?`,
|
||||
[amount, message.guild.id, user.id],
|
||||
(err) => {
|
||||
if (err) {
|
||||
return console.error(err);
|
||||
}
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle("Paiement effectué")
|
||||
.setDescription(`Vous avez payé ${user} ${amount} coins.`)
|
||||
.setColor(embedColor)
|
||||
.setTimestamp()
|
||||
.setFooter({
|
||||
text: `Demandé par ${message.author.tag}`,
|
||||
iconURL: message.author.displayAvatarURL(),
|
||||
});
|
||||
message.reply({ embeds: [embed] });
|
||||
}
|
||||
);
|
||||
}
|
||||
);
|
||||
}),
|
||||
(this.executeSlash = async (client, interaction) => {
|
||||
const embedColor = await getEmbedColor(interaction.guild.id, interaction.user.id);
|
||||
|
||||
const user = interaction.options.getUser("membre");
|
||||
if (user.bot) {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle("Erreur")
|
||||
.setDescription("Vous ne pouvez pas payer un bot.")
|
||||
.setColor(embedColor)
|
||||
.setTimestamp()
|
||||
.setFooter({
|
||||
text: `Demandé par ${interaction.user.tag}`,
|
||||
iconURL: interaction.user.displayAvatarURL(),
|
||||
});
|
||||
return interaction.reply({ embeds: [embed] });
|
||||
}
|
||||
|
||||
const amount = interaction.options.getInteger("montant");
|
||||
|
||||
let author = await new Promise((resolve, reject) => {
|
||||
db.get(
|
||||
`SELECT * FROM users WHERE guildId = ? AND userId = ?`,
|
||||
[interaction.guild.id, interaction.user.id],
|
||||
(err, row) => {
|
||||
if (err) {
|
||||
reject(err);
|
||||
}
|
||||
resolve(row);
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
if (!author) {
|
||||
author = await createAccount(interaction.guild.id, interaction.user.id);
|
||||
}
|
||||
|
||||
let userData = await new Promise((resolve, reject) => {
|
||||
db.get(
|
||||
`SELECT * FROM users WHERE guildId = ? AND userId = ?`,
|
||||
[interaction.guild.id, user.id],
|
||||
(err, row) => {
|
||||
if (err) {
|
||||
reject(err);
|
||||
}
|
||||
resolve(row);
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
if (!userData) {
|
||||
userData = await createAccount(interaction.guild.id, user.id);
|
||||
}
|
||||
|
||||
function createErrorEmbed(message, description) {
|
||||
return new EmbedBuilder()
|
||||
.setTitle("Erreur")
|
||||
.setDescription(description)
|
||||
.setColor(embedColor)
|
||||
.setTimestamp()
|
||||
.setFooter({
|
||||
text: `Demandé par ${interaction.user.tag}`,
|
||||
iconURL: interaction.user.displayAvatarURL(),
|
||||
});
|
||||
}
|
||||
|
||||
function isValidAmount(amount, userPocket) {
|
||||
if (isNaN(amount) || amount <= 0) {
|
||||
return "Le montant doit être un nombre supérieur à 0.";
|
||||
} else if (amount > userPocket) {
|
||||
return "Vous n'avez pas assez de coins.";
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
const errorMessage = isValidAmount(amount, author.pocket);
|
||||
if (errorMessage) {
|
||||
const embed = createErrorEmbed(interaction, errorMessage);
|
||||
return interaction.reply({ embeds: [embed] });
|
||||
}
|
||||
|
||||
db.run(
|
||||
`UPDATE users SET pocket = pocket - ? WHERE guildId = ? AND userId = ?`,
|
||||
[amount, interaction.guild.id, interaction.user.id],
|
||||
(err) => {
|
||||
if (err) {
|
||||
return console.error(err);
|
||||
}
|
||||
db.run(
|
||||
`UPDATE users SET pocket = pocket + ? WHERE guildId = ? AND userId = ?`,
|
||||
[amount, interaction.guild.id, user.id],
|
||||
(err) => {
|
||||
if (err) {
|
||||
return console.error(err);
|
||||
}
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle("Paiement effectué")
|
||||
.setDescription(`Vous avez payé ${user} ${amount} coins.`)
|
||||
.setColor(embedColor)
|
||||
.setTimestamp()
|
||||
.setFooter({
|
||||
text: `Demandé par ${interaction.user.tag}`,
|
||||
iconURL: interaction.user.displayAvatarURL(),
|
||||
});
|
||||
interaction.reply({ embeds: [embed] });
|
||||
}
|
||||
);
|
||||
}
|
||||
);
|
||||
}),
|
||||
(this.slashOptions = new SlashCommandBuilder()
|
||||
.addUserOption((option) =>
|
||||
option
|
||||
.setName("membre")
|
||||
.setDescription("Membre à payer.")
|
||||
.setRequired(true)
|
||||
)
|
||||
.addIntegerOption((option) =>
|
||||
option
|
||||
.setName("montant")
|
||||
.setDescription("Le montant à payer.")
|
||||
.setRequired(true)
|
||||
.setMinValue(0)
|
||||
)
|
||||
)
|
||||
);
|
||||
Reference in New Issue
Block a user