import { WebClient } from "@slack/web-api"
export type DynSelect_usergroup = string
// Dropdown of the workspace's user groups; needs usergroups:read.
export async function usergroup(auth: RT.Slack) {
if (!auth?.token) return []
const { usergroups } = await new WebClient(auth.token).usergroups.list()
return (usergroups ?? []).map((g) => ({
value: g.id!,
label: `@${g.handle} (${g.name})`,
}))
}
/**
* Update User Group Members
* 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).
*/
export async function main(
auth: RT.Slack,
usergroup: DynSelect_usergroup,
users: string[]
) {
const client = new WebClient(auth.token)
return await client.usergroups.users.update({
usergroup,
users: users.join(","),
})
}
Submitted by hugo989 10 days ago
import { WebClient } from "@slack/web-api"
/**
* Update User Group Members
* 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.
*/
export async function main(auth: RT.Slack, usergroup: string, users: string[]) {
const client = new WebClient(auth.token)
return await client.usergroups.users.update({
usergroup,
users: users.join(","),
})
}
Submitted by hugo989 21 days ago