# v0.3.2 Release Notes

> v0.3.1 -> v0.3.2

## Summary

Exposes the chat / channel display name as a first-class `Input` field on both platforms, so handlers don't have to dig into `Raw` (telegram) or call REST (discord) just to log or branch on context. Telegram fills `ChatName` from the chat metadata embedded in every update (`Title` → `Username` → `FirstName + LastName`), zero round-trip. Discord fills `ChannelName` from the `Session.State` cache that `discordgo` maintains via `GUILD_CREATE`, also zero round-trip; DM channels and state misses return `""` with no REST fallback, by design.
<details>
<summary>翻譯</summary>
把 chat / channel 顯示名稱升級成 `Input` 一級欄位，handler 不必再翻 `Raw`（telegram）或打 REST（discord）只為了 log / 條件分支。Telegram 從每個 update 內嵌的 chat metadata 取（`Title` → `Username` → `FirstName + LastName`），零 round-trip。Discord 從 `discordgo` 透過 GUILD_CREATE 維護的 `Session.State` cache 取，同樣零 round-trip；DM channel 或 state miss 回 `""`，**不**做 REST fallback——保留每訊息 zero-round-trip 的承諾。
</details>

## Changes

### FEAT
- Expose ChatName / ChannelName on Telegram and Discord Input (@pardnchiu) [9063124]

<details>
<summary>翻譯</summary>

- `telegram.Input` 新增 `ChatName string`，dispatch / dispatchCallback / multi-select 完成收尾三處自動 populate
- `discord.Input` 新增 `ChannelName string`，dispatch / modal submit / select submit 三處自動 populate
- Telegram 取值順序：`Chat.Title`（group/supergroup/channel）→ `Chat.Username`（public）→ `FirstName + LastName` trimmed（private）→ `""`
- Discord 走 `Session.State.Channel(channelID).Name`，state miss / DM 回 `""`，**不** REST fallback

</details>

## Scope

- `telegram/send.go` — UPDATE（`Input` 加 `ChatName`）
- `telegram/dispatch.go` — UPDATE（新增 `chatName(&chat)` helper、dispatch + dispatchCallback 兩處 populate）
- `telegram/sendMultiSelect.go` — UPDATE（multi-select 完成收尾 Input populate）
- `discord/send.go` — UPDATE（`Input` 加 `ChannelName`）
- `discord/dispatch.go` — UPDATE（新增 `(b *Bot) channelName(channelID)` 從 `b.api.State` 取、dispatch populate）
- `discord/sendInput.go` — UPDATE（modal submit Input populate）
- `discord/sendSelect.go` — UPDATE（select submit Input populate；同時覆蓋 SendMultiSelect 因共用 handler）
- `README.md` — DOC（兩邊 Input 欄位段補新欄位 + 來源說明）

***

Generated by [SKILL](https://github.com/pardnchiu/skill-version-generate)
