mirror of
https://github.com/arthur-pbty/bot-discord-coins.git
synced 2026-06-16 15:55:49 +02:00
Add alliances sys (partit 3)
This commit is contained in:
@@ -0,0 +1,141 @@
|
||||
const { EmbedBuilder } = require('discord.js');
|
||||
const embedColor = require('../../fonctions/embedColor.js');
|
||||
const db = require('../../fonctions/database.js');
|
||||
|
||||
let allianceName
|
||||
let allianceDescription
|
||||
|
||||
module.exports = {
|
||||
aliases: ['alliancecreate'],
|
||||
description: 'Crée une alliance.',
|
||||
emote: '✒️',
|
||||
utilisation: '',
|
||||
permission: 0,
|
||||
|
||||
async execute(message, args, client) {
|
||||
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.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 = allianceName.toLowerCase().replace('0', '');
|
||||
idBase = allianceName.toLowerCase().replace('1', '');
|
||||
idBase = allianceName.toLowerCase().replace('2', '');
|
||||
idBase = allianceName.toLowerCase().replace('3', '');
|
||||
idBase = allianceName.toLowerCase().replace('4', '');
|
||||
idBase = allianceName.toLowerCase().replace('5', '');
|
||||
idBase = allianceName.toLowerCase().replace('6', '');
|
||||
idBase = allianceName.toLowerCase().replace('7', '');
|
||||
idBase = allianceName.toLowerCase().replace('8', '');
|
||||
idBase = allianceName.toLowerCase().replace('9', '');
|
||||
|
||||
let id = idBase;
|
||||
let increment = '-';
|
||||
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 =+ '-';
|
||||
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 allianceId = ? WHERE guildId = ? AND userId = ?`, [id, message.guild.id, message.author.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();
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,99 @@
|
||||
const { ButtonStyle, ButtonBuilder, ActionRowBuilder, EmbedBuilder } = require('discord.js');
|
||||
const db = require('../../fonctions/database.js');
|
||||
const embedColor = require('../../fonctions/embedColor.js');
|
||||
|
||||
module.exports = {
|
||||
aliases: ['alliancedelete'],
|
||||
description: 'Supprime votre alliance.',
|
||||
emote: '🗑️',
|
||||
util: '',
|
||||
permission: 0,
|
||||
|
||||
async execute(message, args, client) {
|
||||
const alliance = await new Promise((resolve, reject) => {
|
||||
db.get(`SELECT * FROM alliance 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);
|
||||
});
|
||||
});
|
||||
|
||||
if (!alliance) {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('🛡️ Suppression de l\'alliance')
|
||||
.setDescription('Vous n\'êtes actuellement pas dans une alliance.')
|
||||
.setColor(await embedColor(message.author.id, message.guild.id))
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() });
|
||||
|
||||
return message.reply({ embeds: [embed], allowedMentions: { repliedUser: false } });
|
||||
} else {
|
||||
|
||||
if (alliance.creator !== message.author.id) {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('Suppression Impossible')
|
||||
.setDescription('❌ Vous n\'avez pas la permission de supprimer votre alliance.')
|
||||
.setColor(await embedColor(message.author.id, message.guild.id))
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() });
|
||||
|
||||
return message.reply({ embeds: [embed], allowedMentions: { repliedUser: false } });
|
||||
}
|
||||
|
||||
const row = new ActionRowBuilder()
|
||||
.addComponents(
|
||||
new ButtonBuilder()
|
||||
.setCustomId('confirm_delete')
|
||||
.setLabel('Confirmer')
|
||||
.setStyle(ButtonStyle.Danger),
|
||||
new ButtonBuilder()
|
||||
.setCustomId('cancel_delete')
|
||||
.setLabel('Annuler')
|
||||
.setStyle(ButtonStyle.Secondary)
|
||||
);
|
||||
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('🛡️ Suppression de l\'alliance')
|
||||
.setDescription(`Êtes-vous sûr de vouloir supprimer l'alliance ${alliance.name}? Cette action est irréversible.`)
|
||||
.setColor(await embedColor(message.author.id, message.guild.id))
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() });
|
||||
|
||||
message.reply({ embeds: [embed], components: [row], allowedMentions: { repliedUser: false } }).then(sentMessage => {
|
||||
const filter = i => i.customId === 'confirm_delete' || i.customId === 'cancel_delete' && i.user.id === message.author.id;
|
||||
|
||||
const collector = sentMessage.createMessageComponentCollector({ filter, time: 15000 });
|
||||
|
||||
collector.on('collect', async i => {
|
||||
if (i.customId === 'confirm_delete') {
|
||||
db.run(`DELETE FROM alliances WHERE guildId = ? AND id = ? AND creator = ?`, [message.guild.id, alliance.id, message.author.id], async (err) => {
|
||||
if (err) {
|
||||
return i.update({ content: 'Une erreur est survenue lors de la suppression de l\'alliance.', components: [] });
|
||||
}
|
||||
|
||||
db.run(`UPDATE teams SET alliancesId = NULL WHERE guildId =? AND alliancesId =?`, [message.guild.id, alliance.id], async (err) => {
|
||||
if (err) {
|
||||
return i.update({ content: 'Une erreur est survenue lors de la mise à jour des teams membres.', components: [] });
|
||||
}
|
||||
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('🛡️ Suppression de l\'alliance')
|
||||
.setDescription(`L'alliance ${alliance.name} a été supprimée avec succès.`)
|
||||
.setColor(await embedColor(message.author.id, message.guild.id))
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() });
|
||||
|
||||
return i.update({ embeds: [embed], components: [] });
|
||||
});
|
||||
});
|
||||
} else {
|
||||
await i.update({ content: 'Suppression de l\'alliance annulée.', components: [] });
|
||||
}
|
||||
});
|
||||
|
||||
collector.on('end', collected => {
|
||||
if (collected.size === 0) sentMessage.edit({ content: 'Temps écoulé. Suppression de l\'équipe annulée.', components: [] });
|
||||
});
|
||||
});
|
||||
}
|
||||
},
|
||||
};
|
||||
@@ -0,0 +1,66 @@
|
||||
const { EmbedBuilder } = require('discord.js');
|
||||
const db = require('../../fonctions/database.js');
|
||||
const embedColor = require('../../fonctions/embedColor.js');
|
||||
|
||||
module.exports = {
|
||||
aliases: ['a', 'ainfo', 'allianceinfo'],
|
||||
description: 'Affiche les informations de votre alliance.',
|
||||
emote: '🛡️',
|
||||
utilisation: '',
|
||||
permission: 0,
|
||||
|
||||
async execute(message, args, client) {
|
||||
const member = message.mentions.members.first() || message.member;
|
||||
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, member.id], (err, row) => {
|
||||
if (err) reject(err);
|
||||
resolve(row);
|
||||
});
|
||||
});
|
||||
const alliance = await new Promise((resolve, reject) => {
|
||||
db.get(`SELECT * FROM alliances WHERE guildId = ? AND id = (SELECT alliancesId FROM teams WHERE guildId = ? AND id = ?)`, [message.guild.id, message.guild.id, team.id], (err, row) => {
|
||||
if (err) reject(err);
|
||||
resolve(row);
|
||||
});
|
||||
});
|
||||
|
||||
if (!alliance) {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('🛡️ Informations d\'alliance')
|
||||
.setDescription('<@' + member.id + '> n\'est actuellement dans aucune alliance.')
|
||||
.setColor(await embedColor(message.author.id, message.guild.id))
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() });
|
||||
|
||||
return message.reply({ embeds: [embed], allowedMentions: { repliedUser: false } });
|
||||
} else {
|
||||
const memberlist = await new Promise((resolve, reject) => {
|
||||
db.all(`SELECT name FROM teams WHERE guildId = ? AND alliancesId = `, [message.guild.id, team.alliancesId], (err, rows) => {
|
||||
if (err) reject(err);
|
||||
resolve(rows);
|
||||
});
|
||||
});
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('🛡️ Informations de `' + alliance.name + '`:')
|
||||
.setDescription(`**Id:** \`${alliance.id}\`\n**Description:** \`${alliance.description}\`\n**Banque:** \`${alliance.bank}\`coins\n**Reputation:** \`${alliance.reputation}\`\n\n**Membres (\`${memberlist.length}\`):**\n${memberlist.map(member => `**${member.allianceRole}:** <@${member.userId}>`).join('\n')}\n`)
|
||||
.setColor(await embedColor(message.author.id, message.guild.id))
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() });
|
||||
|
||||
const urlRegex1 = /(https?:\/\/[^\s]+)/g;
|
||||
if (alliance.icon && urlRegex1.test(alliance.icon)) {
|
||||
embed.setThumbnail(alliance.icon);
|
||||
}
|
||||
|
||||
const urlRegex2 = /(https?:\/\/[^\s]+)/g;
|
||||
if (alliance.banner && urlRegex2.test(alliance.banner)) {
|
||||
embedTopDonnateur.setImage(alliance.banner);
|
||||
}
|
||||
|
||||
return message.reply({ embeds: [embed], allowedMentions: { repliedUser: false } });
|
||||
}
|
||||
},
|
||||
};
|
||||
+16
-1
@@ -28,6 +28,21 @@ module.exports = {
|
||||
|
||||
return message.reply({ embeds: [embed], allowedMentions: { repliedUser: false } });
|
||||
} else {
|
||||
|
||||
const alliance = await new Promise((resolve, reject) => {
|
||||
db.get(`SELECT * FROM alliances WHERE guildId = ? AND id = (SELECT alliancesId FROM teams WHERE guildId = ? AND id = ?)`, [message.guild.id, message.guild.id, team.id], (err, row) => {
|
||||
if (err) reject(err);
|
||||
resolve(row);
|
||||
});
|
||||
});
|
||||
let Aname
|
||||
if (alliance) {
|
||||
Aname = alliance.name
|
||||
}
|
||||
else {
|
||||
Aname = 'aucune alliance'
|
||||
}
|
||||
|
||||
const memberlist = await new Promise((resolve, reject) => {
|
||||
db.all(`SELECT userId, teamRole FROM users WHERE guildId = ? AND teamId = ?`, [message.guild.id, team.id], (err, rows) => {
|
||||
if (err) reject(err);
|
||||
@@ -79,7 +94,7 @@ module.exports = {
|
||||
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('🛡️ Informations de `' + team.name + '`:')
|
||||
.setDescription(`**Id:** \`${team.id}\`\n**Description:** \`${team.description}\`\n**Banque:** \`${team.bank}\`coins\n**Niveau:** \`${team.level}\`\n**Reputation:** \`${team.reputation}\`\n\n**Soldats:** \`${team.soldiers}\`\n**Soldats blessés:** \`${team.woundedSoldiers}\`\n**Niveau du camp:** \`${team.campLevel}\`\n**Tourelles:** \`${team.turrets}\`\n**Cadenas:** \`${CadenaS}\`\n\n**Membres (\`${memberlist.length}\`):**\n${memberlist.map(member => `**${member.teamRole}:** <@${member.userId}>`).join('\n')}\n`)
|
||||
.setDescription(`**Id:** \`${team.id}\`\n**Description:** \`${team.description}\`\n**Banque:** \`${team.bank}\`coins\n**Niveau:** \`${team.level}\`\n**Reputation:** \`${team.reputation}\`\n\n**Soldats:** \`${team.soldiers}\`\n**Soldats blessés:** \`${team.woundedSoldiers}\`\n**Niveau du camp:** \`${team.campLevel}\`\n**Tourelles:** \`${team.turrets}\`\n**Cadenas:** \`${CadenaS}\`\n\n\nAlliance : ${Aname}\n\n\n**Membres (\`${memberlist.length}\`):**\n${memberlist.map(member => `**${member.teamRole}:** <@${member.userId}>`).join('\n')}\n`)
|
||||
.setColor(await embedColor(message.author.id, message.guild.id))
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() });
|
||||
|
||||
Reference in New Issue
Block a user