From ee5d3fe8ef84f01b70191632b6737b31b6f67efd Mon Sep 17 00:00:00 2001 From: roflmaoqwerty Date: Wed, 22 Jan 2020 22:42:20 +1100 Subject: [PATCH] Created config option to <@&> mention roles in the success messages for self assignable roles --- backend/src/plugins/SelfGrantableRolesPlugin.ts | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/backend/src/plugins/SelfGrantableRolesPlugin.ts b/backend/src/plugins/SelfGrantableRolesPlugin.ts index 48de929a..558757f8 100644 --- a/backend/src/plugins/SelfGrantableRolesPlugin.ts +++ b/backend/src/plugins/SelfGrantableRolesPlugin.ts @@ -17,6 +17,7 @@ type TSelfGrantableRoleEntry = t.TypeOf; const ConfigSchema = t.type({ entries: t.record(t.string, SelfGrantableRoleEntry), + mention_roles: t.boolean, }); type TConfigSchema = t.TypeOf; @@ -89,6 +90,7 @@ export class SelfGrantableRolesPlugin extends ZeppelinPlugin { return { config: { entries: {}, + mention_roles: false, }, }; } @@ -313,20 +315,27 @@ export class SelfGrantableRolesPlugin extends ZeppelinPlugin { return; } - const addedRolesStr = Array.from(rolesToAdd.values()).map(r => `**${r.name}**`); + const mentionRoles = this.getConfig().mention_roles; + const addedRolesStr = Array.from(rolesToAdd.values()).map(r => (mentionRoles ? `${r.id}` : `**${r.name}**`)); const addedRolesWord = rolesToAdd.size === 1 ? "role" : "roles"; const messageParts = []; - messageParts.push(`Granted you the ${addedRolesStr.join(", ")} ${addedRolesWord}`); + messageParts.push( + `Granted you the ${ + mentionRoles ? `<@&` + addedRolesStr.join(">, <@&") + `>` : addedRolesStr.join(", ") + } ${addedRolesWord}`, + ); if (skipped.size || removed.size) { const skippedRolesStr = skipped.size ? "skipped " + Array.from(skipped.values()) - .map(r => `**${r.name}**`) + .map(r => (mentionRoles ? `<@&${r.id}>` : `**${r.name}**`)) .join(",") : null; - const removedRolesStr = removed.size ? "removed " + Array.from(removed.values()).map(r => `**${r.name}**`) : null; + const removedRolesStr = removed.size + ? "removed " + Array.from(removed.values()).map(r => (mentionRoles ? `<@&${r.id}>` : `**${r.name}**`)) + : null; const skippedRemovedStr = [skippedRolesStr, removedRolesStr].filter(Boolean).join(" and ");