Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // index.js
- const Discord = require('discord.js'),
- client = new Discord.Client({
- partials: ['MESSAGE', 'REACTION'],
- fetchAllMembers: true
- }),
- config = require('./config.json'),
- fs = require('fs'),
- humanizeDuration = require('humanize-duration'),
- cooldown = new Set()
- client.login(config.token)
- client.commands = new Discord.Collection()
- client.db = require('./db.json')
- fs.readdir('./commands', (err, files) => {
- if (err) throw err
- files.forEach(file => {
- if (!file.endsWith('.js')) return
- const command = require(`./commands/${file}`)
- client.commands.set(command.name, command)
- })
- })
- client.on('message', message => {
- if (message.type !== 'DEFAULT' || message.author.bot) return
- if (message.guild) {
- if (!message.member.hasPermission('MANAGE_CHANNELS') && client.db.lockedChannels.includes(message.channel.id)) return message.delete()
- if (!message.member.hasPermission('MANAGE_MESSAGES')) {
- const duration = config.cooldown[message.channel.id]
- if (duration) {
- const id = `${message.channel.id}_${message.author.id}`
- if (cooldown.has(id)) {
- message.delete()
- return message.channel.send(`Ce salon est soumis a un cooldown de ${humanizeDuration(duration, {language: 'fr'})}.`).then(sent => sent.delete({timeout: 5e3}))
- }
- cooldown.add(id)
- setTimeout(() => cooldown.delete(id), duration)
- }
- }
- }
- const args = message.content.trim().split(/ +/g)
- const commandName = args.shift().toLowerCase()
- if (!commandName.startsWith(config.prefix)) return
- const command = client.commands.get(commandName.slice(config.prefix.length))
- if (!command) return
- if (command.guildOnly && !message.guild) return message.channel.send('Cette commande ne peut être utilisée que dans un serveur.')
- command.run(message, args, client)
- })
- client.on('guildMemberAdd', member => {
- member.guild.channels.cache.get(config.greeting.channel).send(`${member}`, new Discord.MessageEmbed()
- .setDescription(`${member} a rejoint le serveur. Nous sommes désormais ${member.guild.memberCount} ! 🎉`)
- .setColor('#00ff00'))
- member.roles.add(config.greeting.role)
- })
- client.on('guildMemberRemove', member => {
- member.guild.channels.cache.get(config.greeting.channel).send(new Discord.MessageEmbed()
- .setDescription(`${member.user.tag} a quitté le serveur... 😢`)
- .setColor('#ff0000'))
- })
- client.on('messageReactionAdd', (reaction, user) => {
- if (!reaction.message.guild || user.bot) return
- const reactionRoleElem = config.reactionRole[reaction.message.id]
- if (!reactionRoleElem) return
- const prop = reaction.emoji.id ? 'id' : 'name'
- const emoji = reactionRoleElem.emojis.find(emoji => emoji[prop] === reaction.emoji[prop])
- if (emoji) reaction.message.guild.member(user).roles.add(emoji.roles)
- else reaction.users.remove(user)
- })
- client.on('messageReactionRemove', (reaction, user) => {
- if (!reaction.message.guild || user.bot) return
- const reactionRoleElem = config.reactionRole[reaction.message.id]
- if (!reactionRoleElem || !reactionRoleElem.removable) return
- const prop = reaction.emoji.id ? 'id' : 'name'
- const emoji = reactionRoleElem.emojis.find(emoji => emoji[prop] === reaction.emoji[prop])
- if (emoji) reaction.message.guild.member(user).roles.remove(emoji.roles)
- })
- client.on('ready', () => {
- const statuses = [
- () => `${client.guilds.cache.size} serveurs`,
- () => `${client.guilds.cache.reduce((acc, guild) => acc + guild.memberCount, 0)} utilisateurs`
- ]
- let i = 0
- setInterval(() => {
- client.user.setActivity(statuses[i](), {type: 'PLAYING'})
- i = ++i % statuses.length
- }, 1e4)
- setInterval(() => {
- const [bots, humans] = client.guilds.cache.first().members.cache.partition(member => member.user.bot)
- client.channels.cache.get(config.serverStats.humans).setName(`Humains : ${humans.size}`)
- client.channels.cache.get(config.serverStats.bots).setName(`🤖 Bots : ${bots.size}`)
- client.channels.cache.get(config.serverStats.total).setName(`Total : ${client.guilds.cache.first().memberCount}`)
- }, 3e4)
- })
- client.on('channelCreate', channel => {
- if (!channel.guild) return
- const muteRole = channel.guild.roles.cache.find(role => role.name === 'Muted')
- if (!muteRole) return
- channel.createOverwrite(muteRole, {
- SEND_MESSAGES: false,
- CONNECT: false,
- ADD_REACTIONS: false
- })
- })
- // user-info.js
- const Discord = require('discord.js'),
- moment = require('moment')
- module.exports = {
- run: (message, args, client) => {
- const member = message.mentions.members.first() || message.member
- message.channel.send(new Discord.MessageEmbed()
- .addField('Membre', member, true)
- .addField('Tag', member.user.tag, true)
- .addField('Date de création du compte', moment(member.user.createdAt).format('[Le] DD/MM/YYYY [à] HH:mm:ss'), true)
- .addField('Date d\'arrivée sur le serveur', moment(member.joinedAt).format('[Le] DD/MM/YYYY [à] HH:mm:ss'), true)
- .addField('Date de début de boost', member.premiumSince ? moment(member.premiumSince).format('[Le] DD/MM/YYYY [à] HH:mm:ss') : 'Ne boost pas', true)
- .addField('Infractions', client.db.warns[member.id] ? client.db.warns[member.id].length : 'Aucune', true)
- .setThumbnail(member.user.displayAvatarURL())
- .setFooter(`ID : ${member.id}`))
- },
- name: 'user-info',
- guildOnly: true
- }
- // role-info.js
- const Discord = require('discord.js'),
- moment = require('moment')
- module.exports = {
- run: message => {
- const role = message.mentions.roles.first()
- if (!role) return message.channel.send('Veuillez mentionner le rôle dont vous voulez voir les infos.')
- message.channel.send(new Discord.MessageEmbed()
- .addField('Rôle', role, true)
- .addField('Membres le possédant', role.members.size, true)
- .addField('Couleur', role.hexColor, true)
- .addField('Date de création', moment(role.createdAt).format('[Le] DD/MM/YYYY [à] HH:mm:ss'), true)
- .addField('Affiché séparément', role.hoist ? 'Oui' : 'Non', true)
- .addField('Mentionnable', role.mentionable ? 'Oui' : 'Non', true)
- .setFooter(`ID : ${role.id}`)
- .setColor(role.hexColor))
- },
- name: 'role-info',
- guildOnly: true
- }
- // server-info.js
- const Discord = require('discord.js'),
- moment = require('moment')
- module.exports = {
- run: message => {
- message.channel.send(new Discord.MessageEmbed()
- .addField('Nom', message.guild.name, true)
- .addField('Région', message.guild.region, true)
- .addField('Membres', `${message.guild.memberCount} membres\n${message.guild.members.cache.filter(member => !member.user.bot).size} humains\n${message.guild.members.cache.filter(member => member.user.bot).size} bots`, true)
- .addField('Salons', `${message.guild.channels.cache.size} salons\n${message.guild.channels.cache.filter(channel => channel.type === 'text').size} salons textuels\n${message.guild.channels.cache.filter(channel => channel.type === 'voice').size} salons vocaux\n${message.guild.channels.cache.filter(channel => channel.type === 'category').size} catégories`, true)
- .addField('Emojis', `${message.guild.emojis.cache.size} emojis\n${message.guild.emojis.cache.filter(emoji => !emoji.animated).size} emojis statiques\n${message.guild.emojis.cache.filter(emoji => emoji.animated).size} emojis animés`, true)
- .addField('Rôles', message.guild.roles.cache.size, true)
- .addField('Propriétaire', message.guild.owner, true)
- .addField('Date de création', moment(message.guild.createdAt).format('[Le] DD/MM/YYYY [à] HH:mm:ss'), true)
- .addField('Nitro boost', `Tier : ${message.guild.premiumTier}\nNombre de boosts : ${message.guild.premiumSubscriptionCount}`, true)
- .setFooter(`ID : ${message.guild.id}`)
- .setThumbnail(message.guild.iconURL())
- .setImage(message.guild.bannerURL()))
- },
- name: 'server-info',
- guildOnly: true
- }
Add Comment
Please, Sign In to add comment