Advertisement
Donovan_DMC

MAIN DISCORD BOT

Jan 4th, 2018
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const Discord = require('discord.js');
  2. const $ = require("jquery");
  3. const request = require('xhr-request')
  4. const client = new Discord.Client();
  5. const bot_table="testing";
  6. const token="BOT_TOKEN";
  7. const default_prefix="m!";
  8. const prefix=default_prefix;
  9. const mysql = require('mysql');
  10. const conn = mysql.createConnection({
  11.   host     : 'DB_IP',
  12.   user     : 'root',
  13.   password : 'DB_PASSWORD',
  14.   database : 'DB_DATABASE'
  15. });
  16.  
  17. conn.connect();
  18.  
  19. client.on("ready", () => {
  20.   // This event will run if the bot starts, and logs in, successfully.
  21.   //console.log(client.guilds.get("329498711338123268").channels.find("name","general"));
  22.   console.log(`Bot has started, with ${client.users.size} users, in ${client.channels.size} channels of ${client.guilds.size} guilds.`);
  23.   // Example of changing the bot's playing game to something useful. `client.user` is what the
  24.   // docs refer to as the "ClientUser".
  25.   if(client.shard !== undefined && client.shard !== null) {
  26.     client.user.setGame(`${default_default_prefix}help | ${client.guilds.size} Guilds | Shard ${(client.shard.id+1)}/${client.shard.count} | ${client.users.size} Users`);
  27.   } else {
  28.      client.user.setGame(`${default_prefix}help | ${client.guilds.size} Guilds | Shard 1/1 | ${client.users.size} Users`);
  29.   }
  30. });
  31.  
  32. client.on("guildCreate", guild => {
  33.   // This event triggers when the bot joins a guild.
  34.   console.log(`New guild joined: ${guild.name} (id: ${guild.id}). This guild has ${guild.memberCount} members!`);
  35.   if(client.shard !== undefined && client.shard !== null) {
  36.     client.user.setGame(`${default_prefix}help | ${client.guilds.size} Guilds | Shard ${(client.shard.id+1)}/${client.shard.count} | ${client.users.size} Users`);
  37.   } else {
  38.      client.user.setGame(`${default_prefix}help | ${client.guilds.size} Guilds | Shard 1/1 | ${client.users.size} Users`);
  39.   }
  40.   conn.query(`INSERT INTO ${bot_table} (discord_server_id,prefix,nsfw_enabled,nsfw_type) VALUES ("${guild.id}","${default_prefix}",0,"Straight")`);
  41. });
  42.  
  43. client.on("guildDelete", guild => {
  44.   // this event triggers when the bot is removed from a guild.
  45.   console.log(`Removed from: ${guild.name} (id: ${guild.id})`);
  46.   if(client.shard !== undefined && client.shard !== null) {
  47.     client.user.setGame(`${default_prefix}help | ${client.guilds.size} Guilds | Shard ${(client.shard.id+1)}/${client.shard.count} | ${client.users.size} Users`);
  48.   } else {
  49.      client.user.setGame(`${default_prefix}help | ${client.guilds.size} Guilds | Shard 1/1 | ${client.users.size} Users`);
  50.   }
  51.   conn.query(`DELETE FROM ${bot_table} WHERE discord_server_id = "${guild.id}"`);
  52. });
  53.  
  54. client.on("guildMemberAdd", member => {
  55.     console.log(`USER_JOIN > ${member.username}#${member.discriminator} in guild ${member.guild.name} (${member.guild.id})`);
  56.     conn.query(`SELECT * FROM ${bot_table} WHERE discord_server_id = "${member.guild.id}"`, function (error, results, fields) {
  57.         if(results[0].join_enabled == 1 || results[0].join_enabled == true) {
  58.             var join_message=results[0].join_message.replace(/{user}/g,`<@!${member.id}>`).replace(/{server}/g,member.guild.name);
  59.             console.log(`Sent join message "${join_message}" to channel ${client.channels.get(results[0].join_channel).name} (${client.channels.get(results[0].join_channel).id}) in guild ${member.guild.name} (${member.guild.id})`);
  60.             client.channels.get(results[0].join_channel).send(join_message);           
  61.         }
  62.     });
  63. });
  64.  
  65. client.on("message", async message => {
  66.    
  67.     if(message.author.bot) return;
  68.    
  69.     //message.reply(message.content);
  70.    
  71.     conn.query(`SELECT * FROM ${bot_table} WHERE discord_server_id = "${message.guild.id}"`, function (error, results, fields) {
  72.         main(results[0].prefix);
  73.     });
  74.    
  75.     //console.log("PREF: "+global.pref);
  76.    
  77.     async function main(prefix) {
  78.        
  79.         if (message.content.indexOf(prefix) !== 0) return;
  80.    
  81.         const args = message.content.slice(prefix.length).trim().split(/ +/g);
  82.        
  83.         const command = args.shift().toLowerCase();
  84.        
  85.  
  86.         message.delete().catch(error=>{message.reply("Error deleting command")});
  87.        
  88.         switch(command) {
  89.             case "help":
  90.                 var desc=`**${prefix}help** - Lists all bot commands${"\n"}**${prefix}ping** - Returns the bots ping${"\n"}**${prefix}info** - Returns info about the bot${"\n"}**${prefix}discord** - Join my discord server!${"\n"}**${prefix}mmorpg** - Play a text based MMORPG${"\n"}**${prefix}yiff** - Displays a random yiff image${"\n"}**${prefix}config** - Change config options for the bot on your server`;
  91.                 //var data = {"title": "Help For Our Bot", "url": "https://bot.discord.mcpro.games","color": 157661,"thumbnail": {"url": "https://i.mcpro.games/dragon.png"},"author": {"name": "Donovan_DMC","url": "https://www.donovand.info","icon_url": "https://i.mcpro.games/Don.jpeg"},"fields": [{"name": "Command","value": prefix+"help","inline": true},{"name": "Description","value": "Shows help about the bot","inline": true},{"name": prefix+"ping","value": prefix+"info","inline": true},{"name": "Returns the bots ping","value": "Shows info about the bot","inline": true},{"name": prefix+"discord","value": prefix+"mmorpg","inline": true},{"name": "Join my discord server!","value": "Play a text based MMORPG","inline": true},{"name":prefix+"yiff","value":prefix+"nsfw_type","inline":true},{"name":"Displays a random yiff image","value":"Change the type of yiff displayed","inline":true}]};
  92.                 var data = {"title": "Help For Our Bot (Command List)","description":desc,"url": "https://bot.discord.mcpro.games","color": 157661,"thumbnail": {"url": "https://i.mcpro.games/dragon.png"},"author": {"name": "Donovan_DMC","url": "https://www.donovand.info","icon_url": "https://i.mcpro.games/Don.jpeg"}};
  93.                 var embed = new Discord.RichEmbed(data);
  94.                 message.channel.send(embed);
  95.             break;
  96.            
  97.             case "discord":
  98.                 var data = {"title": "Discord","description": "[Join Our Discord!](https://join.discord.mcpro.games)","color": 5540381,"thumbnail": {"url": "https://cdn.discordapp.com/embed/avatars/0.png"},"author": {"name": "Donovan_DMC","url": "https://www.donovand.info","icon_url": "https://i.mcpro.games/Don.jpeg"}};
  99.                 var embed = new Discord.RichEmbed(data);
  100.                 message.channel.send(embed);
  101.             break;
  102.            
  103.             case"mmorpg":
  104.                 var data = {"title": "MMORPG","description": "[MMORPG Discord](https://www.furrycentr.al/mmorpg/inv/)\n[MMORPG Online Interface](https://www.furrycentr.al/mmorpg/)\nYou must be in the [MMORPG Discord](https://www.furrycentr.al/mmorpg/inv/) server for the web interface to work.\nThe web interface was made by me, [Donovan_DMC](https://twitter.com/Donovan_DMC)","color": 5540381,"thumbnail": {"url": "https://fc.api.mcpro.games/mmorpg/assets/images/mmorpg.png"},"author": {"name": "Donovan_DMC","url": "https://www.donovand.info","icon_url": "https://i.mcpro.games/Don.jpeg"}};
  105.                 var embed = new Discord.RichEmbed(data);
  106.                 message.channel.send(embed);
  107.             break;
  108.            
  109.             case "ping":
  110.             var m = await message.channel.send("Checking Ping..");
  111.             m.edit("Ping Calculated!");
  112.             m.delete().catch(O_o=>{});
  113.             message.channel.send(`Bot Ping: ${m.createdTimestamp - message.createdTimestamp}ms\nAPI Ping: ${Math.round(client.ping)}ms`)
  114.             break;
  115.            
  116.             case "yiff":
  117.                 if(message.channel.nsfw) {
  118.                     conn.query(`SELECT nsfw_type,nsfw_enabled FROM ${bot_table} WHERE discord_server_id = "${message.guild.id}"`, function (error, results, fields) {
  119.                     if (error) {
  120.                         console.log(error);
  121.                     } else {
  122.                         if(results == "" || !results) {
  123.                             console.log("nsfw_type and nsfw_enabled is not set");
  124.                             var data = {"title": `Please set the yiff type via the command:${"\n"}${prefix}config nsfw_type <type>`,"color": 14686101,"author": {"name": message.author.username,"icon_url": message.author.avatarURL}};
  125.                             var embed = new Discord.RichEmbed(data);
  126.                             message.channel.send(embed);
  127.                         } else {
  128.                             if(results[0].nsfw_enabled == 0) {
  129.                                 var data = {"title": `NSFW commands are not enabled. Enable them via the command:${"\n"}${prefix}config nsfw_enabled true`,"color": 14686101,"author": {"name": message.author.username,"icon_url": message.author.avatarURL}};
  130.                                 var embed = new Discord.RichEmbed(data);
  131.                                 message.channel.send(embed);
  132.                             } else {
  133.                                 var nsfw_type=results[0].nsfw_type;
  134.                                 request(`https://discordbot.api.mcpro.games/Images/NSFW/${nsfw_type}/random.php`, {json: true}, function (err, data) {
  135.                                     if (err) {
  136.                                         console.log(err);
  137.                                     } else {
  138.                                         var img_name=data.response.image.split("/img/")[1];
  139.                                         var msg=new Discord.Attachment(data.response.image,img_name);
  140.                                         message.channel.send(msg);
  141.                                         console.log(`\n\nNSFW_IMAGE >\nImage Requested\nGuild: ${message.guild.name} (${message.guild.id})\nChannel: ${message.channel.name} (${message.channel.id})\nUser: ${message.author.username} (${message.author.id})\nYiff Type: ${nsfw_type}\nImage URL: ${data.response.image}`);
  142.                                     }
  143.                                 });
  144.                             }
  145.                         }
  146.                     }
  147.                     });
  148.                 } else {   
  149.                     var data = {"title": "The command you tried to use is only usable in an NSFW channel","color": 15286101,"author": {"name": message.author.username,"icon_url": message.author.avatarURL}};
  150.                     var embed = new Discord.RichEmbed(data);
  151.                     message.channel.send(embed);
  152.                 }      
  153.             break;
  154.            
  155.             case "config":
  156.                 var opts=Array("nsfw_enabled","nsfw_type","prefix");
  157.                 var opt_str="**"+opts.toString().replace(/,/g,"** | **")+"**";
  158.                 if(args[0] == "" || !args[0]) {
  159.                     message.reply(`Valid config options:${"\n"}${opt_str}`);
  160.                 } else {
  161.                     if(opts.indexOf(args[0]) == -1) {
  162.                         message.channel.send(`Invalid config option ${args[0]}`);
  163.                     } else {
  164.                         switch(args[0]) {
  165.                             case "prefix":
  166.                                 if(args[1] == "" || !args[1]) {
  167.                                     message.channel.send(`Config option: ${args[0]}${"\n"}Description: Changes the bot's command prefix for this server${"\n"}Prefix must be under 30 characters`);
  168.                                 } else {
  169.                                     if (args[1].length > 30) {
  170.                                         message.reply("Prefix must be less than 30 characters in length");
  171.                                         console.log(`Prefix too long, Length: ${args[1].length}\nGuild: ${message.guild.name} (${message.guild.id})\nUser: ${message.author.username}#${message.author.discriminator} (${message.author.id})`);
  172.                                     } else {
  173.                                         conn.query(`UPDATE ${bot_table} SET prefix = "${args[1]}" WHERE discord_server_id = "${message.guild.id}"`, function (error, results, fields) {
  174.                                             if (error) {
  175.                                                 console.log(error);
  176.                                             } else {
  177.                                                 console.log(`UPDATE_SETTING > Changed prefix from ${prefix} to ${args[1]} in guild ${message.guild.name} (${message.guild.id})`);
  178.                                                 message.reply(`Changed prefix to ${args[1]}`);
  179.                                             }
  180.                                         });
  181.                                     }
  182.                                 }
  183.                             break;
  184.                            
  185.                             case "nsfw_enabled":
  186.                                 if(args[1] == "" || !args[1]) {
  187.                                     message.channel.send(`Config option: ${args[0]}${"\n"}Description: Enables or disabled NSFW commands${"\n"}Valid values: TRUE,FALSE,1,0`);
  188.                                 } else {
  189.                                     switch (args[1].toLocaleLowerCase()) {
  190.                                     case 1:
  191.                                     case true:
  192.                                     case "1":
  193.                                     case "true":
  194.                                         var opt="1";
  195.                                     break;
  196.                                    
  197.                                     case 0:
  198.                                     case false:
  199.                                     case "0":
  200.                                     case "false":
  201.                                         var opt="0";
  202.                                     break;
  203.                                     }
  204.                                     conn.query(`UPDATE ${bot_table} SET nsfw_enabled = "${opt}" WHERE discord_server_id = "${message.guild.id}"`, function (error, results, fields) {
  205.                                         if (error) {
  206.                                             console.log(error);
  207.                                         } else {
  208.                                             if(opt == false) {
  209.                                                 console.log(`UPDATE_SETTING > Disabled NSFW commands in guild ${message.guild.name} (${message.guild.id})`);
  210.                                                 message.reply(`Disabled NSFW Commands`);
  211.                                             } else if(opt == true) {
  212.                                                 console.log(`UPDATE_SETTING > Enabled NSFW commands in guild ${message.guild.name} (${message.guild.id})`);
  213.                                                 message.reply(`Enabled NSFW Commands`);
  214.                                             }
  215.                                             if (error) {
  216.                                                 console.log(error);
  217.                                             }
  218.                                         }
  219.                                     });
  220.                                 }
  221.                             break;
  222.                            
  223.                             case "nsfw_type":
  224.                                 var nsfw_types=Array("gay","femboy","straight","lesbian","gay-cub","straight-cub","lesbian-cub");
  225.                                 var nsfw_types_str=nsfw_types.toString();
  226.                                 if(args[1] == "" || !args[1]) {
  227.                                     message.channel.send(`Config option: ${args[0]}${"\n"}Description: Changes the NSFW type shown when an NSFW command is used${"\n"}Valid values: ${nsfw_types_str}${"\n"}Usage: ${prefix}config ${args[0]} <value>`);
  228.                                 } else {
  229.                                     if(nsfw_types.indexOf(args[1]) == -1) {
  230.                                         var data = {"fields":[{"name":`"${args[1]}" is not a valid value for nsfw_type`,"value":`Valid Values: ${nsfw_types_str}`,"inline":true}],"color": 14686101,"author": {"name": message.author.username,"icon_url": message.author.avatarURL}};
  231.                                         var embed = new Discord.RichEmbed(data);
  232.                                         message.channel.send(embed);
  233.                                     } else {
  234.                                     function yifftype(string) {
  235.                                         var res=string.toLocaleLowerCase();
  236.                                         if(res.indexOf("-") !== -1) {
  237.                                             var resa=res.split("-");
  238.                                             var resb=resa[0].charAt(0).toLocaleUpperCase();
  239.                                             var resc=resa[1].charAt(0).toLocaleUpperCase();
  240.                                             return resb+resa[0].slice(1)+"-"+resc+resa[1].slice(1);
  241.                                         } else {
  242.                                             var resa=res.charAt(0).toLocaleUpperCase();
  243.                                             return resa+res.slice(1);
  244.                                         }
  245.                                     }
  246.                                         var y_type=yifftype(args[1]);
  247.                                         conn.query(`SELECT * FROM ${bot_table} WHERE discord_server_id = "${message.guild.id}"`, function (error, results, fields) {
  248.                                         if (error) {
  249.                                             console.log(error);
  250.                                         } else {
  251.                                             if (results == "" || !results) {
  252.                                                 conn.query(`INSERT INTO ${bot_table} (discord_server_id,prefix,enable_yiff,nsfw_type) VALUES ("${message.guild.id}","m!",0,"${y_type}")`, function (error, results, fields) {
  253.                                                 if (error) {
  254.                                                     console.log(error);
  255.                                                 } else {
  256.                                                     console.log(`SET_SETTING > Set nsfw_type to ${y_type} in guild ${message.guild.name} (${message.guild.id})`);
  257.                                                     message.reply(`Set nsfw_type to ${args[1].toLocaleLowerCase()}`);
  258.                                                     message.reply(`You must enable NSFW commands before they are usable, enable them via the command:${"\n"} **${prefix}config nsfw_enabled true**`);
  259.                                                 }
  260.                                             });
  261.                                             } else {
  262.                                                 var nsfwtype_og_value=results[0].nsfw_type;
  263.                                                 conn.query(`UPDATE ${bot_table} SET nsfw_type = "${y_type}" WHERE discord_server_id = "${message.guild.id}"`, function (error, results, fields) {
  264.                                                     if (error) {
  265.                                                         console.log(error);
  266.                                                     } else {
  267.                                                         console.log(`UPDATE_SETTING > Changed nsfw_type from ${nsfwtype_og_value} to ${y_type} in guild ${message.guild.name} (${message.guild.id})`);
  268.                                                         message.reply(`Changed nsfw_type from ${nsfwtype_og_value.toLocaleLowerCase()} to ${args[1].toLocaleLowerCase()}`);
  269.                                                         conn.query(`SELECT nsfw_enabled FROM ${bot_table} WHERE discord_server_id = "${message.guild.id}"`, function (error, results, fields) {
  270.                                                             if (error) {
  271.                                                                 console.log(error);
  272.                                                             } else {
  273.                                                                 if(results[0].nsfw_enabled == 0) {
  274.                                                                     message.reply(`You must enable NSFW commands before they are usable, enable them via the command:${"\n"} **${prefix}config nsfw_enabled true**`);
  275.                                                                 }
  276.                                                             }
  277.                                                         });
  278.                                                     }
  279.                                                 });
  280.                                             }
  281.                                         }
  282.                                         });
  283.                                     }
  284.                                 }
  285.                             break;
  286.                            
  287.                             case "joinmsg_enabled":
  288.                                 if(args[1] == "" || !args[1]) {
  289.                                     message.channel.send(`Config option: ${args[0]}${"\n"}Description: Enables or disabled join message in <channel>${"\n"}Valid values: TRUE,FALSE,1,0${"\n"}Usage: ${prefix}config ${args[0]} <true/false> <channel>`);
  290.                                 } else {
  291.                                     switch (args[1].toLocaleLowerCase()) {
  292.                                     case 1:
  293.                                     case true:
  294.                                     case "1":
  295.                                     case "true":
  296.                                         var opt="1";
  297.                                     break;
  298.                                    
  299.                                     case 0:
  300.                                     case false:
  301.                                     case "0":
  302.                                     case "false":
  303.                                         var opt="0";
  304.                                     break;
  305.                                     }
  306.                                     conn.query(`UPDATE ${bot_table} SET join_enabled = "${opt}" WHERE discord_server_id = "${message.guild.id}"`, function (error, results, fields) {
  307.                                         if (error) {
  308.                                             console.log(error);
  309.                                         } else {
  310.                                             if(opt == false) {
  311.                                                 console.log(`UPDATE_SETTING > Disabled Join Message in guild ${message.guild.name} (${message.guild.id})`);
  312.                                                 message.reply(`Disabled Join Message`);
  313.                                             } else if(opt == true) {
  314.                                                 console.log(`UPDATE_SETTING > Enabled Join Message in guild ${message.guild.name} (${message.guild.id})`);
  315.                                                 message.reply(`Enabled NSFW Commands`);
  316.                                             }
  317.                                             if (error) {
  318.                                                 console.log(error);
  319.                                             }
  320.                                         }
  321.                                     });
  322.                                 }
  323.                             break;
  324.                                
  325.                             default:
  326.                                 message.channel.send(`Invalid config option ${args[0]}`);
  327.                             }
  328.                         }
  329.                     }
  330.             break;
  331.                
  332.                 //case "info":
  333.                
  334.             default:
  335.             message.reply("Invalid command.");
  336.         }
  337.     }
  338. });
  339.  
  340. client.login(token);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement