# Slack Message Event

> Slack message event callback with user, text, channel, and timestamps.

- Name: `slack-message-event`
- Categories: slack
- Depends on: `@open-types/slack-shared`
- Detail page: https://open-types.dev/types/slack-message-event

## Install

```bash
# Types only
npx shadcn add @open-types/slack-message-event

# Types + Zod v4 validators
npx shadcn add @open-types/slack-message-event-zod

# Types + real-world examples
npx shadcn add @open-types/slack-message-event-examples
```

## Types

```typescript
import type { SlackUser, SlackChannel } from "./slack-shared";

export interface SlackMessageInner {
  type: string;
  user: SlackUser["id"];
  text: string;
  ts: string;
  channel: SlackChannel["id"];
  event_ts: string;
}

export interface SlackMessageEvent {
  token: string;
  team_id: SlackUser["team_id"];
  event: SlackMessageInner;
  type: "event_callback";
  event_id: string;
  event_time: number;
}
```

## Zod validator

```typescript
import * as z from "zod";
import type {
  SlackMessageInner,
  SlackMessageEvent,
} from "../types/slack-message-event";

export const slackMessageInnerSchema = z.object({
  type: z.string(),
  user: z.string(),
  text: z.string(),
  ts: z.string(),
  channel: z.string(),
  event_ts: z.string(),
}) satisfies z.ZodType<SlackMessageInner>;

export const slackMessageEventSchema = z.object({
  token: z.string(),
  team_id: z.string(),
  event: slackMessageInnerSchema,
  type: z.enum(["event_callback"]),
  event_id: z.string(),
  event_time: z.number().int(),
}) satisfies z.ZodType<SlackMessageEvent>;

export type {
  SlackMessageInner,
  SlackMessageEvent,
} from "../types/slack-message-event";
```

## Examples

```typescript
// Source: https://api.slack.com/events/message
// Captured: 2026-05
import type {
  SlackMessageInner,
  SlackMessageEvent,
} from "../types/slack-message-event";
import { slackIds } from "./shared/slack.examples";

const innerMessage = {
  type: "message",
  user: slackIds.user,
  text: "Deploy completed successfully",
  ts: "1712333110.123456",
  channel: slackIds.channel,
  event_ts: "1712333110.123456",
} as const satisfies SlackMessageInner;

export const slackMessageInnerExamples = {
  plain: innerMessage,
  withEmoji: {
    ...innerMessage,
    text: "Deploy complete :rocket:",
  } satisfies SlackMessageInner,
  longText: {
    ...innerMessage,
    text: "Deploy started at 09:00 UTC, succeeded after 4 minutes. Logs at https://example.com/runs/42.",
  } satisfies SlackMessageInner,
} as const;

const eventCallback = {
  token: "legacy-verification-token",
  team_id: slackIds.team,
  event: innerMessage,
  type: "event_callback",
  event_id: "Ev03Q7K6M1AB",
  event_time: 1712333110,
} as const satisfies SlackMessageEvent;

export const slackMessageEventExamples = {
  callback: eventCallback,
  withEmoji: {
    ...eventCallback,
    event: slackMessageInnerExamples.withEmoji,
    event_id: "Ev03Q7K6M1AC",
  } satisfies SlackMessageEvent,
  longText: {
    ...eventCallback,
    event: slackMessageInnerExamples.longText,
    event_id: "Ev03Q7K6M1AD",
  } satisfies SlackMessageEvent,
} as const;
```
