Advertisement
ala89

TUTO DEV #7 - CREER UN BOT DISCORD : MUTE ET UNMUTE

Jul 1st, 2020 (edited)
4,230
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // mute.js
  2. module.exports = {
  3.     run: async (message, args) => {
  4.         if (!message.member.hasPermission('MANAGE_MESSAGES')) return message.channel.send('Vous n\'avez pas la permission d\'utiliser cette commande.')
  5.         const member = message.mentions.members.first()
  6.         if (!member) return message.channel.send('Veuillez mentionner le membre à mute.')
  7.         if (member.id === message.guild.ownerID) return message.channel.send('Vous ne pouvez mute le propriétaire du serveur.')
  8.         if (message.member.roles.highest.comparePositionTo(member.roles.highest) < 1 && message.author.id !== message.guild.ownerID) return message.channel.send('Vous ne pouvez pas mute ce membre.')
  9.         if (!member.manageable) return message.channel.send('Le bot ne peut pas mute ce membre.')
  10.         const reason = args.slice(1).join(' ') || 'Aucune raison fournie.'
  11.         let muteRole = message.guild.roles.cache.find(role => role.name === 'Muted')
  12.         if (!muteRole) {
  13.             muteRole = await message.guild.roles.create({
  14.                 data: {
  15.                     name: 'Muted',
  16.                     permissions: 0
  17.                 }
  18.             })
  19.             message.guild.channels.cache.forEach(channel => channel.createOverwrite(muteRole, {
  20.                 SEND_MESSAGES: false,
  21.                 CONNECT: false,
  22.                 ADD_REACTIONS: false
  23.             }))
  24.         }
  25.         await member.roles.add(muteRole)
  26.         message.channel.send(`${member} a été mute !`)
  27.     },
  28.     name: 'mute',
  29.     guildOnly: true
  30. }
  31.  
  32. // unmute.js
  33. module.exports = {
  34.     run: async (message, args) => {
  35.         if (!message.member.hasPermission('MANAGE_MESSAGES')) return message.channel.send('Vous n\'avez pas la permission d\'utiliser cette commande.')
  36.         const member = message.mentions.members.first()
  37.         if (!member) return message.channel.send('Veuillez mentionner le membre à unmute.')
  38.         if (member.id === message.guild.ownerID) return message.channel.send('Vous ne pouvez unmute le propriétaire du serveur.')
  39.         if (message.member.roles.highest.comparePositionTo(member.roles.highest) < 1 && message.author.id !== message.guild.ownerID) return message.channel.send('Vous ne pouvez pas unmute ce membre.')
  40.         if (!member.manageable) return message.channel.send('Le bot ne peut pas unmute ce membre.')
  41.         const reason = args.slice(1).join(' ') || 'Aucune raison fournie.'
  42.         const muteRole = message.guild.roles.cache.find(role => role.name === 'Muted')
  43.         if (!muteRole) return message.channel.send('Il n\'y a pas de muterole.')
  44.         await member.roles.remove(muteRole)
  45.         message.channel.send(`${member} a été unmute !`)
  46.     },
  47.     name: 'unmute',
  48.     guildOnly: true
  49. }
  50.  
  51. // index.js
  52. const Discord = require('discord.js'),
  53.     client = new Discord.Client({
  54.         fetchAllMembers: true,
  55.         partials: ['MESSAGE', 'REACTION']
  56.     }),
  57.     config = require('./config.json'),
  58.     fs = require('fs'),
  59.     humanizeDuration = require('humanize-duration'),
  60.     cooldown = new Set()
  61.  
  62. client.login(config.token)
  63. client.commands = new Discord.Collection()
  64.  
  65. fs.readdir('./commands', (err, files) => {
  66.     if (err) throw err
  67.     files.forEach(file => {
  68.         if (!file.endsWith('.js')) return
  69.         const command = require(`./commands/${file}`)
  70.         client.commands.set(command.name, command)
  71.     })
  72. })
  73.  
  74. client.on('message', message => {
  75.     if (message.type !== 'DEFAULT' || message.author.bot) return
  76.  
  77.     if (!message.member.hasPermission('MANAGE_MESSAGES')) {
  78.         const duration = config.cooldown[message.channel.id]
  79.         if (duration) {
  80.             const id = `${message.channel.id}_${message.author.id}`
  81.             if (cooldown.has(id)) {
  82.                 message.delete()
  83.                 return message.channel.send(`Ce salon est soumis a un cooldown de ${humanizeDuration(duration, {language: 'fr'})}.`).then(sent => sent.delete({timeout: 5e3}))
  84.             }
  85.             cooldown.add(id)
  86.             setTimeout(() => cooldown.delete(id), duration)
  87.         }
  88.     }
  89.  
  90.     const args = message.content.trim().split(/ +/g)
  91.     const commandName = args.shift().toLowerCase()
  92.     if (!commandName.startsWith(config.prefix)) return
  93.     const command = client.commands.get(commandName.slice(config.prefix.length))
  94.     if (!command) return
  95.     if (command.guildOnly && !message.guild) return message.channel.send('Cette commande ne peut être utilisée que dans un serveur.')
  96.     command.run(message, args, client)
  97. })
  98.  
  99. client.on('guildMemberAdd', member => {
  100.     member.guild.channels.cache.get(config.greeting.channel).send(`${member}`, new Discord.MessageEmbed()
  101.         .setDescription(`${member} a rejoint le serveur. Nous sommes désormais ${member.guild.memberCount} ! 🎉`)
  102.         .setColor('#00ff00'))
  103.     member.roles.add(config.greeting.role)
  104. })
  105.  
  106. client.on('guildMemberRemove', member => {
  107.     member.guild.channels.cache.get(config.greeting.channel).send(new Discord.MessageEmbed()
  108.         .setDescription(`${member.user.tag} a quitté le serveur... 😢`)
  109.         .setColor('#ff0000'))
  110. })
  111.  
  112. client.on('messageReactionAdd', (reaction, user) => {
  113.     if (!reaction.message.guild || user.bot) return
  114.     const reactionRoleElem = config.reactionRole[reaction.message.id]
  115.     if (!reactionRoleElem) return
  116.     const prop = reaction.emoji.id ? 'id' : 'name'
  117.     const emoji = reactionRoleElem.emojis.find(emoji => emoji[prop] === reaction.emoji[prop])
  118.     if (emoji) reaction.message.guild.member(user).roles.add(emoji.roles)
  119.     else reaction.users.remove(user)
  120. })
  121.  
  122. client.on('messageReactionRemove', (reaction, user) => {
  123.     if (!reaction.message.guild || user.bot) return
  124.     const reactionRoleElem = config.reactionRole[reaction.message.id]
  125.     if (!reactionRoleElem || !reactionRoleElem.removable) return
  126.     const prop = reaction.emoji.id ? 'id' : 'name'
  127.     const emoji = reactionRoleElem.emojis.find(emoji => emoji[prop] === reaction.emoji[prop])
  128.     if (emoji) reaction.message.guild.member(user).roles.remove(emoji.roles)
  129. })
  130.  
  131. client.on('ready', () => {
  132.     const statuses = [
  133.         () => `${client.guilds.cache.size} serveurs`,
  134.         () => `${client.guilds.cache.reduce((acc, guild) => acc + guild.memberCount, 0)} utilisateurs`
  135.     ]
  136.     let i = 0
  137.     setInterval(() => {
  138.         client.user.setActivity(statuses[i](), {type: 'PLAYING'})
  139.         i = ++i % statuses.length
  140.     }, 1e4)
  141. })
  142.  
  143. client.on('channelCreate', channel => {
  144.     if (!channel.guild) return
  145.     const muteRole = channel.guild.roles.cache.find(role => role.name === 'Muted')
  146.     if (!muteRole) return
  147.     channel.createOverwrite(muteRole, {
  148.         SEND_MESSAGES: false,
  149.         CONNECT: false,
  150.         ADD_REACTIONS: false
  151.     })
  152. })
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement