> [!NOTE]
> This README was generated by [SKILL](https://github.com/agenvoy/skill-readme-generate), get the ZH version from [here](https://github.com/pardnchiu/go-bot/blob/master/doc/README.zh.md).

***

<p align="center">
<strong>BUILD BOTS THAT FIT EVERY CHAT PLATFORM</strong>
</p>

<p align="center">
<a href="https://pkg.go.dev/github.com/pardnchiu/go-bot"><img src="https://img.shields.io/badge/GO-REFERENCE-blue?include_prereleases&style=for-the-badge" alt="Go Reference"></a>
<a href="https://github.com/pardnchiu/go-bot/releases"><img src="https://img.shields.io/github/v/tag/pardnchiu/go-bot?include_prereleases&style=for-the-badge" alt="Release"></a>
<a href="https://github.com/pardnchiu/go-bot/blob/master/LICENSE"><img src="https://img.shields.io/github/license/pardnchiu/go-bot?include_prereleases&style=for-the-badge" alt="License"></a>
</p>

***

> A Go multi-platform chat bot library with Telegram, Discord, and LINE adapters, one reply handler, and native interactions

## Table of Contents

- [Features](#features)
- [Architecture](#architecture)
- [License](#license)
- [Author](#author)

## Features

> `go get github.com/pardnchiu/go-bot` · [Documentation](https://github.com/pardnchiu/go-bot/blob/master/doc/doc.md)

- **Synchronous reply contract** — Register one `Reply` handler per platform; a non-empty return value replies to the triggering message, and the library recovers handler panics without dropping the connection.
- **Platform-native transports** — Telegram long polling and the Discord Gateway connect outbound and run behind NAT, while LINE uses a built-in signature-verifying webhook server, all under the same `New`/`Start`/`Close` lifecycle.
- **Interactions flow back to one handler** — Telegram inline keyboards and ForceReply plus Discord select menus and the button-to-modal flow deliver user picks and answers to the same handler as `Input`.
- **Debounced "thinking" status** — `SendStatus` reacts to the source message and edits a single status message at most once per second, and `FinishStatus` clears both the reaction and the message to stay within platform rate limits.
- **Capped media persistence** — Attachment downloads enforce 20/25/50 MiB per-platform caps and write atomically under UUID filenames, while uploads stream straight from disk.

## Architecture

> [Full Architecture](https://github.com/pardnchiu/go-bot/blob/master/doc/architecture.md)

```mermaid
graph TB
    App[Application] --> TG[core/telegram]
    App --> DC[core/discord]
    App --> LN[core/line]
    TG -->|long polling| TelegramAPI[Telegram Bot API]
    DC -->|WebSocket Gateway| DiscordAPI[Discord API]
    LineAPI[LINE Platform] -->|HTTPS webhook| LN
    TG --> Handler[ReplyHandler]
    DC --> Handler
    LN --> Handler
```

## License

This project is licensed under the [MIT LICENSE](https://github.com/pardnchiu/go-bot/blob/master/LICENSE).

## Author

Just [open an issue](https://github.com/pardnchiu/go-bot/issues/new) to share an idea.

<a href="https://github.com/pardnchiu/go-bot/graphs/contributors">
  <img src="https://contrib.rocks/image?repo=pardnchiu/go-bot&cache_bust=2026-10-06" alt="go-bot contributors" />
</a>

***

©️ 2026 [邱敬幃 Pardn Chiu](https://www.linkedin.com/in/pardnchiu)
