diff --git a/commands/Moderation/kick.js b/commands/Moderation/kick.js new file mode 100644 index 0000000..12554d8 --- /dev/null +++ b/commands/Moderation/kick.js @@ -0,0 +1,66 @@ +const discord = require('discord.js'); + +module.exports = { + name: 'kick', + description: 'Kick an user from server', + aliases: [], + run: async (client, message, args, prefix, config) => { + + if (!message.member.hasPermission('KICK_MEMBERS')) { //if the user dont have kick members permission + + return message.reply('Sorry, you dont have **kick members** permission...'); + + } + + let user = message.mentions.members.first() || message.guild.members.cache.get(args[0]) || message.guild.members.cache.find(u => u.user.tag === args[0]); + + if (!user) { //if no user + + return message.reply('Please mention a user'); + + } + + if (!user.kickable) { //if the bot cant kick the user + + return message.reply("I can't kick this user, sorry"); + + } + + if (user.id === message.author.id) { + + return message.reply("I can't kick you lmao"); //if the user is the message author + + } + + let reason = args.slice(1).join(' '); + + if (!reason) { + reason = 'No reason' //if no reason + } + + let embed = new discord.MessageEmbed() + .setColor(config.defaultColor) + .setAuthor('Member sucessfully kicked!', user.user.displayAvatarURL()) + .addField('Reason', reason, true) + .addField('Moderator', message.author.tag, true) + .setTimestamp(); + + let userEmbed = new discord.MessageEmbed() + .setColor('RED') + .setAuthor('Kick') + .addField('Server', message.guild.name, true) + .addField('Moderator', message.author.tag, true) + .addField('Reason', reason, true); + + let errEmbed = new discord.MessageEmbed() + .setColor('RED') + .setAuthor('Something Wrong'); + + user.send(userEmbed).catch(e => console.log(e)); //if user's dm is locked + + let msg = await message.channel.send(embed); + + user.kick(`By: ${message.author.tag} | Reason: ${reason}`).catch(e => { msg.edit('', errEmbed.setDescription(`Error: ${e}`)) }); + + } +} \ No newline at end of file diff --git a/config.json b/config.json index 44a1d18..56eaa87 100644 --- a/config.json +++ b/config.json @@ -1,5 +1,5 @@ { - "token": "bot token", - "defaultPrefix": "bot prefix", + "token": "NzU0OTU5NzMwMzEyNDc4NzUw.X18VCg.iokSQh4SeYDmdfEW5IX5cpdvXtw", + "defaultPrefix": "!", "defaultColor": "#0000ff" } \ No newline at end of file diff --git a/index.js b/index.js index 373bd59..7d010c3 100644 --- a/index.js +++ b/index.js @@ -26,7 +26,7 @@ client.on("message", async message => { if (!message.member) message.member = await message.guild.fetchMember(message); //bug bruuuh - let args = message.content.slice(prefix.length).trim().split(/ +/g); //the args IF YOU HAVE A ERROR GO TO github.com/AngeloCore/src-bot AND COPY THE FILES + let args = message.content.slice(prefix.length).trim().split(/ +/g); //the args IF YOU HAVE A ERROR GO TO GLITCH.COM/~SRC-TESTER AND COPY THE FILES let cmd = args.shift().toLowerCase(); //the cmd diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..e3ce0e3 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,117 @@ +{ + "name": "custom_name", + "version": "0.0.1", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@discordjs/collection": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-0.1.6.tgz", + "integrity": "sha512-utRNxnd9kSS2qhyivo9lMlt5qgAUasH2gb7BEOn6p0efFh24gjGomHzWKMAPn2hEReOPQZCJaRKoURwRotKucQ==" + }, + "@discordjs/form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@discordjs/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-ZfFsbgEXW71Rw/6EtBdrP5VxBJy4dthyC0tpQKGKmYFImlmmrykO14Za+BiIVduwjte0jXEBlhSKf0MWbFp9Eg==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "requires": { + "event-target-shim": "^5.0.0" + } + }, + "ascii-table": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/ascii-table/-/ascii-table-0.0.9.tgz", + "integrity": "sha1-BqZgTWpV1L9BqaR9mHLXp42jHnM=" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "discord.js": { + "version": "12.5.1", + "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-12.5.1.tgz", + "integrity": "sha512-VwZkVaUAIOB9mKdca0I5MefPMTQJTNg0qdgi1huF3iwsFwJ0L5s/Y69AQe+iPmjuV6j9rtKoG0Ta0n9vgEIL6w==", + "requires": { + "@discordjs/collection": "^0.1.6", + "@discordjs/form-data": "^3.0.1", + "abort-controller": "^3.0.0", + "node-fetch": "^2.6.1", + "prism-media": "^1.2.2", + "setimmediate": "^1.0.5", + "tweetnacl": "^1.0.3", + "ws": "^7.3.1" + } + }, + "event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==" + }, + "fs": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.2.tgz", + "integrity": "sha1-4fJE7zkzwbKmS9R5kTYGDQ9ZFPg=" + }, + "mime-db": { + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.45.0.tgz", + "integrity": "sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w==" + }, + "mime-types": { + "version": "2.1.28", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.28.tgz", + "integrity": "sha512-0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ==", + "requires": { + "mime-db": "1.45.0" + } + }, + "node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" + }, + "prism-media": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/prism-media/-/prism-media-1.2.3.tgz", + "integrity": "sha512-fSrR66n0l6roW9Rx4rSLMyTPTjRTiXy5RVqDOurACQ6si1rKHHKDU5gwBJoCsIV0R3o9gi+K50akl/qyw1C74A==" + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" + }, + "tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" + }, + "ws": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.2.tgz", + "integrity": "sha512-T4tewALS3+qsrpGI/8dqNMLIVdq/g/85U98HPMa6F0m6xTbvhXU6RCQLqPH3+SlomNV/LdY6RXEbBpMH6EOJnA==" + } + } +}