Advertisement
kamrantekkit

autoreply

Mar 21st, 2021
1,419
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const Discord = require("discord.js");
  2. const mongoose = require("mongoose");
  3. const { bulkWrite } = require("../dataModels/serverSchema.js");
  4. const serverinfo = require("../dataModels/serverSchema.js");
  5.  
  6.  
  7.  
  8. module.exports.run = async (bot, message, args) => {
  9.   if (!message.member.hasPermission("ADMINISTRATOR")) return message.channel.send("Insufficent Permissions");
  10.  
  11.   let guildID = message.guild.id;
  12.   let channel = message.channel;
  13.   let mode = args[0];
  14.   let Tuser;
  15.  
  16.   try {
  17.     mode = mode.toUpperCase();
  18.   } catch (err) {
  19.     console.log(err)
  20.     let serverembed = new Discord.MessageEmbed()
  21.       .setDescription("Command Usage")
  22.       .setColor("#ff0fef")
  23.       .addField("**+autoreply true/enable**", " To enable autoreply on the server")
  24.       .addField("**+autoreply false/disable**", " To disable autoreply on the server")
  25.       .addField("**+autoreply setup (mentioned user) (reply message)**", "Will add to autoreply list and send reply message when they send a message")
  26.       .addField("**+autoreply remove (mentioned user)**", "To remove user from autoreply")
  27.       .addField("**+autoreply cooldown (seconds)**", "set cooldown timer")
  28.  
  29.     channel.send(serverembed);
  30.   }
  31.  
  32.   switch (mode) {
  33.     case mode == "ENABLE" || "TRUE":
  34.       replyEnable(guildID, channel);
  35.       break;
  36.     case mode == "DISABLE" || "FALSE":
  37.       replyDisable(guildID, channel);
  38.       break;
  39.     case "SETUP":
  40.       Tuser = (message.mentions.users.first())
  41.       let replymessage = args;
  42.       replymessage.splice(0, 2)
  43.       replymessage = replymessage.join(" ")
  44.       autoReplySetup(Tuser, replymessage, guildID, channel)
  45.       break;
  46.     case "REMOVE":
  47.       Tuser = (message.mentions.users.first());
  48.       await locateExisting(guildID, Tuser, channel);
  49.       channel.send("User was removed")
  50.       break;
  51.     case "COOLDOWN":
  52.       let cooldownValue = args[1];
  53.       cooldownValue = parseInt(cooldownValue)
  54.       if (isNaN(cooldownValue)) {
  55.         channel.send("Value is not a number, Setting to default Value. 5 seconds")
  56.         cooldownValue = 5;
  57.       }
  58.       cooldownSet(channel, guildID, cooldownValue)
  59.       break;
  60.   }
  61. }
  62.  
  63. function sleep(ms) {
  64.   return new Promise(resolve => setTimeout(resolve, ms));
  65. }
  66.  
  67. async function autoReplySetup(Tuser, replymessage, guildID, channel) {
  68.  
  69.   locateExisting(guildID, Tuser);
  70.   await sleep(30)
  71.  
  72.   serverinfo.findOneAndUpdate({ serverID: guildID }, { $push: { "storage.autoReplyStorage": { userID: Tuser.id, message: replymessage } } }, (err, data) => {
  73.     if (err) {
  74.       console.log
  75.     }
  76.     channel.send(`${Tuser} was added to auto reply`)
  77.   })
  78.  
  79. }
  80.  
  81. function locateExisting(guildID, Tuser, message) {
  82.   let ifExist;
  83.   serverinfo.findOne({ serverID: guildID }, (err, data) => {
  84.     if (err) console.log(err);
  85.  
  86.     try {
  87.       ifExist = data.storage.autoReplyStorage
  88.       let remove = ifExist.find((x) => x.userID == Tuser.id)
  89.       removeUser(guildID, remove.userID, message, Tuser)
  90.  
  91.     } catch (err) {
  92.     }
  93.   })
  94. }
  95.  
  96. function removeUser(guildID, remove, channel) {
  97.   serverinfo.findOneAndUpdate({ serverID: guildID }, { $pull: { "storage.autoReplyStorage": { userID: remove } } }, (err, data) => {
  98.     if (err) console.log(err);
  99.  
  100.   }
  101.   )
  102. }
  103.  
  104.  
  105.  
  106. async function replyEnable(guildID, channel) {
  107.   let doc = await serverinfo.findOne({ serverID: guildID })
  108.   doc.serverSettings.reply = true
  109.   doc.markModified('serverSettings')
  110.   doc.save()
  111.   channel.send(`AutoReply was enabled `)
  112. }
  113.  
  114. async function replyDisable(guildID, channel) {
  115.   let doc = await serverinfo.findOne({ serverID: guildID })
  116.   doc.serverSettings.reply = false;
  117.   doc.markModified('serverSettings')
  118.   doc.save()
  119.   channel.send("AutoReply has been disabled")
  120. }
  121.  
  122. async function cooldownSet(channel, guildID, cooldownValue) {
  123.   let convertedCooldown = cooldownValue * 1000;
  124.   let doc = await serverinfo.findOne({ serverID: guildID })
  125.   doc.serverSettings.replyCooldown = convertedCooldown
  126.   doc.markModified('serverSettings')
  127.   doc.save()
  128.   channel.send(`Cooldown was set to ${cooldownValue}`)
  129. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement