Ryyan

Untitled

Sep 12th, 2019
223
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 17.03 KB | None | 0 0
  1. // Load up the discord.js library
  2. const Discord = require("discord.js");
  3.  
  4. // This is your client. Some people call it `bot`, some people call it `self`,
  5. // some might call it `cootchie`. Either way, when you see `client.something`, or `bot.something`,
  6. // this is what we're refering to. Your client.
  7. const client = new Discord.Client();
  8.  
  9. // Here we load the config.json file that contains our token and our prefix values.
  10. const config = require("./config.json");
  11. // config.token contains the bot's token
  12. //a database for the prefix command.
  13. const db = require('quick.db');
  14. //used for the tempmute command, and other time based commands.
  15. const ms = require('ms')
  16. const got = require('got');
  17.  
  18. const ytdl = require("ytdl-core");
  19.  
  20.  
  21. //joined a server
  22. client.on("guildCreate", guild => {
  23.  
  24. console.log("I Joined a new guild: \n" + guild.name + " Guild ID: " + guild.id + " guild OwnerID " + guild.ownerID);
  25.  
  26. //Your other stuff like adding to guildArray
  27.  
  28. let channel = guild.channels.find(c => c.type === 'text' && c.permissionsFor(client.user).has('SEND_MESSAGES'));
  29.  
  30. if (!channel) return console.log(`I've been added to ${guild.name}, but I failed to introduce myself`);
  31.  
  32. let heyembed = new Discord.RichEmbed()
  33. .setTitle(`Hello!`)
  34. .setDescription(`Thanks For inviting me to your server! My Default command prefix is ` + "`;`" + `\nYou can change it by typing ` + "`;prefix`\n\n" + `__Important Info__\n ` + "Make sure Im above the member role, so i can moderate them.")
  35. .setTimestamp()
  36. .setColor("36393E")
  37. .setFooter(`Created by Ryyan`)
  38.  
  39.  
  40. channel.send(heyembed)
  41.  
  42. });
  43.  
  44. //removed from a server
  45. client.on("guildDelete", guild => {
  46. console.log("I Left a guild: \n" + guild.name + " Guild ID: " + guild.id + " guild OwnerID " + guild.ownerID);
  47. //remove from guildArray
  48. })
  49.  
  50.  
  51. client.on('ready', () => {
  52.  
  53. console.log('\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n');
  54. console.log('----------------------------');
  55. console.log(`-- ${client.user.tag} Booting UP! --`);
  56. console.log('----------------------------');
  57. console.log('----------------------------\n\n\n\n\n\n');
  58. console.log('----------------------------');
  59. console.log(`-- ${client.user.tag} Booted UP! --`);
  60. console.log('----------------------------\n\n');
  61. console.log(`[Bot is online | Node: ${process.version} | Discord.js: ${Discord.version}]\nConnected as: ${client.user.username} (ID: ${client.user.id})\nGuilds Connected: ${client.guilds.size}`);
  62. console.log("Servers:")
  63. client.guilds.forEach((guild) => {
  64. console.log(" - " + guild.name)
  65. })
  66.  
  67. client.user.setStatus('online')
  68. client.user.setPresence({
  69. game: {
  70. name: `--Discord.js--`,
  71. type: "playing",
  72. url: "https://www.twitch.tv/monstercat"
  73. }
  74. });
  75. });
  76.  
  77. //console.log(`logged in as ${client.user.tag}, ${client.users.size} users, in ${client.channels.size} channels of ${client.guilds.size} guilds.`);
  78.  
  79. client.on("message", async message => {
  80.  
  81. if (message.isMemberMentioned(client.user)) { //we check, whether the bot is mentioned, client.user returns the user that the client is logged in as
  82. //this is where you put what you want to do now
  83. message.channel.send(`Hello! My command prefix is ` + `**${prefix}**\nFor Further Help type ${prefix}help`)
  84. }
  85.  
  86. if (message.content === '!rip') {
  87. if (message.author.id !== '321091504242294784') return;
  88. // Create the attachment using Attachment
  89. let attachment = new Discord.Attachment('https://i.imgur.com/w3duR07.png');
  90. // Send the attachment in the message channel
  91. message.channel.send(attachment);
  92. }
  93.  
  94.  
  95.  
  96. if (message.content == "prefix") {
  97. message.channel.send(`${prefix}`)
  98. }
  99.  
  100. if (message.author.bot) return;
  101.  
  102. if (message.channel.type === 'dm') return;
  103.  
  104. let fetched = await db.fetch(`prefix_${message.guild.id}`);
  105. if (fetched === null) prefix = ";";
  106. else prefix = fetched;
  107.  
  108. if (message.content.indexOf(prefix) !== 0) return;
  109.  
  110.  
  111. const args = message.content.slice(prefix.length).trim().split(/ +/g);
  112. const command = args.shift().toLowerCase();
  113.  
  114. if (command === "prefix") {
  115. if (!message.member.hasPermission('ADMINISTRATOR')) return message.channel.send("**Sorry, you don't have the ADMINISTRATOR permission.**")
  116.  
  117.  
  118. db.set(`prefix_${message.guild.id}`, args[0]);
  119. message.channel.send(`Successfully set prefix to **${args[0]}** `);
  120. }
  121.  
  122. if (command === "ban") {
  123.  
  124. if (!message.member.hasPermission(["BAN_MEMBERS", "ADMINISTRATOR"])) return message.channel.send("Error: Insufficient Permissions")
  125.  
  126. if (!message.guild.me.hasPermission(["BAN_MEMBERS", "ADMINISTRATOR"])) return message.channel.send(`Error: I have Insufficient Permissions to ban Members`)
  127.  
  128. let member = message.mentions.members.first() || message.guild.members.get(args[0]);
  129. if (!member) return message.channel.send(`Error: Missing Arguments, define member\nUsage: ${prefix}ban [member] [reason]`)
  130.  
  131. if (member.hasPermission("BAN_MEMBERS", "KICK_MEMBERS", "MANAGE_SERVER", "ADMINISTRATOR", "MANAGE_MESSAGES", "MANAGE_ROLES")) return message.channel.send(`Error: That user is a mod/admin, I can't do that.`)
  132.  
  133.  
  134. if (!member.bannable)
  135. return message.channel.send(`I cannot ban ${member}`)
  136.  
  137. let reason = args.slice(1).join(" ");
  138. if (!reason) return message.channel.send(`Error: Missing Arguments, define reason\nUsage: ${prefix}ban [member] [reason]`)
  139.  
  140. let log = db.fetch(`channel_${message.guild.id}`)
  141.  
  142. if (log === null) return
  143.  
  144. let logged = message.guild.channels.get(log)
  145.  
  146. member.ban(reason)
  147.  
  148. logged.send(`Banned!`)
  149.  
  150.  
  151. message.channel.send(`${member.user.tag} has been successfully banned`)
  152.  
  153. }
  154.  
  155. if (command === "setlogchannel") {
  156. let channel = message.mentions.channels.first();
  157. try {
  158. message.delete(15000)
  159. let ads = db.fetch(`channel_${message.guild.id}`);
  160. console.log(ads)
  161. if (!message.member.hasPermission('ADMINISTRATOR')) return message.reply("Nope!").then(m => m.delete(15000));
  162. if(!channel) return message.reply("You should enter a channel");
  163. } catch (error) {
  164. console.error(error);
  165. let embed = new Discord.RichEmbed()
  166. .setTitle('Something went wrong!')
  167. .setColor('RED');
  168. return message.channel.send(embed)
  169. }
  170.  
  171.  
  172. }
  173.  
  174. if (command === "tim") {
  175. if(message.channel.id != "579400507391737866") return message.channel.send(`Sorry mate but NOOZ`)
  176. message.channel.send(`Hello!`)
  177. }
  178.  
  179. if (command === "meme") {
  180. if (message.author.id !== '321091504242294784') return;
  181. let embed = new Discord.RichEmbed();
  182. got('https://www.reddit.com/r/dankmemes/random/.json').then(response => {
  183. let content = JSON.parse(response.body);
  184. let permalink = content[0].data.children[0].data.permalink;
  185. let memeUrl = `https://reddit.com${permalink}`;
  186. let memeImage = content[0].data.children[0].data.url;
  187. let memeTitle = content[0].data.children[0].data.title;
  188. let memeUpvotes = content[0].data.children[0].data.ups;
  189. let memeDownvotes = content[0].data.children[0].data.downs;
  190. let memeNumComments = content[0].data.children[0].data.num_comments;
  191. embed.addField(`${memeTitle}`, `[View thread](${memeUrl})`);
  192. embed.setImage(memeImage);
  193. embed.setFooter(`👍 ${memeUpvotes} 👎 ${memeDownvotes} 💬 ${memeNumComments}`);
  194. message.channel.send(embed)
  195. .then(sent => console.log(`Yo, ${message.author.tag} used the meme command, pretty sickz`))
  196. }).catch(console.error);
  197. }
  198.  
  199. if (command === "kick") {
  200.  
  201. if (!message.member.hasPermission(["KICK_MEMBERS", "ADMINISTRATOR"])) return message.channel.send("Error: Insufficient Permissions")
  202.  
  203. if (!message.guild.me.hasPermission(["KICK_MEMBERS", "ADMINISTRATOR"])) return message.channel.send(`Error: I have Insufficient Permissions to kick Members`)
  204.  
  205. let member = message.mentions.members.first() || message.guild.members.get(args[0]);
  206. if (!member) return message.channel.send(`Error: Missing Arguments, define member\nUsage: ${prefix}kick [member] [reason]`)
  207.  
  208. if (member.hasPermission("BAN_MEMBERS", "KICK_MEMBERS", "MANAGE_SERVER", "ADMINISTRATOR", "MANAGE_MESSAGES", "MANAGE_ROLES")) return message.channel.send(`Error: That user is a mod/admin, I can't do that.`)
  209.  
  210.  
  211. if (!member.bannable)
  212. return message.channel.send(`I cannot kick ${member}`)
  213.  
  214. let reason = args.slice(1).join(" ");
  215. if (!reason) return message.channel.send(`Error: Missing Arguments, define reason\nUsage: ${prefix}kick [member] [reason]`)
  216.  
  217. member.kick(reason)
  218. message.channel.send(`${member.user.tag} has been successfully kicked`)
  219. }
  220.  
  221.  
  222. if (command === "tempmute") {
  223.  
  224. if (!message.member.hasPermission("MANAGE_ROLES")) return message.channel.send("Error: Insufficient Permissions")
  225.  
  226. let tomute = message.guild.member(message.mentions.users.first() || message.guild.members.get(args[0]));
  227.  
  228. if (!tomute) return message.channel.send(`Error: Missing Arguments, define member\nUsage: ${prefix}tempmute [member] [time]`)
  229.  
  230. if (tomute.hasPermission("MANAGE_ROLES", "MANAGE_SERVER", "BAN_MEMBERS", "KICK_MEMBERS", "MANAGE_MESSAGES")) return message.channel.send(`Error: That user is a mod/admin, I can't do that.`)
  231.  
  232. let muterole = message.guild.roles.find(`name`, "Muted");
  233. //start of create role
  234. if (!muterole) {
  235. try {
  236. muterole = await message.guild.createRole({
  237. name: "muted",
  238. color: "#000000",
  239. permissions: []
  240. })
  241. message.guild.channels.forEach(async (channel, id) => {
  242. await channel.overwritePermissions(muterole, {
  243. SEND_MESSAGES: false,
  244. ADD_REACTIONS: false
  245. });
  246. });
  247. } catch (e) {
  248. console.log(e.stack);
  249. }
  250. }
  251. //end of create role
  252. let mutetime = args[1];
  253. if (!mutetime) return message.channel.send(`Error: Missing Arguments, define time\nUsage: ${prefix}tempmute [member] [time]`);
  254.  
  255. message.delete().catch(O_o => {});
  256.  
  257. try {} catch (e) {
  258. message.channel.send(`${tomute.user.tag} has been muted for ${mutetime}`)
  259. }
  260.  
  261. await (tomute.addRole(muterole.id));
  262.  
  263. message.channel.send(`${tomute.user.tag} Has been successfully muted for ${mutetime}`)
  264.  
  265. setTimeout(function () {
  266. tomute.removeRole(muterole.id);
  267. }, ms(mutetime));
  268. }
  269.  
  270. if (command === "unmute") {
  271. if (!message.member.hasPermission("MANAGE_ROLES") || !message.guild.owner) return message.channel.send(`Error: Insufficient Permissions`)
  272.  
  273. if (!message.guild.me.hasPermission(["MANAGE_ROLES", "ADMINISTRATOR"])) return message.channel.send(`Error: I have Insufficient Permissions to remove roles.`)
  274.  
  275. //define the reason and unmutee
  276. let mutee = message.mentions.members.first() || message.guild.members.get(args[0]);
  277. if (!mutee) return message.channel.send(`Error: Missing Arguments, define member\nUsage: ${prefix}unmute [member]`);
  278.  
  279. //define mute role and if the mute role doesnt exist then send a message
  280. let muterole = message.guild.roles.find(r => r.name === "Muted")
  281.  
  282. if (!mutee.roles.some(role => role.name === 'Muted')) {
  283. return message.channel.send(`Error: ${mutee.user.username} Is not muted.`)
  284. }
  285.  
  286. if (!muterole) return message.channel.send("Error: the Muted role does not exist.")
  287.  
  288. //remove role to the mentioned user and also send the user a dm explaing where and why they were unmuted
  289. mutee.removeRole(muterole.id).then(() => {
  290. message.delete()
  291. message.channel.send(`${mutee.user.username} was successfully unmuted!`)
  292. })
  293.  
  294. }
  295.  
  296. if (command === 'setchannel') {
  297. if (!message.member.roles.find('name', 'Owner')) return message.channel.send("You are not the owner") // you can change this to a specific permission
  298.  
  299. let mentionedchannel = message.mentions.channels.first() // idk if you have args[0] so just use first()
  300. if (!mentionedchannel) return message.channel.send("Please mention the channel")
  301.  
  302. // now we are grabbing the db..
  303. let channel = db.fetch(`channel_${message.guild.id}`)
  304. if (channel === null) channel = "not set"
  305. else channel = `<#${channel}>`
  306. // what we are doing here is that we are grabbing the data, if its null then we turn it to not set, else it grabs the channel
  307.  
  308. //now i feel like you have args in your index.js soooo imma do it.
  309. if (args[0] === 'reset') {
  310. message.channel.send("reseted the channel")
  311. db.delete(`channel_${message.guild.id}`)
  312. } else {
  313. db.set(`channel_${message.guild.id}`, mentionedchannel)
  314. message.channel.send(`changed the channel to ${mentionedchannel}`)
  315. }
  316. }
  317.  
  318.  
  319.  
  320.  
  321.  
  322.  
  323. if (command === "addrole") {
  324.  
  325. if (!message.guild.me.hasPermission("MANAGE_ROLES")) return message.channel.send(`Error: I have Insufficient Permissions to add roles.`)
  326.  
  327. if (!message.member.hasPermission(["MANAGE_ROLES", "ADMINISTRATOR"])) return message.channel.send("Error: Insufficient Permissions")
  328.  
  329. let rMember = message.mentions.members.first() || message.guild.members.find(m => m.user.tag === args[0]) || message.guild.members.get(args[0])
  330. if (!rMember) return message.channel.send(`Error: Missing Arguments, define member\nUsage: ${prefix}addrole [member] [role]`)
  331. let role = message.guild.roles.find(r => r.name == args[1]) || message.guild.roles.find(r => r.id == args[1]) || message.mentions.roles.first()
  332. if (!role) return message.channel.send(`Error: Missing Arguments, define role\nUsage: ${prefix}addrole [member] [role]`)
  333.  
  334. if (rMember.roles.has(role.id)) {
  335. return message.channel.send(`Error: ${rMember.user.username}, already has the ${role.name} role`)
  336. } else {
  337. await rMember.addRole(role.id).catch(e => console.log(e.message))
  338. message.channel.send(`The role ${role.name} has been added to ${rMember.displayName} successfully.`)
  339. }
  340. }
  341.  
  342. if (command === "purge") {
  343.  
  344. if (!message.guild.me.hasPermission("MANAGE_MESSAGES")) return message.channel.send(`Error: I have Insufficient Permissions to delete messages.`)
  345.  
  346. if (!message.member.hasPermission("MANAGE_MESSAGES")) return message.channel.send("Error: Insufficient Permissions")
  347.  
  348. // This command removes all messages from all users in the channel, up to 100.
  349.  
  350. // get the delete count, as an actual number.
  351. const deleteCount = parseInt(args[0], 10);
  352.  
  353. // Ooooh nice, combined conditions. <3
  354. if (!deleteCount || deleteCount < 2 || deleteCount > 100)
  355. return message.channel.send(`Error: Missing Arguments, define deletecount\nUsage: ${prefix}purge [deletecount]\nNote: deletecount can only be 2 through 100`)
  356.  
  357.  
  358. // So we get our messages, and delete them. Simple enough, right?
  359. const fetched = await message.channel.fetchMessages({
  360. limit: deleteCount
  361. });
  362. message.channel.bulkDelete(fetched)
  363. .catch(error => message.reply(`Couldn't delete messages because of: ${error}`));
  364. }
  365.  
  366. let servers = [];
  367.  
  368. if (command === "currentservers") {
  369. if (message.author.id !== '321091504242294784') return;
  370. client.guilds.forEach(g => {
  371. g.fetchInvites()
  372. .then(invites => {
  373. servers.push(`${g.name} | ${g.id} | ${g.owner.user.tag} | ${invites.first().code}`);
  374. })
  375. .catch(err => {
  376. servers.push(`${g.name} | ${g.id} | ${g.owner.user.tag} | Cant get invite code`);
  377. });
  378. });
  379. setTimeout(() => {
  380. message.author.send(`${servers.join('\n')}`, {
  381. split: true,
  382. code: true
  383. });
  384. }, 3000);
  385. }
  386.  
  387. if (command === "unban") {
  388.  
  389. if (!message.member.hasPermission(["BAN_MEMBERS", "ADMINISTRATOR"])) return message.channel.send(`Error: Insufficient Permissions`)
  390.  
  391. if (isNaN(args[0])) return message.channel.send(`Error: Missing Arguments, define memberID\nUsage: ${prefix}unban [memberID] [reason]`)
  392. let bannedMember = await client.fetchUser(args[0])
  393. if (!bannedMember) return message.channel.send(`Error: Missing Arguments, define memberID\nUsage: ${prefix}unban [memberID] [reason]`)
  394.  
  395.  
  396. let reason = args.slice(1).join(" ")
  397. if (!reason) return message.channel.send(`Error: Missing Arguments, define reason\nUsage: ${prefix}unban [memberID] [reason]`)
  398.  
  399. if (!message.guild.me.hasPermission(["BAN_MEMBERS", "ADMINISTRATOR"])) return message.channel.send(`Error: I have Insufficient Permissions to unban members`)
  400. message.delete()
  401. try {
  402. message.guild.unban(bannedMember, reason)
  403. message.channel.send(`${bannedMember.tag} has been successfully unbanned`)
  404. } catch (e) {
  405. console.log(e.message)
  406. }
  407. }
  408.  
  409.  
  410. if (command === "setlogchannel") {
  411. message.delete(15000)
  412. let ads = db.get(`channel_${message.guild.id}`);
  413. if (!message.member.hasPermission('ADMINISTRATOR')) return message.reply("Nope!").then(m => m.delete(15000));
  414. if(!args[0]) return message.reply("You should enter a channel");
  415. if (!ads) {
  416. db.set(`channel_${message.guild.id}`, args[1])
  417. return message.reply("Done, the log channel is :", args).then(msg => msg.delete(15000))
  418. }
  419. }
  420.  
  421.  
  422. });
  423.  
  424. client.login(config.token);
Add Comment
Please, Sign In to add comment