Advertisement
ala89

TUTO DEV #4 - CREER UN BOT DISCORD : FAIRE UN REACTION ROLE

Jun 16th, 2020 (edited)
5,318
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // index.js
  2. const Discord = require('discord.js'),
  3.     client = new Discord.Client({
  4.         fetchAllMembers: true,
  5.         partials: ['MESSAGE', 'REACTION']
  6.     }),
  7.     config = require('./config.json'),
  8.     fs = require('fs')
  9.  
  10. client.login(config.token)
  11. client.commands = new Discord.Collection()
  12.  
  13. fs.readdir('./commands', (err, files) => {
  14.     if (err) throw err
  15.     files.forEach(file => {
  16.         if (!file.endsWith('.js')) return
  17.         const command = require(`./commands/${file}`)
  18.         client.commands.set(command.name, command)
  19.     })
  20. })
  21.  
  22. client.on('message', message => {
  23.     if (message.type !== 'DEFAULT' || message.author.bot) return
  24.  
  25.     const args = message.content.trim().split(/ +/g)
  26.     const commandName = args.shift().toLowerCase()
  27.     if (!commandName.startsWith(config.prefix)) return
  28.     const command = client.commands.get(commandName.slice(config.prefix.length))
  29.     if (!command) return
  30.     command.run(message, args, client)
  31. })
  32.  
  33. client.on('guildMemberAdd', member => {
  34.     member.guild.channels.cache.get(config.greeting.channel).send(`${member}`, new Discord.MessageEmbed()
  35.         .setDescription(`${member} a rejoint le serveur. Nous sommes désormais ${member.guild.memberCount} ! 🎉`)
  36.         .setColor('#00ff00'))
  37.     member.roles.add(config.greeting.role)
  38. })
  39.  
  40. client.on('guildMemberRemove', member => {
  41.     member.guild.channels.cache.get(config.greeting.channel).send(new Discord.MessageEmbed()
  42.         .setDescription(`${member.user.tag} a quitté le serveur... 😢`)
  43.         .setColor('#ff0000'))
  44. })
  45.  
  46. client.on('messageReactionAdd', (reaction, user) => {
  47.     if (!reaction.message.guild || user.bot) return
  48.     const reactionRoleElem = config.reactionRole[reaction.message.id]
  49.     if (!reactionRoleElem) return
  50.     const prop = reaction.emoji.id ? 'id' : 'name'
  51.     const emoji = reactionRoleElem.emojis.find(emoji => emoji[prop] === reaction.emoji[prop])
  52.     if (emoji) reaction.message.guild.member(user).roles.add(emoji.roles)
  53.     else reaction.users.remove(user)
  54. })
  55.  
  56. client.on('messageReactionRemove', (reaction, user) => {
  57.     if (!reaction.message.guild || user.bot) return
  58.     const reactionRoleElem = config.reactionRole[reaction.message.id]
  59.     if (!reactionRoleElem || !reactionRoleElem.removable) return
  60.     const prop = reaction.emoji.id ? 'id' : 'name'
  61.     const emoji = reactionRoleElem.emojis.find(emoji => emoji[prop] === reaction.emoji[prop])
  62.     if (emoji) reaction.message.guild.member(user).roles.remove(emoji.roles)
  63. })
  64.  
  65. // config.json
  66. {
  67.     "token": "votre token",
  68.     "prefix": "!",
  69.     "greeting": {
  70.         "channel": "718970110164992041",
  71.         "role": "718970160647635056"
  72.     },
  73.     "reactionRole": {
  74.         "721812281347932311": {
  75.             "emojis": [{
  76.                 "id": "719563468008718348",
  77.                 "roles": "722404495371534358"
  78.             }]
  79.         },
  80.         "721812680763244596": {
  81.             "removable": true,
  82.             "emojis": [{
  83.                 "name": "💻",
  84.                 "roles": ["722088168458813584", "722088234963828747"]
  85.             }, {
  86.                 "name": "🎮",
  87.                 "roles": "722088255402672139"
  88.             }]
  89.         }
  90.     }
  91. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement