mirror of
https://github.com/arthur-pbty/bot-discord-coins.git
synced 2026-06-08 07:09:44 +02:00
158 lines
7.4 KiB
JavaScript
158 lines
7.4 KiB
JavaScript
const { EmbedBuilder } = require('discord.js');
|
|
const embedColor = require('../../fonctions/embedColor.js');
|
|
const db = require('../../fonctions/database.js');
|
|
|
|
let allianceName
|
|
let allianceDescription
|
|
|
|
module.exports = {
|
|
aliases: ['acreate', 'alliancecreate'],
|
|
description: 'Crée une alliance.',
|
|
emote: '✒️',
|
|
utilisation: '',
|
|
permission: 0,
|
|
|
|
async execute(message, args, client) {
|
|
const team = await new Promise((resolve, reject) => {
|
|
db.get(`SELECT * FROM teams WHERE guildId = ? AND id = (SELECT teamId FROM users WHERE guildId = ? AND userId = ?)`, [message.guild.id, message.guild.id, message.author.id], (err, row) => {
|
|
if (err) reject(err);
|
|
resolve(row);
|
|
});
|
|
});
|
|
await new Promise((resolve, reject) => {
|
|
db.get(`SELECT * FROM users WHERE userId = ? AND guildId = ?`, [message.author.id, message.guild.id], (err, row) => {
|
|
if (err) {
|
|
reject(err);
|
|
} else {
|
|
if (row.teamRole !== 'owner') {
|
|
embedColor(message.author.id, message.guild.id).then(color => {
|
|
const embed = new EmbedBuilder()
|
|
.setTitle('🛡️ Création de alliance')
|
|
.setDescription(`Vous n'êtes pas proprietaire d'une team.`)
|
|
.setColor(color)
|
|
.setTimestamp()
|
|
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() })
|
|
|
|
return message.reply({ embeds: [embed], allowedMentions: { repliedUser: false } })
|
|
});
|
|
} else if (row.alliancesId) {
|
|
embedColor(message.author.id, message.guild.id).then(color => {
|
|
const embed = new EmbedBuilder()
|
|
.setTitle('🛡️ Création de alliance')
|
|
.setDescription(`Votre team a deja une alliance.`)
|
|
.setColor(color)
|
|
.setTimestamp()
|
|
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() })
|
|
|
|
return message.reply({ embeds: [embed], allowedMentions: { repliedUser: false } })
|
|
});
|
|
} else if (row.pocket < 3000) {
|
|
embedColor(message.author.id, message.guild.id).then(color => {
|
|
const embed = new EmbedBuilder()
|
|
.setTitle('🛡️ Création de alliance')
|
|
.setDescription(`Vous n'avez pas assez de fonds pour créer une alliance. Vous avez besoin de 3000coins.`)
|
|
.setColor(color)
|
|
.setTimestamp()
|
|
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() })
|
|
|
|
return message.reply({ embeds: [embed], allowedMentions: { repliedUser: false } })
|
|
});
|
|
} else {
|
|
db.run(`UPDATE users SET pocket = pocket - 3000 WHERE userId = ? AND guildId = ?`, [message.author.id, message.guild.id]);
|
|
resolve();
|
|
}
|
|
}
|
|
});
|
|
});
|
|
|
|
const embed = new EmbedBuilder()
|
|
.setTitle('🛡️ Création d\'alliance')
|
|
.setDescription(`Ecrivez le nom de votre alliance dans le chat.`)
|
|
.setColor(await embedColor(message.author.id, message.guild.id))
|
|
.setTimestamp()
|
|
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() });
|
|
|
|
const messageTeam = await message.reply({ embeds: [embed], allowedMentions: { repliedUser: false } });
|
|
|
|
const filter = m => m.author.id === message.author.id;
|
|
const collector = message.channel.createMessageCollector({ filter, time: 60000, max: 1 });
|
|
collector.on('collect', async m => {
|
|
if (m.content.length > 25) {
|
|
m.reply('Le nom de l\'alliance ne doit pas dépasser 25 caractères.');
|
|
return collector.stop();
|
|
} else if (m.content.length < 3) {
|
|
m.reply('Le nom de l\'alliance doit contenir au moins 3 caractères.');
|
|
return collector.stop();
|
|
} else {
|
|
allianceName = m.content;
|
|
const embed = new EmbedBuilder()
|
|
.setTitle('🛡️ Création de l\'alliance')
|
|
.setDescription(`Ecrivez la description de votre alliance dans le chat.`)
|
|
.setColor(await embedColor(message.author.id, message.guild.id))
|
|
.setTimestamp()
|
|
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() });
|
|
|
|
messageTeam.edit({ embeds: [embed] });
|
|
m.delete();
|
|
|
|
const collectorD = message.channel.createMessageCollector({ filter, time: 60000, max: 1 });
|
|
collectorD.on('collect', async m => {
|
|
if (m.content.length > 250) {
|
|
m.reply('La description de l\'alliance ne doit pas dépasser 250 caractères.');
|
|
return collectorD.stop();
|
|
} else if (m.content.length < 5) {
|
|
m.reply('La description de l\'alliance doit contenir au moins 5 caractères.');
|
|
return collectorD.stop();
|
|
} else {
|
|
allianceDescription = m.content;
|
|
|
|
let idBase = allianceName.toLowerCase().replace(/ /g, '');
|
|
idBase = idBase.replace('0', '');
|
|
idBase = idBase.replace('1', '');
|
|
idBase = idBase.replace('2', '');
|
|
idBase = idBase.replace('3', '');
|
|
idBase = idBase.replace('4', '');
|
|
idBase = idBase.replace('5', '');
|
|
idBase = idBase.replace('6', '');
|
|
idBase = idBase.replace('7', '');
|
|
idBase = idBase.replace('8', '');
|
|
idBase = idBase.replace('9', '');
|
|
|
|
let id = idBase;
|
|
let increment = 0;
|
|
let exists = true;
|
|
do {
|
|
await new Promise((resolve, reject) => {
|
|
db.get(`SELECT * FROM alliances WHERE id = ? AND guildId = ?`, [id, message.guild.id], (err, row) => {
|
|
if (err) {
|
|
reject(err);
|
|
} else {
|
|
exists = !!row;
|
|
if (exists) {
|
|
increment = increment + 1;
|
|
id = idBase + increment;
|
|
} else {
|
|
db.run(`INSERT INTO alliances (guildId, id, name, description, creator) VALUES (?, ?, ?, ?, ?)`, [message.guild.id, id, allianceName, allianceDescription, message.author.id]);
|
|
db.run(`UPDATE teams SET alliancesId = ? WHERE guildId = ? AND id = ?`, [id, message.guild.id, team.id]);
|
|
}
|
|
resolve();
|
|
}
|
|
});
|
|
});
|
|
} while (exists);
|
|
|
|
const embed = new EmbedBuilder()
|
|
.setTitle('🛡️ Création de l\'alliance')
|
|
.setDescription(`Votre alliance a été créée avec succès !\n\n**ID :** ${id}\n**Nom :** ${allianceName}\n**Description :** ${allianceDescription}\n\nVous pouvez maintenant inviter des owners de team dans votre alliance avec la commande \`&allianceinvite\`.\n\nPour quitter la alliance, utilisez la commande \`&allianceleave\` (vous deverez d'abord donner l\'alliance à quelqu'un d'autre).`)
|
|
.setColor(await embedColor(message.author.id, message.guild.id))
|
|
.setTimestamp()
|
|
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() });
|
|
|
|
messageTeam.edit({ embeds: [embed] });
|
|
m.delete();
|
|
}
|
|
});
|
|
}
|
|
});
|
|
}
|
|
};
|