Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var roles = message.getUser().getRoles();
- var isAdmin = false;
- for (var i = 0; i < roles.length; i++) {
- if (roles[i].getID() == "169375885307150336") {
- isAdmin = true;
- break;
- }
- }
- var content = message.getContent();
- var args = content.split(" ");
- var printUsage = function() {
- channel.message(
- "$role add <user> <role-name>\n" +
- "$role list-allowed\n" +
- "Admin only:\n" +
- "$role add-allowed <role-name> <role-id>\n" +
- "$role remove-allowed <role-name>\n" +
- "The role-name in this command is arbitrary and is set by add-allowed."
- );
- };
- if (args.length < 2) {
- printUsage();
- return;
- }
- var subcmd = args[1];
- var allowed = JSON.parse(storage.get("role.permissions"));
- if (allowed === null) {
- allowed = {};
- }
- if (subcmd === "list-allowed") {
- var msg = "";
- for (name in allowed) {
- if (msg.length > 0) {
- msg += "\n";
- }
- msg += "- " + name + ": " + allowed[name];
- }
- channel.message(msg);
- } else if (subcmd === "add") {
- if (args.length < 4) {
- printUsage();
- return;
- }
- var user = args[2].toLowerCase();
- var role = args[3].toLowerCase();
- if (!(role in allowed)) {
- channel.message("That role is not listed as allowed");
- return;
- }
- role = guild.getRole(allowed[role])
- if (!role) {
- channel.message("The role associated with " + args[3].toLowerCase() + " no longer exists");
- return;
- }
- var match = /<@!?(\d+)>/.exec(user);
- if (!match) match = /(\d+)/.exec(user);
- if (match) {
- user = match[1];
- user = guild.getUser(user);
- if (!user) {
- channel.message("A user with that ID does not exist in this server.");
- }
- } else {
- var users = guild.getUsers();
- var result = null;
- for (var i = 0; i < users.length; i++) {
- var nickname = users[i].getNickname();
- if (users[i].getName().toLowerCase() === user || (nickname && nickname.toLowerCase() === user)) {
- if (result) {
- channel.message("That username is ambiguous. Please use the user ID.");
- return;
- }
- result = users[i];
- }
- }
- if (!result) {
- channel.message("Could not find a user with that username.");
- return;
- }
- user = result;
- }
- if (!manager.addRole(user, role)) {
- channel.message("Could not add role. Please check Arraybot's role permissions.");
- return;
- }
- var textLogs = guild.getTextChannel("730438601808150539");
- if (textLogs) {
- var getInfo = function(thing) {
- return thing.getName() + " (ID: " + thing.getID() + ")";
- };
- textLogs.message(getInfo(message.getUser()) + " gave role " + getInfo(role) + " to " + getInfo(user));
- }
- channel.message("Added role successfully.");
- } else if (subcmd === "add-allowed") {
- if (!isAdmin) {
- channel.message("This command is admin only");
- return;
- }
- if (args.length < 4) {
- printUsage();
- return;
- }
- var roleName = args[2].toLowerCase();
- if (roleName in allowed) {
- channel.message("That role name is already assigned to something that is allowed.");
- return;
- }
- var roleId = args[3];
- if (!guild.getRole(roleId)) {
- channel.message("That role ID does not exist.");
- return;
- }
- allowed[roleName] = roleId;
- storage.set("role.permissions", JSON.stringify(allowed));
- channel.message("Successfully added allowed role.");
- } else if (subcmd == "remove-allowed") {
- if (!isAdmin) {
- channel.message("This command is admin only");
- return;
- }
- if (args.length < 3) {
- printUsage();
- return;
- }
- var roleName = args[2].toLowerCase();
- if (!(roleName in allowed)) {
- channel.message("That role is not in the list of the allowed roles");
- return;
- }
- delete allowed[roleName];
- storage.set("role.permissions", JSON.stringify(allowed));
- channel.message("Successfully removed allowed role.");
- } else {
- printUsage();
- }
Add Comment
Please, Sign In to add comment