quel que petit truc mdr

This commit is contained in:
VALOU3336
2024-02-24 20:18:39 +01:00
parent 365ae0f973
commit b070fe6edf
15 changed files with 179 additions and 35 deletions
+12
View File
@@ -0,0 +1,12 @@
module.exports = {
name: 'dnd',
description: 'Changer le status du bot en dnd',
emote: '🔕',
utilisation: 'dnd',
category: 'botcontrol',
async execute(message, args, client) {
client.user.setStatus('dnd');
message.channel.send(`Le bot est maintenant en de pas deranger`);
},
};
+12
View File
@@ -0,0 +1,12 @@
module.exports = {
name: 'idle',
description: 'Changer le status du bot en idle',
emote: '🔄',
utilisation: 'idle',
category: 'botcontrol',
async execute(message, args, client) {
client.user.setStatus('idle');
message.channel.send(`Le bot est maintenant en mode idle`);
},
};
+12
View File
@@ -0,0 +1,12 @@
module.exports = {
name: 'invisible',
description: 'Changer le status du bot en invisible',
emote: '🕶️',
utilisation: 'invisible',
category: 'botcontrol',
async execute(message, args, client) {
client.user.setStatus('invisible');
message.channel.send(`Le bot est maintenant invisible`);
},
};
+12
View File
@@ -0,0 +1,12 @@
module.exports = {
name: 'online',
description: 'Changer le status du bot en online',
emote: '🟢',
utilisation: 'online',
category: 'botcontrol',
async execute(message, args, client) {
client.user.setStatus('online');
message.channel.send(`Le bot est maintenant en ligne`);
},
};
-1
View File
@@ -16,7 +16,6 @@ async function getPermissionLevel(member, client) {
for (let i = 1; i <= 9; i++) { for (let i = 1; i <= 9; i++) {
const roleIds = await GestionDb.get(`${botId}.${member.guild.id}.p${i}`); const roleIds = await GestionDb.get(`${botId}.${member.guild.id}.p${i}`);
if (roleIds) { if (roleIds) {
// Si roleIds n'est pas un tableau, le convertir en tableau
if (!Array.isArray(roleIds)) { if (!Array.isArray(roleIds)) {
roleIds = [roleIds]; roleIds = [roleIds];
} }
-4
View File
@@ -5,21 +5,17 @@ module.exports = {
emote: '📧', emote: '📧',
utilisation: 'dm <@utilisateur> <message>', utilisation: 'dm <@utilisateur> <message>',
category: 'gestion', category: 'gestion',
async execute(message, args) { async execute(message, args) {
// Vérifie si un utilisateur a été mentionné
const user = message.mentions.users.first(); const user = message.mentions.users.first();
if (!user) { if (!user) {
return message.reply('Veuillez mentionner un utilisateur à qui envoyer un message privé.'); return message.reply('Veuillez mentionner un utilisateur à qui envoyer un message privé.');
} }
// Vérifie si un message a été spécifié
const dmMessage = args.slice(1).join(' '); const dmMessage = args.slice(1).join(' ');
if (!dmMessage) { if (!dmMessage) {
return message.reply('Veuillez spécifier un message à envoyer.'); return message.reply('Veuillez spécifier un message à envoyer.');
} }
// Envoie le message privé à l'utilisateur
try { try {
await user.send(dmMessage); await user.send(dmMessage);
message.reply(`Message envoyé à ${user.tag} : "${dmMessage}"`); message.reply(`Message envoyé à ${user.tag} : "${dmMessage}"`);
+34 -2
View File
@@ -1,4 +1,4 @@
const { EmbedBuilder } = require('discord.js'); const { EmbedBuilder, ButtonBuilder , ActionRowBuilder, ButtonStyle } = require('discord.js');
const db = require('quick.db'); const db = require('quick.db');
const GestionDb = new db.table('gestion'); const GestionDb = new db.table('gestion');
@@ -27,7 +27,39 @@ module.exports = {
.setTitle(`Salons avec un greet ${guildGreetings.length}/5`) .setTitle(`Salons avec un greet ${guildGreetings.length}/5`)
.setDescription(`${greetingChannels}`) .setDescription(`${greetingChannels}`)
.setColor('#0099ff'); .setColor('#0099ff');
message.channel.send({ embeds: [embed] }); const greet = new ButtonBuilder()
.setCustomId(`greet_${guildId}`)
.setLabel('↪️ greet')
.setStyle(ButtonStyle.Primary)
const row = new ActionRowBuilder()
.addComponents(greet);
const sentMessage = await message.channel.send({ embeds: [embed], components: [row] });
const greetfilter = i => i.customId.startsWith('greet_') && i.user.id === message.author.id;
const collector = sentMessage.createMessageComponentCollector({ filter: greetfilter, time: 15000 });
collector.on('collect', async (interaction) => {
const member = interaction.member;
const guild = interaction.guild;
const welcomeMessage = `Bienvenue <@${member.id}> sur le serveur ${guild.name} !`;
const messagePromises = [];
for (const greeting of guildGreetings) {
try {
const channel = await guild.channels.fetch(greeting.channelId);
if (channel && channel.type === 0) {
messagePromises.push(
channel.send(welcomeMessage)
.then(message => {
setTimeout(() => message.delete(), 1000);
})
);
}
} catch (error) {
}
}
try {
await Promise.all(messagePromises);
} catch (error) {
}
});
} }
}, },
}; };
-10
View File
@@ -9,7 +9,6 @@ module.exports = {
category: 'gestion', category: 'gestion',
async execute(message, args) { async execute(message, args) {
// Vérifie si un rôle a été mentionné
const role = message.mentions.roles.first(); const role = message.mentions.roles.first();
if (!role) { if (!role) {
return message.reply('Veuillez mentionner un rôle.'); return message.reply('Veuillez mentionner un rôle.');
@@ -24,7 +23,6 @@ module.exports = {
.setTitle('Attribution de rôle') .setTitle('Attribution de rôle')
.addFields(fields); .addFields(fields);
// Crée un menu déroulant avec les options
const selectMenu = new StringSelectMenuBuilder() const selectMenu = new StringSelectMenuBuilder()
.setCustomId('massiverole_select') .setCustomId('massiverole_select')
.setPlaceholder('Sélectionnez le type de membres') .setPlaceholder('Sélectionnez le type de membres')
@@ -34,13 +32,10 @@ module.exports = {
{ label: '🤖 Bot', value: 'bot' }, { label: '🤖 Bot', value: 'bot' },
{ label: '🚀 Lancer', value: 'launch' }, { label: '🚀 Lancer', value: 'launch' },
]); ]);
// Crée une action de ligne avec le menu déroulant
const row = new ActionRowBuilder() const row = new ActionRowBuilder()
.addComponents(selectMenu); .addComponents(selectMenu);
const sentMessage = await message.channel.send({ embeds: [embed], components: [row] }); const sentMessage = await message.channel.send({ embeds: [embed], components: [row] });
// Crée un collecteur d'interactions pour le menu déroulant
const filter = i => i.customId === 'massiverole_select' && i.user.id === message.author.id; const filter = i => i.customId === 'massiverole_select' && i.user.id === message.author.id;
const collector = sentMessage.createMessageComponentCollector({ filter, time: 15000 }) const collector = sentMessage.createMessageComponentCollector({ filter, time: 15000 })
collector.on('collect', async (interaction) => { collector.on('collect', async (interaction) => {
@@ -57,22 +52,18 @@ module.exports = {
name2 = '🤖 Bot'; name2 = '🤖 Bot';
} }
// Trouvez l'index du champ 'Type de membres' et mettez à jour sa valeur
const memberTypeFieldIndex = fields.findIndex(field => field.name === 'Type de membres'); const memberTypeFieldIndex = fields.findIndex(field => field.name === 'Type de membres');
if (memberTypeFieldIndex !== -1) { if (memberTypeFieldIndex !== -1) {
fields[memberTypeFieldIndex].value = name2; fields[memberTypeFieldIndex].value = name2;
} }
// Recréez l'embed avec les champs mis à jour
const updatedEmbed = new EmbedBuilder() const updatedEmbed = new EmbedBuilder()
.setTitle('Attribution de rôle') .setTitle('Attribution de rôle')
.addFields(fields); .addFields(fields);
// Mettre à jour l'embed dans le message
await interaction.update({ embeds: [updatedEmbed] }); await interaction.update({ embeds: [updatedEmbed] });
} }
// Si l'option "Lancer" est sélectionnée, attribuez le rôle
if (interaction.values[0] === 'launch') { if (interaction.values[0] === 'launch') {
await assignRole(interaction, role, memberType, message); await assignRole(interaction, role, memberType, message);
} }
@@ -83,7 +74,6 @@ module.exports = {
async function assignRole(interaction, role, memberType, message) { async function assignRole(interaction, role, memberType, message) {
let count = 0; let count = 0;
// Récupère tous les membres pour s'assurer que le cache est complet
const members = await interaction.guild.members.fetch(); const members = await interaction.guild.members.fetch();
if (memberType === 'human') { if (memberType === 'human') {
-1
View File
@@ -20,7 +20,6 @@ module.exports = {
let roleIds = await GestionDb.get(`${botId}.${message.guild.id}.p${i}`); let roleIds = await GestionDb.get(`${botId}.${message.guild.id}.p${i}`);
let roles = 'Aucun rôle défini'; let roles = 'Aucun rôle défini';
if (roleIds) { if (roleIds) {
// Si roleIds n'est pas un tableau, le convertir en tableau
if (!Array.isArray(roleIds)) { if (!Array.isArray(roleIds)) {
roleIds = [roleIds]; roleIds = [roleIds];
} }
-5
View File
@@ -11,20 +11,15 @@ module.exports = {
const guild = message.guild; const guild = message.guild;
const channel = message.mentions.channels.first() || message.channel; const channel = message.mentions.channels.first() || message.channel;
const botMember = guild.members.cache.get(client.user.id); const botMember = guild.members.cache.get(client.user.id);
// Check if the bot has the 'MANAGE_CHANNELS' permission
if (!botMember.permissions.has(PermissionsBitField.Flags.ManageChannels)) { if (!botMember.permissions.has(PermissionsBitField.Flags.ManageChannels)) {
return message.reply("Je n'ai pas la permission de gére les salon"); return message.reply("Je n'ai pas la permission de gére les salon");
} }
// Check if the channel is deletable
if (channel.deletable) { if (channel.deletable) {
// Clone the channel
const newChannel = await channel.clone(); const newChannel = await channel.clone();
// Delete the old channel
await channel.delete(); await channel.delete();
// Send a message in the new channel
newChannel.send(`${message.author}, ce salon a été renouvelé.`); newChannel.send(`${message.author}, ce salon a été renouvelé.`);
} else { } else {
return message.reply("Je ne peux pas supprimer ce salon."); return message.reply("Je ne peux pas supprimer ce salon.");
+43
View File
@@ -0,0 +1,43 @@
const db = require('quick.db');
const GestionDb = new db.table("gestion");
module.exports = {
name: 'suggest',
description: 'configure le salon de suggestion',
emote: '🛡️',
utilisation: 'suggest #channel',
category: 'gestion',
async execute(message, args, client) {
const botid = client.user.id;
const guildId = message.guild.id;
const currentSuggestChannelId = GestionDb.get(`${botid}.${guildId}.suggestchannel`);
const mentionedChannel = message.mentions.channels.first();
if (mentionedChannel) {
if (mentionedChannel.id === currentSuggestChannelId) {
GestionDb.delete(`${botid}.${guildId}.suggestchannel`);
message.channel.send(`Le salon de suggestion a été supprimé.`);
} else {
GestionDb.set(`${botid}.${guildId}.suggestchannel`, mentionedChannel.id);
message.channel.send(`Le salon de suggestion a été configuré à <#${mentionedChannel.id}>`);
}
return;
}
if (args[0]) {
const channel = message.guild.channels.cache.get(args[0]);
if (channel) {
if (channel.id === currentSuggestChannelId) {
GestionDb.delete(`${botid}.${guildId}.suggestchannel`);
message.channel.send(`Le salon de suggestion a été supprimé.`);
} else {
GestionDb.set(`${botid}.${guildId}.suggestchannel`, args[0]);
message.channel.send(`Le salon de suggestion a été configuré à <#${args[0]}>`);
}
return;
}
}
message.channel.send("Veuillez mentionner un salon ou fournir un ID de salon valide.");
},
};
-8
View File
@@ -34,14 +34,12 @@ module.exports = {
{ label: '🤖 Bot', value: 'bot' }, { label: '🤖 Bot', value: 'bot' },
{ label: '🚀 Lancer', value: 'launch' }, { label: '🚀 Lancer', value: 'launch' },
]); ]);
// Crée une action de ligne avec le menu déroulant
const row = new ActionRowBuilder() const row = new ActionRowBuilder()
.addComponents(selectMenu); .addComponents(selectMenu);
const sentMessage = await message.channel.send({ embeds: [embed], components: [row] }); const sentMessage = await message.channel.send({ embeds: [embed], components: [row] });
// Crée un collecteur d'interactions pour le menu déroulant
const filter = i => i.customId === 'unmassiverole_select' && i.user.id === message.author.id; const filter = i => i.customId === 'unmassiverole_select' && i.user.id === message.author.id;
const collector = sentMessage.createMessageComponentCollector({ filter, time: 15000 }); const collector = sentMessage.createMessageComponentCollector({ filter, time: 15000 });
collector.on('collect', async (interaction) => { collector.on('collect', async (interaction) => {
@@ -57,23 +55,18 @@ module.exports = {
if (interaction.values[0] === 'bot') { if (interaction.values[0] === 'bot') {
name2 = '🤖 Bot'; name2 = '🤖 Bot';
} }
// Trouvez l'index du champ 'Type de membres' et mettez à jour sa valeur
const memberTypeFieldIndex = fields.findIndex(field => field.name === 'Type de membres'); const memberTypeFieldIndex = fields.findIndex(field => field.name === 'Type de membres');
if (memberTypeFieldIndex !== -1) { if (memberTypeFieldIndex !== -1) {
fields[memberTypeFieldIndex].value = name2; fields[memberTypeFieldIndex].value = name2;
} }
// Recréez l'embed avec les champs mis à jour
const updatedEmbed = new EmbedBuilder() const updatedEmbed = new EmbedBuilder()
.setTitle('Retrait de rôle') .setTitle('Retrait de rôle')
.addFields(fields); .addFields(fields);
// Mettre à jour l'embed dans le message
await interaction.update({ embeds: [updatedEmbed] }); await interaction.update({ embeds: [updatedEmbed] });
} }
// Si l'option "Lancer" est sélectionnée, retirez le rôle
if (interaction.values[0] === 'launch') { if (interaction.values[0] === 'launch') {
await removeRole(interaction, role, memberType, message); await removeRole(interaction, role, memberType, message);
} }
@@ -84,7 +77,6 @@ module.exports = {
async function removeRole(interaction, role, memberType, message) { async function removeRole(interaction, role, memberType, message) {
let count = 0; let count = 0;
// Récupère tous les membres pour s'assurer que le cache est complet
const members = await interaction.guild.members.fetch(); const members = await interaction.guild.members.fetch();
if (memberType === 'human') { if (memberType === 'human') {
+16
View File
@@ -0,0 +1,16 @@
const {Events} = require("discord.js")
module.exports = {
name: Events.InteractionCreate,
async execute(interaction) {
if (!interaction.isButton()) return;
if (interaction.customId.startsWith('deletesuggestion_')) {
const userId = interaction.customId.split('_')[1];
if (interaction.user.id !== userId) {
await interaction.reply({ content: "vous n'avez pas la permission de suprimer cette suggestion.", ephemeral: true });
return;
}
await interaction.message.delete();
}
},
};
+32
View File
@@ -0,0 +1,32 @@
const { ActionRowBuilder, ButtonBuilder,ButtonStyle , EmbedBuilder } = require('discord.js');
const db = require('quick.db');
const GestionDb = new db.table('gestion')
const {Events} = require("discord.js")
module.exports = {
name: Events.MessageCreate,
async execute(message) {
const botid = message.client.user.id;
const suggestChannelId = GestionDb.get(`${botid}.${message.guild.id}.suggestchannel`);
if (message.channel.id === suggestChannelId && !message.author.bot) {
await message.delete();
const embed = new EmbedBuilder()
.setAuthor({ name: message.author.tag, iconURL: message.author.displayAvatarURL() })
.setDescription(message.content || 'Aucun contenu fourni')
.setFooter({ text: `${message.guild.name} | ${message.client.user.username}`, })
.setColor('#409CED');
const row = new ActionRowBuilder()
.addComponents(
new ButtonBuilder()
.setCustomId(`deletesuggestion_${message.author.id}`)
.setLabel('Supprimer')
.setStyle(ButtonStyle.Danger)
);
const suggestionmesssage = await message.channel.send({ embeds: [embed], components: [row] });
suggestionmesssage.react('👎')
suggestionmesssage.react('👍')
}
},
};
+3 -1
View File
@@ -1,5 +1,7 @@
const {Events} = require("discord.js")
module.exports = { module.exports = {
name: 'messageDelete', name: Events.MessageDelete,
once: false, once: false,
async execute(message, client) { async execute(message, client) {
if (message.author.bot) return; if (message.author.bot) return;