UNPKG

discord-template-bot

Version:
421 lines (359 loc) 14.2 kB
const Discord = require("discord.js"); const client = new Discord.Client(); //Loading the .ini file. var fs = require("fs"); function parseINIString(data){ var regex = { section: /^\s*\[\s*([^\]]*)\s*\]\s*$/, param: /^\s*([^=]+?)\s*=\s*(.*?)\s*$/, comment: /^\s*;.*$/ }; var value = {}; var lines = data.split(/[\r\n]+/); var section = null; lines.forEach(function(line){ if(regex.comment.test(line)){ return; }else if(regex.param.test(line)){ var match = line.match(regex.param); if(section){ value[section][match[1]] = match[2]; }else{ value[match[1]] = match[2]; } }else if(regex.section.test(line)){ var match = line.match(regex.section); value[match[1]] = {}; section = match[1]; }else if(line.length == 0 && section){ section = null; }; }); return value; } try { var data = fs.readFileSync('./settings.ini', 'utf8'); var javascript_ini = parseINIString(data); } catch(e) { console.log(e); } //variables var prefix = (javascript_ini['Prefix'].prefix) var admin = (javascript_ini['Permissions'].admin) var owner = (javascript_ini['Permissions'].ownerid) var noperms = (javascript_ini['Permissions'].insufficientpermissions) var botstream = (javascript_ini['Status'].streaming) var activity = (javascript_ini['Status'].activity) var streamurl = (javascript_ini['Status'].streamurl) var activitytype = (javascript_ini['Status'].activitytype) var status = (javascript_ini['Status'].status) // Bot login const token = (javascript_ini['Credentials'].token) if (token === ("")) { console.log("Please provide a valid token and try again.") return; } client.login(token); // Startup Setup client.on("ready", function () { console.log(`Logged in as ${client.user.username}`); if (botstream == "true") { client.user.setActivity(activity, {url: streamurl}); return; } client.user.setActivity(activity, {type: activitytype}); client.user.setStatus(status); }); // Random Colors const colors = [ "0x3d80ed", "0x973ced", "0x3ced41", "0xedea3c", "0xed3c3c", "0x3cedea", "0x3cedaf" ]; //Random Fortunes const fortunes = [ "Yes", "No", "Maybe" ]; // Geting user from a mention function. function getUserFromMention(mention) { if (!mention) return; if (mention.startsWith('<@') && mention.endsWith('>')) { mention = mention.slice(2, -1); if (mention.startsWith('!')) { mention = mention.slice(1); } return client.users.get(mention); } } // Commands client.on("message", function (message) { if (message.author.equals(client.user)) return; if (message.channel.type === "dm") { message.channel.send("Commands cant be executed in DMS!"); return; } if (!message.content.startsWith(prefix)) return; var args = message.content.substring(prefix.length).split(" "); switch (args[0].toLowerCase()) { case "8ball": if (!args[1]) { message.channel.send("Please provide some text!"); return; } message.channel.send(fortunes[Math.floor(Math.random() * fortunes.length)]); return; case "removerole": if (!message.member.roles.some(r=>[admin].includes(r.name)) ) { message.channel.send(noperms); return; } if (!args[1]) { message.channel.send("Please provide a user to remove a role!"); return; } var member = message.mentions.members.first(); if (!args[2]) { message.channel.send(`Please provide a role to remove from ${member}!`); return; } var rolename = args.slice(2).join(" "); var role = message.guild.roles.find(r=> r.name === rolename); if (!message.guild.roles.exists("name", rolename)) { message.channel.send(`${role} does not exitst!`); return; } member.removeRole(role, err => { if (err) { message.channel.send(`An error occurred whilst removing the role ${rolename} from ${member}`); throw err; } }); message.channel.send(`Successfully removed the role ${rolename} from ${member}!`); return; case "addrole": if (!message.member.roles.some(r=>[admin].includes(r.name)) ) { message.channel.send(noperms); return; } if (!args[1]) { message.channel.send("Please provide a user to add a role to!"); return; } var member = message.mentions.members.first(); if (!args[2]) { message.channel.send(`Please provide a role to give to ${member}!`); return; } var rolename = args.slice(2).join(" "); var role = message.guild.roles.find(r=> r.name === rolename); if (!message.guild.roles.exists("name", rolename)) { message.channel.send(`${role} does not exitst!`); return; } member.addRole(role, err => { if (err) { message.channel.send(`An error occurred whilst giving the role ${rolename} to ${member}`); throw err; } }); message.channel.send(`Successfully added the role ${rolename} to ${member}!`); return; case "avatar": if (!args[1]) { message.channel.send("Please provide a user!"); return; } var user = getUserFromMention(args[1]); var avatar = new Discord.RichEmbed() .setTitle("Avatar") .setColor(colors[Math.floor(Math.random() * colors.length)]) .setDescription(`${user.username}'s Avatar!`) .setImage(user.displayAvatarURL); message.channel.send(avatar); return; case "dm": if (!args[1]) { message.channel.send("Please provide a user to DM!"); return; } var member = message.mentions.users.first() member.send(`${message.author} needs you in ${message.member.guild.name}!`); message.channel.send("Successfully sent the message!"); return; case "clear": if (!message.member.roles.some(r=>[admin].includes(r.name)) ) { message.channel.send(noperms); return; }; if (!args[1]) { message.channel.send("Please provide a number of messages to delete!"); return; } if (args[1] > 100) { message.channel.send("Please provide a number that is 100 or lower!"); return; } message.channel.bulkDelete(args[1]).then(() => { message.channel.send(`Successfully cleared ${args[1]} messages!`).then( message => message.delete(5000) ) }) return; case "report": if (!args[1]) { message.channel.send("Please provide a user to report!"); return; } var member = message.mentions.members.first(); if (!args[2]) { message.channel.send(`Please provide a reason to report ${member}`); return; } var reason = args.slice(2).join(" "); if (!message.guild.channels.exists("name", "reports")) { message.guild.createChannel("reports", "text"); message.channel.send("Please resend the report! I have made a reports channel for you!"); return; } var report = new Discord.RichEmbed() .setTitle("Report") .setColor(colors[Math.floor(Math.random() * colors.length)]) .addField("User", member, true) .addField("Reason", reason, true) .addField("Reported By", message.author); message.guild.channels.find("name", "reports").send(report); message.channel.send("Successfully sent the report!"); return; case "help": var help = new Discord.RichEmbed() .setTitle("Help") .setColor(colors[Math.floor(Math.random() * colors.length)]) .setDescription("This bot was made by Toadless and there are permissions to some of these commands.") .addField("Status", "Displays a the bot status.") .addField("Help", "Displays this page!") .addField("8Ball", "Responds With Yes or No or Maybe!") .addField("SetActivity", "Sets the bots activity!") .addField("ResetActivity", "Resets the bots activity!") .addField("SetStatus", "Sets the bots status!") .addField("Ban", "Bans the user provided for the reason provided!") .addField("UnBan", "Unbans the member provided!") .addField("Kick", "Kicks the user provided for the reason provided!") .addField("Report", "Reports the user provided for the reason provided!") .addField("Clear", "Clears the amount of messages provided as long as the specified amount is lower than 100 and less than 14 days old!") .addField("DM", "DM'S the user specified that they need you in the server that you executed the command in!") .addField("Avatar", "Displays the user provided's avatar!") .addField("AddRole", "Adds the role provided to the user provided!") .addField("RemoveRole", "Removes the role provided from the user provided!"); message.channel.send(help); return; case "kick": if (!message.member.roles.some(r=>[admin].includes(r.name)) ) { message.channel.send(noperms); return; } if (!args[1]) { message.channel.send("Please provide a user to kick!"); return; } if (!args[2]) { message.channel.send("Please provide a reason!"); return; } var member = message.mentions.members.first(); if (!member.kickable) { message.channel.send("This member is not kickable!"); return; } var reason = args.slice(2).join(" "); message.channel.send(`Successfully kicked ${member} for ${reason}`); member.kick(reason, err => { if (err)message.channel.send(`There was a error kicking ${member}!`); throw (err); }); return; case "unban": if (!message.member.roles.some(r=>[admin].includes(r.name)) ) { message.channel.send(noperms); return; } if (!args[1]) { message.channel.send("Please provide a user to unban!"); return; } var member = message.mentions.members.first(); member.unban(err => { if (err) { message.channel.send(`There was an error unbanning ${member}!`); throw err; } }); return; case "ban": if (!message.member.roles.some(r=>[admin].includes(r.name)) ) { message.channel.send(noperms); return; } if (!args[1]) { message.channel.send("Please provide a user to ban!"); return; } if (!args[2]) { message.channel.send(`Please provide a reason!`); return; } var member = message.mentions.members.first(); if (!member.bannable) { message.channel.send("This member is not bannable!"); return; } var reason = args.slice(2).join(" "); message.channel.send(`Successfully banned ${member} for ${reason}!`); member.ban(reason, err => { if (err) message.channel.send(`There was an error banning ${member}!`); throw (err); }); return; case "resetactivity": if (message.author.id !== owner) { message.channel.send("You must be the bot owner to do this!"); return; } bot.user.setActivity("", {type: ""}); message.channel.send("Successfully reset the bots activity!"); return; case "setstatus": if (message.author.id !== "582560658575589381") { message.channel.send("You must be the bot owner to do this!"); return; } if (!args[1]) { message.channel.send("Please provide a status!"); return; } bot.user.setStatus(args[1]) message.channel.send(`Successfully set the bot status to ${args[1]}!`); return; case "setactivity": if (message.author.id !== owner) { message.channel.send("You must be the bot owner to do this!"); return; } if (!args[1]) { message.channel.send("Please provide a activity type!"); return; } if (!args[2]) { message.channel.send("Please provide a activity!"); return; } var activity = args.slice(2).join(" "); message.channel.send(`Successfully set the bot actvity to ${args[1]} ${activity}!`); bot.user.setActivity(activity, {type: args[1]}); return; } });