Earthcomputer

role.js

Aug 18th, 2021 (edited)
481
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var roles = message.getUser().getRoles();
  2. var isAdmin = false;
  3. for (var i = 0; i < roles.length; i++) {
  4.   if (roles[i].getID() == "169375885307150336") {
  5.     isAdmin = true;
  6.     break;
  7.   }
  8. }
  9.  
  10. var content = message.getContent();
  11. var args = content.split(" ");
  12. var printUsage = function() {
  13.   channel.message(
  14.     "$role add <user> <role-name>\n" +
  15.     "$role list-allowed\n" +
  16.     "Admin only:\n" +
  17.     "$role add-allowed <role-name> <role-id>\n" +
  18.     "$role remove-allowed <role-name>\n" +
  19.     "The role-name in this command is arbitrary and is set by add-allowed."
  20.   );
  21. };
  22.  
  23. if (args.length < 2) {
  24.   printUsage();
  25.   return;
  26. }
  27.  
  28. var subcmd = args[1];
  29. var allowed = JSON.parse(storage.get("role.permissions"));
  30. if (allowed === null) {
  31.   allowed = {};
  32. }
  33.  
  34. if (subcmd === "list-allowed") {
  35.   var msg = "";
  36.   for (name in allowed) {
  37.     if (msg.length > 0) {
  38.       msg += "\n";
  39.     }
  40.     msg += "- " + name + ": " + allowed[name];
  41.   }
  42.   channel.message(msg);
  43. } else if (subcmd === "add") {
  44.   if (args.length < 4) {
  45.     printUsage();
  46.     return;
  47.   }
  48.   var user = args[2].toLowerCase();
  49.   var role = args[3].toLowerCase();
  50.   if (!(role in allowed)) {
  51.     channel.message("That role is not listed as allowed");
  52.     return;
  53.   }
  54.   role = guild.getRole(allowed[role])
  55.   if (!role) {
  56.     channel.message("The role associated with " + args[3].toLowerCase() + " no longer exists");
  57.     return;
  58.   }
  59.   var match = /<@!?(\d+)>/.exec(user);
  60.   if (!match) match = /(\d+)/.exec(user);
  61.   if (match) {
  62.     user = match[1];
  63.     user = guild.getUser(user);
  64.     if (!user) {
  65.       channel.message("A user with that ID does not exist in this server.");
  66.     }
  67.   } else {
  68.     var users = guild.getUsers();
  69.     var result = null;
  70.     for (var i = 0; i < users.length; i++) {
  71.       var nickname = users[i].getNickname();
  72.       if (users[i].getName().toLowerCase() === user || (nickname && nickname.toLowerCase() === user)) {
  73.         if (result) {
  74.           channel.message("That username is ambiguous. Please use the user ID.");
  75.           return;
  76.         }
  77.         result = users[i];
  78.       }
  79.     }
  80.     if (!result) {
  81.       channel.message("Could not find a user with that username.");
  82.       return;
  83.     }
  84.     user = result;
  85.   }
  86.   if (!manager.addRole(user, role)) {
  87.     channel.message("Could not add role. Please check Arraybot's role permissions.");
  88.     return;
  89.   }
  90.   var textLogs = guild.getTextChannel("730438601808150539");
  91.   if (textLogs) {
  92.     var getInfo = function(thing) {
  93.       return thing.getName() + " (ID: " + thing.getID() + ")";
  94.     };
  95.     textLogs.message(getInfo(message.getUser()) + " gave role " + getInfo(role) + " to " + getInfo(user));
  96.   }
  97.   channel.message("Added role successfully.");
  98. } else if (subcmd === "add-allowed") {
  99.   if (!isAdmin) {
  100.     channel.message("This command is admin only");
  101.     return;
  102.   }
  103.   if (args.length < 4) {
  104.     printUsage();
  105.     return;
  106.   }
  107.   var roleName = args[2].toLowerCase();
  108.   if (roleName in allowed) {
  109.     channel.message("That role name is already assigned to something that is allowed.");
  110.     return;
  111.   }
  112.   var roleId = args[3];
  113.   if (!guild.getRole(roleId)) {
  114.     channel.message("That role ID does not exist.");
  115.     return;
  116.   }
  117.   allowed[roleName] = roleId;
  118.   storage.set("role.permissions", JSON.stringify(allowed));
  119.   channel.message("Successfully added allowed role.");
  120. } else if (subcmd == "remove-allowed") {
  121.   if (!isAdmin) {
  122.     channel.message("This command is admin only");
  123.     return;
  124.   }
  125.   if (args.length < 3) {
  126.     printUsage();
  127.     return;
  128.   }
  129.   var roleName = args[2].toLowerCase();
  130.   if (!(roleName in allowed)) {
  131.     channel.message("That role is not in the list of the allowed roles");
  132.     return;
  133.   }
  134.   delete allowed[roleName];
  135.   storage.set("role.permissions", JSON.stringify(allowed));
  136.   channel.message("Successfully removed allowed role.");
  137. } else {
  138.   printUsage();
  139. }
Add Comment
Please, Sign In to add comment