MCPcopy Create free account
hub / github.com/RTByte/rtbyte / remove

Method remove

src/commands/User/roles.js:75–108  ·  view source on GitHub ↗
(msg, [target = msg.member, ...roleName])

Source from the content-addressed store, hash-verified

73 }
74
75 async remove(msg, [target = msg.member, ...roleName]) {
76 // Fail if there are no joinable roles
77 if (!msg.guild.settings.get('roles.joinable').length) return msg.reject(msg.language.get('COMMAND_ROLES_NONE_JOINABLE'));
78 if (!roleName.length) return msg.reject(msg.language.get('COMMAND_ROLES_NO_ROLE_NAME'));
79
80 if (target.id !== msg.member.id) {
81 // Fail if user is not at least a moderator and is trying to add roles to other users
82 if (!msg.hasAtLeastPermissionLevel(5) || !msg.member.permissions.has('MANAGE_ROLES')) return msg.reject(msg.language.get('COMMAND_ROLES_NO_MODERATE'));
83
84 const canMod = await msg.member.canMod(target.user);
85
86 // Fail if user is trying to add roles to someone higher on the hierarchy than themself
87 if (!canMod) return msg.reject(msg.language.get('COMMAND_ROLES_NO_PERMS', target));
88 }
89
90 // Parsing the roleName array into a string
91 roleName = roleName.join(' ');
92
93 // Fail if there is no role with this name
94 if (!msg.guild.roles.cache.find(role => role.name.toLowerCase() === roleName.toLowerCase())) return msg.reject(msg.language.get('COMMAND_ROLES_DOES_NOT_EXIST', roleName));
95
96 // Fetching role specified by the user
97 const targetRole = await msg.guild.roles.cache.find(role => role.name.toLowerCase() === roleName.toLowerCase());
98
99 // Fail if this role isn't joinable (or leavable)
100 if (!msg.guild.settings.get('roles.joinable').includes(targetRole.id)) return msg.reject(msg.language.get('COMMAND_ROLES_NOT_LEAVABLE', roleName));
101
102 // Fail if target does not have this role
103 if (!target.roles.cache.has(targetRole.id)) return msg.reject(msg.language.get('COMMAND_ROLES_DOES_NOT_HAVE', roleName, target));
104
105 // Remove the role from the target
106 await target.roles.remove(targetRole);
107 return msg.affirm();
108 }
109
110 async join(msg, params) {
111 return this.add(msg, params);

Callers 1

leaveMethod · 0.45

Calls 4

rejectMethod · 0.80
canModMethod · 0.80
joinMethod · 0.80
affirmMethod · 0.80

Tested by

no test coverage detected