解放双手:在 EFB comwechat 中优雅转发微信聊天记录

🌟 引言:为何需要这个功能?

EhForwarderBot (EFB) 是一个强大的开源消息隧道框架,它允许我们将微信、QQ 等多种聊天平台的消息聚合到 Telegram (TG) 等统一的客户端中进行管理。其中,efb-wechat-comwechat-slave 是连接微信和 EFB 的一个热门选择。

然而,尽管 EFB 极大地提升了跨平台沟通的便利性,但在处理某些微信特有消息类型时,仍会遇到一些不便。例如,当朋友从微信转发来一段聊天记录,或者分享了一个小程序公众号文章卡片时,我们想通过 TG 将这些内容再次转发给其他微信好友,往往会发现 EFB 默认不支持完美转发这类复杂消息。这时,我们可能不得不拿起手机,在微信原生应用中完成操作,稍显繁琐。

幸运的是,我发现底层的 ComWeChatRobot 实际上具备转发聊天记录等消息的能力。因此,我对 efb-wechat-comwechat-slave 进行了一些小小的定制,实现了在 TG 端直接操作转发这些微信原生消息的功能。

🚀 操作指南:三步轻松转发

通过这个自定义功能,转发微信聊天记录等消息变得非常简单:

  1. 标记目标消息:在 TG 中,对着你想要转发的那条来自微信的消息(比如一段聊天记录),回复 /forward 命令。

    提示:此命令仅用于标记,不会立即发送。

  2. 确认转发标记:发送 /forward 后,原消息下方会出现一个特殊的“转发标记”符号,表明这条消息已被选定。
    转发标记示例
    图1: 消息已附加转发标记

  3. 执行 Telegram 转发:现在,使用 Telegram 自带的转发功能,将这条带有“转发标记”的消息转发给你想发送的微信好友或群聊。
    upgit_20250509_1746775857.png
    图2: 转发功能

完成以上步骤后,你的微信好友将会收到一条完整的、与微信原生格式一致的聊天记录(或其他类型的消息)。

微信接收效果
图3: 微信好友收到的消息样式(此为 ComWeChat 显示效果,实际在微信中为原生格式)

🎯 功能价值与适用场景

你可能会问,简单的文本和图片不是可以直接复制粘贴或者通过 TG 的普通转发实现吗?确实如此。但这个功能的真正价值在于处理那些 Telegram 无法直接完美呈现或转发的微信原生消息类型,例如:

  • 合并转发的聊天记录:这是最主要的应用场景。
  • 小程序卡片:轻松分享实用的小程序给朋友。
  • 公众号文章/分享卡片:保持原始的卡片样式进行分享。
  • 视频号内容等其他复杂消息。

通过 /forward 命令预处理后,这些消息就能以接近微信原生的方式被转发,极大地提升了使用 EFB 时的体验和效率。

🛠️ 实现思路简介

对于有兴趣了解其背后原理的朋友,这里简单提一下:

此功能的核心在于利用了 ComWeChatRobot 提供的底层接口。efb-wechat-comwechat-slave 在接收到 /forward 指令后,会将目标消息的 ID 缓存起来。当用户通过 Telegram 转发这条被标记的消息时,slave 插件会识别到这个特殊标记,并调用 ComWeChatRobot 的相应方法(如 forward_msg_by_id),将原始消息内容转发到目标会话,而不是简单地传递 Telegram 格式的消息。

这确保了即使是复杂的微信原生消息,也能被正确地重新发送。