├── .gitignore ├── .replit ├── Collection └── index.js ├── LICENSE ├── Modèles ├── antilink.js ├── blacklist-servers.js ├── blacklist.js ├── custom.js ├── owner.js ├── prefix.js ├── premium.js ├── reaction-roles.js ├── toggle.js ├── warn.js └── whitelist.js ├── Procfile ├── README.md ├── Radios ├── contact.js ├── funradio.js ├── galaxie.js ├── hardcoreradio.js ├── hitajam.js ├── nrj.js ├── radiofg.js ├── radiolist.js ├── radiometal.js ├── skyrock.js ├── stop.js ├── studiobrussel.js └── techno4ever.js ├── config.json ├── data ├── enmap.sqlite ├── enmap.sqlite-shm └── enmap.sqlite-wal ├── giveaways.json ├── index.js ├── json.sqlite ├── package-lock.json └── package.json /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules -------------------------------------------------------------------------------- /.replit: -------------------------------------------------------------------------------- 1 | language = "nodejs" 2 | run = "node index.js" -------------------------------------------------------------------------------- /Collection/index.js: -------------------------------------------------------------------------------- 1 | const { Collection } = require("discord.js") 2 | 3 | const afk = new Collection() 4 | const antijoin = new Collection() 5 | const antiaddbot = new Collection() 6 | const antichannel = new Collection() 7 | 8 | module.exports = { afk, antijoin, antiaddbot, antichannel } -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Sxlim 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Modèles/antilink.js: -------------------------------------------------------------------------------- 1 | const mongoose = require('mongoose') 2 | 3 | const antilinkSchema = new mongoose.Schema({ 4 | GuildID: String, 5 | }); 6 | 7 | const antilinkModel = module.exports = new mongoose.model('antilink', antilinkSchema) 8 | -------------------------------------------------------------------------------- /Modèles/blacklist-servers.js: -------------------------------------------------------------------------------- 1 | const mongoose = require('mongoose') 2 | 3 | module.exports = mongoose.model( 4 | 'blacklisted-servers ', 5 | new mongoose.Schema({ 6 | Server: String 7 | })) -------------------------------------------------------------------------------- /Modèles/blacklist.js: -------------------------------------------------------------------------------- 1 | const mongoose = require('mongoose') 2 | 3 | let Schema = new mongoose.Schema({ 4 | id: String, 5 | Guild: String, 6 | }) 7 | 8 | module.exports = mongoose.model('blacklist', Schema) -------------------------------------------------------------------------------- /Modèles/custom.js: -------------------------------------------------------------------------------- 1 | const mongoose = require('mongoose') 2 | 3 | module.exports = mongoose.model('custom', new mongoose.Schema({ 4 | Guild: String, 5 | Command: String, 6 | Response: String 7 | })) -------------------------------------------------------------------------------- /Modèles/owner.js: -------------------------------------------------------------------------------- 1 | const m = require('mongoose') 2 | 3 | module.exports = m.model( 4 | "owner", 5 | new m.Schema({ 6 | User: String, 7 | Guild: String 8 | }) 9 | ) -------------------------------------------------------------------------------- /Modèles/prefix.js: -------------------------------------------------------------------------------- 1 | const mongoose = require('mongoose') 2 | 3 | let Schema = new mongoose.Schema({ 4 | Guild: String, 5 | Prefix: String, 6 | }) 7 | 8 | module.exports = mongoose.model('prefix', Schema) -------------------------------------------------------------------------------- /Modèles/premium.js: -------------------------------------------------------------------------------- 1 | const m = require('mongoose') 2 | 3 | module.exports = m.model( 4 | "premium", 5 | new m.Schema({ 6 | User: String, 7 | Guild: String 8 | }) 9 | ) -------------------------------------------------------------------------------- /Modèles/reaction-roles.js: -------------------------------------------------------------------------------- 1 | const mongoose = require('mongoose') 2 | 3 | const Schema = new mongoose.Schema({ 4 | Guild: String, 5 | Message: String, 6 | Roles: Object, 7 | }); 8 | 9 | module.exports = mongoose.model('reaction-roles', Schema) -------------------------------------------------------------------------------- /Modèles/toggle.js: -------------------------------------------------------------------------------- 1 | const mongoose = require('mongoose') 2 | 3 | let Schema = new mongoose.Schema({ 4 | Guild: String, 5 | Cmds: Array, 6 | }) 7 | 8 | module.exports = mongoose.model('cmds', Schema) -------------------------------------------------------------------------------- /Modèles/warn.js: -------------------------------------------------------------------------------- 1 | const mongoose = require('mongoose') 2 | 3 | let Schema = new mongoose.Schema({ 4 | guildid: String, 5 | user: String, 6 | content: Array 7 | }) 8 | 9 | module.exports = mongoose.model('warns', Schema) -------------------------------------------------------------------------------- /Modèles/whitelist.js: -------------------------------------------------------------------------------- 1 | const m = require('mongoose') 2 | 3 | module.exports = m.model( 4 | "whitelist", 5 | new m.Schema({ 6 | User: String, 7 | Guild: String 8 | }) 9 | ) -------------------------------------------------------------------------------- /Procfile: -------------------------------------------------------------------------------- 1 | Worker: node index.js -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # CrowBot 2 | **:grinning: Un bot 100% Personnalisable en fonction de votre serveur** 3 | 4 | # Instalation 5 | **npm i dans le terminal** 6 | 7 | # Config 8 | **Aller dans le config.json mettez le token de votre bot & l'id du owner du bot** 9 | -------------------------------------------------------------------------------- /Radios/contact.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | //const ffmpeg = require("ffmpeg-binaries"); 3 | const opusscript = require("opusscript"); 4 | 5 | module.exports.run = async (bot, message, args) => { 6 | if (!message.member.hasPermission("MANAGE_MESSAGES")) return message.reply("Tu n'as pas la permission d'exécuter cette commande!"); 7 | if (message.member.voiceChannel) { 8 | message.member.voiceChannel.join() 9 | .then(connection => { 10 | let embed = new Discord.RichEmbed() 11 | .setTitle("Contact") 12 | .setDescription("**Connected**") 13 | .setColor('#606060') 14 | .setURL("http://www.mycontact.fr/") 15 | .setImage("https://i.imgur.com/3yLtz7v.png") 16 | .setTimestamp() 17 | connection.playArbitraryInput(`http://radio-contact.ice.infomaniak.ch/radio-contact-high`); 18 | message.channel.send(embed); 19 | message.delete().catch(); 20 | }) 21 | .catch(console.log); 22 | } else { 23 | message.reply('Tu dois etre dans un channel vocal !'); 24 | } 25 | 26 | console.log(`Commande ${message.author.lastMessage} executé sur le serveur ${message.guild.name} dans le salon ${message.channel.name} par le membre ${message.author.username} le ${message.createdAt}`) 27 | console.log(`${bot.user.username} a rejoint un salon vocal`) 28 | 29 | }; 30 | 31 | module.exports.help = { 32 | name: "contact" 33 | } -------------------------------------------------------------------------------- /Radios/funradio.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | //const ffmpeg = require("ffmpeg-binaries"); 3 | const opusscript = require("opusscript"); 4 | 5 | module.exports.run = async (bot, message, args) => { 6 | if (!message.member.hasPermission("MANAGE_MESSAGES")) return message.reply("Tu n'as pas la permission d'exécuter cette commande!"); 7 | if (message.member.voiceChannel) { 8 | message.member.voiceChannel.join() 9 | .then(connection => { 10 | let embed = new Discord.RichEmbed() 11 | .setTitle("Fun Radio France") 12 | .setDescription("**Connected**") 13 | .setColor('#606060') 14 | .setURL("https://www.funradio.fr/") 15 | .setImage("https://i.imgur.com/w9ACgMv.png") 16 | .setTimestamp() 17 | connection.playArbitraryInput(`http://icecast.rtl.fr/fun-idf-48-72.aac`); 18 | message.channel.send(embed); 19 | message.delete().catch(); 20 | }) 21 | .catch(console.log); 22 | } else { 23 | message.reply('Tu dois etre dans un channel vocal !'); 24 | } 25 | 26 | console.log(`Commande ${message.author.lastMessage} executé sur le serveur ${message.guild.name} dans le salon ${message.channel.name} par le membre ${message.author.username} le ${message.createdAt}`) 27 | console.log(`${bot.user.username} a rejoint un salon vocal`) 28 | 29 | }; 30 | 31 | module.exports.help = { 32 | name: "funradio" 33 | } -------------------------------------------------------------------------------- /Radios/galaxie.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | //const ffmpeg = require("ffmpeg-binaries"); 3 | const opusscript = require("opusscript"); 4 | 5 | module.exports.run = async (bot, message, args) => { 6 | if (!message.member.hasPermission("MANAGE_MESSAGES")) return message.reply("Tu n'as pas la permission d'exécuter cette commande!"); 7 | if (message.member.voiceChannel) { 8 | message.member.voiceChannel.join() 9 | .then(connection => { 10 | let embed = new Discord.RichEmbed() 11 | .setTitle("Galaxie Radio") 12 | .setDescription("**Connected**") 13 | .setColor('#606060') 14 | .setURL("http://www.galaxieradio.fr/") 15 | .setImage("https://i.imgur.com/6f0TKPR.png") 16 | .setTimestamp() 17 | connection.playArbitraryInput(`https://listen.radioking.com/radio/15684/stream/29075`); 18 | message.channel.send(embed); 19 | message.delete().catch(); 20 | }) 21 | .catch(console.log); 22 | } else { 23 | message.reply('Tu dois etre dans un channel vocal !'); 24 | } 25 | 26 | console.log(`Commande ${message.author.lastMessage} executé sur le serveur ${message.guild.name} dans le salon ${message.channel.name} par le membre ${message.author.username} le ${message.createdAt}`) 27 | console.log(`${bot.user.username} a rejoint un salon vocal`) 28 | 29 | }; 30 | 31 | module.exports.help = { 32 | name: "galaxie" 33 | } -------------------------------------------------------------------------------- /Radios/hardcoreradio.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | //const ffmpeg = require("ffmpeg-binaries"); 3 | const opusscript = require("opusscript"); 4 | 5 | module.exports.run = async (bot, message, args) => { 6 | if (!message.member.hasPermission("MANAGE_MESSAGES")) return message.reply("Tu n'as pas la permission d'exécuter cette commande!"); 7 | if (message.member.voiceChannel) { 8 | message.member.voiceChannel.join() 9 | .then(connection => { 10 | let embed = new Discord.RichEmbed() 11 | .setTitle("Hardcore Radio") 12 | .setDescription("**Connected**") 13 | .setColor('#606060') 14 | .setURL("https://www.hardcoreradio.nl/") 15 | .setImage("https://i.imgur.com/sO4dJQg.png") 16 | .setTimestamp() 17 | connection.playArbitraryInput(`http://shoutcast1.hardcoreradio.nl:9000/hcr.ogg`); 18 | message.channel.send(embed); 19 | message.delete().catch(); 20 | }) 21 | .catch(console.log); 22 | } else { 23 | message.reply('Tu dois etre dans un channel vocal !'); 24 | } 25 | 26 | console.log(`Commande ${message.author.lastMessage} executé sur le serveur ${message.guild.name} dans le salon ${message.channel.name} par le membre ${message.author.username} le ${message.createdAt}`) 27 | console.log(`${bot.user.username} a rejoint un salon vocal`) 28 | 29 | }; 30 | 31 | module.exports.help = { 32 | name: "hardcoreradio" 33 | } -------------------------------------------------------------------------------- /Radios/hitajam.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | //const ffmpeg = require("ffmpeg-binaries"); 3 | const opusscript = require("opusscript"); 4 | 5 | module.exports.run = async (bot, message, args) => { 6 | if (!message.member.hasPermission("MANAGE_MESSAGES")) return message.reply("Tu n'as pas la permission d'exécuter cette commande!"); 7 | if (message.member.voiceChannel) { 8 | message.member.voiceChannel.join() 9 | .then(connection => { 10 | let embed = new Discord.RichEmbed() 11 | .setTitle("hit-a-jam") 12 | .setDescription("**Connected**") 13 | .setColor('#606060') 14 | .setURL("https://hit-a-jam.com") 15 | .setImage("https://imgur.com/YzKFC5x.jpg") 16 | .setTimestamp() 17 | connection.playArbitraryInput(`https://www.radioking.com/play/hit-a-jam`); 18 | message.channel.send(embed); 19 | message.delete().catch(); 20 | }) 21 | .catch(console.log); 22 | } else { 23 | message.reply('Tu dois etre dans un channel vocal !'); 24 | } 25 | 26 | console.log(`Commande ${message.author.lastMessage} executé sur le serveur ${message.guild.name} dans le salon ${message.channel.name} par le membre ${message.author.username} le ${message.createdAt}`) 27 | console.log(`${bot.user.username} a rejoint un salon vocal`) 28 | 29 | }; 30 | 31 | module.exports.help = { 32 | name: "hitajam" 33 | } -------------------------------------------------------------------------------- /Radios/nrj.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | //const ffmpeg = require("ffmpeg-binaries"); 3 | const opusscript = require("opusscript"); 4 | 5 | module.exports.run = async (bot, message, args) => { 6 | if (!message.member.hasPermission("MANAGE_MESSAGES")) return message.reply("Tu n'as pas la permission d'exécuter cette commande!"); 7 | if (message.member.voiceChannel) { 8 | message.member.voiceChannel.join() 9 | .then(connection => { 10 | let embed = new Discord.RichEmbed() 11 | .setTitle("NRJ France") 12 | .setDescription("**Connected**") 13 | .setColor('#606060') 14 | .setURL("http://www.nrj.fr/") 15 | .setImage("https://i.imgur.com/fhcaHew.png") 16 | .setTimestamp() 17 | connection.playArbitraryInput(`http://cdn.nrjaudio.fm/audio1/fr/40094/aac_64.mp3`); 18 | message.channel.send(embed); 19 | message.delete().catch(); 20 | }) 21 | .catch(console.log); 22 | } else { 23 | message.reply('Tu dois etre dans un channel vocal !'); 24 | } 25 | 26 | console.log(`Commande ${message.author.lastMessage} executé sur le serveur ${message.guild.name} dans le salon ${message.channel.name} par le membre ${message.author.username} le ${message.createdAt}`) 27 | console.log(`${bot.user.username} a rejoint un salon vocal`) 28 | 29 | }; 30 | 31 | module.exports.help = { 32 | name: "nrj" 33 | } -------------------------------------------------------------------------------- /Radios/radiofg.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | //const ffmpeg = require("ffmpeg-binaries"); 3 | const opusscript = require("opusscript"); 4 | 5 | module.exports.run = async (bot, message, args) => { 6 | if (!message.member.hasPermission("MANAGE_MESSAGES")) return message.reply("Tu n'as pas la permission d'exécuter cette commande!"); 7 | if (message.member.voiceChannel) { 8 | message.member.voiceChannel.join() 9 | .then(connection => { 10 | let embed = new Discord.RichEmbed() 11 | .setTitle("Radio FG") 12 | .setDescription("**Connected**") 13 | .setColor('#606060') 14 | .setURL("http://www.radiofg.com/") 15 | .setImage("https://i.imgur.com/gFGkUAV.png") 16 | .setTimestamp() 17 | connection.playArbitraryInput(`http://radiofg.impek.com/fg`); 18 | message.channel.send(embed); 19 | message.delete().catch(); 20 | }) 21 | .catch(console.log); 22 | } else { 23 | message.reply('Tu dois etre dans un channel vocal !'); 24 | } 25 | 26 | console.log(`Commande ${message.author.lastMessage} executé sur le serveur ${message.guild.name} dans le salon ${message.channel.name} par le membre ${message.author.username} le ${message.createdAt}`) 27 | console.log(`${bot.user.username} a rejoint un salon vocal`) 28 | 29 | }; 30 | 31 | module.exports.help = { 32 | name: "radiofg" 33 | } -------------------------------------------------------------------------------- /Radios/radiolist.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | 3 | module.exports.run = async (bot, message) => { 4 | let embed = new Discord.RichEmbed() 5 | .setTitle("Liste des Radios") 6 | .setDescription("Tu dois etre connecter a un salon vocal pour executer les commandes suivante") 7 | .setThumbnail("https://i.imgur.com/RVH6pir.png") 8 | .addField("Hardcore Radio:", "``!hardcoreradio``") 9 | .addField("Fun Radio France:", "``!funradio``") 10 | .addField("Contact:", "``!contact``") 11 | .addField("NRJ France:", "``!nrj``") 12 | .addField("Skyrock:", "``!skyrock``") 13 | .addField("Radio FG:", "``!radiofg``") 14 | .addField("Galaxie Radio", "``!galaxie``") 15 | .addField("Techno4ever", "``!techno4ever``") 16 | .addField("Hit-a-jam", "``!hitajam``") 17 | .addField("Studio Brussel", "``!studiobrussel``") 18 | .setColor('#606060') 19 | .setFooter(`Demandé par ${message.author.username}`) 20 | .setTimestamp() 21 | message.channel.send(embed); 22 | message.delete().catch(); 23 | 24 | console.log(`Commande ${message.author.lastMessage} executé sur le serveur ${message.guild.name} dans le salon ${message.channel.name} par le membre ${message.author.username} le ${message.createdAt}`) 25 | 26 | } 27 | 28 | module.exports.help = { 29 | name: "radiolist", 30 | } 31 | -------------------------------------------------------------------------------- /Radios/radiometal.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | //const ffmpeg = require("ffmpeg-binaries"); 3 | const opusscript = require("opusscript"); 4 | 5 | module.exports.run = async (bot, message, args) => { 6 | if (!message.member.hasPermission("MANAGE_MESSAGES")) return message.reply("Tu n'as pas la permission d'exécuter cette commande!"); 7 | if (message.member.voiceChannel) { 8 | message.member.voiceChannel.join() 9 | .then(connection => { 10 | let embed = new Discord.RichEmbed() 11 | .setTitle("Radio Metal") 12 | .setDescription("**Connected**") 13 | .setColor('#606060') 14 | .setURL("http://www.radiometal.com/") 15 | .setImage("https://i.imgur.com/IHEEnu2.png") 16 | .setTimestamp() 17 | connection.playArbitraryInput(`http://radio.radiometal.com/radiometal.mp3`); 18 | message.channel.send(embed); 19 | message.delete().catch(); 20 | }) 21 | .catch(console.log); 22 | } else { 23 | message.reply('Tu dois etre dans un channel vocal !'); 24 | } 25 | 26 | console.log(`Commande ${message.author.lastMessage} executé sur le serveur ${message.guild.name} dans le salon ${message.channel.name} par le membre ${message.author.username} le ${message.createdAt}`) 27 | console.log(`${bot.user.username} a rejoint un salon vocal`) 28 | 29 | }; 30 | 31 | module.exports.help = { 32 | name: "radiometal" 33 | } -------------------------------------------------------------------------------- /Radios/skyrock.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | //const ffmpeg = require("ffmpeg-binaries"); 3 | const opusscript = require("opusscript"); 4 | 5 | module.exports.run = async (bot, message, args) => { 6 | if (!message.member.hasPermission("MANAGE_MESSAGES")) return message.reply("Tu n'as pas la permission d'exécuter cette commande!"); 7 | if (message.member.voiceChannel) { 8 | message.member.voiceChannel.join() 9 | .then(connection => { 10 | let embed = new Discord.RichEmbed() 11 | .setTitle("Skyrock") 12 | .setDescription("**Connected**") 13 | .setColor('#606060') 14 | .setURL("http://skyrock.fm/") 15 | .setImage("https://i.imgur.com/9ttfdCG.png") 16 | .setTimestamp() 17 | connection.playArbitraryInput(`http://icecast.skyrock.net/s/lille_aac_64k`); 18 | message.channel.send(embed); 19 | message.delete().catch(); 20 | }) 21 | .catch(console.log); 22 | } else { 23 | message.reply('Tu dois etre dans un channel vocal !'); 24 | } 25 | 26 | console.log(`Commande ${message.author.lastMessage} executé sur le serveur ${message.guild.name} dans le salon ${message.channel.name} par le membre ${message.author.username} le ${message.createdAt}`) 27 | console.log(`${bot.user.username} a rejoint un salon vocal`) 28 | 29 | }; 30 | 31 | module.exports.help = { 32 | name: "skyrock" 33 | } -------------------------------------------------------------------------------- /Radios/stop.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | const YTDL = require("ytdl-core"); 3 | 4 | module.exports.run = async (bot, message, args, ops) => { 5 | if (!message.member.hasPermission("STREAM")) return errors.noPerms(message, "STREAM"); 6 | if (!message.member.voiceChannel) return errors.noinchanvocal(message); 7 | if (!message.guild.me.voiceChannel) return errors.botpresence(message); 8 | if (!message.guild.me.voiceChannelID) return errors.noevenchan(message); 9 | message.guild.me.voiceChannel.leave(); 10 | let stopembed = new Discord.RichEmbed() 11 | .setTitle("**Déconnexion**") 12 | .setDescription('Fin de la lecture, déconnexion du channel vocal ...') 13 | .setFooter(`Déconnexion effectuée par ${message.author.username}`) 14 | message.channel.send(stopembed); 15 | message.delete().catch(); 16 | 17 | console.log(`Commande ${message.author.lastMessage} executé sur le serveur ${message.guild.name} dans le salon ${message.channel.name} par le membre ${message.author.username} le ${message.createdAt}`) 18 | console.log(`${bot.user.username} a quitté un salon vocal`) 19 | 20 | } 21 | 22 | module.exports.help = { 23 | name: "stop", 24 | } 25 | -------------------------------------------------------------------------------- /Radios/studiobrussel.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | const opusscript = require("opusscript"); 3 | 4 | module.exports.run = async (bot, message, args) => { 5 | if (!message.member.hasPermission("MANAGE_MESSAGES")) return message.reply("Tu n'as pas la permission d'exécuter cette commande!"); 6 | if (message.member.voiceChannel) { 7 | message.member.voiceChannel.join() 8 | .then(connection => { 9 | let embed = new Discord.RichEmbed() 10 | .setTitle("Studio Brussel") 11 | .setDescription("**Connected**") 12 | .setColor('#606060') 13 | .setURL("https://stubru.be/live") 14 | .setImage("https://imgur.com/2rfDwuo.jpg") 15 | .setTimestamp() 16 | connection.playArbitraryInput(`http://icecast.vrtcdn.be/stubru-high.mp3`); 17 | message.channel.send(embed); 18 | message.delete().catch(); 19 | }) 20 | .catch(console.log); 21 | } else { 22 | message.reply('Tu dois etre dans un channel vocal !'); 23 | } 24 | 25 | console.log(`Commande ${message.author.lastMessage} executé sur le serveur ${message.guild.name} dans le salon ${message.channel.name} par le membre ${message.author.username} le ${message.createdAt}`) 26 | console.log(`${bot.user.username} a rejoint un salon vocal`) 27 | 28 | }; 29 | 30 | module.exports.help = { 31 | name: "studiobrussel" 32 | } -------------------------------------------------------------------------------- /Radios/techno4ever.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | //const ffmpeg = require("ffmpeg-binaries"); 3 | const opusscript = require("opusscript"); 4 | 5 | module.exports.run = async (bot, message, args) => { 6 | if (!message.member.hasPermission("MANAGE_MESSAGES")) return message.reply("Tu n'as pas la permission d'exécuter cette commande!"); 7 | if (message.member.voiceChannel) { 8 | message.member.voiceChannel.join() 9 | .then(connection => { 10 | let embed = new Discord.RichEmbed() 11 | .setTitle("techno4ever.fm") 12 | .setDescription("**Connected**") 13 | .setColor('#606060') 14 | .setURL("https://www.techno4ever.fm/") 15 | .setImage("https://i.imgur.com/3arOJC3.png") 16 | .setTimestamp() 17 | connection.playArbitraryInput(`https://tunein.t4e.dj/main/dsl/mp3`); 18 | message.channel.send(embed); 19 | message.delete().catch(); 20 | }) 21 | .catch(console.log); 22 | } else { 23 | message.reply('Tu dois etre dans un channel vocal !'); 24 | } 25 | 26 | console.log(`Commande ${message.author.lastMessage} executé sur le serveur ${message.guild.name} dans le salon ${message.channel.name} par le membre ${message.author.username} le ${message.createdAt}`) 27 | console.log(`${bot.user.username} a rejoint un salon vocal`) 28 | 29 | }; 30 | 31 | module.exports.help = { 32 | name: "techno4ever" 33 | } -------------------------------------------------------------------------------- /config.json: -------------------------------------------------------------------------------- 1 | { 2 | "prefix": "+", 3 | "owner": "771103287281188907", 4 | "hostedBy": true, 5 | "everyoneMention": false, 6 | "maximum_leaderboard": 50, 7 | "embedcolor": "GREEN", 8 | "logsColor": "RANDOM", 9 | "mongoPass": "mongodb+srv://dbUser:XHdWbC3cLTdXHCzM@cluster0.ivqv1.mongodb.net/myFirstDatabase?retryWrites=true&w=majority" 10 | } -------------------------------------------------------------------------------- /data/enmap.sqlite: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SxmyzZ/CrowBot/52149e1913d7db91cbeec97339cfbed6db737915/data/enmap.sqlite -------------------------------------------------------------------------------- /data/enmap.sqlite-shm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SxmyzZ/CrowBot/52149e1913d7db91cbeec97339cfbed6db737915/data/enmap.sqlite-shm -------------------------------------------------------------------------------- /data/enmap.sqlite-wal: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SxmyzZ/CrowBot/52149e1913d7db91cbeec97339cfbed6db737915/data/enmap.sqlite-wal -------------------------------------------------------------------------------- /giveaways.json: -------------------------------------------------------------------------------- 1 | [{"messageID":"878362263755587594","channelID":"878337764746199050","guildID":"878048745646874674","startAt":1629488303470,"endAt":1629488323471,"ended":true,"winnerCount":1,"prize":"NITRO CLASSIC MON REUF","messages":{"giveaway":"","giveawayEnded":"@everyone\n\n🎉🎉 **GIVEAWAY TERMINÉE** 🎉🎉","inviteToParticipate":"Clique sur 🎉 pour participer !","timeRemaining":"Temps restant: **{duration}**","winMessage":"Bien joué, {winners}! Tu gagne **{prize}**!\n{messageURL}","embedFooter":"Pando Bots","noWinner":"Giveaway Annulé pas assez de participants","winners":"winner(s)","endedAt":"Ended at","hostedBy":"Organisé par: {user}","units":{"seconds":"seconds","minutes":"minutes","hours":"hours","days":"days","pluralS":false},"giveawayEnd":""},"hostedBy":"<@621808482382905345>","exemptPermissions":[],"bonusEntries":"[]","winnerIDs":["819752863428247623"]},{"messageID":"878363887647490069","channelID":"878337764746199050","guildID":"878048745646874674","startAt":1629488690665,"endAt":1629488710666,"ended":true,"winnerCount":1,"prize":"NITRO CLASSIC MON REUF","messages":{"giveaway":"","giveawayEnded":"<:giveaway:862823125448523806><:giveaway:862823125448523806> **GIVEAWAY TERMINÉE** <:giveaway:862823125448523806><:giveaway:862823125448523806>","inviteToParticipate":"Réagissez avec 🎉 pour participer!","timeRemaining":"Temps restant: **{duration}**","winMessage":"Félicitations, {winners}! Tu as gagné **{prize}** !\n{messageURL}","noWinner":"Giveaway annulé, aucune participation valide.","winners":"Gagnant(s)","endedAt":"Fini dans","hostedBy":"Geré par: {user}","units":{"seconds":"secondes","minutes":"minutes","hours":"heures","days":"jours","pluralS":false},"giveawayEnd":""},"hostedBy":"<@621808482382905345>","exemptPermissions":[],"bonusEntries":"[]","winnerIDs":["621808482382905345"]},{"messageID":"878364121177940008","channelID":"878337764746199050","guildID":"878048745646874674","startAt":1629488746316,"endAt":1629488766319,"ended":true,"winnerCount":1,"prize":"NITRO CLASSIC MON REUF","messages":{"giveaway":"","giveawayEnded":"<:giveaway:862823125448523806><:giveaway:862823125448523806> **GIVEAWAY TERMINÉE** <:giveaway:862823125448523806><:giveaway:862823125448523806>","inviteToParticipate":"Réagissez avec 🎉 pour participer!","embedFooter":"Senku.","timeRemaining":"Temps restant: **{duration}**","winMessage":"Félicitations, {winners}! Tu as gagné **{prize}** !\n{messageURL}","noWinner":"Giveaway annulé, aucune participation valide.","winners":"Gagnant(s)","endedAt":"Fini dans","hostedBy":"Geré par: {user}","units":{"seconds":"secondes","minutes":"minutes","hours":"heures","days":"jours","pluralS":false},"giveawayEnd":""},"hostedBy":"<@621808482382905345>","exemptPermissions":[],"bonusEntries":"[]","winnerIDs":["621808482382905345"]},{"messageID":"878365355456757840","channelID":"878337764746199050","guildID":"878048745646874674","startAt":1629489040521,"endAt":1629489060522,"ended":true,"winnerCount":1,"prize":"NITRO CLASSIC MON REUF","messages":{"giveaway":"","giveawayEnded":"<:giveaway:862823125448523806><:giveaway:862823125448523806> **GIVEAWAY TERMINÉE** <:giveaway:862823125448523806><:giveaway:862823125448523806>","inviteToParticipate":"Réagissez avec 🎉 pour participer!","embedFooter":"Senku.","timeRemaining":"Temps restant: **{duration}**","winMessage":"Félicitations, {winners}! Tu as gagné **{prize}** !\n{messageURL}","noWinner":"Giveaway annulé, aucune participation valide.","winners":"Gagnant(s)","endedAt":"Fini dans","hostedBy":"Geré par: {user}","units":{"seconds":"secondes","minutes":"minutes","hours":"heures","days":"jours","pluralS":false},"giveawayEnd":""},"hostedBy":"<@621808482382905345>","exemptPermissions":[],"bonusEntries":"[]","winnerIDs":[]},{"messageID":"878365787189035080","channelID":"878337764746199050","guildID":"878048745646874674","startAt":1629489143611,"endAt":1629489163613,"ended":true,"winnerCount":1,"prize":"NITRO CLASSIC MON REUF","messages":{"giveaway":"","giveawayEnded":"<:giveaway:862823125448523806><:giveaway:862823125448523806> **GIVEAWAY TERMINÉE** <:giveaway:862823125448523806><:giveaway:862823125448523806>","inviteToParticipate":"Réagissez avec 🎉 pour participer!","embedFooter":"Senku.","timeRemaining":"Temps restant: **{duration}**","winMessage":"Félicitations, {winners}! Tu as gagné **{prize}** !\n{messageURL}","noWinner":"Giveaway annulé, aucune participation valide.","winners":"Gagnant(s)","endedAt":"Fini dans","hostedBy":"Geré par: {user}","units":{"seconds":"secondes","minutes":"minutes","hours":"heures","days":"jours","pluralS":false},"giveawayEnd":""},"hostedBy":"<@621808482382905345>","exemptPermissions":[],"bonusEntries":"[]","winnerIDs":[]},{"messageID":"878365999378862121","channelID":"878337764746199050","guildID":"878048745646874674","startAt":1629489194202,"endAt":1629489204385,"ended":true,"winnerCount":1,"prize":"NITRO CLASSIC MON REUF","messages":{"giveaway":"","giveawayEnded":"<:giveaway:862823125448523806><:giveaway:862823125448523806> **GIVEAWAY TERMINÉE** <:giveaway:862823125448523806><:giveaway:862823125448523806>","inviteToParticipate":"Réagissez avec 🎉 pour participer!","embedFooter":"Senku.","timeRemaining":"Temps restant: **{duration}**","winMessage":"Félicitations, {winners}! Tu as gagné **{prize}** !\n{messageURL}","noWinner":"Giveaway annulé, aucune participation valide.","winners":"Gagnant(s)","endedAt":"Fini dans","hostedBy":"Geré par: {user}","units":{"seconds":"secondes","minutes":"minutes","hours":"heures","days":"jours","pluralS":false},"giveawayEnd":""},"hostedBy":"<@621808482382905345>","exemptPermissions":[],"bonusEntries":"[]","winnerIDs":[]},{"messageID":"878366518658863104","channelID":"878337764746199050","guildID":"878048745646874674","startAt":1629489317931,"endAt":1629489325534,"ended":true,"winnerCount":1,"prize":"NITRO CLASSIC MON REUF","messages":{"giveaway":"","giveawayEnded":"<:giveaway:878366085970276372><:giveaway:878366085970276372> **GIVEAWAY TERMINÉE** <:giveaway:878366085970276372><:giveaway:878366085970276372>","inviteToParticipate":"Réagissez avec 🎉 pour participer!","embedFooter":"Senku.","timeRemaining":"Temps restant: **{duration}**","winMessage":"Félicitations, {winners}! Tu as gagné **{prize}** !\n{messageURL}","noWinner":"Giveaway annulé, aucune participation valide.","winners":"Gagnant(s)","endedAt":"Fini dans","hostedBy":"Geré par: {user}","units":{"seconds":"secondes","minutes":"minutes","hours":"heures","days":"jours","pluralS":false},"giveawayEnd":""},"hostedBy":"<@621808482382905345>","exemptPermissions":[],"bonusEntries":"[]","winnerIDs":[]},{"messageID":"878366764487016488","channelID":"878337764746199050","guildID":"878048745646874674","startAt":1629489376521,"endAt":1629489386521,"ended":true,"winnerCount":1,"prize":"NITRO CLASSIC MON REUF","messages":{"giveaway":"","giveawayEnded":"<:giveaway:878366085970276372><:giveaway:878366085970276372> **GIVEAWAY TERMINÉE** <:giveaway:878366085970276372><:giveaway:878366085970276372>","inviteToParticipate":"Réagissez avec 🎉 pour participer!","embedFooter":"Senku.","timeRemaining":"Temps restant: **{duration}**","winMessage":"Félicitations, {winners}! Tu as gagné **{prize}** !\n{messageURL}","noWinner":"Giveaway annulé, aucune participation valide.","winners":"Gagnant(s)","endedAt":"Fini dans","hostedBy":"Geré par: {user}","units":{"seconds":"secondes","minutes":"minutes","hours":"heures","days":"jours","pluralS":false},"giveawayEnd":""},"hostedBy":"<@621808482382905345>","exemptPermissions":[],"bonusEntries":"[]","winnerIDs":["621808482382905345"]},{"messageID":"878368466535596122","channelID":"878337764746199050","guildID":"878048745646874674","startAt":1629489782352,"endAt":1629497034333,"ended":true,"winnerCount":1,"prize":"NITRO CLASSIC MON REUF","messages":{"giveaway":"","giveawayEnded":"<:giveaway:878366085970276372><:giveaway:878366085970276372> **GIVEAWAY TERMINÉE** <:giveaway:878366085970276372><:giveaway:878366085970276372>","inviteToParticipate":"Réagissez avec 🎉 pour participer!","embedFooter":"Senku.","timeRemaining":"Temps restant: **{duration}**","winMessage":"Félicitations, {winners}! Tu as gagné **{prize}** !\n{messageURL}","noWinner":"Giveaway annulé, aucune participation valide.","winners":"Gagnant(s)","endedAt":"Fini dans","hostedBy":"Geré par: {user}","units":{"seconds":"secondes","minutes":"minutes","hours":"heures","days":"jours","pluralS":false},"giveawayEnd":""},"hostedBy":"<@621808482382905345>","exemptPermissions":[],"bonusEntries":"[]","winnerIDs":["621808482382905345"]},{"messageID":"878368478753587200","channelID":"878337764746199050","guildID":"878048745646874674","startAt":1629489785244,"endAt":1629493387363,"ended":true,"winnerCount":1,"prize":"NITRO CLASSIC MON REUF","messages":{"giveaway":"","giveawayEnded":"<:giveaway:878366085970276372><:giveaway:878366085970276372> **GIVEAWAY TERMINÉE** <:giveaway:878366085970276372><:giveaway:878366085970276372>","inviteToParticipate":"Réagissez avec 🎉 pour participer!","embedFooter":"Senku.","timeRemaining":"Temps restant: **{duration}**","winMessage":"Félicitations, {winners}! Tu as gagné **{prize}** !\n{messageURL}","noWinner":"Giveaway annulé, aucune participation valide.","winners":"Gagnant(s)","endedAt":"Fini dans","hostedBy":"Geré par: {user}","units":{"seconds":"secondes","minutes":"minutes","hours":"heures","days":"jours","pluralS":false},"giveawayEnd":""},"hostedBy":"<@621808482382905345>","exemptPermissions":[],"bonusEntries":"[]","winnerIDs":[]},{"messageID":"878368494654201866","channelID":"878337764746199050","guildID":"878048745646874674","startAt":1629489789006,"endAt":1629489793310,"ended":true,"winnerCount":1,"prize":"NITRO CLASSIC MON REUF","messages":{"giveaway":"","giveawayEnded":"<:giveaway:878366085970276372><:giveaway:878366085970276372> **GIVEAWAY TERMINÉE** <:giveaway:878366085970276372><:giveaway:878366085970276372>","inviteToParticipate":"Réagissez avec 🎉 pour participer!","embedFooter":"Senku.","timeRemaining":"Temps restant: **{duration}**","winMessage":"Félicitations, {winners}! Tu as gagné **{prize}** !\n{messageURL}","noWinner":"Giveaway annulé, aucune participation valide.","winners":"Gagnant(s)","endedAt":"Fini dans","hostedBy":"Geré par: {user}","units":{"seconds":"secondes","minutes":"minutes","hours":"heures","days":"jours","pluralS":false},"giveawayEnd":""},"hostedBy":"<@621808482382905345>","exemptPermissions":[],"bonusEntries":"[]","winnerIDs":[]},{"messageID":"878368523351654461","channelID":"878337764746199050","guildID":"878048745646874674","startAt":1629489795925,"endAt":1629489860158,"ended":true,"winnerCount":1,"prize":"NITRO CLASSIC MON REUF","messages":{"giveaway":"","giveawayEnded":"<:giveaway:878366085970276372><:giveaway:878366085970276372> **GIVEAWAY TERMINÉE** <:giveaway:878366085970276372><:giveaway:878366085970276372>","inviteToParticipate":"Réagissez avec 🎉 pour participer!","embedFooter":"Senku.","timeRemaining":"Temps restant: **{duration}**","winMessage":"Félicitations, {winners}! Tu as gagné **{prize}** !\n{messageURL}","noWinner":"Giveaway annulé, aucune participation valide.","winners":"Gagnant(s)","endedAt":"Fini dans","hostedBy":"Geré par: {user}","units":{"seconds":"secondes","minutes":"minutes","hours":"heures","days":"jours","pluralS":false},"giveawayEnd":""},"hostedBy":"<@621808482382905345>","exemptPermissions":[],"bonusEntries":"[]","winnerIDs":[]},{"messageID":"878845702032207932","channelID":"878048745646874678","guildID":"878048745646874674","startAt":1629603564285,"endAt":1629603584285,"ended":true,"winnerCount":1,"prize":"bg","messages":{"giveaway":"","giveawayEnded":"<:giveaway:878366085970276372><:giveaway:878366085970276372> **GIVEAWAY TERMINÉE** <:giveaway:878366085970276372><:giveaway:878366085970276372>","inviteToParticipate":"Réagissez avec 🎉 pour participer!","embedFooter":"Senku.","timeRemaining":"Temps restant: **{duration}**","winMessage":"Félicitations, {winners}! Tu as gagné **{prize}** !\n{messageURL}","noWinner":"Giveaway annulé, aucune participation valide.","winners":"Gagnant(s)","endedAt":"Fini dans","hostedBy":"Geré par: {user}","units":{"seconds":"secondes","minutes":"minutes","hours":"heures","days":"jours","pluralS":false},"giveawayEnd":""},"hostedBy":"<@621808482382905345>","exemptPermissions":[],"bonusEntries":"[]","winnerIDs":["621808482382905345"]},{"messageID":"886373752588349470","channelID":"885144194199457813","guildID":"811573906447007744","startAt":1631398370591,"endAt":1631398430593,"ended":true,"winnerCount":1,"prize":"nitro","messages":{"giveaway":"","giveawayEnded":"@everyone\n\n🎉🎉 **GIVEAWAY ENDED** 🎉🎉","inviteToParticipate":"React with 🎉 to participate!","timeRemaining":"Time remaining: **{duration}**","winMessage":"Congratulations, {winners}! You won **{prize}**!\n{messageURL}","embedFooter":"Powered by the discord-giveaways package","noWinner":"Giveaway cancelled, no valid participations.","winners":"winner(s)","endedAt":"Ended at","hostedBy":"Hosted by: {user}","units":{"seconds":"seconds","minutes":"minutes","hours":"hours","days":"days","pluralS":false},"giveawayEnd":""},"hostedBy":"<@854448629083144262>","exemptPermissions":[],"bonusEntries":"[]","winnerIDs":[]},{"messageID":"886568653590515713","channelID":"886553273681731604","guildID":"811573906447007744","startAt":1631444838658,"endAt":1631444868659,"ended":true,"winnerCount":1,"prize":"nitro test","messages":{"giveaway":"","giveawayEnded":"@everyone\n\n🎉🎉 **GIVEAWAY ENDED** 🎉🎉","inviteToParticipate":"React with 🎉 to participate!","timeRemaining":"Time remaining: **{duration}**","winMessage":"Congratulations, {winners}! You won **{prize}**!\n{messageURL}","embedFooter":"Powered by the discord-giveaways package","noWinner":"Giveaway cancelled, no valid participations.","winners":"winner(s)","endedAt":"Ended at","hostedBy":"Hosted by: {user}","units":{"seconds":"seconds","minutes":"minutes","hours":"hours","days":"days","pluralS":false},"giveawayEnd":""},"hostedBy":"<@854448629083144262>","exemptPermissions":[],"bonusEntries":"[]","winnerIDs":["854448629083144262"]},{"messageID":"886569691701714964","channelID":"886553273681731604","guildID":"811573906447007744","startAt":1631445086070,"endAt":1631445116071,"ended":true,"winnerCount":1,"prize":"nitro test","messages":{"giveaway":"","giveawayEnded":"@everyone\n\n🎉🎉 **GIVEAWAY ENDED** 🎉🎉","inviteToParticipate":"React with 🎉 to participate!","timeRemaining":"Time remaining: **{duration}**","winMessage":"Congratulations, {winners}! You won **{prize}**!\n{messageURL}","embedFooter":"Powered by the discord-giveaways package","noWinner":"Giveaway cancelled, no valid participations.","winners":"winner(s)","endedAt":"Ended at","hostedBy":"Hosted by: {user}","units":{"seconds":"seconds","minutes":"minutes","hours":"hours","days":"days","pluralS":false},"giveawayEnd":""},"hostedBy":"<@854448629083144262>","exemptPermissions":[],"bonusEntries":"[]","winnerIDs":[]}] -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | 3 | const client = new Discord.Client() 4 | 5 | const config = require("./config.json") 6 | 7 | require('@weky/inlinereply'); 8 | 9 | const ascii = require("ascii-table"); 10 | 11 | const table = new ascii().setHeading("Commandes", "Statut"); 12 | 13 | const prefix = config.prefix 14 | 15 | module.exports = client; 16 | 17 | const prefixSchema = require("./Modèles/prefix") 18 | 19 | require("discord-buttons")(client) 20 | 21 | const distube = require('distube') 22 | 23 | client.prefix = async function(message) { 24 | let custom; 25 | 26 | const data = await prefixSchema.findOne({ Guild : message.guild.id }) 27 | .catch(err => console.log(err)) 28 | 29 | if(data) { 30 | custom = data.Prefix; 31 | } else { 32 | custom = prefix; 33 | } 34 | return custom; 35 | } 36 | 37 | client.distube = new distube(client, { 38 | leaveOnFinish: true, 39 | leaveOnEmpty: true, 40 | searchSongs: false, 41 | emitNewSongOnly: true, 42 | leaveOnStop: true, 43 | youtubeDL: true, 44 | updateYouTubeDL: true, 45 | youtubeCookie: 46 | "GPS=1; YSC=w5dGoHzqQRI; VISITOR_INFO1_LIVE=B4ElBqxSDv4; PREF=tz=Asia.Hong_Kong" 47 | }); 48 | 49 | const voiceCollection = new Discord.Collection() 50 | 51 | client.on("voiceStatueUpdate", async (oldState, newState) => { 52 | const user = await client.users.fetch(newState.id) 53 | const member = newState.guild.member(user) 54 | 55 | if(!oldState && newState.channel.id === "879526217253023775") { 56 | const channel = await newState.guild.channels.create("🌸・" + user, { 57 | type: 'voice', 58 | parent: newState.channel.parent 59 | }) 60 | member.voice.setChannel(channel) 61 | voiceCollection.set(user.id, channel.id) 62 | } else if (!newState.channel) { 63 | if(oldState.channel === voiceCollection.get(newState.id)) return oldState.channel.delete() 64 | } 65 | }) 66 | 67 | 68 | client.distube 69 | .on('playSong', (message, queue, song) => 70 | message.channel.send( 71 | `En train de jouer \`${song.name}\` - \`${ 72 | song.formattedDuration 73 | }\``, 74 | )) 75 | .on('addSong', (message, queue, song) => 76 | message.channel.send( 77 | `J'ai ajouté à la queue ${song.name} - \`${song.formattedDuration}\` , demandé par ${song.user}`, 78 | )) 79 | 80 | const blacklist = require('./Modèles/blacklist') 81 | 82 | const blacklistguild = require('./Modèles/blacklist-servers') 83 | 84 | const Schema = require("./Modèles/reaction-roles") 85 | 86 | const bg = require('./config.json').embedcolor 87 | 88 | const moment = require("moment") 89 | 90 | const { antijoin } = require("./Collection") 91 | 92 | const ms = require("ms") 93 | 94 | client.on("guildMemberAdd", async (member) => { 95 | const getCollection = antijoin.get(member.guild.id) 96 | if (!getCollection) return; 97 | if(!getCollection.includes((value) => value.id === member.id)) { 98 | getCollection.push(member.user) 99 | } 100 | member.kick({ reason: "Le mode anti-raid a été activé." }) 101 | }) 102 | 103 | const antilinkData = require('./Modèles/antilink') 104 | client.on("message", async(message)=>{ 105 | const antilink = await antilinkData.findOne({ 106 | GuildID: message.guild.id 107 | }) 108 | if (antilink) { 109 | if (message.content.match("https://") || message.content.match("discord.gg") || message.content.match("www.")) { 110 | message.delete(); 111 | return message.channel.send("L'anti-link a été activé.").then(msg=>{ 112 | let time = '2s' 113 | setTimeout(function(){ 114 | msg.delete(); 115 | }, ms(time)); 116 | }) 117 | } else { 118 | return; 119 | } 120 | } else if (!antilink) { 121 | return; 122 | } 123 | }); 124 | 125 | const db = require('quick.db') 126 | 127 | client.on('message', async message => { 128 | db.add(`guildMessages_${message.guild.id}_${message.author.id}`, 1) 129 | }) 130 | 131 | client.on ("ready", async (message) => { 132 | console.log(`${client.user.username} est maintenant actif !`); 133 | console.log(`${client.user.username} est connecté sur ${client.guilds.size} serveurs !`); 134 | client.user.setActivity("!help", {type: "GAME"}); 135 | let activNum = 0; 136 | setInterval(function() { 137 | if (activNum === 0) { 138 | client.user.setActivity("Bot Protection Snk Fr 🌟") 139 | activNum = 1 140 | } else if (activNum === 1) { 141 | client.user.setActivity("Bot Protection Snk Fr 🌟") 142 | activNum = 0 143 | } 144 | }, 3 * 1000) 145 | }); 146 | 147 | 148 | 149 | 150 | client.on('messageDelete', async message => { 151 | 152 | const args = message.content.slice(prefix.length).trim().split(/ +/g); 153 | const command = args.shift().toLowerCase(); 154 | 155 | function sleep(milliseconds) { 156 | var start = new Date().getTime(); 157 | for (var i = 0; i < 1e7; i++) { 158 | if ((new Date().getTime() - start) > milliseconds) { 159 | break; 160 | } 161 | } 162 | } 163 | 164 | if (message.guild) { 165 | if (message.author.bot) return; 166 | var y = db.get('messagedelete_' + message.guild.id); 167 | if (y !== `enabled`) return; 168 | var x = db.get('loggingchannel_' + message.guild.id); 169 | x = client.channels.cache.get(x); 170 | if (message.channel == x) return; 171 | var embed = new Discord.MessageEmbed() 172 | .setColor('#FF0000') 173 | .setAuthor(message.author.tag, message.author.avatarURL) 174 | .setDescription(`**Deleted message by** ${message.author} **in the channel :** ${message.channel} \n${message.content}`) 175 | .setTimestamp(); 176 | x.send(embed).catch(); 177 | } 178 | 179 | }); 180 | 181 | client.on("channelCreate", async function (channel) { 182 | if (!channel.guild) return; 183 | var y = db.get(`channelcreate_${channel.guild.id}`); 184 | if (y !== 'enabled') return; 185 | var x = db.get('loggingchannel_' + channel.guild.id); 186 | var x = client.channels.cache.get(x); 187 | var embed = new Discord.MessageEmbed() 188 | .setColor('#09dc0b') 189 | .setAuthor(channel.guild.name, channel.guild.iconURL) 190 | .setTitle('Channel created') 191 | .addField('Channel', channel) 192 | .addField('Type', channel.type) 193 | .setFooter(`ID: ${channel.guild.id}`, channel.guild.iconURL) 194 | .setTimestamp(); 195 | x.send(embed).catch(); 196 | 197 | 198 | }); 199 | 200 | client.on("channelDelete", async function (channel) { 201 | if (!channel.guild) return; 202 | var y = db.get(`channelcreate_${channel.guild.id}`); 203 | if (y !== 'enabled') return; 204 | var x = db.get('loggingchannel_' + channel.guild.id); 205 | var x = client.channels.cache.get(x); 206 | 207 | var embed = new Discord.MessageEmbed() 208 | .setColor('#FF0000') 209 | .setAuthor(channel.guild.name, channel.guild.iconURL) 210 | .setTitle('Channel deleted') 211 | .addField('Name', channel.name) 212 | .addField('Type', channel.type) 213 | .setFooter(`ID: ${channel.guild.id}`, channel.guild.iconURL) 214 | .setTimestamp(); 215 | x.send(embed).catch(); 216 | 217 | }); 218 | client.on("emojiCreate", async function (emoji) { 219 | 220 | var y = db.get(`emojicreate_${emoji.guild.id}`); 221 | if (y !== 'enabled') return; 222 | var x = db.get('loggingchannel_' + emoji.guild.id); 223 | var x = client.channels.cache.get(x); 224 | 225 | var embed = new Discord.MessageEmbed() 226 | .setColor('#09dc0b') 227 | .setAuthor(emoji.guild.name, emoji.guild.iconURL) 228 | .setTitle('Emoji created') 229 | .addField('Emoji added', emoji + ` :${emoji.name}:`) 230 | .setFooter(`ID: ${emoji.guild.id}`, emoji.guild.iconURL) 231 | .setTimestamp(); 232 | x.send(embed).catch(); 233 | 234 | 235 | }); 236 | client.on("emojiDelete", async function (emoji) { 237 | var y = db.get(`emojidelete_${emoji.guild.id}`); 238 | if (y !== 'enabled') return; 239 | var x = db.get('loggingchannel_' + emoji.guild.id); 240 | var x = client.channels.cache.get(x); 241 | 242 | var embed = new Discord.MessageEmbed() 243 | .setColor('#FF0000') 244 | .setAuthor(emoji.guild.name, emoji.guild.iconURL) 245 | .setTitle('Emoji deleted') 246 | .addField('Name', `[:${emoji.name}:](${emoji.url})`) 247 | .setFooter(`ID: ${emoji.guild.id}`, emoji.guild.iconURL) 248 | .setTimestamp(); 249 | x.send(embed).catch(); 250 | 251 | 252 | }); 253 | client.on("guildBanAdd", async function (guild, user) { 254 | 255 | var y = db.get(`guildbanadd_${guild.id}`); 256 | if (y !== 'enabled') return; 257 | var x = db.get('loggingchannel_' + guild.id); 258 | var x = client.channels.cache.get(x); 259 | 260 | var embed = new Discord.MessageEmbed() 261 | .setColor('#FF0000') 262 | .setAuthor(user.tag, user.avatarURL) 263 | .setDescription(`${user.tag} **has been banned** `) 264 | .setFooter(`ID: ${guild.id}`, guild.iconURL) 265 | .setTimestamp(); 266 | x.send(embed).catch(); 267 | 268 | }); 269 | client.on("guildBanRemove", async function (guild, user) { 270 | 271 | var y = db.get(`guildbanremove_${guild.id}`); 272 | if (y !== 'enabled') return; 273 | var x = db.get('loggingchannel_' + guild.id); 274 | var x = client.channels.cache.get(x); 275 | 276 | var embed = new Discord.MessageEmbed() 277 | .setColor('GREEN') 278 | .setAuthor(user.tag, user.avatarURL) 279 | .setDescription(`à${user.tag} **has been unbanned**`) 280 | .setFooter(`ID: ${guild.id}`, guild.iconURL) 281 | .setTimestamp(); 282 | x.send(embed).catch(); 283 | }); 284 | client.on("guildMemberAdd", async function (member) { 285 | 286 | var y = db.get(`guildmemberadd_${member.guild.id}`); 287 | if (y !== 'enabled') return; 288 | var x = db.get('loggingchannel_' + member.guild.id); 289 | var x = client.channels.cache.get(x); 290 | 291 | var embed = new Discord.MessageEmbed() 292 | .setColor('GREEN') 293 | .setAuthor(member.user.tag, member.user.avatarURL) 294 | .setDescription(`${member.user.tag} **joined the server**`) 295 | .addField('Account created', member.user.createdAt) 296 | .setFooter(`ID: ${member.user.id}`) 297 | .setTimestamp(); 298 | x.send(embed).catch(); 299 | }); 300 | client.on("guildMemberRemove", async function (member) { 301 | var y = db.get(`guildmemberremove_${member.guild.id}`); 302 | if (y !== 'enabled') return; 303 | var x = db.get('loggingchannel_' + member.guild.id); 304 | var x = client.channels.cache.get(x); 305 | 306 | var embed = new Discord.MessageEmbed() 307 | .setColor('RED') 308 | .setAuthor(member.user.tag, member.user.avatarURL) 309 | .setDescription(`${member.user.tag} **leaved the server**`) 310 | .setFooter(`ID: ${member.user.id}`) 311 | .setTimestamp(); 312 | x.send(embed).catch(); 313 | 314 | }); 315 | 316 | client.on("messageDeleteBulk", async function (messages) { 317 | 318 | var y = db.get(`messagebulkdelete_${messages.random().guild.id}`); 319 | if (y !== 'enabled') return; 320 | var x = db.get('loggingchannel_' + messages.random().guild.id); 321 | var x = client.channels.cache.get(x); 322 | if (messages.random().channel == x) return; 323 | 324 | await messages.array().reverse().forEach(m => { 325 | var x = m.createdAt.toString().split(' '); 326 | fs.appendFile('messagebulkdelete.txt', `[${m.author.tag}], [#${m.channel.name}]: ["${m.content}"], sendend the [${x[0]} ${x[1]} ${x[2]} ${x[3]} ${x[4]}]\n\n`, function (err) { 327 | if (err) throw err; 328 | console.log('Saved!'); 329 | }); 330 | }); 331 | 332 | var embed = new Discord.MessageEmbed() 333 | .setColor('#FFD700') 334 | .setAuthor(messages.random().guild.name, messages.random().guild.iconURL) 335 | .setDescription(`**${messages.array().length} messages has been cleared in ** ${messages.random().channel}`) 336 | .setFooter(`ID: ${messages.random().guild.id}`) 337 | .setTimestamp(); 338 | await x.send(embed).catch(); 339 | await x.send(`Here are all of the messages: \n`).catch(); 340 | await x.send(({ 341 | files: [{ 342 | attachment: 'messagebulkdelete.txt' 343 | }] 344 | })).catch(); 345 | 346 | fs.unlink('messagebulkdelete.txt', function (err) { 347 | if (err) throw err; 348 | console.log('File deleted!'); 349 | }); 350 | 351 | }); 352 | 353 | client.on("roleCreate", async function (role) { 354 | var y = db.get(`rolecreate_${role.guild.id}`); 355 | if (y !== 'enabled') return; 356 | var x = db.get('loggingchannel_' + role.guild.id); 357 | var x = client.channels.cache.get(x); 358 | 359 | 360 | var embed = new Discord.MessageEmbed() 361 | .setColor('#09dc0b') 362 | .setAuthor(role.guild.name, role.guild.iconURL) 363 | .setTitle(`Role ${role.name} created`) 364 | .setDescription(`Name: ${role.name} \nColor: ${role.color}\nMentionable: ${role.mentionable}`) 365 | .setFooter(`ID: ${role.id}`) 366 | .setTimestamp(); 367 | x.send(embed).catch(); 368 | 369 | }); 370 | client.on("roleDelete", async function (role) { 371 | 372 | var y = db.get(`roledelete_${role.guild.id}`); 373 | if (y !== 'enabled') return; 374 | var x = db.get('loggingchannel_' + role.guild.id); 375 | var x = client.channels.cache.get(x); 376 | 377 | var embed = new Discord.MessageEmbed() 378 | .setColor('#FF0000') 379 | .setAuthor(role.guild.name, role.guild.iconURL) 380 | .setTitle(`Role ${role.name} deleted`) 381 | .setDescription(`Name: ${role.name} \nColor: ${role.color}\nMentionable: ${role.mentionable}`) 382 | .setFooter(`ID: ${role.id}`) 383 | .setTimestamp(); 384 | 385 | x.send(embed).catch(); 386 | 387 | }); 388 | 389 | client.on('message', async message => { 390 | 391 | const args = message.content.slice(prefix.length).trim().split(/ +/g); 392 | const command = args.shift().toLowerCase(); 393 | if (message.content.indexOf(prefix) !== 0) return; 394 | 395 | function sleep(milliseconds) { 396 | var start = new Date().getTime(); 397 | for (var i = 0; i < 1e7; i++) { 398 | if ((new Date().getTime() - start) > milliseconds) { 399 | break; 400 | } 401 | } 402 | 403 | } 404 | 405 | if (message.content === prefix + "logs") { 406 | if (!message.guild) return 407 | if (!message.member.hasPermission(`MANAGE_CHANNELS`) || !message.member.hasPermission(`MANAGE_GUILD`)) return message.channel.send(`You need the \`MANAGE_GUILD\` and \`MANAGE_CHANNELS\` permission.`); 408 | var embed = new Discord.MessageEmbed() 409 | .setAuthor(`Here are the logs settings of ${message.guild.name}`, message.guild.iconURL) 410 | .setTitle(`Logs of ${message.guild.name}\n`) 411 | .setColor('GREEN'); 412 | var y = await db.get(`allenabled_${message.guild.id}`); 413 | if (y == 'enabled') { 414 | embed.addField('Deleted Messages [1]', "<:enable:880297789895110696>"); 415 | embed.addField('Roles creations [2]', "<:enable:880297789895110696>"); 416 | embed.addField('Roles suppression [3]', "<:enable:880297789895110696>"); 417 | embed.addField('Cleared messages (bulkDelete) [4]', "<:enable:880297789895110696>"); 418 | embed.addField('Kicked member [5]', "<:enable:880297789895110696>"); 419 | embed.addField('Joining message [6]', "<:enable:880297789895110696>"); 420 | embed.addField('Banned member [7]', "<:enable:880297789895110696>"); 421 | embed.addField('Unbanned member [8]', "<:enable:880297789895110696>"); 422 | embed.addField('Emoji creation [9]', "<:enable:880297789895110696>"); 423 | embed.addField('Emoji suppression [10]', "<:enable:880297789895110696>"); 424 | embed.addField('Channels creations [11]', "<:enable:880297789895110696>"); 425 | embed.addField('Channels suppression [12]', "<:enable:880297789895110696>"); 426 | embed.addField(`----------------------`, `Logs settings: \n\`${prefix}enable [number]\` - Enable the mentionned log\n\`${prefix}enable all\` - Enable all logs \n \`${prefix}disable [number]\` - Disable a log \n\`${prefix}disable all\` - Disable all log\n \`${prefix}reset\` - Reset logs, channel included`); 427 | var x = await db.get('loggingchannel_' + message.guild.id); 428 | if (x == null) embed.addField(`Please setup the logs channel:`, `\`${prefix}setlogs #channel\``); 429 | if (x !== null) { 430 | var y = client.channels.cache.get(x); 431 | embed.addField(`----------------------`, `The logs channel is now ${y}.`); 432 | } 433 | embed.setFooter(`Senku.`, client.user.avatarURL()); 434 | } else if (y == "disabled") { 435 | embed.addField('Deleted Messages [1]', "<:disable:880297763068342342>"); 436 | embed.addField('Roles creations [2]', "<:disable:880297763068342342>"); 437 | embed.addField('Roles suppression [3]', "<:disable:880297763068342342>"); 438 | embed.addField('Cleared messages (bulkDelete) [4]', "<:disable:880297763068342342>"); 439 | embed.addField('Kicked member [5]', "<:disable:880297763068342342>"); 440 | embed.addField('Joining message [6]', "<:disable:880297763068342342>"); 441 | embed.addField('Banned member [7]', "<:disable:880297763068342342>"); 442 | embed.addField('Unbanned member [8]', "<:disable:880297763068342342>"); 443 | embed.addField('Emoji creation [9]', "<:disable:880297763068342342>"); 444 | embed.addField('Emoji suppression [10]', "<:disable:880297763068342342>"); 445 | embed.addField('Channels creations [11]', "<:disable:880297763068342342>"); 446 | embed.addField('Channels suppression [12]', "<:disable:880297763068342342>"); 447 | embed.addField(`----------------------`, `Logs settings: \n\`${prefix}enable [number]\` - Enable the mentionned log\n\`${prefix}enable all\` - Enable all logs \n \`${prefix}disable [number]\` - Disable a log \n\`${prefix}disable all\` - Disable all log\n \`${prefix}reset\` - Reset logs, channel included`); 448 | var x = await db.get('loggingchannel_' + message.guild.id); 449 | if (x == null) embed.addField(`There is no logs channel.`, `Please do [prefix]setlogs #channel`); 450 | if (x !== null) { 451 | var y = client.channels.cache.get(x); 452 | embed.addField(`----------------------`, `The logs channel has now been set to ${y}`); 453 | } 454 | } else { 455 | 456 | var x = await db.get('messagedelete_' + message.guild.id); 457 | if (x == null || x == "disabled") { 458 | embed.addField('Deleted Messages [1]', "<:disable:880297763068342342>"); 459 | } else { 460 | embed.addField('Deleted Messages [1]', "<:enable:880297789895110696>"); 461 | } 462 | var x = await db.get('rolecreate_' + message.guild.id); 463 | if (x == null || x == "disabled") { 464 | embed.addField('Roles creations [2]', "<:disable:880297763068342342>"); 465 | } else { 466 | embed.addField('Roles creations [2]', "<:enable:880297789895110696>"); 467 | } 468 | var x = await db.get('roledelete_' + message.guild.id); 469 | if (x == null || x == "disabled") { 470 | embed.addField('Roles suppression [3]', "<:disable:880297763068342342>"); 471 | } else { 472 | embed.addField('Roles suppression [3]', "<:enable:880297789895110696>"); 473 | } 474 | var x = await db.get('messagebulkdelete_' + message.guild.id); 475 | if (x == null || x == "disabled") { 476 | embed.addField('Cleared messages (bulkDelete) [4]', "<:disable:880297763068342342>"); 477 | } else { 478 | embed.addField('Cleared messages (bulkDelete) [4]', "<:enable:880297789895110696>"); 479 | } 480 | var x = await db.get('guildmemberremove_' + message.guild.id); 481 | if (x == null || x == "disabled") { 482 | embed.addField('Kicked member [5]', "<:disable:880297763068342342>"); 483 | } else { 484 | embed.addField('Kicked member [5]', "<:enable:880297789895110696>"); 485 | } 486 | var x = await db.get('guildmemberadd_' + message.guild.id); 487 | if (x == null || x == "disabled") { 488 | embed.addField('Joining message [6]', "<:disable:880297763068342342>"); 489 | } else { 490 | embed.addField('Joining message [6]', "<:enable:880297789895110696>"); 491 | } 492 | var x = await db.get('guildbanadd_' + message.guild.id); 493 | if (x == null || x == "disabled") { 494 | embed.addField('Banned member [7]', "<:disable:880297763068342342>"); 495 | } else { 496 | embed.addField('Banned member [7]', "<:enable:880297789895110696>"); 497 | } 498 | var x = await db.get('guildbanremove_' + message.guild.id); 499 | if (x == null || x == "disabled") { 500 | embed.addField('Unbanned member [8]', "<:disable:880297763068342342>"); 501 | } else { 502 | embed.addField('Unbanned member [8]', "<:enable:880297789895110696>"); 503 | } 504 | var x = await db.get('emojicreate_' + message.guild.id); 505 | if (x == null || x == "disabled") { 506 | embed.addField('Emoji creation [9]', "<:disable:880297763068342342>"); 507 | } else { 508 | embed.addField('Emoji creation [9]', "<:enable:880297789895110696>"); 509 | } 510 | var x = await db.get('emojidelete_' + message.guild.id); 511 | if (x == null || x == "disabled") { 512 | embed.addField('Emoji suppression [10]', "<:disable:880297763068342342>"); 513 | } else { 514 | embed.addField('Emoji suppression [10]', "<:enable:880297789895110696>"); 515 | } 516 | var x = await db.get('channelcreate_' + message.guild.id); 517 | if (x == null || x == "disabled") { 518 | embed.addField('Channels creations [11]', "<:disable:880297763068342342>"); 519 | } else { 520 | embed.addField('Channels creations [11]', "<:enable:880297789895110696>"); 521 | } 522 | var x = await db.get('channeldelete_' + message.guild.id); 523 | if (x == null || x == "disabled") { 524 | embed.addField('Channels suppression [12]', "<:disable:880297763068342342>"); 525 | } else { 526 | embed.addField('Channels suppression [12]', "<:enable:880297789895110696>"); 527 | } 528 | embed.addField(`----------------------`, `Logs settings: \n\`${prefix}enable [number]\` - Enable the mentionned log\n\`${prefix}enable all\` - Enable all logs \n \`${prefix}disable [number]\` - Disable a log \n\`${prefix}disable all\` - Disable all log\n \`${prefix}reset\` - Reset logs, channel included`); 529 | var x = await db.get('loggingchannel_' + message.guild.id); 530 | if (x == null) embed.addField(`There is no logs channel.`, `Please do [prefix]setlogs #channel`); 531 | if (x !== null) { 532 | var y = client.channels.cache.get(x); 533 | embed.addField(`----------------------`, `The logs channel has now been set to ${y}`); 534 | } 535 | } 536 | embed.setFooter(`Senku.`, client.user.avatarURL()); 537 | message.channel.send(embed); 538 | 539 | } 540 | 541 | if (command == "reset") { 542 | if (!message.member.hasPermission(`MANAGE_CHANNELS`) || !message.member.hasPermission(`MANAGE_GUILD`)) return message.channel.send(`You need the \`MANAGE_GUILD\` and \`MANAGE_CHANNELS\` permission.`); 543 | await db.delete(`loggingchannel_${message.guild.id}`); 544 | await db.delete(`allenabled_${message.guild.id}`); 545 | await db.delete(`messagedelete_${message.guild.id}`); 546 | await db.delete('rolecreate_' + message.guild.id); 547 | await db.delete('roledelete_' + message.guild.id); 548 | await db.delete('messagebulkdelete_' + message.guild.id); 549 | await db.delete('guildmemberremove_' + message.guild.id); 550 | await db.delete('guildmemberadd_' + message.guild.id); 551 | await db.delete('guildbanadd_' + message.guild.id); 552 | await db.delete('guildbanremove_' + message.guild.id); 553 | await db.delete('emojicreate_' + message.guild.id); 554 | await db.delete('emojidelete_' + message.guild.id); 555 | await db.delete('channelcreate_' + message.guild.id); 556 | await db.delete('channeldelete_' + message.guild.id); 557 | message.channel.send(`I reset all logs of the server.`); 558 | } 559 | 560 | if (command == "disable") { 561 | 562 | if (!message.member.hasPermission(`MANAGE_CHANNELS`) || !message.member.hasPermission(`MANAGE_GUILD`)) return message.channel.send(`You need the \`MANAGE_GUILD\` and \`MANAGE_CHANNELS\` permission.`); 563 | if (!args[0]) return message.channel.send(`Please specify the number.`); 564 | var x = await db.get('loggingchannel_' + message.guild.id); 565 | if (x == null || x == 'none') { 566 | return message.channel.send(`Please setup the logs.`); 567 | } 568 | if (args[0] > 12 || args[0] < 1) return message.reply(`Invalid number.`); 569 | switch (args[0]) { 570 | case "1": 571 | await db.set(`messagedelete_${message.guild.id}`, 'disabled'); 572 | message.channel.send(`Disabled the log : \`Message Delete\``); 573 | await db.delete(`allenabled_${message.guild.id}`); 574 | break; 575 | case "2": 576 | await db.set(`rolecreate_${message.guild.id}`, 'disabled'); 577 | message.channel.send(`Disabled the log : \`Roles creations\``); 578 | await db.delete(`allenabled_${message.guild.id}`); 579 | break; 580 | case "3": 581 | await db.set(`roledelete_${message.guild.id}`, 'disabled'); 582 | message.channel.send(`Disabled the log : \`Roles suppression\``); 583 | await db.delete(`allenabled_${message.guild.id}`); 584 | break; 585 | case "4": 586 | await db.set(`messagebulkdelete_${message.guild.id}`, 'disabled'); 587 | message.channel.send(`Disabled the log : message \`Cleared messages (bulkDelete\``); 588 | await db.delete(`allenabled_${message.guild.id}`); 589 | break; 590 | case "5": 591 | await db.set(`guildmemberremove_${message.guild.id}`, 'disabled'); 592 | message.channel.send(`Disabled the log : \`Kicked member\``); 593 | await db.delete(`allenabled_${message.guild.id}`); 594 | break; 595 | case "6": 596 | await db.set(`guildmemberadd_${message.guild.id}`, 'disabled'); 597 | message.channel.send(`Disabled the log : \`Joining message\``); 598 | await db.delete(`allenabled_${message.guild.id}`); 599 | break; 600 | case "7": 601 | await db.set(`guildbanadd_${message.guild.id}`, 'disabled'); 602 | message.channel.send(`J'ai enlevé les logs de \`Banned members\``); 603 | await db.delete(`allenabled_${message.guild.id}`); 604 | break; 605 | case "8": 606 | await db.set(`guildbanremove_${message.guild.id}`, 'disabled'); 607 | message.channel.send(`J'ai enlevé les logs de \`Unbanned members\``); 608 | await db.delete(`allenabled_${message.guild.id}`); 609 | break; 610 | case "9": 611 | await db.set(`emojicreate_${message.guild.id}`, 'disabled'); 612 | message.channel.send(`Disabled the log : \`Emojis creation\``); 613 | await db.delete(`allenabled_${message.guild.id}`); 614 | break; 615 | case "10": 616 | await db.set(`emojidelete_${message.guild.id}`, 'disabled'); 617 | message.channel.send(`Disabled the log : \`Emojis suppression\``); 618 | await db.delete(`allenabled_${message.guild.id}`); 619 | break; 620 | case "11": 621 | await db.set(`channelcreate_${message.guild.id}`, 'disabled'); 622 | message.channel.send(`Disabled the log : \`Channels creation\``); 623 | await db.delete(`allenabled_${message.guild.id}`); 624 | break; 625 | case "12": 626 | await db.set(`channeldelete_${message.guild.id}`, 'disabled'); 627 | message.channel.send(`Disabled the log : \`Channels suppression\``); 628 | await db.delete(`allenabled_${message.guild.id}`); 629 | break; 630 | case "all": 631 | await db.set(`allenabled_${message.guild.id}`, 'disabled'); 632 | await db.set(`messagedelete_${message.guild.id}`, 'disabled'); 633 | await db.set('rolecreate_' + message.guild.id, 'disabled'); 634 | await db.set('roledelete_' + message.guild.id, 'disabled'); 635 | await db.set('messagebulkdelete_' + message.guild.id, 'disabled'); 636 | await db.set('guildmemberremove_' + message.guild.id, 'disabled'); 637 | await db.set('guildmemberadd_' + message.guild.id, 'disabled'); 638 | await db.set('guildbanadd_' + message.guild.id, 'disabled'); 639 | await db.set('guildbanremove_' + message.guild.id, 'disabled'); 640 | await db.set('emojicreate_' + message.guild.id, 'disabled'); 641 | await db.set('emojidelete_' + message.guild.id, 'disabled'); 642 | await db.set('channelcreate_' + message.guild.id, 'disabled'); 643 | await db.set('channeldelete_' + message.guild.id, 'disabled'); 644 | message.channel.send(`Disabled all logs of the server.`); 645 | } 646 | } 647 | 648 | if (command == "enable") { 649 | 650 | if (!message.member.hasPermission(`MANAGE_CHANNELS`) || !message.member.hasPermission(`MANAGE_GUILD`)) return message.channel.send(`You need the \`MANAGE_GUILD\` and \`MANAGE_CHANNELS\` permission.`); 651 | if (!args[0]) return message.channel.send(`Invalid number.`); 652 | var x = await db.get('loggingchannel_' + message.guild.id); 653 | if (x == null || x == 'none') { 654 | return message.channel.send(`No logs channel has been set.`); 655 | } 656 | if (args[0] > 12 || args[0] < 1) return message.reply(`Invalid number.`); 657 | switch (args[0]) { 658 | case "1": 659 | await db.set(`messagedelete_${message.guild.id}`, 'enabled'); 660 | message.channel.send(`Enabled the log : \`Message Delete\``); 661 | await db.delete(`allenabled_${message.guild.id}`); 662 | break; 663 | case "2": 664 | await db.set(`rolecreate_${message.guild.id}`, 'enabled'); 665 | message.channel.send(`Enabled the log : \`Roles creations\``); 666 | await db.delete(`allenabled_${message.guild.id}`); 667 | break; 668 | case "3": 669 | await db.set(`roledelete_${message.guild.id}`, 'enabled'); 670 | message.channel.send(`Enabled the log : \`Roles suppression\``); 671 | await db.delete(`allenabled_${message.guild.id}`); 672 | break; 673 | case "4": 674 | await db.set(`messagebulkdelete_${message.guild.id}`, 'enabled'); 675 | message.channel.send(`Enabled the log : message \`Cleared messages (bulkDelete)\``); 676 | await db.delete(`allenabled_${message.guild.id}`); 677 | break; 678 | case "5": 679 | await db.set(`guildmemberremove_${message.guild.id}`, 'enabled'); 680 | message.channel.send(`Enabled the log : \`Kicked member\``); 681 | await db.delete(`allenabled_${message.guild.id}`); 682 | break; 683 | case "6": 684 | await db.set(`guildmemberadd_${message.guild.id}`, 'enabled'); 685 | message.channel.send(`Enabled the log : \`Joining message\``); 686 | await db.delete(`allenabled_${message.guild.id}`); 687 | break; 688 | case "7": 689 | await db.set(`guildbanadd_${message.guild.id}`, 'enabled'); 690 | message.channel.send(`Enabled the log : \`Banned members\``); 691 | await db.delete(`allenabled_${message.guild.id}`); 692 | break; 693 | case "8": 694 | await db.set(`guildbanremove_${message.guild.id}`, 'enabled'); 695 | message.channel.send(`Enabled the log : \`Unbanned members\``); 696 | await db.delete(`allenabled_${message.guild.id}`); 697 | break; 698 | case "9": 699 | await db.set(`emojicreate_${message.guild.id}`, 'enabled'); 700 | message.channel.send(`Enabled the log : \`Emojis creation\``); 701 | await db.delete(`allenabled_${message.guild.id}`); 702 | break; 703 | case "10": 704 | await db.set(`emojidelete_${message.guild.id}`, 'enabled'); 705 | message.channel.send(`Enabled the log : \`Emojis suppression\``); 706 | await db.delete(`allenabled_${message.guild.id}`); 707 | break; 708 | case "11": 709 | await db.set(`channelcreate_${message.guild.id}`, 'enabled'); 710 | message.channel.send(`Enabled the log : \`Création de salon\``); 711 | await db.delete(`allenabled_${message.guild.id}`); 712 | break; 713 | case "12": 714 | await db.set(`channeldelete_${message.guild.id}`, 'enabled'); 715 | message.channel.send(`Enabled the log : \`Channels suppression\``); 716 | await db.delete(`allenabled_${message.guild.id}`); 717 | break; 718 | case "all": 719 | await db.set(`allenabled_${message.guild.id}`, 'enabled'); 720 | 721 | await db.set('rolecreate_' + message.guild.id, 'enabled'); 722 | await db.set(`messagedelete_${message.guild.id}`, 'enabled'); 723 | await db.set('roledelete_' + message.guild.id, 'enabled'); 724 | await db.set('messagebulkdelete_' + message.guild.id, 'enabled'); 725 | await db.set('guildmemberremove_' + message.guild.id, 'enabled'); 726 | await db.set('guildmemberadd_' + message.guild.id, 'enabled'); 727 | await db.set('guildbanadd_' + message.guild.id, 'enabled'); 728 | await db.set('guildbanremove_' + message.guild.id, 'enabled'); 729 | await db.set('emojicreate_' + message.guild.id, 'enabled'); 730 | await db.set('emojidelete_' + message.guild.id, 'enabled'); 731 | await db.set('channelcreate_' + message.guild.id, 'enabled'); 732 | await db.set('channeldelete_' + message.guild.id, 'enabled'); 733 | message.channel.send(`Enabled all logs`); 734 | } 735 | } 736 | 737 | if (command == "setlogs") { 738 | 739 | if (!message.member.hasPermission(`MANAGE_CHANNELS`) || !message.member.hasPermission(`MANAGE_GUILD`)) return message.channel.send(`You need the \`MANAGE_GUILD\` and \`MANAGE_CHANNELS\` permission.`); 740 | if (!args[0] || args[1]) return message.reply(`Please specify the channel`); 741 | 742 | x = message.mentions.channels.first(); 743 | if (!x) return message.channel.send(`Please specify the channel`); 744 | await db.set(`loggingchannel_${message.guild.id}`, x.id); 745 | message.channel.send(`Logs are now set to ${x}`); 746 | } 747 | 748 | }); 749 | 750 | const { antiaddbot } = require("./Collection") 751 | 752 | client.on("guildMemberAdd", async (member) => { 753 | const getCollection = antiaddbot.get(member.guild.id) 754 | if (!getCollection) return; 755 | if(!getCollection.includes((value) => value.id === member.id)) { 756 | getCollection.push(member.user) 757 | } 758 | if(member.user.bot) member.kick({ reason: "L'anti-bot a été activé." }) 759 | }) 760 | 761 | client.on("messageReactionAdd", async (reaction, user) => { 762 | if (reaction.message.partial) await reaction.message.fetch() 763 | if (reaction.partial) await reaction.fetch() 764 | if (user.bot) return; 765 | 766 | Schema.findOne({ Message: reaction.message.id }, async (err, data) => { 767 | if (!data) return; 768 | if (!Object.keys(data.Roles).includes(reaction.emoji.name)) return; 769 | 770 | const [roleid] = data.Roles[reaction.emoji.name] 771 | reaction.message.guild.members.cache.get(user.id).roles.add(roleid) 772 | const embed = new Discord.MessageEmbed() 773 | .setDescription(`Tu viens de recevoir le rôle avec identifiant : ${roleid}.`) 774 | .setColor(bg) 775 | .setThumbnail(user.avatarURL({dynamic: true})) 776 | 777 | user.send(embed) 778 | }) 779 | }) 780 | 781 | const { afk } = require("./Collection") 782 | 783 | client.on("message", async(message) => { 784 | if (!message.guild || message.author.bot) return; 785 | 786 | const mentionedMember = message.mentions.members.first() 787 | if (mentionedMember) { 788 | const data = afk.get(mentionedMember.id) 789 | 790 | if (data) { 791 | const [timestamp, reason] = data 792 | const timeAgo = moment(timestamp).fromNow() 793 | 794 | message.channel.send(`${mentionedMember} est AFK.\nRaison : ${reason}`) 795 | } 796 | } 797 | 798 | const getData = afk.get(message.author.id) 799 | if (getData) { 800 | afk.delete(message.author.id) 801 | message.channel.send(`${message.member}, je viens d'enlever votre AFK`) 802 | } 803 | }) 804 | 805 | client.on("messageReactionRemove", async (reaction, user) => { 806 | if (reaction.message.partial) await reaction.message.fetch() 807 | if (reaction.partial) await reaction.fetch() 808 | if (user.bot) return; 809 | 810 | Schema.findOne({ Message: reaction.message.id }, async (err, data) => { 811 | if (!data) return; 812 | if (!Object.keys(data.Roles).includes(reaction.emoji.name)) return; 813 | 814 | const [roleid] = data.Roles[reaction.emoji.name] 815 | reaction.message.guild.members.cache.get(user.id).roles.remove(roleid) 816 | const embed = new Discord.MessageEmbed() 817 | .setDescription(`Vous avez perddu le rôle avec ID : ${roleid}.`) 818 | .setColor(bg) 819 | .setThumbnail(user.avatarURL({dynamic: true})) 820 | 821 | user.send(embed) 822 | }) 823 | }) 824 | 825 | const fs = require('fs') 826 | 827 | const ranking = require("./Senku/Niveaux/resr"); //load the ranking file 828 | 829 | ranking(client); 830 | 831 | const Enmap = require("enmap") 832 | 833 | client.points = new Enmap({ name: "points" }) 834 | 835 | const snipes = new Discord.Collection() 836 | 837 | const { GiveawaysManager } = require('discord-giveaways') 838 | 839 | client.giveaways = new GiveawaysManager(client, { 840 | storage: "./giveaways.json", 841 | UpdateCountdownEvery: 5000 842 | }) 843 | 844 | const mongoose = require('mongoose') 845 | 846 | mongoose.connect(config.mongoPass, { 847 | useNewUrlParser: true, 848 | useUnifiedTopology: true, 849 | useFindAndModify: false, 850 | }) 851 | 852 | client.commands = new Discord.Collection() 853 | 854 | const commandFolders = fs.readdirSync("./Senku"); 855 | for (const folder of commandFolders) { 856 | const commandFiles = fs 857 | .readdirSync(`./Senku/${folder}`) 858 | .filter((file) => file.endsWith(".js")); 859 | for (const file of commandFiles) { 860 | const command = require(`./Senku/${folder}/${file}`); 861 | if (command.name) { 862 | client.commands.set(command.name, command); 863 | table.addRow(file, "✔️"); 864 | } else { 865 | table.addRow( 866 | file, 867 | "❌ => Cet commande ne possède aucune information/nom." 868 | ); 869 | continue; 870 | } 871 | console.log(table.toString()); 872 | } 873 | } 874 | 875 | 876 | 877 | const custom = require('./Modèles/custom') 878 | const premium = require('./Modèles/premium') 879 | 880 | client.on('message', async message => { 881 | const p = await client.prefix(message) 882 | if (!message.content.startsWith(p)) return; 883 | blacklist.findOne({ Guild: message.guild.id, id: message.author.id }, async (err, data) => { 884 | if (err) throw err; 885 | if (!data) { 886 | const args = message.content.slice(p.length).trim().split(/ +/) 887 | const command = args.shift().toLowerCase() 888 | 889 | const blacklisted = await blacklistguild.findOne({ 890 | Server: message.guild.id 891 | }) 892 | if(blacklisted) return message.reply(`Ce serveur a été blacklist`) 893 | 894 | 895 | 896 | const data = await custom.findOne({ Guild: message.guild.id, Command: command }) 897 | if(data) return message.channel.send(data.Response) 898 | 899 | let commands = client.commands.get(command) 900 | 901 | try { 902 | if(commands.premium && !(await premium.findOne({User: message.author.id}))) return message.reply(`Tu n'est pas en mode premium.`) 903 | commands.run(client, message, args) 904 | } catch (error) { 905 | console.log(error) 906 | } 907 | } else { 908 | message.channel.send(`Tu as été ajouté à la blacklist.`) 909 | } 910 | }) 911 | }) 912 | 913 | client.on('guildDelete', async (guild) => { 914 | prefixSchema.findOne({ Guild: guild.id }, async (err, data) => { 915 | if (err) throw err; 916 | if (data) { 917 | await prefixSchema.findOneAndDelete({ Guild : guild.id }).then(console.log('deleted data.')) 918 | } 919 | }) 920 | }) 921 | 922 | client.on('messageDelete', message => { 923 | snipes.set(message.channel.id, message) 924 | }) 925 | 926 | client.on('message', message => { 927 | if (message.content === config.prefix + "snipe") { 928 | const snipe = snipes.get(message.channel.id) 929 | if (!snipe) return message.channel.send("Il n'y a aucun message à snipe.") 930 | message.channel.send( 931 | new Discord.MessageEmbed() 932 | .setAuthor(snipe.author.tag, snipe.author.avatarURL({dynamic: true})) 933 | .setColor("GREEN") 934 | .setDescription(snipe.content) 935 | .setFooter("Senku", client.user.avatarURL()) 936 | ) 937 | } 938 | }) 939 | 940 | client.on('clickMenu', async menu => { 941 | const Member = await menu.message.guild.members.fetch({ user: menu.clicker.user.id, force: true}) 942 | if(menu.values[0] == 'DR1') { 943 | if(!Member.roles.cache.has('879800687691714611')) { 944 | await Member.roles.add('879800687691714611') 945 | return menu.reply.send("You just got the role <@&879800687691714611>", true) 946 | } else if(Member.roles.cache.has('879800687691714611')) { 947 | await Member.roles.remove('879800687691714611') 948 | return menu.reply.send("I removed you the role <@&879800687691714611>", true) 949 | } 950 | } 951 | 952 | if(menu.values[0] == 'DR2') { 953 | if(!Member.roles.cache.has('879800712639434752')) { 954 | await Member.roles.add('879800712639434752') 955 | return menu.reply.send("You just got the role <@&879800712639434752>", true) 956 | } else if(Member.roles.cache.has('879800712639434752')) { 957 | await Member.roles.remove('879800712639434752') 958 | return menu.reply.send("I removed from you the role <@&879800712639434752>", true) 959 | } 960 | } 961 | 962 | if(menu.values[0] == 'DR3') { 963 | if(!Member.roles.cache.has('879800725167804497')) { 964 | await Member.roles.add('879800725167804497') 965 | return menu.reply.send("You just got the role <@&879800725167804497>", true) 966 | } else if(Member.roles.cache.has('879800725167804497')) { 967 | await Member.roles.remove('879800725167804497') 968 | return menu.reply.send("I removed you the role <@&879800725167804497>", true) 969 | } 970 | } 971 | 972 | if(menu.values[0] == 'DR4') { 973 | if(!Member.roles.cache.has('879800700685668432')) { 974 | await Member.roles.add('879800700685668432') 975 | return menu.reply.send("You just got the role <@&879800700685668432>", true) 976 | } else if(Member.roles.cache.has('879800700685668432')) { 977 | await Member.roles.remove('879800700685668432') 978 | return menu.reply.send("I removed you the role <@&879800700685668432>", true) 979 | } 980 | } 981 | }) 982 | 983 | client.on('clickMenu', async menu => { 984 | const Member = await menu.message.guild.members.fetch({ user: menu.clicker.user.id, force: true}) 985 | if(menu.values[0] == 'bg1') { 986 | if(!Member.roles.cache.has('878470399996866580')) { 987 | await Member.roles.add('878470399996866580') 988 | return menu.reply.send("You just got the role <@&878470399996866580>. You passed the verification", true) 989 | } else if(Member.roles.cache.has('878470399996866580')) { 990 | await Member.roles.remove('878470399996866580') 991 | return menu.reply.send("I removed you the role <@&878470399996866580>", true) 992 | } 993 | } 994 | }) 995 | 996 | 997 | 998 | client.on("ready", () => { 999 | console.log(`${client.user.username}#${client.user.discriminator} est désormais en ligne.`) 1000 | }) 1001 | 1002 | client.on('message', message => { 1003 | if (message.content ===`<@!${client.user.id}>` || message.content === `<@${client.user.id}>`) { 1004 | return message.channel.send(`Mon préfix initiale : \`+\``) 1005 | } 1006 | }) 1007 | 1008 | client.login("token") 1009 | -------------------------------------------------------------------------------- /json.sqlite: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SxmyzZ/CrowBot/52149e1913d7db91cbeec97339cfbed6db737915/json.sqlite -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "o", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "author": "", 7 | "license": "ISC", 8 | "scripts": { 9 | "start": "node ." 10 | }, 11 | "engines": { 12 | "node": "14.17.x" 13 | }, 14 | "dependencies": { 15 | "@discordjs/opus": "^0.6.0", 16 | "@iamtraction/google-translate": "^1.1.2", 17 | "@reconlx/discord.js": "^1.1.1", 18 | "@weky/inlinereply": "0.0.0", 19 | "animequote": "^1.1.1", 20 | "ascii-table": "0.0.9", 21 | "axios": "^0.21.1", 22 | "canvacord": "^5.2.3", 23 | "canvas": "^2.8.0", 24 | "colornames": "^1.1.1", 25 | "dayjs": "^1.10.7", 26 | "discord-backup": "3.0.1", 27 | "discord-backups": "^2.3.0", 28 | "discord-banners": "^1.0.1", 29 | "discord-buttons": "^4.0.0", 30 | "discord-giveaways": "^4.5.1", 31 | "discord-player": "^5.0.2", 32 | "discord-toolbox": "^1.0.7", 33 | "discord.js": "^12.5.1", 34 | "distube": "^2.8.18", 35 | "dotenv": "^10.0.0", 36 | "enmap": "^5.8.7", 37 | "express": "^4.17.1", 38 | "ffmpeg-static": "^4.4.0", 39 | "flip-text": "^1.2.0", 40 | "fs": "0.0.1-security", 41 | "kitsu.js": "^2.0.0", 42 | "mathjs": "^9.4.4", 43 | "moment": "^2.29.1", 44 | "mongoose": "^5.13.7", 45 | "ms": "^2.1.3", 46 | "node-fetch": "^2.6.1", 47 | "opusscript": "0.0.8", 48 | "parse-ms": "^3.0.0", 49 | "popcat-wrapper": "^1.3.19", 50 | "quick.db": "^7.1.3", 51 | "reconlx": "^2.3.2", 52 | "request": "^2.88.2", 53 | "snakecord": "^1.0.8", 54 | "weky": "^3.1.5", 55 | "ytdl-core": "^4.9.1" 56 | } 57 | } 58 | --------------------------------------------------------------------------------