﻿# 我的微信式聊天

版本 0.9.0 试用版 · 2026-11-06 · 本机《魔兽世界：无限》1.60.1.70790，Interface 16001。

已安装到正式无限目录的 Interface/AddOns/MyForeverChat。完整退出并重启游戏，在角色选择界面启用 **我的微信式聊天 MyForever Chat**。

## 怎么用

1. 输入 **/wx**，或点击屏幕上的绿色“聊”按钮；按钮可拖动，位置按角色保存。
2. 左侧 **会话** 显示已有私聊和频道。**联系人** 下可展开游戏好友、通行证好友和最近的人；**群聊** 显示已加入的角色社区及其文字频道。
3. 在插件内的联系人列表或消息旁，**直接用左键双击头像或名字**，即可打开私聊，无需按 Ctrl。单击联系人和选中路过玩家都不会创建对话。选中的玩家会进入「最近的人」。收到新私聊时会建立会话。
4. 打开私聊后，头像状态点和标题显示在线状态；正常在线时不再额外占用一条绿色提示。底部输入文字，按 **Enter** 或点击「发送」；离线或状态未知时仍有明显提示，明确离线时不能发送，但仍可查看历史、编辑草稿。
5. 左上角填完整角色名再点「+」，或点 **「目标」** 进入当前目标的私聊。也可输入 **/wx target** 或在按键设置中绑定。

无限服姓名可能包含姓氏、空格和连字符，请按游戏显示的全名填写。在游戏原生目标、焦点、队伍和团队框体，或原生聊天的玩家名链接上，仍需 **Ctrl + 左键双击** 才打开私聊。头顶姓名板在无限服没有可用的点击接口；可以先选中对方，再按住 Ctrl 双击目标框体，或点插件的「目标」。

## 窗口功能

- **「关于」**（也可输入 **/wx about**）显示作者 Hyder、公开联系方式、游戏角色信息和完整 MIT 许可证。官网及邮箱可选中复制；面板内不会直接打开外部网页。
- 右上角 **“设置”**（也可输入 **/wx settings**）可调整外观：聊天字号 **12–22**、背景不透明度 **25%–100%**、青玉／海蓝／紫晶／暖金四套配色，以及自定义背景色和强调色。主要按钮沿用外观配色，消息气泡按聊天类型区分。
- 设置即时生效、按角色保存。透明度作用于背景，文字保持清晰；字号作用于聊天正文、输入框、复制内容、人物列表和通知预览。人物行和气泡高度会随字号调整。
- 自定义调色点“取消”会恢复原色；“恢复默认”只重置外观，不动聊天记录、草稿和窗口位置。设置窗口保持足够不透明，便于调回设置；输入框与气泡在浅色背景下自动使用深色文字。

