# Slink v0.1.0 - Table of Contents

> A lightweight Slack bot toolkit for Elixir — Socket Mode and Events API on one core.

## Pages

- [Slink](readme.md)
- [Changelog](changelog.md)
- [License](license.md)

## Modules

- [Slink](Slink.md): A lightweight Slack bot toolkit.
- [Slink.ExampleBot](Slink.ExampleBot.md): A tiny example bot. Replies to `app_mention` events and logs everything else.
- [Slink.Rate.Channel](Slink.Rate.Channel.md): A single channel's outbound queue. Drains one request, then waits the
configured interval before the next — so a channel never exceeds Slack's
~1 msg/sec limit. One of these runs per channel under `Slink.Rate.Supervisor`.

- Transports
  - [Slink.EventsApi.Plug](Slink.EventsApi.Plug.md): Events API transport: a `Plug` that receives Slack's HTTP event callbacks.
  - [Slink.SocketMode](Slink.SocketMode.md): Socket Mode transport: a `GenServer` that keeps a WebSocket open to Slack.

- Web API
  - [Slink.API](Slink.API.md): A thin Slack Web API client built on `Req`.
  - [Slink.Rate](Slink.Rate.md): Per-channel outbound rate limiting for Slack Web API calls.

- Events
  - [Slink.Context](Slink.Context.md): The context passed to `c:Slink.handle_event/2`.
  - [Slink.Event](Slink.Event.md): A Slack event, normalised into one shape regardless of transport.

