# LINE 訊息

本頁說明 `core/line` 送出文字的兩種方式（reply token 與 push），以及收到的文字與媒體訊息如何處理。

## 以 reply token 回覆

handler 回傳非空字串時，函式庫以 `ReplyMessage(event.ReplyToken, NewTextMessage(reply))` 送出。回覆訊息不計費，但每個 token 只能用一次且只在事件後短時間內有效，自動回覆會用掉它。要送多則訊息時，回傳 `""` 後自行透過 `in.Raw` 與 `in.ReplyToken` 呼叫 SDK，或改用 push。

## Push 到指定對象

```go
_, err := bot.Send(ctx, in.GroupID, "Build finished")
```

`Send(ctx, to, text)` 對單一 user、group 或 room ID 呼叫 `PushMessage`，回傳 SDK 的 `*linebot.BasicResponse`。`to` 為空時回 `to is required`。Push 訊息會計入 LINE 方案的訊息額度。從 `Input` 選擇對象：一對一聊天用 `UserID`，群組或聊天室用 `GroupID` 或 `RoomID`。

## 收到的訊息類型

| `MessageType` | 會填入的欄位 | 常見處理 |
|---|---|---|
| `text` | `MessageID`、`Text` | 回傳回覆字串 |
| `image`、`video`、`audio` | `MessageID` | `bot.Save(ctx, in.MessageID, dir)` |
| `file` | `MessageID`、`FileName` | `Save` 後如需原始檔名再依 `FileName` 改名 |

貼圖、位置、follow／unfollow、postback 與其他事件類型一律略過。group 與 room 訊息不檢查 mention，直接進入 handler。

## 未提供的功能

LINE 套件沒有輸入提示、選單、狀態訊息、刪除與檔案上傳。這些功能仰賴其他平台提供的 callback 或訊息編輯，本套件未封裝。

## 相關頁面

- [LINE 設定](/zh/line)
- [媒體落地](/zh/media-save)
- [Reply Handler](/zh/reply-handler)
- [LINE API](/zh/api-reference-line)
