0

Update User Group Members

by
Published 20 days ago

Replace the members of a user group. Requires usergroups:write; usually a user token, since workspace settings often block bots.

Script slack Verified

The script

Submitted by hugo989 Bun
Verified 10 days ago
1
import { WebClient } from "@slack/web-api"
2

3
export type DynSelect_usergroup = string
4

5
// Dropdown of the workspace's user groups; needs usergroups:read.
6
export async function usergroup(auth: RT.Slack) {
7
  if (!auth?.token) return []
8
  const { usergroups } = await new WebClient(auth.token).usergroups.list()
9
  return (usergroups ?? []).map((g) => ({
10
    value: g.id!,
11
    label: `@${g.handle} (${g.name})`,
12
  }))
13
}
14

15
/**
16
 * Update User Group Members
17
 * Replace the full member list of a user group (e.g. @oncall) with the given user IDs — users not listed are removed. Workspace settings decide who may edit user groups; a bot token often gets permission_denied, so use a user token from someone allowed to. Requires usergroups:write on the connection (and usergroups:read for the group dropdown).
18
 */
19
export async function main(
20
  auth: RT.Slack,
21
  usergroup: DynSelect_usergroup,
22
  users: string[]
23
) {
24
  const client = new WebClient(auth.token)
25
  return await client.usergroups.users.update({
26
    usergroup,
27
    users: users.join(","),
28
  })
29
}
30