Facebook
From Holden, 3 Years ago, written in JavaScript.
Embed
Download Paste or View Raw
Hits: 151
  1. const Discord = require('discord.js');
  2. const client = new Discord.Client();
  3. const config = require("./config.json");
  4. const random = require('random');
  5. const fs = require('fs');
  6. const jsonfile = require('jsonfile');
  7. const bot = new Discord.Client();
  8.  
  9. client.on("ready", () => {
  10.   console.log(`Bot has started, with ${client.users.size} users, in ${client.channels.size} channels of ${client.guilds.size} guilds.`);
  11.  
  12.   client.user.setActivity(`Serving ${client.guilds.size} servers`);
  13.  
  14.   client.setInterval(() => {
  15.     for(let i in client.mutes) {
  16.         let time = client.mutes[i].time;
  17.         let guildID = client.mutes[i].guild;
  18.         let guild = bclient.guilds.get(guildId);
  19.         let mutedRole = guild.roles.find(r => r.name === "Muted");
  20.         if (!mutedRole) continue;
  21.  
  22.         if (Date.now() > time) {
  23.           console.log(`${i}, may now be unmuted!`)
  24.         }
  25.     }
  26. }, 5000)
  27.  
  28. });
  29.  
  30. client.on("guildCreate", guild => {
  31.   console.log(`New guild joined: ${guild.name} (id: ${guild.id}). This guild has ${guild.memberCount} members!`);
  32.   client.user.setActivity(`Serving ${client.guilds.size} servers`);
  33. });
  34.  
  35. client.on("guildDelete", guild => {
  36.   console.log(`I have been removed from: ${guild.name} (id: ${guild.id})`);
  37.   client.user.setActivity(`Serving ${client.guilds.size} servers`);
  38. });
  39.  
  40.  
  41. client.on("message", async message => {
  42.  
  43.   if(message.author.bot) return;
  44.  
  45.   if(message.content.indexOf(config.prefix) !== 0) return;
  46.  
  47.   const args = message.content.slice(config.prefix.length).trim().split(/ +/g);
  48.   const command = args.shift().toLowerCase();
  49.  
  50.   //PING
  51.   if(command === "ping") {
  52.     const m = await message.channel.send("Ping?");
  53.     m.edit(`Pong! Latency is ${m.createdTimestamp - message.createdTimestamp}ms. API Latency is ${Math.round(client.ping)}ms`);
  54.   }
  55.   //SAY
  56.   if(command === "say") {
  57.     if(!message.member.roles.some(r=>["Full Staff"].includes(r.name)) )
  58.     return message.reply("Sorry, you don't have permissions to use this!");
  59.     const sayMessage = args.join(" ");
  60.     message.delete().catch(O_o=>{});
  61.     message.channel.send(sayMessage);
  62.   }
  63.   //KICK
  64.   if(command === "kick") {
  65.     if(!message.member.roles.some(r=>["Full Staff"].includes(r.name)) )
  66.       return message.reply("Sorry, you don't have permissions to use this!");
  67.    
  68.     let member = message.mentions.members.first() || message.guild.members.get(args[0]);
  69.     if(!member)
  70.       return message.reply("Please mention a valid member of this server");
  71.     if(!member.kickable)
  72.       return message.reply("I cannot kick this user! Do they have a higher role? Do I have kick permissions?");
  73.    
  74.     let reason = args.slice(1).join(' ');
  75.     if(!reason) reason = "No reason provided";
  76.    
  77.     await member.kick(reason)
  78.       .catch(error => message.reply(`Sorry ${message.author} I couldn't kick because of : ${error}`));
  79.    message.reply(`${member.user.tag} has been kicked by ${message.author.tag} because: ${reason}`);
  80.  
  81.  }
  82.  //BAN
  83.  if(command === "ban") {
  84.    if(!message.member.roles.some(r=>["Full Staff"].includes(r.name)) )
  85.      return message.reply("Sorry, you don't have permissions to use this!");
  86.    
  87.    let member = message.mentions.members.first();
  88.    if(!member)
  89.      return message.reply("Please mention a valid member of this server");
  90.    if(!member.bannable)
  91.      return message.reply("I cannot ban this user! Do they have a higher role? Do I have ban permissions?");
  92.  
  93.    let reason = args.slice(1).join(' ');
  94.    if(!reason) reason = "No reason provided";
  95.    
  96.    await member.ban(reason)
  97.      .catch(error => message.reply(`Sorry ${message.author} I couldn't ban because of : ${error}`));
  98.    message.reply(`${member.user.tag} has been banned by ${message.author.tag} because: ${reason}`);
  99.  }
  100.  //PURGE
  101.  if(command === "purge") {
  102.    if(!message.member.roles.some(r=>["Full Staff"].includes(r.name)) )
  103.    return message.reply("Sorry, you don't have permissions to use this!");
  104.    
  105.    const deleteCount = parseInt(args[0], 10);
  106.    
  107.    if(!deleteCount || deleteCount < 2 || deleteCount > 100)
  108.      return message.reply("Please provide a number between 2 and 100 for the number of messages to delete");
  109.    
  110.    
  111.    const fetched = await message.channel.fetchMessages({limit: deleteCount});
  112.    message.channel.bulkDelete(fetched)
  113.      .catch(error => message.reply(`Couldn't delete messages because of: ${error}`));
  114.   }
  115.   //MUTE
  116.  
  117.  
  118. });
  119.  
  120. //Join Message
  121.  
  122.   client.on('guildMemberAdd', member => {
  123.    
  124.     const channel = member.guild.channels.find(ch => ch.name === 'welcome');
  125.    
  126.     if (!channel) return;
  127.    
  128.     channel.send(`${member} Welcome to the server! `);
  129.   });
  130.  
  131. //Leave message
  132.  
  133. client.on('guildMemberRemove', member => {
  134.   const channel = member.guild.channels.find(ch => ch.name === 'bye');
  135.  
  136.   if (!channel) return;
  137.   channel.send(`${member} I miss you already! `);
  138. });
  139.  
  140. //auto roles
  141. client.on('guildMemberAdd', (guildMember) => {
  142.   guildMember.addRole(guildMember.guild.roles.find(role => role.name === "Member"));
  143. });
  144.  
  145.  
  146. //bot status
  147. client.on("ready", () =>{
  148.   console.log(`Logged in as ${client.user.tag}!`);
  149.   client.user.setPresence({
  150.       status: "online",  //You can show online, idle....
  151.       game: {
  152.           name: "Minecraft",  //The message shown
  153.           type: "Playing" //PLAYING: WATCHING: LISTENING: STREAMING:
  154.       }
  155.   });
  156. });
  157.  
  158. //Leveling
  159.  
  160.  
  161.  
  162.  
  163. var stats = {};
  164. if (fs.existsSync('stats.json')) {
  165.     stats = jsonfile.readFileSync('stats.json');
  166. }
  167.  
  168. bot.on('message', (message) => {
  169.     if (message.author.id == bot.user.id)
  170.         return;
  171.  
  172.     if (message.guild.id in stats === false) {
  173.         stats[message.guild.id] = {};
  174.     }
  175.  
  176.     const guildStats = stats[message.guild.id];
  177.     if (message.author.id in guildStats === false) {
  178.         guildStats[message.author.id] = {
  179.             xp: 0,
  180.             level: 0,
  181.             last_message: 0
  182.         };
  183.     }
  184.  
  185.     const userStats = guildStats[message.author.id];
  186.     if (Date.now() - userStats.last_message > 60000) {
  187.         userStats.xp += random.int(15, 25);
  188.         userStats.last_message = Date.now();
  189.  
  190.         const xpToNextLevel = 5 * Math.pow(userStats.level, 2) + 50 * userStats.level + 100;
  191.         if (userStats.xp >= xpToNextLevel) {
  192.             userStats.level++;
  193.             userStats.xp = userStats.xp - xpToNextLevel;
  194.             message.channel.send(message.author + ' has reached level ' + userStats.level);
  195.         }
  196.  
  197.         jsonfile.writeFileSync('stats.json', stats);
  198.  
  199.         console.log(message.author.username + ' now has ' + userStats.xp);
  200.         console.log(xpToNextLevel + ' XP needed for next level.');
  201.     }
  202.  
  203.     const parts = message.content.split(' ');
  204.  
  205.     if(parts[0] === 'Hello') {
  206.         message.reply('Hi!');
  207.     }
  208.  
  209.     if(parts[0] === 'Bye') {
  210.       message.reply('Cya!');
  211.   }
  212.  
  213.   if(parts[0] === 'gn') {
  214.     message.reply('Night!');
  215. }
  216.  
  217. if(parts[0] === 'gm') {
  218.   message.reply('Good morning!');
  219. }
  220. });
  221.  
  222. //Help command
  223.  
  224.  
  225.  
  226. bot.login('NzIxMDk1NjE1MzM3MDcwNjQy.XuP6UQ.rOkoeTkRK9yboUk-hOCB2Qr0r2I');
  227.  
  228.  
  229.  
  230. //away
  231. client.mutes = require("./mutes.json");
  232.  
  233.   client.login(config.token)
  234.