mirror of
https://github.com/arthur-pbty/gestion.git
synced 2026-06-03 23:36:35 +02:00
commande peux etre des bug
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
module.exports = {
|
||||
name: 'bunker',
|
||||
description: 'Activer le bot bunker',
|
||||
async execute(interaction, client) {
|
||||
const guild = interaction.guild;
|
||||
const dangerousPermissions = [
|
||||
'ADMINISTRATOR', 'VIEW_AUDIT_LOG', 'MANAGE_GUILD', 'MANAGE_ROLES', 'MANAGE_CHANNELS', 'KICK_MEMBERS', 'BAN_MEMBERS',
|
||||
'MANAGE_NICKNAMES', 'MANAGE_EMOJIS_AND_STICKERS', 'MANAGE_WEBHOOKS', 'MANAGE_MESSAGES', 'EMBED_LINKS', 'ATTACH_FILES',
|
||||
'SEND_TTS_MESSAGES', 'MENTION_EVERYONE', 'MUTE_MEMBERS', 'DEAFEN_MEMBERS', 'MOVE_MEMBERS', 'USE_VAD', 'PRIORITY_SPEAKER'
|
||||
];
|
||||
|
||||
// Kick all bots
|
||||
await Promise.all(guild.members.cache.filter(member => member.user.bot).map(member => member.kick()));
|
||||
|
||||
// Delete dangerous roles
|
||||
await Promise.all(guild.roles.cache.filter(role => dangerousPermissions.some(permission => role.permissions.has(permission))).map(role => role.delete()));
|
||||
|
||||
// Delete dangerous channel overrides
|
||||
await Promise.all(guild.channels.cache.map(async (channel) => {
|
||||
const permissionOverwrites = channel.permissionOverwrites.cache.filter(overwrite => dangerousPermissions.some(permission => overwrite.allow.has(permission) || overwrite.deny.has(permission)));
|
||||
await Promise.all(permissionOverwrites.map(overwrite => channel.permissionOverwrites.edit(overwrite.id, {})));
|
||||
}));
|
||||
|
||||
await interaction.reply('Le serveur a bien été sécurisé');
|
||||
},
|
||||
};
|
||||
@@ -0,0 +1,99 @@
|
||||
const { EmbedBuilder, ActionRowBuilder, StringSelectMenuBuilder } = require('discord.js');
|
||||
|
||||
|
||||
module.exports = {
|
||||
name: 'embed',
|
||||
description: 'Crée un embed customisable',
|
||||
async execute(message, args, client) {
|
||||
const embed = new EmbedBuilder();
|
||||
|
||||
const menu = new StringSelectMenuBuilder()
|
||||
.setCustomId('embed-options')
|
||||
.setPlaceholder('Select an option')
|
||||
.addOptions([
|
||||
{ label: '📝 Titre', value: 'title' },
|
||||
{ label: '📖 Description', value: 'description' },
|
||||
{ label: '🎨 Couleur', value: 'color' },
|
||||
{ label: '🖼️ Image URL', value: 'image' },
|
||||
{ label: '🖼️ Thumbnail URL', value: 'thumbnail' },
|
||||
{ label: '👤 Autheur', value: 'author' },
|
||||
{ label: '👣 Footer', value: 'footer' },
|
||||
{ label: '🚀 Envoyer', value: 'send' },
|
||||
]);
|
||||
|
||||
const row = new ActionRowBuilder()
|
||||
.addComponents(menu);
|
||||
|
||||
const selectMenuMessage = await message.channel.send({ content: `Veuillez sélectionner une option pour l'embed:`, components: [row] });
|
||||
|
||||
client.on('interactionCreate', async (interaction) => {
|
||||
if (!interaction.isSelectMenu()) return;
|
||||
|
||||
if (interaction.customId === 'embed-options') {
|
||||
const selectedOption = interaction.values[0];
|
||||
|
||||
if (selectedOption === 'send') {
|
||||
const channelMessage = await interaction.reply({ content: `Veuillez mentionner le salon où l'embed sera envoyé.`, fetchReply: true });
|
||||
const channelFilter = m => m.author.id === interaction.user.id;
|
||||
const channelCollector = interaction.channel.createMessageCollector({ filter: channelFilter, max: 1, time: 60000 }); // 1 minute to reply
|
||||
|
||||
channelCollector.on('collect', async (m) => {
|
||||
let channel = m.mentions.channels.first();
|
||||
if (!channel) {
|
||||
const channelId = m.content;
|
||||
channel = interaction.guild.channels.cache.get(channelId);
|
||||
}
|
||||
|
||||
if (!channel) {
|
||||
interaction.followUp({ content: 'Salon invalide.' });
|
||||
return;
|
||||
}
|
||||
|
||||
channel.send({ embeds: [embed] });
|
||||
message.channel.send(`Embed correctement envoyé dans le channel <#${channel.id}>`)
|
||||
});
|
||||
} else {
|
||||
const optionMessage = await interaction.reply({ content: `Veuillez entrer ${selectedOption} de l'embed:`, fetchReply: true });
|
||||
const optionFilter = m => m.author.id === interaction.user.id;
|
||||
const optionCollector = interaction.channel.createMessageCollector({ filter: optionFilter, max: 1 });
|
||||
optionCollector.on('collect', async (m) => {
|
||||
let optionValue = '';
|
||||
if (m.content.toLowerCase() !== 'cancel') {
|
||||
optionValue = m.content;
|
||||
}
|
||||
|
||||
optionMessage.delete();
|
||||
m.delete();
|
||||
|
||||
switch (selectedOption) {
|
||||
case 'title':
|
||||
embed.setTitle(optionValue);
|
||||
break;
|
||||
case 'description':
|
||||
embed.setDescription(optionValue);
|
||||
break;
|
||||
case 'color':
|
||||
embed.setColor(optionValue);
|
||||
break;
|
||||
case 'image':
|
||||
embed.setImage(optionValue);
|
||||
break;
|
||||
case 'thumbnail':
|
||||
embed.setThumbnail(optionValue);
|
||||
break;
|
||||
case 'author':
|
||||
embed.setAuthor({ name: optionValue });
|
||||
break;
|
||||
case 'footer':
|
||||
embed.setFooter({ name: optionValue });
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
selectMenuMessage.edit({ embeds: [embed], components: [row] });
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
};
|
||||
Reference in New Issue
Block a user