Skip to content

Commit 993bfb4

Browse files
authored
Merge pull request #175 from dosentmatter/fix/154-user-id-w-prefix
fix: support user id with w prefix
2 parents 0f791bb + 4ca5c64 commit 993bfb4

File tree

2 files changed

+27
-1
lines changed

2 files changed

+27
-1
lines changed

pkg/handler/conversations.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -998,10 +998,15 @@ func (ch *ConversationsHandler) parseParamsToolSearch(req mcp.CallToolRequest) (
998998
}, nil
999999
}
10001000

1001+
// Slack user IDs may begin with U or W: https://docs.slack.dev/changelog/2016/08/11/user-id-format-changes
1002+
func isSlackUserIDPrefix(s string) bool {
1003+
return strings.HasPrefix(s, "U") || strings.HasPrefix(s, "W")
1004+
}
1005+
10011006
func (ch *ConversationsHandler) paramFormatUser(raw string) (string, error) {
10021007
users := ch.apiProvider.ProvideUsersMap()
10031008
raw = strings.TrimSpace(raw)
1004-
if strings.HasPrefix(raw, "U") {
1009+
if isSlackUserIDPrefix(raw) {
10051010
u, ok := users.Users[raw]
10061011
if !ok {
10071012
return "", fmt.Errorf("user %q not found", raw)

pkg/handler/conversations_test.go

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -590,3 +590,24 @@ func TestUnitLimitByExpression_Invalid(t *testing.T) {
590590
})
591591
}
592592
}
593+
594+
func TestUnitIsSlackUserIDPrefix(t *testing.T) {
595+
tests := []struct {
596+
name string
597+
s string
598+
want bool
599+
}{
600+
{"U prefix", "U0123ABCD", true},
601+
{"W prefix", "W0123ABCD", true},
602+
{"plain name not ID", "alice", false},
603+
{"empty", "", false},
604+
}
605+
for _, tt := range tests {
606+
t.Run(tt.name, func(t *testing.T) {
607+
got := isSlackUserIDPrefix(tt.s)
608+
if got != tt.want {
609+
t.Errorf("isSlackUserIDPrefix(%q) = %v, want %v", tt.s, got, tt.want)
610+
}
611+
})
612+
}
613+
}

0 commit comments

Comments
 (0)