# `Noizu.Slack.Chat`
[🔗](https://github.com/noizu-labs-sdks/elixir-slack/blob/v0.1.0/lib/noizu/slack/chat.ex#L1)

Messaging (`chat.*`).

`text_or_opts` is either the message text (binary) or a map/keyword of message
fields — `:text`, `:blocks`, `:thread_ts`, `:reply_broadcast`, `:unfurl_links`,
`:unfurl_media`, `:mrkdwn`, `:attachments`, `:metadata`, `:username`, `:icon_emoji`, …
Extra message fields may also be given in `opts` (they are merged over
`text_or_opts`); request-level keys (`:token`, `:headers`, `:encoding`) are never
sent to Slack.

    Chat.post_message(client, "C123", "hello")
    Chat.post_message(client, "C123", %{text: "fallback", blocks: blocks}, thread_ts: ts)

# `content`

```elixir
@type content() :: String.t() | map() | keyword()
```

# `delete`

```elixir
@spec delete(Noizu.Slack.Client.t(), String.t(), String.t(), keyword()) ::
  Noizu.Slack.Request.result()
```

POST chat.delete — deletes the message at `ts` in `channel`.

# `post_ephemeral`

```elixir
@spec post_ephemeral(
  Noizu.Slack.Client.t(),
  String.t(),
  String.t(),
  content(),
  keyword()
) ::
  Noizu.Slack.Request.result()
```

POST chat.postEphemeral — posts a message only `user` can see in `channel`.

# `post_message`

```elixir
@spec post_message(Noizu.Slack.Client.t(), String.t(), content(), keyword()) ::
  Noizu.Slack.Request.result()
```

POST chat.postMessage — posts a message (text and/or blocks) to a channel or thread.

# `update`

```elixir
@spec update(Noizu.Slack.Client.t(), String.t(), String.t(), content(), keyword()) ::
  Noizu.Slack.Request.result()
```

POST chat.update — edits the message at `ts` in `channel`.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
