Advertisement
VictorLCT

Untitled

Jan 17th, 2020
306
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.55 KB | None | 0 0
  1. const { RichEmbed } = require("discord.js");
  2. const { stripIndents } = require("common-tags");
  3. const { promptMessage } = require("../../functions.js");
  4.  
  5. module.exports = {
  6. name: "kick",
  7. category: "moderation",
  8. description: "Kicks the member",
  9. usage: "<id | mention>",
  10. run: async (client, message, args) => {
  11. const logChannel = message.guild.channels.find(c => c.name === "logs") || message.channel;
  12.  
  13. if (message.deletable) message.delete();
  14.  
  15. // No args
  16. if (!args[0]) {
  17. return message.reply("Please provide a person to kick.")
  18. .then(m => m.delete(5000));
  19. }
  20.  
  21. // No reason
  22. if (!args[1]) {
  23. return message.reply("Please provide a reason to kick.")
  24. .then(m => m.delete(5000));
  25. }
  26.  
  27. // No author permissions
  28. if (!message.member.hasPermission("KICK_MEMBERS")) {
  29. return message.reply("❌ You do not have permissions to kick members. Please contact a staff member")
  30. .then(m => m.delete(5000));
  31. }
  32.  
  33. // No bot permissions
  34. if (!message.guild.me.hasPermission("KICK_MEMBERS")) {
  35. return message.reply("❌ I do not have permissions to kick members. Please contact a staff member")
  36. .then(m => m.delete(5000));
  37. }
  38.  
  39. const toKick = message.mentions.members.first() || message.guild.members.get(args[0]);
  40.  
  41. // No member found
  42. if (!toKick) {
  43. return message.reply("Couldn't find that member, try again")
  44. .then(m => m.delete(5000));
  45. }
  46.  
  47. // Can't kick urself
  48. if (toKick.id === message.author.id) {
  49. return message.reply("You can't kick yourself...")
  50. .then(m => m.delete(5000));
  51. }
  52.  
  53. // Check if the user's kickable
  54. if (!toKick.kickable) {
  55. return message.reply("I can't kick that person due to role hierarchy, I suppose.")
  56. .then(m => m.delete(5000));
  57. }
  58.  
  59. const embed = new RichEmbed()
  60. .setColor("#ff0000")
  61. .setThumbnail(toKick.user.displayAvatarURL)
  62. .setFooter(message.member.displayName, message.author.displayAvatarURL)
  63. .setTimestamp()
  64. .setDescription(stripIndents`**- Kicked member:** ${toKick} (${toKick.id})
  65. **- Kicked by:** ${message.member} (${message.member.id})
  66. **- Reason:** ${args.slice(1).join(" ")}`);
  67.  
  68. const promptEmbed = new RichEmbed()
  69. .setColor("GREEN")
  70. .setAuthor(`This verification becomes invalid after 30s.`)
  71. .setDescription(`Do you want to kick ${toKick}?`)
  72.  
  73. // Send the message
  74. await message.channel.send(promptEmbed).then(async msg => {
  75. // Await the reactions and the reaction collector
  76. const emoji = await promptMessage(msg, message.author, 30, ["✅", "❌"]);
  77.  
  78. // The verification stuffs
  79. if (emoji === "✅") {
  80. msg.delete();
  81.  
  82. toKick.kick(args.slice(1).join(" "))
  83. .catch(err => {
  84. if (err) return message.channel.send(`Well.... the kick didn't work out. Here's the error ${err}`)
  85. });
  86.  
  87. logChannel.send(embed);
  88. } else if (emoji === "❌") {
  89. msg.delete();
  90.  
  91. message.reply(`Kick canceled.`)
  92. .then(m => m.delete(10000));
  93. }
  94. });
  95. }
  96. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement