const Discord = require('discord.js'); const client = new Discord.Client(); const config = require("./config.json"); const random = require('random'); const fs = require('fs'); const jsonfile = require('jsonfile'); const bot = new Discord.Client(); client.on("ready", () => { console.log(`Bot has started, with ${client.users.size} users, in ${client.channels.size} channels of ${client.guilds.size} guilds.`); client.user.setActivity(`Serving ${client.guilds.size} servers`); client.setInterval(() => { for(let i in client.mutes) { let time = client.mutes[i].time; let guildID = client.mutes[i].guild; let guild = bclient.guilds.get(guildId); let mutedRole = guild.roles.find(r => r.name === "Muted"); if (!mutedRole) continue; if (Date.now() > time) { console.log(`${i}, may now be unmuted!`) } } }, 5000) }); client.on("guildCreate", guild => { console.log(`New guild joined: ${guild.name} (id: ${guild.id}). This guild has ${guild.memberCount} members!`); client.user.setActivity(`Serving ${client.guilds.size} servers`); }); client.on("guildDelete", guild => { console.log(`I have been removed from: ${guild.name} (id: ${guild.id})`); client.user.setActivity(`Serving ${client.guilds.size} servers`); }); client.on("message", async message => { if(message.author.bot) return; if(message.content.indexOf(config.prefix) !== 0) return; const args = message.content.slice(config.prefix.length).trim().split(/ +/g); const command = args.shift().toLowerCase(); //PING if(command === "ping") { const m = await message.channel.send("Ping?"); m.edit(`Pong! Latency is ${m.createdTimestamp - message.createdTimestamp}ms. API Latency is ${Math.round(client.ping)}ms`); } //SAY if(command === "say") { if(!message.member.roles.some(r=>["Full Staff"].includes(r.name)) ) return message.reply("Sorry, you don't have permissions to use this!"); const sayMessage = args.join(" "); message.delete().catch(O_o=>{}); message.channel.send(sayMessage); } //KICK if(command === "kick") { if(!message.member.roles.some(r=>["Full Staff"].includes(r.name)) ) return message.reply("Sorry, you don't have permissions to use this!"); let member = message.mentions.members.first() || message.guild.members.get(args[0]); if(!member) return message.reply("Please mention a valid member of this server"); if(!member.kickable) return message.reply("I cannot kick this user! Do they have a higher role? Do I have kick permissions?"); let reason = args.slice(1).join(' '); if(!reason) reason = "No reason provided"; await member.kick(reason) .catch(error => message.reply(`Sorry ${message.author} I couldn't kick because of : ${error}`)); message.reply(`${member.user.tag} has been kicked by ${message.author.tag} because: ${reason}`); } //BAN if(command === "ban") { if(!message.member.roles.some(r=>["Full Staff"].includes(r.name)) ) return message.reply("Sorry, you don't have permissions to use this!"); let member = message.mentions.members.first(); if(!member) return message.reply("Please mention a valid member of this server"); if(!member.bannable) return message.reply("I cannot ban this user! Do they have a higher role? Do I have ban permissions?"); let reason = args.slice(1).join(' '); if(!reason) reason = "No reason provided"; await member.ban(reason) .catch(error => message.reply(`Sorry ${message.author} I couldn't ban because of : ${error}`)); message.reply(`${member.user.tag} has been banned by ${message.author.tag} because: ${reason}`); } //PURGE if(command === "purge") { if(!message.member.roles.some(r=>["Full Staff"].includes(r.name)) ) return message.reply("Sorry, you don't have permissions to use this!"); const deleteCount = parseInt(args[0], 10); if(!deleteCount || deleteCount < 2 || deleteCount > 100) return message.reply("Please provide a number between 2 and 100 for the number of messages to delete"); const fetched = await message.channel.fetchMessages({limit: deleteCount}); message.channel.bulkDelete(fetched) .catch(error => message.reply(`Couldn't delete messages because of: ${error}`)); } //MUTE }); //Join Message client.on('guildMemberAdd', member => { const channel = member.guild.channels.find(ch => ch.name === 'welcome'); if (!channel) return; channel.send(`${member} Welcome to the server! `); }); //Leave message client.on('guildMemberRemove', member => { const channel = member.guild.channels.find(ch => ch.name === 'bye'); if (!channel) return; channel.send(`${member} I miss you already! `); }); //auto roles client.on('guildMemberAdd', (guildMember) => { guildMember.addRole(guildMember.guild.roles.find(role => role.name === "Member")); }); //bot status client.on("ready", () =>{ console.log(`Logged in as ${client.user.tag}!`); client.user.setPresence({ status: "online", //You can show online, idle.... game: { name: "Minecraft", //The message shown type: "Playing" //PLAYING: WATCHING: LISTENING: STREAMING: } }); }); //Leveling var stats = {}; if (fs.existsSync('stats.json')) { stats = jsonfile.readFileSync('stats.json'); } bot.on('message', (message) => { if (message.author.id == bot.user.id) return; if (message.guild.id in stats === false) { stats[message.guild.id] = {}; } const guildStats = stats[message.guild.id]; if (message.author.id in guildStats === false) { guildStats[message.author.id] = { xp: 0, level: 0, last_message: 0 }; } const userStats = guildStats[message.author.id]; if (Date.now() - userStats.last_message > 60000) { userStats.xp += random.int(15, 25); userStats.last_message = Date.now(); const xpToNextLevel = 5 * Math.pow(userStats.level, 2) + 50 * userStats.level + 100; if (userStats.xp >= xpToNextLevel) { userStats.level++; userStats.xp = userStats.xp - xpToNextLevel; message.channel.send(message.author + ' has reached level ' + userStats.level); } jsonfile.writeFileSync('stats.json', stats); console.log(message.author.username + ' now has ' + userStats.xp); console.log(xpToNextLevel + ' XP needed for next level.'); } const parts = message.content.split(' '); if(parts[0] === 'Hello') { message.reply('Hi!'); } if(parts[0] === 'Bye') { message.reply('Cya!'); } if(parts[0] === 'gn') { message.reply('Night!'); } if(parts[0] === 'gm') { message.reply('Good morning!'); } }); //Help command bot.login('NzIxMDk1NjE1MzM3MDcwNjQy.XuP6UQ.rOkoeTkRK9yboUk-hOCB2Qr0r2I'); //away client.mutes = require("./mutes.json"); client.login(config.token)