mirror of
https://github.com/arthur-pbty/gestion.git
synced 2026-06-27 22:17:45 +02:00
add role vocal and mini update suggest
This commit is contained in:
@@ -0,0 +1,78 @@
|
|||||||
|
const { ChannelType , EmbedBuilder } = require('discord.js');
|
||||||
|
const db = require('quick.db');
|
||||||
|
const GestionDb = new db.table('gestion');
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
name: 'rvocal',
|
||||||
|
description: 'Enregistre les rôles associés à un salon vocal',
|
||||||
|
emote: '🔊',
|
||||||
|
utilisation: '+rvocal <salon ou id de salon> <role ou id de role>',
|
||||||
|
category: 'gestion',
|
||||||
|
|
||||||
|
async execute(message, args) {
|
||||||
|
const botId = message.client.user.id;
|
||||||
|
const guildId = message.guild.id;
|
||||||
|
let mentionedChannel = message.mentions.channels.first();
|
||||||
|
if (!mentionedChannel) {
|
||||||
|
const channelId = args[0];
|
||||||
|
mentionedChannel = message.guild.channels.cache.get(channelId);
|
||||||
|
if (!mentionedChannel || mentionedChannel.type !== ChannelType.GuildVoice) {
|
||||||
|
return message.channel.send("Veuillez mentionner un salon vocal valide ou fournir un ID de salon vocal valide.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (mentionedChannel === ChannelType.GuildText || mentionedChannel === ChannelType.DM) {
|
||||||
|
return message.channel.send("Veuillez mentionner un salon vocal valide ou fournir un ID de salon vocal valide.");
|
||||||
|
}
|
||||||
|
if (args.length === 1 ) {
|
||||||
|
const channelId = args[0];
|
||||||
|
mentionedChannel = message.guild.channels.cache.get(channelId);
|
||||||
|
if (!mentionedChannel || mentionedChannel.type !== ChannelType.GuildVoice) {
|
||||||
|
return message.channel.send("Veuillez mentionner un salon vocal valide ou fournir un ID de salon vocal valide.");
|
||||||
|
}
|
||||||
|
|
||||||
|
const roles = GestionDb.get(`${botId}.${guildId}.rolevocal.${mentionedChannel.id}`) || [];
|
||||||
|
|
||||||
|
const embed = new EmbedBuilder()
|
||||||
|
.setTitle(`Rôles associés au salon vocal <#${mentionedChannel.id}>`)
|
||||||
|
.setDescription(roles.length > 0 ? roles.map(roleId => `<@&${roleId}>`).join(', ') : 'Aucun rôle associé.')
|
||||||
|
.setColor('#0099ff');
|
||||||
|
|
||||||
|
return message.channel.send({ embeds: [embed] });
|
||||||
|
}
|
||||||
|
|
||||||
|
// Si l'utilisateur fournit un salon vocal et des rôles
|
||||||
|
if (mentionedChannel && args.length > 1) {
|
||||||
|
const roles = [];
|
||||||
|
// Utilisez une boucle pour traiter tous les rôles mentionnés
|
||||||
|
for (let i = 1; i < args.length; i++) {
|
||||||
|
// Vérifiez si message.mentions.roles est défini
|
||||||
|
if (message.mentions.roles && message.mentions.roles.cache) {
|
||||||
|
const role = message.mentions.roles.cache.get(args[i]);
|
||||||
|
if (role) {
|
||||||
|
roles.push(role.id);
|
||||||
|
} else {
|
||||||
|
// Vérifiez si l'argument est un ID de rôle valide
|
||||||
|
const roleById = message.guild.roles.cache.get(args[i]);
|
||||||
|
if (roleById) {
|
||||||
|
roles.push(roleById.id);
|
||||||
|
} else {
|
||||||
|
return message.channel.send("Un ou plusieurs rôles mentionnés sont invalides.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Vérifiez si l'argument est un ID de rôle valide
|
||||||
|
const roleById = message.guild.roles.cache.get(args[i]);
|
||||||
|
if (roleById) {
|
||||||
|
roles.push(roleById.id);
|
||||||
|
} else {
|
||||||
|
return message.channel.send("Un ou plusieurs rôles mentionnés sont invalides.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Enregistre les rôles dans la base de données
|
||||||
|
GestionDb.set(`${botId}.${guildId}.rolevocal.${mentionedChannel.id}`, roles);
|
||||||
|
message.channel.send(`Les rôles ont été enregistrés pour le salon vocal <#${mentionedChannel.id}>.`);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
};
|
||||||
@@ -4,7 +4,7 @@ const GestionDb = new db.table("gestion");
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
name: 'suggest',
|
name: 'suggest',
|
||||||
description: 'configure le salon de suggestion',
|
description: 'configure le salon de suggestion',
|
||||||
emote: '🛡️',
|
emote: '💡',
|
||||||
utilisation: 'suggest #channel',
|
utilisation: 'suggest #channel',
|
||||||
category: 'gestion',
|
category: 'gestion',
|
||||||
async execute(message, args, client) {
|
async execute(message, args, client) {
|
||||||
|
|||||||
@@ -0,0 +1,28 @@
|
|||||||
|
const db = require('quick.db');
|
||||||
|
const GestionDb = new db.table('gestion');
|
||||||
|
const {Events} = require("discord.js")
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
name: Events.VoiceStateUpdate,
|
||||||
|
async execute(oldState, newState) {
|
||||||
|
if (!oldState.channelId && newState.channelId) {
|
||||||
|
const guildId = newState.guild.id;
|
||||||
|
const botId = newState.client.user.id;
|
||||||
|
const channelId = newState.channelId;
|
||||||
|
const roles = GestionDb.get(`${botId}.${guildId}.rolevocal.${channelId}`) || [];
|
||||||
|
if (roles.length > 0) {
|
||||||
|
const member = newState.member;
|
||||||
|
for (const roleId of roles) {
|
||||||
|
const role = newState.guild.roles.cache.get(roleId);
|
||||||
|
if (role) {
|
||||||
|
try {
|
||||||
|
await member.roles.add(role);
|
||||||
|
} catch (error) {
|
||||||
|
console.error(`Erreur lors de l'ajout du rôle ${roleId} à l'utilisateur ${member.id}:`, error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user