From 32011873b1cec5cbe17bd2cfbddd56147d06baac Mon Sep 17 00:00:00 2001
From: Ryan Laurie <30528226+iethree@users.noreply.github.com>
Date: Mon, 3 Jun 2024 08:49:29 -0600
Subject: [PATCH] Tag slack users by github handle (#43420)

* tag slack users by github handle

* sort users
---
 .github/github-slack-map.json | 86 +++++++++++++++++++++++++++++++++++
 release/src/slack.ts          | 19 ++++++--
 2 files changed, 101 insertions(+), 4 deletions(-)
 create mode 100644 .github/github-slack-map.json

diff --git a/.github/github-slack-map.json b/.github/github-slack-map.json
new file mode 100644
index 00000000000..c764acc2c10
--- /dev/null
+++ b/.github/github-slack-map.json
@@ -0,0 +1,86 @@
+{
+  "abdhabli": "U06BAV8JFDW",
+  "adam-james-v": "U02P27ZRRR8",
+  "agodbey": "U05UJR2C35Z",
+  "albertoperdomo": "U05811B1WLX",
+  "AlessioLaiso": "U06MAAUDTS6",
+  "alexandermkinn": "U023UTA4MUL",
+  "alexyarosh": "U06GXH3RVPU",
+  "alxnddr": "U01S9BUHH8X",
+  "brunobergher": "U01M2JJVA80",
+  "bshepherdson": "U03AK3B43GA",
+  "calherries": "U03KFGJ7X8S",
+  "camsaul": "U07DG6C3X",
+  "cbalusek": "U02M2Q0DJLD",
+  "cdeweyx": "U02BX2BKPQS",
+  "crisptrutski": "U06C5MNFF0S",
+  "dahyeik": "U03MG3BCS22",
+  "darksciencebase": "U04P2DVHG3U",
+  "deniskaber": "U04QX6Z5N00",
+  "devurandom": "U03N1ATKF7T",
+  "dhuniverse": "U04RRCGJPJN",
+  "dpsutton": "U01BP8Z3CVA",
+  "EmmadUsmani": "U04QX6YUP7A",
+  "escherize": "U02U4E60EHG",
+  "filipesilva": "U04S45X3FLN",
+  "FilmonK": "U05J39TB4A1",
+  "gusaiani": "U020JGYQHK8",
+  "heypoom": "U06TVDSUPGE",
+  "iethree": "U5A85JL4V",
+  "ignacio-mb": "U0558P1CZ5L",
+  "imrkd": "U02MJBX8G65",
+  "ixipixi": "U06C5JCNKM1",
+  "jeff-bruemmer": "U014JGU9XK2",
+  "JesseSDevaney": "U0511SK58DC",
+  "jessillions": "U04P2AKMX4K",
+  "jesusfloresmetabase": "U04MZ6TGQLA",
+  "jill-lafond": "U0537V0L2DN",
+  "johnswanson": "U0600BZ1XMK",
+  "jrayski": "U03C28SM11N",
+  "k8beeman": "U06PYT3N7EV",
+  "kamilmielnik": "U057ENEC60M",
+  "kdoh": "U078VJFED",
+  "kidd": "U01JM8WM6N4",
+  "kulyk": "U01TH98M6J2",
+  "lbrdnk": "U06035L3V34",
+  "le0li0n": "U06RDA3M6BZ",
+  "likeshumidity": "U047NDX34UU",
+  "losrebellos": "U022B12KVK6",
+  "luizarakaki": "U02KWASDKHC",
+  "margaretrimek": "U02AZVBQQU9",
+  "maxzheng": "U03TBN466EN",
+  "mazameli": "U0ALDAVHA",
+  "metamben": "U03AN4TRM6Y",
+  "mngr": "U06GXDTJQQ3",
+  "mwsmales": "U043FSUUSNL",
+  "nemanjaglumac": "U01BA9754AC",
+  "NevRA": "U04T9044T7G",
+  "ngapuileung": "U04HP1D66N4",
+  "noahmoss": "U01V8S8DG78",
+  "npfitz": "U037YBQFRR7",
+  "npretto": "U05K43X7RV5",
+  "oisincoveney": "U0511SKLXCN",
+  "Onlinehead": "U02S8HGAB8A",
+  "oreonl": "U05V7TSK1QQ",
+  "paoliniluis": "U01GWGPG2CF",
+  "perivamsi": "U05K2EFAT5G",
+  "piranha": "U060FQBFE5P",
+  "psalinasy": "U04LYLXV207",
+  "qnkhuat": "U02LA6FF5N1",
+  "rafpaf": "U0697CU8TTP",
+  "ranquild": "U028HG073GS",
+  "romeovs": "U06DHN2JA5D",
+  "salsakran": "U078V228G",
+  "sloansparger": "U06CJAUPV3K",
+  "snoe": "U03AG715B61",
+  "Somtom": "U06BREDB5V3",
+  "taqattack": "U06C70CJ6RM",
+  "Tony-metabase": "U03RFTD5SLR",
+  "trinya": "U06CJJB3JJZ",
+  "tsmacdonald": "U01BKUL0MHV",
+  "uladzimirdev": "U04TU6TNPLZ",
+  "vbenedetti": "U04MRS3JTLH",
+  "victoriaspek": "U02KD3E703E",
+  "WiNloSt": "U02MYNXD605",
+  "zbodi74": "U05EV72TPN2"
+}
diff --git a/release/src/slack.ts b/release/src/slack.ts
index 914a6c7ca2b..a7cb9adb851 100644
--- a/release/src/slack.ts
+++ b/release/src/slack.ts
@@ -1,12 +1,23 @@
 import { WebClient } from '@slack/web-api';
-import type { Issue } from './types';
-import { getGenericVersion } from "./version-helpers";
+
+import _githubSlackMap from "../../.github/github-slack-map.json";
+
+const githubSlackMap: Record<string, string> = _githubSlackMap;
+
 import { findMilestone } from "./github";
-import type { ReleaseProps } from "./types";
+import type { Issue , ReleaseProps } from './types';
+import { getGenericVersion } from "./version-helpers";
 
 const slack = new WebClient(process.env.SLACK_BOT_TOKEN);
 const SLACK_CHANNEL_NAME = process.env.SLACK_RELEASE_CHANNEL ?? "bot-testing";
 
+export function mentionUserByGithubLogin(githubLogin: string | null) {
+  if (githubLogin && githubLogin in githubSlackMap) {
+    return `<@${githubSlackMap[githubLogin]}>`;
+  }
+  return '@unassigned';
+}
+
 export function getChannelTopic(channelName: string) {
   return slack.conversations.list({
     types: 'public_channel',
@@ -27,7 +38,7 @@ export async function sendPreReleaseStatus({
   milestoneId: number,
 }) {
   const blockerText = `* ${openIssues.length } Blockers*
-${openIssues.map(issue => `  • <${issue.html_url}|#${issue.number} - ${issue.title}> - @${issue.assignee?.login ?? 'unassigned'}`).join("\n")}`;
+    ${openIssues.map(issue => `  • <${issue.html_url}|#${issue.number} - ${issue.title}> - ${mentionUserByGithubLogin(issue.assignee?.login)}`).join("\n")}`;
 
   const blocks = [
     {
-- 
GitLab