feat: mise à jour du code
This commit is contained in:
@@ -1,21 +1,23 @@
|
||||
const { config, lang } = require("../handlers/configLoader");
|
||||
const { config, lang } = require('../handlers/configLoader');
|
||||
|
||||
module.exports = {
|
||||
id: "cancelClosure",
|
||||
id: 'cancelClosure',
|
||||
async execute(interaction) {
|
||||
const member = interaction.member;
|
||||
const isStaff = config.staffRoles.some(roleId => member.roles.cache.has(roleId));
|
||||
const isStaff = config.staffRoles.some((roleId) =>
|
||||
member.roles.cache.has(roleId)
|
||||
);
|
||||
|
||||
if (!isStaff) {
|
||||
return interaction.reply({
|
||||
content: lang.permissions.staff_only,
|
||||
flags: 64
|
||||
flags: 64,
|
||||
});
|
||||
}
|
||||
|
||||
await interaction.reply({
|
||||
content: lang.commands.alert.cancelled,
|
||||
flags: 64
|
||||
flags: 64,
|
||||
});
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,15 +1,20 @@
|
||||
const { PermissionFlagsBits } = require("discord.js");
|
||||
const { closeTicket } = require("../handlers/database");
|
||||
const { config, lang } = require("../handlers/configLoader");
|
||||
const { PermissionFlagsBits } = require('discord.js');
|
||||
const { closeTicket } = require('../handlers/database');
|
||||
const { config, lang } = require('../handlers/configLoader');
|
||||
|
||||
module.exports = {
|
||||
id: "closeTicket",
|
||||
id: 'closeTicket',
|
||||
async execute(interaction) {
|
||||
const member = interaction.member;
|
||||
const isStaff = member.roles.cache.some(role => config.staffRoles.includes(role.id));
|
||||
const isStaff = member.roles.cache.some((role) =>
|
||||
config.staffRoles.includes(role.id)
|
||||
);
|
||||
|
||||
if (!isStaff) {
|
||||
return interaction.reply({ content: lang.permissions.staff_only, flags: 64 });
|
||||
return interaction.reply({
|
||||
content: lang.permissions.staff_only,
|
||||
flags: 64,
|
||||
});
|
||||
}
|
||||
|
||||
const channel = interaction.channel;
|
||||
@@ -20,5 +25,5 @@ module.exports = {
|
||||
closeTicket(channel.id);
|
||||
await channel.delete().catch(() => {});
|
||||
}, 5000);
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
@@ -4,26 +4,28 @@ const {
|
||||
TextInputStyle,
|
||||
ActionRowBuilder,
|
||||
PermissionFlagsBits,
|
||||
EmbedBuilder
|
||||
} = require("discord.js");
|
||||
const { getModal } = require("../handlers/modalHandler");
|
||||
const { createTicket } = require("../handlers/database");
|
||||
const { config } = require("../handlers/configLoader");
|
||||
EmbedBuilder,
|
||||
} = require('discord.js');
|
||||
const { getModal } = require('../handlers/modalHandler');
|
||||
const { createTicket } = require('../handlers/database');
|
||||
const { config } = require('../handlers/configLoader');
|
||||
|
||||
module.exports = {
|
||||
id: /^ticket_.+$/,
|
||||
async execute(interaction, client) {
|
||||
const modalConfig = getModal(interaction.customId);
|
||||
|
||||
const staffRoles = (Array.isArray(config.staffRoles) ? config.staffRoles : [config.staffRoles])
|
||||
.filter(r => r && r.trim() !== "");
|
||||
const staffRoles = (
|
||||
Array.isArray(config.staffRoles) ? config.staffRoles : [config.staffRoles]
|
||||
).filter((r) => r && r.trim() !== '');
|
||||
|
||||
if (!modalConfig || modalConfig.Enabled === false) {
|
||||
const guild = interaction.guild;
|
||||
const member = interaction.member;
|
||||
|
||||
const categories = config.TicketPanel.Panel.Categories;
|
||||
const parentCategory = categories && categories.length > 0 ? categories[0] : null;
|
||||
const parentCategory =
|
||||
categories && categories.length > 0 ? categories[0] : null;
|
||||
|
||||
const overwrites = [
|
||||
{ id: guild.id, deny: [PermissionFlagsBits.ViewChannel] },
|
||||
@@ -32,9 +34,9 @@ module.exports = {
|
||||
allow: [
|
||||
PermissionFlagsBits.ViewChannel,
|
||||
PermissionFlagsBits.SendMessages,
|
||||
PermissionFlagsBits.ReadMessageHistory
|
||||
]
|
||||
}
|
||||
PermissionFlagsBits.ReadMessageHistory,
|
||||
],
|
||||
},
|
||||
];
|
||||
|
||||
for (const roleId of staffRoles) {
|
||||
@@ -43,8 +45,8 @@ module.exports = {
|
||||
allow: [
|
||||
PermissionFlagsBits.ViewChannel,
|
||||
PermissionFlagsBits.SendMessages,
|
||||
PermissionFlagsBits.ReadMessageHistory
|
||||
]
|
||||
PermissionFlagsBits.ReadMessageHistory,
|
||||
],
|
||||
});
|
||||
}
|
||||
|
||||
@@ -52,25 +54,29 @@ module.exports = {
|
||||
name: `ticket-${member.user.username}`.toLowerCase(),
|
||||
type: 0,
|
||||
parent: parentCategory || undefined,
|
||||
permissionOverwrites: overwrites
|
||||
permissionOverwrites: overwrites,
|
||||
});
|
||||
|
||||
createTicket(member.id, channel.id);
|
||||
|
||||
await interaction.reply({
|
||||
content: `✅ Ton ticket a été créé : ${channel}`,
|
||||
flags: 64
|
||||
flags: 64,
|
||||
});
|
||||
|
||||
await channel.send(`🎟️ Bonjour ${member}, un membre du staff va bientôt te répondre.`);
|
||||
await channel.send(
|
||||
`🎟️ Bonjour ${member}, un membre du staff va bientôt te répondre.`
|
||||
);
|
||||
|
||||
const logChannel = await client.channels.fetch(config.logsChannel).catch(() => null);
|
||||
const logChannel = await client.channels
|
||||
.fetch(config.logsChannel)
|
||||
.catch(() => null);
|
||||
if (logChannel) {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle("🎟️ Nouveau ticket (sans formulaire)")
|
||||
.setTitle('🎟️ Nouveau ticket (sans formulaire)')
|
||||
.addFields(
|
||||
{ name: "Utilisateur", value: `${member.user.tag} (${member.id})` },
|
||||
{ name: "Salon", value: `${channel}` }
|
||||
{ name: 'Utilisateur', value: `${member.user.tag} (${member.id})` },
|
||||
{ name: 'Salon', value: `${channel}` }
|
||||
)
|
||||
.setColor(0x2ecc71)
|
||||
.setTimestamp();
|
||||
@@ -83,9 +89,9 @@ module.exports = {
|
||||
|
||||
const modal = new ModalBuilder()
|
||||
.setCustomId(`ticket_modal_${interaction.customId}`)
|
||||
.setTitle(modalConfig.Title || "Création de ticket");
|
||||
.setTitle(modalConfig.Title || 'Création de ticket');
|
||||
|
||||
modalConfig.Inputs.forEach(input => {
|
||||
modalConfig.Inputs.forEach((input) => {
|
||||
const textInput = new TextInputBuilder()
|
||||
.setCustomId(input.CustomId)
|
||||
.setLabel(input.Label)
|
||||
@@ -96,5 +102,5 @@ module.exports = {
|
||||
});
|
||||
|
||||
await interaction.showModal(modal);
|
||||
}
|
||||
};
|
||||
},
|
||||
};
|
||||
|
||||
+36
-24
@@ -1,10 +1,17 @@
|
||||
const { ModalBuilder, TextInputBuilder, TextInputStyle, ActionRowBuilder, PermissionFlagsBits, EmbedBuilder } = require("discord.js");
|
||||
const { getModal } = require("../handlers/modalHandler");
|
||||
const { createTicket } = require("../handlers/database");
|
||||
const { config } = require("../handlers/configLoader");
|
||||
const {
|
||||
ModalBuilder,
|
||||
TextInputBuilder,
|
||||
TextInputStyle,
|
||||
ActionRowBuilder,
|
||||
PermissionFlagsBits,
|
||||
EmbedBuilder,
|
||||
} = require('discord.js');
|
||||
const { getModal } = require('../handlers/modalHandler');
|
||||
const { createTicket } = require('../handlers/database');
|
||||
const { config } = require('../handlers/configLoader');
|
||||
|
||||
module.exports = {
|
||||
id: "ticket_select",
|
||||
id: 'ticket_select',
|
||||
async execute(interaction, client) {
|
||||
const selected = interaction.values[0];
|
||||
const modalConfig = getModal(selected);
|
||||
@@ -14,7 +21,8 @@ module.exports = {
|
||||
const member = interaction.member;
|
||||
|
||||
const categories = config.TicketPanel.Panel.Categories;
|
||||
const parentCategory = categories && categories.length > 0 ? categories[0] : null;
|
||||
const parentCategory =
|
||||
categories && categories.length > 0 ? categories[0] : null;
|
||||
|
||||
const channel = await guild.channels.create({
|
||||
name: `ticket-${member.user.username}`.toLowerCase(),
|
||||
@@ -27,37 +35,41 @@ module.exports = {
|
||||
allow: [
|
||||
PermissionFlagsBits.ViewChannel,
|
||||
PermissionFlagsBits.SendMessages,
|
||||
PermissionFlagsBits.ReadMessageHistory
|
||||
]
|
||||
PermissionFlagsBits.ReadMessageHistory,
|
||||
],
|
||||
},
|
||||
...config.staffRoles.map(roleId => ({
|
||||
...config.staffRoles.map((roleId) => ({
|
||||
id: roleId,
|
||||
allow: [
|
||||
PermissionFlagsBits.ViewChannel,
|
||||
PermissionFlagsBits.SendMessages,
|
||||
PermissionFlagsBits.ReadMessageHistory
|
||||
]
|
||||
}))
|
||||
]
|
||||
PermissionFlagsBits.ReadMessageHistory,
|
||||
],
|
||||
})),
|
||||
],
|
||||
});
|
||||
|
||||
createTicket(member.id, channel.id);
|
||||
|
||||
await interaction.reply({
|
||||
content: `✅ Ton ticket a été créé : ${channel}`,
|
||||
flags: 64
|
||||
flags: 64,
|
||||
});
|
||||
|
||||
await channel.send(`🎟️ Bonjour ${member}, un membre du staff va bientôt te répondre.`);
|
||||
await channel.send(
|
||||
`🎟️ Bonjour ${member}, un membre du staff va bientôt te répondre.`
|
||||
);
|
||||
|
||||
const logChannel = await client.channels.fetch(config.logsChannel).catch(() => null);
|
||||
const logChannel = await client.channels
|
||||
.fetch(config.logsChannel)
|
||||
.catch(() => null);
|
||||
if (logChannel) {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle("🎟️ Nouveau ticket (sans formulaire - via SelectMenu)")
|
||||
.setTitle('🎟️ Nouveau ticket (sans formulaire - via SelectMenu)')
|
||||
.addFields(
|
||||
{ name: "Utilisateur", value: `${member.user.tag} (${member.id})` },
|
||||
{ name: "Salon", value: `${channel}` },
|
||||
{ name: "Type de ticket", value: selected }
|
||||
{ name: 'Utilisateur', value: `${member.user.tag} (${member.id})` },
|
||||
{ name: 'Salon', value: `${channel}` },
|
||||
{ name: 'Type de ticket', value: selected }
|
||||
)
|
||||
.setColor(0x2ecc71)
|
||||
.setTimestamp();
|
||||
@@ -70,9 +82,9 @@ module.exports = {
|
||||
|
||||
const modal = new ModalBuilder()
|
||||
.setCustomId(`ticket_modal_${selected}`)
|
||||
.setTitle(modalConfig.Title || "Création de ticket");
|
||||
.setTitle(modalConfig.Title || 'Création de ticket');
|
||||
|
||||
modalConfig.Inputs.forEach(input => {
|
||||
modalConfig.Inputs.forEach((input) => {
|
||||
const textInput = new TextInputBuilder()
|
||||
.setCustomId(input.CustomId)
|
||||
.setLabel(input.Label)
|
||||
@@ -83,5 +95,5 @@ module.exports = {
|
||||
});
|
||||
|
||||
await interaction.showModal(modal);
|
||||
}
|
||||
};
|
||||
},
|
||||
};
|
||||
|
||||
+32
-28
@@ -1,17 +1,17 @@
|
||||
const { EmbedBuilder, PermissionFlagsBits } = require("discord.js");
|
||||
const { createTicket } = require("../handlers/database");
|
||||
const { config } = require("../handlers/configLoader");
|
||||
const { EmbedBuilder, PermissionFlagsBits } = require('discord.js');
|
||||
const { createTicket } = require('../handlers/database');
|
||||
const { config } = require('../handlers/configLoader');
|
||||
|
||||
module.exports = {
|
||||
id: /^ticket_modal_.+$/,
|
||||
async execute(interaction, client) {
|
||||
const originalId = interaction.customId.replace("ticket_modal_", "");
|
||||
const originalId = interaction.customId.replace('ticket_modal_', '');
|
||||
const modalConfig = config.TicketPanel?.Modals?.[originalId];
|
||||
|
||||
if (!modalConfig) {
|
||||
return interaction.reply({
|
||||
content: "❌ Aucun formulaire configuré pour ce ticket.",
|
||||
flags: 64
|
||||
content: '❌ Aucun formulaire configuré pour ce ticket.',
|
||||
flags: 64,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -19,10 +19,12 @@ module.exports = {
|
||||
const guild = interaction.guild;
|
||||
|
||||
const categories = config.TicketPanel.Panel.Categories;
|
||||
const parentCategory = categories && categories.length > 0 ? categories[0] : null;
|
||||
const parentCategory =
|
||||
categories && categories.length > 0 ? categories[0] : null;
|
||||
|
||||
const staffRoles = (Array.isArray(config.staffRoles) ? config.staffRoles : [config.staffRoles])
|
||||
.filter(r => r && r.trim() !== "");
|
||||
const staffRoles = (
|
||||
Array.isArray(config.staffRoles) ? config.staffRoles : [config.staffRoles]
|
||||
).filter((r) => r && r.trim() !== '');
|
||||
|
||||
const overwrites = [
|
||||
{ id: guild.id, deny: [PermissionFlagsBits.ViewChannel] },
|
||||
@@ -31,9 +33,9 @@ module.exports = {
|
||||
allow: [
|
||||
PermissionFlagsBits.ViewChannel,
|
||||
PermissionFlagsBits.SendMessages,
|
||||
PermissionFlagsBits.ReadMessageHistory
|
||||
]
|
||||
}
|
||||
PermissionFlagsBits.ReadMessageHistory,
|
||||
],
|
||||
},
|
||||
];
|
||||
|
||||
for (const roleId of staffRoles) {
|
||||
@@ -42,8 +44,8 @@ module.exports = {
|
||||
allow: [
|
||||
PermissionFlagsBits.ViewChannel,
|
||||
PermissionFlagsBits.SendMessages,
|
||||
PermissionFlagsBits.ReadMessageHistory
|
||||
]
|
||||
PermissionFlagsBits.ReadMessageHistory,
|
||||
],
|
||||
});
|
||||
}
|
||||
|
||||
@@ -51,46 +53,48 @@ module.exports = {
|
||||
name: `ticket-${member.user.username}`.toLowerCase(),
|
||||
type: 0,
|
||||
parent: parentCategory || undefined,
|
||||
permissionOverwrites: overwrites
|
||||
permissionOverwrites: overwrites,
|
||||
});
|
||||
|
||||
createTicket(member.id, channel.id);
|
||||
|
||||
const fieldsOutput = modalConfig.Inputs.map(input => {
|
||||
const fieldsOutput = modalConfig.Inputs.map((input) => {
|
||||
const value = interaction.fields.getTextInputValue(input.CustomId);
|
||||
return `**${input.Label}** : ${value}`;
|
||||
}).join("\n");
|
||||
}).join('\n');
|
||||
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle(`🎟️ ${modalConfig.Title || "Nouveau ticket"}`)
|
||||
.setTitle(`🎟️ ${modalConfig.Title || 'Nouveau ticket'}`)
|
||||
.setDescription(`👤 Ouvert par: ${member}\n\n${fieldsOutput}`)
|
||||
.setColor(0x5e99ff)
|
||||
.setTimestamp();
|
||||
|
||||
await channel.send({
|
||||
content: staffRoles.map(r => `<@&${r}>`).join(" "),
|
||||
embeds: [embed]
|
||||
content: staffRoles.map((r) => `<@&${r}>`).join(' '),
|
||||
embeds: [embed],
|
||||
});
|
||||
|
||||
await interaction.reply({
|
||||
content: `✅ Ton ticket a été créé : ${channel}`,
|
||||
flags: 64
|
||||
flags: 64,
|
||||
});
|
||||
|
||||
const logChannel = await client.channels.fetch(config.logsChannel).catch(() => null);
|
||||
const logChannel = await client.channels
|
||||
.fetch(config.logsChannel)
|
||||
.catch(() => null);
|
||||
if (logChannel) {
|
||||
const logEmbed = new EmbedBuilder()
|
||||
.setTitle("🎟️ Nouveau ticket")
|
||||
.setTitle('🎟️ Nouveau ticket')
|
||||
.setDescription(`Formulaire utilisé: \`${originalId}\``)
|
||||
.addFields(
|
||||
{ name: "Utilisateur", value: `${member.user.tag} (${member.id})` },
|
||||
{ name: "Salon", value: `${channel}` },
|
||||
{ name: "Réponses", value: fieldsOutput }
|
||||
{ name: 'Utilisateur', value: `${member.user.tag} (${member.id})` },
|
||||
{ name: 'Salon', value: `${channel}` },
|
||||
{ name: 'Réponses', value: fieldsOutput }
|
||||
)
|
||||
.setColor(0x2ecc71)
|
||||
.setTimestamp();
|
||||
|
||||
await logChannel.send({ embeds: [logEmbed] });
|
||||
}
|
||||
}
|
||||
};
|
||||
},
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user