Something went wrong. Try again.
[READ-ONLY] Mirror of https://github.com/openstatusHQ/openstatus. ๐ซ Status page with uptime monitoring & API monitoring as code ๐ซ openstatus.dev
bun drizzle-orm monitoring monitoring-as-code nextjs observability on-call open-source shadcn-ui status-page statuspage synthetic-monitoring tinybird turso uptime uptime-checker uptime-monitor
Something went wrong. Try again.
809 B ยท 32 lines
TypeScript
at main
123456789101112131415161718192021222324252627282930313233/** Bot scopes the Slack app requests; the manifest lists the same set. */export const SLACK_BOT_SCOPES = [ "app_mentions:read", "assistant:write", "channels:history", "channels:join", "channels:manage", "channels:read", "channels:write.invites", "chat:write", "commands", "groups:history", "groups:read", "groups:write", "im:history", "pins:write", "reactions:read", "reactions:write", "users:read", "users:read.email",] as const;
/** Scopes the install lacks, from the comma list Slack returned at OAuth. */export function missingSlackScopes(granted: string | undefined): string[] { const have = new Set( (granted ?? "") .split(",") .map((s) => s.trim()) .filter(Boolean), ); return SLACK_BOT_SCOPES.filter((scope) => !have.has(scope));}