- 「会话」页的公会、小队、团队固定置顶。综合、交易等频道按具体名称分别显示；列表分组可以折叠，搜索时直接显示符合条件的结果。折叠只收起列表，不会屏蔽弹窗。
- 频道头像使用有辨识度的简称：综合「综」、交易「交」、副本「本」、寻求组队「组」；其他频道取名称首字，旁边仍显示具体频道名称。
- 点击左侧常驻的 **「频道提醒」**，逐项管理综合、交易等具体频道的 **「屏蔽弹窗／恢复弹窗」**。屏蔽综合不影响交易；已认证的标准公共频道换地区或编号变化后保留自己的屏蔽状态。频道弹窗上的 **「屏蔽此频道」** 可直接关闭该频道当前及排队的提醒，保留聊天记录和会话内未读。恢复提醒后只提醒新消息，不重播已清除的旧泡泡。
- 「最近的人」包含近期选中的玩家、私聊过的联系人，以及客户端开放的最近盟友资料。升级时，旧版自动生成且没有聊天、草稿或标记的空对话会移入该列表。
- 人物行显示可读取的等级、职业、种族、头像和最后一条消息。选中玩家时读取资料；收到带公开身份的私聊时也会补充资料。目标可核对时显示真实人物头像，离开目标后使用职业头像；没有读到的资料显示“资料待更新”，不猜测等级。
- **头像右下角状态点**：绿点在线、灰点离线、空心点未知；明确离线的头像会变灰。状态来自身份匹配的游戏好友或当前可核对的玩家单位，查不到状态不会标成离线。头像右上角的**带斜线小铃铛**表示已开启免打扰，与在线状态独立。
- 选中私聊后，点标题下的 **“添加好友”**。只有游戏好友列表确认后才显示“已是好友”；未确认期间为“添加中”，不会自动重试。
- 自己的消息在右侧，对方在左侧，按类型配色，显示名字、已知等级／职业和时间。
- 各会话独立保存草稿，切换联系人后不会带错文字。
- 私聊标题下方可**置顶、免打扰、删除对话**。右键已有私聊也能删除。确认后移除本机记录和草稿，好友关系继续保留。主动重新打开或收到新私聊会建立会话。
- 动态会话最多置顶 10 个；免打扰保留会话内未读，但不计入绿色“聊”按钮上的总提醒。
- 左上角 **“已读”** 将所有会话标为已读。
- 提交后暂时保留文字，收到游戏回显才清空对应草稿。角色／通行证私聊在 8 秒未确认后继续保留草稿，并阻止反复按 Enter 重发；需先明确点击「允许重试」，再由你手动发送。社区群聊使用下方单独说明的提交与备份机制；公会、公共频道、小队、团队和附近聊天仍在 8 秒未确认后恢复发送按钮。
- 每个会话独立等待确认，一位联系人的消息尚在发送时，可以切到另一会话继续聊天。
- 聊天正文中的物品、法术、任务、专业配方、地图坐标和宠物等原生链接可以直接点击。物品品质色在气泡上清楚可读时保留，其余链接使用适合气泡配色的链接色。Shift 点击可将完整链接插入输入框，右键气泡可复制纯文字。
- 查看旧消息时不会被新消息强行拉到底部，可点“回到最新”。
- 拖动右侧会话标题区域移动，右下角调整大小，小“聊”按钮也可拖动；位置、大小和显隐按角色保存。
- 标题右上角 **“—”** 最小化窗口。未开启免打扰的新消息会**各自弹出一个泡泡**。公会、公共频道及附近消息显示 **20 秒**，角色／通行证私聊、社区群聊、小队和团队消息显示 **60 秒**。泡泡位于**屏幕左侧中上方**，多条消息从上到下排列，公会、小队和团队提醒优先。鼠标放在泡泡上滚动，或用前后翻页按钮，可翻看仍有效的提醒；翻页不会重新开始倒计时，过期提醒会消失，聊天记录仍在会话中。点击打开对应会话；右键关闭单个泡泡。最多同时显示 4 条，较小屏幕显示更少；其他页最多保留 12 条提醒，尚未显示的消息从首次显示开始计时。打开一段对话会收起它的泡泡，其他对话的泡泡还在。
- **Ctrl+X**：聊天窗口打开时最小化，输入框中的草稿保留；窗口收起时打开最新可见泡泡的会话并聚焦输入框。鼠标停在某个泡泡上时优先回复该泡泡。没有泡泡时打开最近私聊；还没有私聊则回到当前会话。此快捷键只打开输入框，不会自动发送消息；插件启用期间临时使用 Ctrl+X，不改写游戏保存的按键设置。
- 第一条泡泡上方的 **“清除泡泡”**（或 **/wx clear**）会清掉当前及排队的全部提示，保留聊天记录和未读数。
- 底部 **「表情」** 可以选用 12 个内置表情和已安装的自定义包。用左右箭头切换表情包，用「上一页」「下一页」翻页。点选后插入草稿，再按 Enter 发送。
- 底部 **「动作」**（**/wx actions**）列出客户端的斜线动作。可搜索「跳舞」、`/跳舞` 或 `dance`，点击执行原生动作。按键设置的「我的微信式聊天」分类可绑定动作面板及跳舞、招手、鞠躬、欢呼。
- **/wx reply** 回复最近的角色或通行证私聊。按键设置中也可绑定打开窗口和快捷回复。
- **/wx reset** 将聊天窗口和小入口恢复到默认大小与位置，便于找回移到屏幕边缘的窗口。

