Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Load up the discord.js library
- const Discord = require("discord.js");
- // This is your client. Some people call it `bot`, some people call it `self`,
- // some might call it `cootchie`. Either way, when you see `client.something`, or `bot.something`,
- // this is what we're refering to. Your client.
- const client = new Discord.Client();
- // Here we load the config.json file that contains our token and our prefix values.
- const config = require("./config.json");
- // config.token contains the bot's token
- //a database for the prefix command.
- const db = require('quick.db');
- //used for the tempmute command, and other time based commands.
- const ms = require('ms')
- const got = require('got');
- const ytdl = require("ytdl-core");
- //joined a server
- client.on("guildCreate", guild => {
- console.log("I Joined a new guild: \n" + guild.name + " Guild ID: " + guild.id + " guild OwnerID " + guild.ownerID);
- //Your other stuff like adding to guildArray
- let channel = guild.channels.find(c => c.type === 'text' && c.permissionsFor(client.user).has('SEND_MESSAGES'));
- if (!channel) return console.log(`I've been added to ${guild.name}, but I failed to introduce myself`);
- let heyembed = new Discord.RichEmbed()
- .setTitle(`Hello!`)
- .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.")
- .setTimestamp()
- .setColor("36393E")
- .setFooter(`Created by Ryyan`)
- channel.send(heyembed)
- });
- //removed from a server
- client.on("guildDelete", guild => {
- console.log("I Left a guild: \n" + guild.name + " Guild ID: " + guild.id + " guild OwnerID " + guild.ownerID);
- //remove from guildArray
- })
- client.on('ready', () => {
- 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');
- console.log('----------------------------');
- console.log(`-- ${client.user.tag} Booting UP! --`);
- console.log('----------------------------');
- console.log('----------------------------\n\n\n\n\n\n');
- console.log('----------------------------');
- console.log(`-- ${client.user.tag} Booted UP! --`);
- console.log('----------------------------\n\n');
- 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}`);
- console.log("Servers:")
- client.guilds.forEach((guild) => {
- console.log(" - " + guild.name)
- })
- client.user.setStatus('online')
- client.user.setPresence({
- game: {
- name: `--Discord.js--`,
- type: "playing",
- url: "https://www.twitch.tv/monstercat"
- }
- });
- });
- //console.log(`logged in as ${client.user.tag}, ${client.users.size} users, in ${client.channels.size} channels of ${client.guilds.size} guilds.`);
- client.on("message", async message => {
- if (message.isMemberMentioned(client.user)) { //we check, whether the bot is mentioned, client.user returns the user that the client is logged in as
- //this is where you put what you want to do now
- message.channel.send(`Hello! My command prefix is ` + `**${prefix}**\nFor Further Help type ${prefix}help`)
- }
- if (message.content === '!rip') {
- if (message.author.id !== '321091504242294784') return;
- // Create the attachment using Attachment
- let attachment = new Discord.Attachment('https://i.imgur.com/w3duR07.png');
- // Send the attachment in the message channel
- message.channel.send(attachment);
- }
- if (message.content == "prefix") {
- message.channel.send(`${prefix}`)
- }
- if (message.author.bot) return;
- if (message.channel.type === 'dm') return;
- let fetched = await db.fetch(`prefix_${message.guild.id}`);
- if (fetched === null) prefix = ";";
- else prefix = fetched;
- if (message.content.indexOf(prefix) !== 0) return;
- const args = message.content.slice(prefix.length).trim().split(/ +/g);
- const command = args.shift().toLowerCase();
- if (command === "prefix") {
- if (!message.member.hasPermission('ADMINISTRATOR')) return message.channel.send("**Sorry, you don't have the ADMINISTRATOR permission.**")
- db.set(`prefix_${message.guild.id}`, args[0]);
- message.channel.send(`Successfully set prefix to **${args[0]}** `);
- }
- if (command === "ban") {
- if (!message.member.hasPermission(["BAN_MEMBERS", "ADMINISTRATOR"])) return message.channel.send("Error: Insufficient Permissions")
- if (!message.guild.me.hasPermission(["BAN_MEMBERS", "ADMINISTRATOR"])) return message.channel.send(`Error: I have Insufficient Permissions to ban Members`)
- let member = message.mentions.members.first() || message.guild.members.get(args[0]);
- if (!member) return message.channel.send(`Error: Missing Arguments, define member\nUsage: ${prefix}ban [member] [reason]`)
- 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.`)
- if (!member.bannable)
- return message.channel.send(`I cannot ban ${member}`)
- let reason = args.slice(1).join(" ");
- if (!reason) return message.channel.send(`Error: Missing Arguments, define reason\nUsage: ${prefix}ban [member] [reason]`)
- let log = db.fetch(`channel_${message.guild.id}`)
- if (log === null) return
- let logged = message.guild.channels.get(log)
- member.ban(reason)
- logged.send(`Banned!`)
- message.channel.send(`${member.user.tag} has been successfully banned`)
- }
- if (command === "setlogchannel") {
- let channel = message.mentions.channels.first();
- try {
- message.delete(15000)
- let ads = db.fetch(`channel_${message.guild.id}`);
- console.log(ads)
- if (!message.member.hasPermission('ADMINISTRATOR')) return message.reply("Nope!").then(m => m.delete(15000));
- if(!channel) return message.reply("You should enter a channel");
- } catch (error) {
- console.error(error);
- let embed = new Discord.RichEmbed()
- .setTitle('Something went wrong!')
- .setColor('RED');
- return message.channel.send(embed)
- }
- }
- if (command === "tim") {
- if(message.channel.id != "579400507391737866") return message.channel.send(`Sorry mate but NOOZ`)
- message.channel.send(`Hello!`)
- }
- if (command === "meme") {
- if (message.author.id !== '321091504242294784') return;
- let embed = new Discord.RichEmbed();
- got('https://www.reddit.com/r/dankmemes/random/.json').then(response => {
- let content = JSON.parse(response.body);
- let permalink = content[0].data.children[0].data.permalink;
- let memeUrl = `https://reddit.com${permalink}`;
- let memeImage = content[0].data.children[0].data.url;
- let memeTitle = content[0].data.children[0].data.title;
- let memeUpvotes = content[0].data.children[0].data.ups;
- let memeDownvotes = content[0].data.children[0].data.downs;
- let memeNumComments = content[0].data.children[0].data.num_comments;
- embed.addField(`${memeTitle}`, `[View thread](${memeUrl})`);
- embed.setImage(memeImage);
- embed.setFooter(`👍 ${memeUpvotes} 👎 ${memeDownvotes} 💬 ${memeNumComments}`);
- message.channel.send(embed)
- .then(sent => console.log(`Yo, ${message.author.tag} used the meme command, pretty sickz`))
- }).catch(console.error);
- }
- if (command === "kick") {
- if (!message.member.hasPermission(["KICK_MEMBERS", "ADMINISTRATOR"])) return message.channel.send("Error: Insufficient Permissions")
- if (!message.guild.me.hasPermission(["KICK_MEMBERS", "ADMINISTRATOR"])) return message.channel.send(`Error: I have Insufficient Permissions to kick Members`)
- let member = message.mentions.members.first() || message.guild.members.get(args[0]);
- if (!member) return message.channel.send(`Error: Missing Arguments, define member\nUsage: ${prefix}kick [member] [reason]`)
- 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.`)
- if (!member.bannable)
- return message.channel.send(`I cannot kick ${member}`)
- let reason = args.slice(1).join(" ");
- if (!reason) return message.channel.send(`Error: Missing Arguments, define reason\nUsage: ${prefix}kick [member] [reason]`)
- member.kick(reason)
- message.channel.send(`${member.user.tag} has been successfully kicked`)
- }
- if (command === "tempmute") {
- if (!message.member.hasPermission("MANAGE_ROLES")) return message.channel.send("Error: Insufficient Permissions")
- let tomute = message.guild.member(message.mentions.users.first() || message.guild.members.get(args[0]));
- if (!tomute) return message.channel.send(`Error: Missing Arguments, define member\nUsage: ${prefix}tempmute [member] [time]`)
- 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.`)
- let muterole = message.guild.roles.find(`name`, "Muted");
- //start of create role
- if (!muterole) {
- try {
- muterole = await message.guild.createRole({
- name: "muted",
- color: "#000000",
- permissions: []
- })
- message.guild.channels.forEach(async (channel, id) => {
- await channel.overwritePermissions(muterole, {
- SEND_MESSAGES: false,
- ADD_REACTIONS: false
- });
- });
- } catch (e) {
- console.log(e.stack);
- }
- }
- //end of create role
- let mutetime = args[1];
- if (!mutetime) return message.channel.send(`Error: Missing Arguments, define time\nUsage: ${prefix}tempmute [member] [time]`);
- message.delete().catch(O_o => {});
- try {} catch (e) {
- message.channel.send(`${tomute.user.tag} has been muted for ${mutetime}`)
- }
- await (tomute.addRole(muterole.id));
- message.channel.send(`${tomute.user.tag} Has been successfully muted for ${mutetime}`)
- setTimeout(function () {
- tomute.removeRole(muterole.id);
- }, ms(mutetime));
- }
- if (command === "unmute") {
- if (!message.member.hasPermission("MANAGE_ROLES") || !message.guild.owner) return message.channel.send(`Error: Insufficient Permissions`)
- if (!message.guild.me.hasPermission(["MANAGE_ROLES", "ADMINISTRATOR"])) return message.channel.send(`Error: I have Insufficient Permissions to remove roles.`)
- //define the reason and unmutee
- let mutee = message.mentions.members.first() || message.guild.members.get(args[0]);
- if (!mutee) return message.channel.send(`Error: Missing Arguments, define member\nUsage: ${prefix}unmute [member]`);
- //define mute role and if the mute role doesnt exist then send a message
- let muterole = message.guild.roles.find(r => r.name === "Muted")
- if (!mutee.roles.some(role => role.name === 'Muted')) {
- return message.channel.send(`Error: ${mutee.user.username} Is not muted.`)
- }
- if (!muterole) return message.channel.send("Error: the Muted role does not exist.")
- //remove role to the mentioned user and also send the user a dm explaing where and why they were unmuted
- mutee.removeRole(muterole.id).then(() => {
- message.delete()
- message.channel.send(`${mutee.user.username} was successfully unmuted!`)
- })
- }
- if (command === 'setchannel') {
- if (!message.member.roles.find('name', 'Owner')) return message.channel.send("You are not the owner") // you can change this to a specific permission
- let mentionedchannel = message.mentions.channels.first() // idk if you have args[0] so just use first()
- if (!mentionedchannel) return message.channel.send("Please mention the channel")
- // now we are grabbing the db..
- let channel = db.fetch(`channel_${message.guild.id}`)
- if (channel === null) channel = "not set"
- else channel = `<#${channel}>`
- // 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
- //now i feel like you have args in your index.js soooo imma do it.
- if (args[0] === 'reset') {
- message.channel.send("reseted the channel")
- db.delete(`channel_${message.guild.id}`)
- } else {
- db.set(`channel_${message.guild.id}`, mentionedchannel)
- message.channel.send(`changed the channel to ${mentionedchannel}`)
- }
- }
- if (command === "addrole") {
- if (!message.guild.me.hasPermission("MANAGE_ROLES")) return message.channel.send(`Error: I have Insufficient Permissions to add roles.`)
- if (!message.member.hasPermission(["MANAGE_ROLES", "ADMINISTRATOR"])) return message.channel.send("Error: Insufficient Permissions")
- let rMember = message.mentions.members.first() || message.guild.members.find(m => m.user.tag === args[0]) || message.guild.members.get(args[0])
- if (!rMember) return message.channel.send(`Error: Missing Arguments, define member\nUsage: ${prefix}addrole [member] [role]`)
- let role = message.guild.roles.find(r => r.name == args[1]) || message.guild.roles.find(r => r.id == args[1]) || message.mentions.roles.first()
- if (!role) return message.channel.send(`Error: Missing Arguments, define role\nUsage: ${prefix}addrole [member] [role]`)
- if (rMember.roles.has(role.id)) {
- return message.channel.send(`Error: ${rMember.user.username}, already has the ${role.name} role`)
- } else {
- await rMember.addRole(role.id).catch(e => console.log(e.message))
- message.channel.send(`The role ${role.name} has been added to ${rMember.displayName} successfully.`)
- }
- }
- if (command === "purge") {
- if (!message.guild.me.hasPermission("MANAGE_MESSAGES")) return message.channel.send(`Error: I have Insufficient Permissions to delete messages.`)
- if (!message.member.hasPermission("MANAGE_MESSAGES")) return message.channel.send("Error: Insufficient Permissions")
- // This command removes all messages from all users in the channel, up to 100.
- // get the delete count, as an actual number.
- const deleteCount = parseInt(args[0], 10);
- // Ooooh nice, combined conditions. <3
- if (!deleteCount || deleteCount < 2 || deleteCount > 100)
- return message.channel.send(`Error: Missing Arguments, define deletecount\nUsage: ${prefix}purge [deletecount]\nNote: deletecount can only be 2 through 100`)
- // So we get our messages, and delete them. Simple enough, right?
- const fetched = await message.channel.fetchMessages({
- limit: deleteCount
- });
- message.channel.bulkDelete(fetched)
- .catch(error => message.reply(`Couldn't delete messages because of: ${error}`));
- }
- let servers = [];
- if (command === "currentservers") {
- if (message.author.id !== '321091504242294784') return;
- client.guilds.forEach(g => {
- g.fetchInvites()
- .then(invites => {
- servers.push(`${g.name} | ${g.id} | ${g.owner.user.tag} | ${invites.first().code}`);
- })
- .catch(err => {
- servers.push(`${g.name} | ${g.id} | ${g.owner.user.tag} | Cant get invite code`);
- });
- });
- setTimeout(() => {
- message.author.send(`${servers.join('\n')}`, {
- split: true,
- code: true
- });
- }, 3000);
- }
- if (command === "unban") {
- if (!message.member.hasPermission(["BAN_MEMBERS", "ADMINISTRATOR"])) return message.channel.send(`Error: Insufficient Permissions`)
- if (isNaN(args[0])) return message.channel.send(`Error: Missing Arguments, define memberID\nUsage: ${prefix}unban [memberID] [reason]`)
- let bannedMember = await client.fetchUser(args[0])
- if (!bannedMember) return message.channel.send(`Error: Missing Arguments, define memberID\nUsage: ${prefix}unban [memberID] [reason]`)
- let reason = args.slice(1).join(" ")
- if (!reason) return message.channel.send(`Error: Missing Arguments, define reason\nUsage: ${prefix}unban [memberID] [reason]`)
- if (!message.guild.me.hasPermission(["BAN_MEMBERS", "ADMINISTRATOR"])) return message.channel.send(`Error: I have Insufficient Permissions to unban members`)
- message.delete()
- try {
- message.guild.unban(bannedMember, reason)
- message.channel.send(`${bannedMember.tag} has been successfully unbanned`)
- } catch (e) {
- console.log(e.message)
- }
- }
- if (command === "setlogchannel") {
- message.delete(15000)
- let ads = db.get(`channel_${message.guild.id}`);
- if (!message.member.hasPermission('ADMINISTRATOR')) return message.reply("Nope!").then(m => m.delete(15000));
- if(!args[0]) return message.reply("You should enter a channel");
- if (!ads) {
- db.set(`channel_${message.guild.id}`, args[1])
- return message.reply("Done, the log channel is :", args).then(msg => msg.delete(15000))
- }
- }
- });
- client.login(config.token);
Add Comment
Please, Sign In to add comment