## 频道弹窗怎么屏蔽

1. 输入 **/wx** 打开插件，点击左侧 **「频道提醒」**。
2. 找到具体的 **综合**、**交易**或自定义频道名称，点击对应的 **「屏蔽弹窗」**。需要重新提醒时点 **「恢复弹窗」**。
3. 如果刚好弹出了不想看的频道消息，可直接点泡泡上的 **「屏蔽此频道」**，不必先展开列表查找。

这只控制本插件该频道的提醒，不退出游戏频道，也不删除记录。原生聊天窗口仍按自己的设置显示。折叠频道列表、清除当前泡泡和持续屏蔽某个频道是三个不同操作。

旧版已离开且无法核对身份的地区频道记录会保留，不会仅凭名称相似与自建频道合并。迁移遇到多份不同草稿时保留旧草稿供复制，不静默覆盖。只有已确认仍加入的频道才可发送，插件会在每次发送前重新核对频道。

## 创建和使用群聊

1. 打开 **/wx**，点击左侧 **「群聊」**。已加入的角色社区按群名、文字频道列出，并显示游戏提供的成员数。
2. 还没有群时，点 **「创建 / 加入」** 打开游戏原生「公会与社区」界面，选择创建《魔兽世界》社区，或使用好友提供的邀请加入。这里接入的是角色社区。
3. 选中群后，点标题下方 **「邀请朋友」**，进入当前群的原生界面，再点右下角 **「邀请成员」**，输入完整角色名或使用邀请链接。游戏要求这最后一步由原生按钮触发。邀请权限由社区设置决定；插件不会自动替你发出邀请。朋友加入后，选择同一个群与文字频道，输入文字后按 Enter 或「发送」。朋友可用原生社区窗口接收和回复，无需安装本插件。
4. 标题处的 **「原生社区」** 打开该社区的原生界面，可查看成员及使用游戏提供的管理功能。打开原生入口后插件会自动收起，保留草稿，避免遮住游戏窗口。
5. 打开群聊时读取游戏可提供的近期历史，按消息 ID 去重。成功提交后清空输入框，并保留本群最近一次提交的文字；需要取回时点「找回上次发送」。已有新草稿时不会覆盖，也不会自动重发。
6. 「已提交」表示游戏接口接受了请求，不代表已经送达或已读。以群内实际回显为准；接口报错时保留原草稿。

发送前重新核对是否仍在群中以及发言权限；不可发送时保留草稿并说明原因。群聊只在选中的社区文字频道内发送，不把角色私聊转发到群里。服务器历史是否可用、保留多久由游戏决定；本版不提供普通角色好友的离线私聊留言。

## 私聊状态与重试

- **对方离线**：打开角色或通行证私聊时，输入区上方会显示明显提示，并禁用发送。仍可阅读历史和编辑草稿；发送前还会再检查一次状态。草稿不会因离线被清空，也不会等对方上线后自动发出。
- **状态未知**：会明确提示「打开会话不代表对方在线」。查不到在线状态不会冒充在线，也不会直接当成离线；你仍可手动尝试发送，以游戏返回结果为准。
- **游戏明确返回离线错误**：只有能精确对应本次私聊对象的错误才会显示为该会话的发送失败，草稿保留，不再让 Enter 连续重试。其他玩家的系统通知不会据此阻断当前会话。
- **8 秒仍未确认送达**：私聊会显示未确认提示。连续按 Enter 不会再次发送；确实要重试时，先点「允许重试」，再按 Enter 或「发送」。未确认不等于一定失败，重试前请留意是否已有回显，以免重复。晚到的游戏回显仍可确认原消息。
- **「重新检查」**：只刷新在线状态，不发送消息。状态恢复可发送后，仍需由你主动发送草稿。

## 会话置顶与类型颜色

公会、小队、团队各有独立会话，固定在会话列表顶部，折叠普通频道不会隐藏这三项。首次升级保留旧「队伍」的记录和草稿在「小队」中；旧消息没有来源类型，不会猜测拆分。

| 消息类型 | 识别颜色 |
| --- | --- |
| 公会 | 绿色 |
| 小队 | 蓝色 |
| 团队 | 橙色 |
| 副本队伍 | 青绿色 |
| 角色私聊 | 粉紫色 |
| 通行证私聊 | 青蓝色 |
| 公共频道 | 金黄色 |
| 附近／喊话 | 灰色／红色 |

会话列表、聊天消息和提醒泡泡使用对应色标，并保留类型文字。物品等原生链接保留自身品质颜色。公会、频道、小队和团队泡泡显示发言者姓名，以及游戏能提供的等级、职业；聊天记录同步显示这些资料。名字过长时，悬停可查看完整姓名。读取不到的资料不会编造。

## 支持的消息

| 会话 | 发送位置 |
| --- | --- |
| 角色私聊 | 当前联系人完整角色名 |
| 通行证私聊 | 当前好友的通行证账号 |
| 小队 | 当前副本小队，否则普通队伍／团队内小队 |
| 团队 | 当前副本团队，否则普通团队；没有团队时提示 |
| 公会 | 当前公会；未加入时提示 |
| 附近 | 发送说话；接收说话及喊话 |
| 已加入频道 | 按当前频道名称重新查编号；离开或不可发言时提示 |
| 角色社区群聊 | 选中的社区文字频道；重新核对成员身份与发言权限 |

普通会话从启用后收到的新消息开始记录；角色社区可读取游戏提供的近期历史。游戏原生聊天仍可继续使用。

消息发往魔兽游戏内聊天，禁言、频率限制、离线与投递规则仍由游戏处理。接口接受请求不等于送达，私聊以游戏回显为确认依据；社区群聊只提示已提交，并提供最近一次提交的文字备份。精确匹配的私聊离线错误显示在输入区上方的状态提示中，其他系统提示显示在输入框下方。

## 文字和记录

- 发送按原生编辑框规则分别计算可见文字和链接数据。可见文字上限 **255 UTF-8 字节**，链接数据上限 **1023 字节**。链接显示的名称计入可见文字，物品编号等编码单独计算。
- 输入区可保留较长草稿并随光标滚动。含换行、控制字符或以斜杠开头的内容不会发送；游戏命令仍在原生输入框使用。
- **先点本插件输入框，再按住 Shift 左键点背包里的物品**，完整物品链接会插入当前草稿。按 Enter 后发送。原生聊天输入框或拍卖行接收链接时，游戏原有操作优先。
- 战网好友历史在同一魔兽账号的本机角色之间共享，每位好友保留最近 **500 条**。按稳定 BattleTag 关联；升级后，各角色首次登录时将原有战网记录导入一次。旧角色尚未登录前，其旧记录不会凭空出现在另一台电脑或另一个客户端。
- 角色私聊、公共频道与社区群聊各保留最近 **60 条**；最多 **30 个动态会话**，另有 4 个固定会话。角色私聊与频道不会跨角色合并。草稿、免打扰、未读和界面设置仍按角色保存。
- 战网历史保存在账号 SavedVariables，其他记录和草稿保存在角色 SavedVariables；升级时保留整个 WTF 目录。关闭会话不删除共享战网历史；确认「清空」或「删除对话」后，旧角色中的副本不会再把已清除历史导回来。
- “清空”按钮确认后清除此会话的本地记录，不删除对方或游戏服务器的数据。

## 自定义表情

1. 用浏览器打开 `MyForeverChat-表情包制作器.html`。点「选择图片」或把 PNG、JPG、WebP 等图片拖入页面，可以预览、命名或移除。每包最多 48 张，图片在本机转成 64×64 的游戏纹理。[表情包制作器](MyForeverChat-表情包制作器.html)
2. 输入表情包名称，点「下载分享 ZIP」。以后更新同一个包，沿用包编号和原图片文件名，已发出的表情标签就能继续对应到图片。
3. 完全退出游戏。把解压出的 `MyForeverChatEmotes_包编号` 文件夹放进 `_forever_/Interface/AddOns`，与 `MyForeverChat` 并列。重启后在角色选择界面启用该表情包。
4. 进游戏输入 `/wx`，点「表情」，用右箭头切换到自己的包。把导出的素材 ZIP 发给朋友，双方安装同一包后能看到图片。其他玩家会看到 `[表情:包编号:表情编号]` 形式的标签。

## 作者与许可

作者 **Hyder** · 邮箱 **267500@qq.com** · 官网 **https://afabiaoge.xyz/**。

公开游戏资料：服务器 **PVE普通**，阵营 **联盟**，公会 **炉边余客**，角色 **苏氏集团苏晚晴**。

MyForeverChat 采用 **MIT 许可证**，版权声明为 **Copyright (c) 2026 Hyder**。允许使用、修改、分发和商用，须保留版权声明与许可文本；软件按现状提供，不作担保。完整英文条款随插件置于 `MyForeverChat/LICENSE.txt`，也可在游戏内输入 **/wx about** 查看和复制。

## 验证与安装包

v0.9.0 新增角色社区群聊、直接邀请入口和战网好友历史共享，并修复频道辨识、重复提醒与在线提示条。本机 macOS 无限客户端已验证创建社区、好友加入、插件发出群消息并收到回复、群正文显示、发送内容找回和旧聊天记录恢复。19 个 Lua 文件语法、聊天 1788 项及全部插件 1949 项模拟检查通过；完整实机范围见 **CHAT-VALIDATION.md**。本版没有普通好友离线私聊留言；Windows 和离群、禁言等异常场景尚未实机验证。

以下为 v0.8.0 的历史验证范围，不代表 v0.9.0 的新增行为已完成实机验证。

v0.8.0 已在实际角色中成功加载，确认公会／小队／团队置顶、分类颜色、公会历史消息发言者姓名，以及 Ctrl+X 最小化。最终代码通过 16 个 Lua 文件语法检查、聊天 1152 项及全部插件 1313 项模拟检查，覆盖发送者资料、20／60 秒计时、翻页、优先级与悬停提示同步。用户解锁后已实测真实公会泡泡的左侧位置、姓名、等级、职业头像、Ctrl+X 打开对应会话及历史资料。另用六条不外发、不保存的本地预览消息，在实际客户端验证了滚轮翻页、悬停资料同步和公会 20 秒到期；小队及团队预览约 60 秒后也正确到期。正式版已再次重载，临时预览入口已清理；前后翻组按钮鼠标验收受控制工具错误影响，仍待确认。没有向玩家发送测试消息。

本地浏览器测试覆盖导入、预览、命名和 ZIP 导出。Lua 测试覆盖表情包加载和渲染、物品链接插入和回显，以及原生输入框优先。实际游戏里的自定义纹理、背包点击效果和新版插件内直接双击仍待实测。详见 **CHAT-VALIDATION.md**。

好友试用包为 **dist/MyForeverChat-0.9.0-Trial.zip**。将包内 MyForeverChat 文件夹放到 _forever_/Interface/AddOns，再完整重启游戏。试用包内附表情包制作器和安装说明。

源码为本次独立编写，接口依据是 [Forever 原生聊天源码镜像](https://github.com/Gethe/wow-ui-source/tree/forever/Interface/AddOns/Blizzard_ChatFrameBase)与原生生成 API 文档，抓取索引在 research/chat-upstream/SOURCES.json。未以 Chattynator 或 Coolinator 的实现作为基础。
