Skip to content

About

A plugin for AstrBot that forwards and synchronizes messages between different chat endpoints.

Resources

Stars

3 stars

Watchers

0 watching

Forks

 
 

Latest commit

 

History

51 Commits

Folders and files

Repository files navigation

MsgForward —— AstrBot 跨平台消息转发插件

一个 简洁、稳健、可扩展 的 AstrBot 跨平台消息转发插件,用于在不同聊天平台之间同步消息、桥接群聊,让多个平台之间能够像"同一个群"一样互动。

本插件理论上适用于任意 AstrBot 支持的平台。

许可证:AGPL-3.0
本插件在 AstrBot(AGPL)基础上开发,因此以 AGPL 开源
本插件基于 Siaospeed/astrbot_plugin_msg_transfer 修改


一、功能介绍

  • 多平台互通:支持 AstrBot 的任意平台适配器,跨平台同步消息、桥接群聊。
  • 消息来源标注:自动在消息前增加来源信息(平台名 / 发送者 / 会话 ID),支持自定义模板。
  • 可持久化存储:转发规则自动保存,重启不丢失。
  • WebUI配置:通过 AstrBot WebUI 可视化配置,无需了解配置格式。
  • 规则备注:每条转发规则可设置自定义备注,作为规则的展示名称(WebUI 与 /mf list 等命令均以备注显示)。
  • 多源多目标规则:source_umo / target_umo 支持填写多个会话(每行一条),一条规则即可表达一对多转发(一源 → 多目标),消息会转发到目标列表中的每个会话。
  • 单命令配置:/mf add/bind 绑定码流程,或 /mf bindraw 单命令直接建规则。
  • 来源信息控制:每条规则可独立设置显示/隐藏来源信息(/mf hide)。
  • 规则启停:每条规则可独立启用/停用,停用后规则保留但不再转发(WebUI 开关或 /mf toggle)。
  • 消息过滤:全局与规则级两层过滤(off/blacklist/whitelist),支持关键词与正则。
  • 转发冷却:全局默认与规则级冷却时间,避免刷屏(与队列间隔互斥:队列模式下冷却不生效,列表以 ❄失效(队列中) 标记)。
  • 发送队列:全局默认与规则级队列间隔,匹配消息进入队列后每隔设定时间转发一条;不同规则的队列按各自间隔独立调度,一条规则的间隔长短不会拖慢其它规则的发送节拍;支持规则级队列长度上限,达上限后新消息丢弃。
  • 媒体转发(失败自动降级):发送失败时自动下载远程媒体到本地重试;协议端调用超时(如 NapCat sendMsg)会短延迟后重发原链,纯文本消息同样适用。
  • 聊天记录头像:转发聊天记录时按发送者昵称反查真实 QQ 号,尽量让每条消息显示发送者本人的头像,而不是清一色默认头像(可在配置「转发聊天记录时获取发送者头像」中关闭)。
  • 聊天记录卡片预览:聊天记录里的小程序 / 分享卡片在预览行显示什么可选——来源 + 标题(默认,保留 [QQ小程序]、[分享] 等来源前缀,与 QQ 原生预览一致)、仅标题、不显示(统一 [卡片消息])。

🚀 快速开始

  1. 下载插件:通过 AstrBot 的插件市场直接下载,或从本仓库的 Release 下载 astrbot_plugin_msg_forward_cc 的 .zip 文件,在 AstrBot WebUI 中的插件页面中选择 从文件安装 。
  2. 重启 AstrBot:我们推荐在安装本插件后手动重启一次 AstrBot。
📦 功能概念(UMO / 转发规则 / 来源信息控制 / 消息过滤 / 内容类型 / 消息链)

1. UMO(Unified Message Origin)

一个唯一标识会话的字符串,格式为 平台名:消息类型:会话ID。消息类型有两种:

  • GroupMessage — 群聊
  • FriendMessage — 私聊

示例:

aiocqhttp:GroupMessage:654321       # QQ 群 654321
wx:GroupMessage:123456              # 微信 123456
your_name:FriendMessage:114514      # 私聊 114514

UMO 能让插件知道"某条消息来自哪个平台的哪个会话",确保转发到正确目标。

2. 转发规则(Rules)

插件允许你创建规则(可通过 WebUI 配置或命令):

由 mf add / mf bind 创建,或直接在 WebUI 配置页面添加。

即来自来源会话 A 的消息会自动同步并转发给目标会话 B。source_umo 与 target_umo 均支持填写多个会话(每行一条),一条规则可表达多条单向转发:消息来自任一源会话时,会转发到目标列表中的每一个会话。

每条规则包含:

字段 说明
enabled 是否启用此规则(默认启用;关闭后规则保留但不再转发消息)
remark 自定义备注(规则展示名称),未填写时显示 source_umo → target_umo
source_umo 消息来源会话标识,每行一条,可填多个(任一命中即触发转发)
target_umo 消息目标会话标识,每行一条,可填多个(消息会转发到其中的每一个)
hide_header 是否隐藏来源信息头
filter_mode 过滤模式(inherit=继承全局)
filter_patterns 过滤规则列表(留空=继承全局),每项 regex:表达式 或关键词
queue_interval_seconds 发送队列间隔(秒),0 或不填则继承全局默认值;开启后消息进入队列每隔该秒数转发一条
queue_max_size 发送队列长度(条),本规则在队列中允许积压的最大消息数;0 或不填=不限制(仅受全局总上限约束),达到后新消息丢弃
download_media_before_send 是否在发送媒体前先下载到本地(inherit=继承全局)
content_types 本规则转发的内容类型(多选,WebUI 显示中文、直接填中文也有效),空=继承全局 default_content_types,未选中的类型不转发
use_proxy 媒体下载是否走代理(关闭直连;开启后地址留空走 AstrBot 自带代理,填写则走该地址)
proxy_url 媒体下载代理地址(仅 use_proxy 开启时生效,如 http://127.0.0.1:7890 或 socks5://127.0.0.1:1080)

兼容旧版配置:升级后旧规则中字符串格式的 source_umo / target_umo 仍会正常工作;若旧规则为列表(list)格式存储,插件启动时会自动迁移为每行一条的文本格式,无需手动处理。

所有规则保存在 AstrBot 的插件配置中(通过 WebUI 编辑 _conf_schema.json 配置项)。

3. 来源信息控制

插件支持对转发规则设置来源信息显示状态:

  • 允许显示:显示来源信息头(默认)
  • 禁止显示:隐藏来源信息头,消息直接转发

使用方法:

/mf hide <规则ID>            # 切换规则的来源信息显示状态

/mf list 命令会显示每个规则的状态标记:

  • 🔓 表示允许显示来源信息
  • 🔒 表示禁止显示来源信息

4. 消息过滤(Filter)

支持关键词和正则表达式两种匹配方式,统一在 filter_patterns 中管理。分全局和逐规则两层:

  • 全局:顶层 filter_mode + filter_patterns(template_list 类型,逐条添加规则,regex:xxx=正则,否则=关键词),支持 JSON 批量导入导出
  • 逐规则:每条转发规则可覆写 filter_mode(inherit=继承全局)和 filter_patterns(空=继承全局),每项格式:regex:正则表达式 或 关键词

三种模式:

  • off:不过滤(默认),所有匹配规则的消息都会转发
  • blacklist:命中就不转发
  • whitelist:命中才转发,未命中则跳过

全局用 WebUI 的 template_list 增删改,规则级在 WebUI 中填 JSON 数组字符串。通过 /mf filter 可查看当前配置。

5. 内容类型筛选(多选,默认全选)

每条转发规则可指定要转发的内容类型,例如「只转发表情」「只转发文字」「只转发图片」;可多选,默认全选(与旧版行为一致)。未选中的类型在转发前被过滤掉;消息不含任何选中类型时整条跳过(不转发、不占冷却)。

可选类型(8 类,覆盖全部消息组件):

类型 含义 匹配组件
plain 文字 Plain(含来源信息头)
image 图片 Image(普通图片;收藏的表情/表情包以图片形式到达时也归入此类)
face 表情 Face(QQ 内置表情)
record 语音 Record
video 视频 Video
file 文件 File
at @提及 At / AtAll
other 其他 其余全部(回复 / 合并转发 / 分享 / 音乐 / 戳一戳 / 骰子等)

分全局和逐规则两层:全局 default_content_types(默认全选)作为新建规则的默认值;规则级 content_types(空=继承全局)可单独覆盖。来源信息头跟随「文字」类型:仅当选中 plain 时才附带来源头,只转发图片/视频等纯媒体时消息不含任何文字。

WebUI 勾选框直接显示中文名称(文字/图片/表情/语音/视频/文件/@提及/其他),配置文件中的存储值保持英文键(plain 等),旧配置完全兼容;配置里手动填中文(如 ["文字","表情"])与 /mf content 2 表情 等中文命令同样有效。通过 /mf content 查看配置、/mf content default <类型...> 设全局默认(all=全选)、/mf content <编号> <类型...> 设规则级(inherit=继承全局);支持 text/img/sticker/voice/mention 等别名,/mf content list 查看可用类型。分类边界:「表情」仅指 QQ 内置表情(Face 组件);收藏的表情/表情包以图片形式到达,归入「图片」类型——需要转发它们请勾选「图片」(可与「表情」同时勾选)。商城表情 mface 段无图片数据,被 AstrBot aiocqhttp 适配器直接丢弃,无法转发。

合并转发(聊天记录)属于「其他」类型:勾选「其他」才会转发聊天记录。转发后的聊天记录在目标会话里可正常打开,每条消息保留原本的发送时间,聊天记录里嵌套的子聊天记录同样可以打开;转发到不支持聊天记录的平台(如 Telegram / Discord / 微信)时降级为 [聊天记录] 文字。聊天记录里每条消息的头像来自发送者的 QQ 号,部分协议端(如 SnowLuma)读取聊天记录时给不出真实 QQ 号,插件会按发送者昵称反查真实 QQ 号(配置「转发聊天记录时获取发送者头像」,默认开启)。聊天记录里的群文件(在群里以文件形式发出的消息)同样会按文件转发,不再变成 [文件:文件名] 文字;机器人没有权限取到该文件(例如文件来自机器人未加入的群)时仍显示为文字占位。

6. 消息链(MessageChain)处理

插件会在转发前自动构造一条带来源信息的消息链,例如:

[转发] 张三 (1919810)
a:GroupMessage:11451419 -> a:GroupMessage:14191981

​这是一条示例消息

文字、图片、表情等组件都会被完整复制到目标平台。

@ 提及处理(默认:一律转为文本 @昵称):转发时 @ 组件默认不发送真实 At,而是转为纯文本 @昵称(@全体成员 → @全体成员)。这是最稳妥的默认策略:彻底规避协议端按 qq 解析、查询群成员时的内核调用超时(retcod=-1200 / retcode=1200 invoke timeout)与跨平台无法解析问题,昵称信息完整保留,跨群转发不会因为 @ 目标失效而失败。

高级 @(昵称反查,默认关闭):at_nickname_lookup 开启后恢复真实 At 行为——目标为 QQ 系平台(aiocqhttp / qq_official / qq_official_webhook 等)时按 qq 透传真实 At,并转发前拉取目标群成员列表把 @昵称 反查为目标群真实成员的 qq 再精确 @,解决「换个群 @ 就指不到人」的问题;自建 QQ 适配器可用 at_passthrough_extra_platforms 追加平台名。跨平台(微信 / Telegram / Discord 等,其平台本身没有「群成员 qq」概念)仍降级为文本 @昵称,保证信息不丢失。反查顺序是先用 qq 精确匹配、匹配不到再用昵称兜底:纯数字 qq 且目标群中确实存在该成员时原样不动,只有群内不存在该成员、或目标本身不是数字(openid/uid)时才按昵称反查。

代价与保护(仅高级 @):需要目标平台支持群成员查询(仅 QQ 系有效),群成员多时多一次 API 调用,因此默认关闭,并做了缓存与并发合并(at_nickname_lookup_cache_ttl,默认 300 秒,同一群的并发请求合并为一次,缓存条数上限按最旧淘汰)、重名保护(同名多人时跳过反查,避免 @ 错人)、失败静默降级(拉取失败 / 无 QQ 协议端 / 目标非 QQ 群时降级为文本 @昵称,不影响转发)。用 /mf at 查看配置、/mf at test <群号> 实测反查命中。

媒体失败自动降级:转发默认透传;若发送失败且消息含远程 URL 媒体,自动下载到本地重试一次(先正常网络、失败再 IPv4);开启「发送媒体前先下载到本地」或队列模式时,本地化失败(如群文件未下载到本地)也会自动尝试从远程 URL 下载重建。下载仍失败则降级为 [xxx转发失败:源文件不可达] 占位文本。协议端调用超时(如 NapCat sendMsg 返回 retcode=1208 的 NTService 超时、retcode=1200 的 QQ 内核调用超时)属瞬时故障:先短延迟(3 秒)用原链重发至多 2 次(纯文本消息同样适用),仍超时才进入上述媒体本地化降级,避免每次超时都重下载媒体、延长耗时加重协议端负担。

队列持久化:发送队列中的消息会同步写入 astrbot/data/plugin_data/msg_forward_cc/queue.json,AstrBot 重启或插件重载后自动恢复未发送完的消息,避免积压消息丢失。

队列长度上限(全局总上限 + 规则级独立上限):全局 queue_max_size 是全部规则合计的队列积压上限(总长度);每条规则还可单独设置 queue_max_size 作为本规则的独立积压上限(一条多目标转发会产生多条队列条目,全部计入该规则)。两者同时生效,达到任一上限后新消息被丢弃(记录 error 日志),队列中已有的消息不受影响。规则未设置或设为 0 时该规则无独立上限。用 /mf queue maxsize 查看、/mf queue maxsize <编号> <条数> 设置、/mf queue maxsize <编号> inherit 重置,/mf list 中以 📮≤N条 标记设置了独立上限的规则。

冷却与队列的关系(队列优先,冷却失效):同一条规则同时配置冷却与队列间隔时,消息进入队列路径后冷却检查会被整体跳过——冷却判断与写入只在即时发送路径执行,后台 worker 不读冷却表,实际只有队列间隔在限流。两者语义本就重叠(冷却=「发完 N 秒内不再发」,队列间隔=「每 N 秒发一条」),无需叠加。为避免误判,这类规则的冷却会显示为 ❄失效(队列中)(/mf list / /mf listall)与 ❄Ns(队列中失效)(/mf filter),并在首次转发时向日志告警一次(按规则去重,不刷屏)。queue_enabled 总开关关闭时队列间隔被强制置 0,冷却照常生效;若确需冷却限流,请关闭该规则的队列间隔(/mf queue set <编号> 0)。

跨容器媒体转发(复用 AstrBot 内置文件服务):队列模式下媒体会被下载并保存到 AstrBot data 目录(astrbot/data/plugin_data/msg_forward_cc/media/,持久化重启不丢)。若 AstrBot 与目标端(如 NapCat)运行在不同容器,NapCat 读不到 AstrBot 的本地路径,且源端短效 URL 在队列延迟后可能过期。此时插件复用 AstrBot 内置文件服务:发送前把媒体注册到 file_token_service,生成 {callback_api_base}/api/file/{token} 免认证 URL 供 NapCat 下载(每次发送实时注册,避免单次 token 与过期问题)。需在 AstrBot WebUI 配置 callback_api_base(基础配置 → 回调地址,如 http://<AstrBot容器IP>:6185),未配置时回退为原始 URL 行为。


二、指令与配置

💬 指令列表

指令 说明
mf add 创建一则消息转发绑定的请求
mf bind 接受一则消息转发绑定的请求
mf bindraw 直接创建转发绑定(例:/mf bindraw qq 654321 wx 123456)
mf del 删除一条转发规则
mf list 列出与当前会话相关的所有转发规则(可用于获取当前群号)
mf listall 列出所有转发规则
mf hide 切换规则的来源信息显示状态
mf toggle 启用/停用一条转发规则
mf remark 设置规则备注名称(例:/mf remark 2 同步群,留空清除备注)
mf cooldown 查看当前冷却配置(全局默认 + 规则级)
mf cooldown default <秒> 设置全局默认冷却时间(0=关闭)
mf cooldown <编号> <秒> 设置某条规则冷却时间(0=关闭该规则冷却)
mf cooldown <编号> inherit 重置某条规则冷却为继承全局默认
mf filter 查看当前过滤配置(模式+正则)
mf content 查看内容类型筛选配置(全局默认 + 规则级覆盖)
mf content list 查看可选内容类型与别名
mf content default <类型...> 设置全局默认内容类型(all=全选,例:/mf content default plain image)
mf content <编号> <类型...> 设置某条规则转发的内容类型(多选,未选中的不转发)
mf content <编号> inherit 重置某条规则内容类型为继承全局默认
mf at 查看 @ 转发与昵称反查配置(全局开关、缓存时长、规则级设置)
mf at on / mf at off 全局开启/关闭 @ 昵称反查(默认关闭)
mf at <编号> on|off 开启/关闭某条规则的 @ 昵称反查
mf at <编号> inherit 重置某条规则的 @ 昵称反查为继承全局
mf at cache <秒> 设置群成员列表缓存时长(0=每次重新拉取,默认 300)
mf at test <群号|UMO> 测试目标群 @ 昵称反查(拉取成员列表并显示命中情况)
mf queue status 查看发送队列状态与配置(含各规则间隔/长度上限/当前积压)
mf queue on / mf queue off 启用/停用发送队列总开关
mf queue interval <秒> 设置全局默认发送队列间隔(0=关闭)
mf queue maxsize 查看队列总上限与各规则长度上限
mf queue maxsize <条数> 设置发送队列总上限(0=不限制)
mf queue maxsize default <条数> 同上(default 前缀与规则编号区分)
mf queue maxsize <编号> <条数> 设置某条规则的队列长度上限(0=不限制)
mf queue maxsize <编号> inherit 重置某条规则队列长度上限为继承全局
mf queue retention <小时> 设置队列媒体缓存保留时长(0=默认24小时)
mf queue set <编号> <秒> 设置某条规则的队列间隔(0=关闭该规则队列)
mf queue set <编号> inherit 重置某条规则的队列间隔为继承全局默认
mf queue clear 清空当前积压的发送队列并清理媒体缓存
mf queue pause / mf queue resume 暂停/恢复发送队列消费(暂停后积压消息暂不发送)
mf help 显示该插件帮助信息

UMO(Unified Message Origin):会话唯一标识,格式 平台名:消息类型:会话ID,消息类型为 GroupMessage(群聊)或 FriendMessage(私聊)。示例:aiocqhttp:GroupMessage:654321。

mf bindraw 平台简写映射

简写 完整平台名 对应平台
df default 默认
qq aiocqhttp QQ
wx weixin_oc 个人微信
tg telegram Telegram
dc discord Discord

省略平台时默认为 default。平台简写或群号后加 s 表示私聊。 超过 3 个字母的平台名直接作为完整平台标识使用,不会走简写映射(如 aiocqhttp、weixin_oc)

用法示例:

  • /mf bindraw qq 654321 wx 123456 → QQ 群 654321 → 微信 123456
  • /mf bindraw 654321 wx 123456 → 默认群 654321 → 微信 123456(省略源平台)
  • /mf bindraw s 123456 654321 → 默认私聊 123456 → 默认群 654321(省略源平台单独 s)
  • /mf bindraw 654321s 123456 → 默认私聊 654321 → 默认群 123456(群号后加 s)
  • /mf bindraw qq 114514 wxs 123456 → QQ 群 114514 → 微信私聊 123456(平台后加 s)

⚙️ 配置

插件支持通过 AstrBot WebUI 进行可视化配置,配置项定义在 _conf_schema.json 中。

Details
配置项 类型 默认值 说明
rules template_list [] 转发规则列表,可在 WebUI 直接增删改
default_hide_header bool false 新建规则时默认是否隐藏来源信息头
platform_names list ["aiocqhttp=QQ"] 平台显示名映射,每项格式:原始平台名=显示名,未命中的平台自动使用内置名称
header_template text 见下方 来源信息头模板,支持变量替换
filter_mode string off 消息过滤模式:off/blacklist/whitelist
filter_patterns template_list [] 全局过滤规则列表,每条一条规则(regex:xxx=正则,否则=关键词)
default_cooldown_seconds int 0 默认转发冷却时间(秒),每条规则可单独覆盖
default_queue_interval_seconds int 0 默认发送队列间隔(秒),开启后消息进入队列每隔该秒数转发一条,每条规则可单独覆盖
queue_max_size int 0 发送队列总长度上限(全部规则合计积压条数),0=不限制;达到上限后新消息被丢弃(记录 error 日志),队列中已有的消息不受影响;各规则可用规则级 queue_max_size 单独限制本规则积压
default_content_types list 全部类型 新建规则时默认勾选的内容类型(多选,WebUI 显示中文),规则级 content_types 可覆盖
at_nickname_lookup bool false 高级 @(昵称反查,默认关闭):关闭时 @ 一律转为文本 @昵称;开启后按目标群成员列表把 @昵称 反查为真实 qq 后精确 @(QQ 系目标按 qq 透传真实 At),每条规则可单独覆盖
at_nickname_lookup_cache_ttl int 300 高级 @ 的群成员列表缓存时长(秒),0=每次重新拉取
at_passthrough_extra_platforms list [] 额外允许 @ 按 qq 透传的目标平台(仅高级 @ 开启时生效,内置已含 QQ 系平台)
download_media_before_send bool false 发送前先将媒体下载到本地,跨设备转发找不到文件时开启,每条规则可单独覆盖
forward_keep_time bool true 转发聊天记录时保留每条消息原本的发送时间,关闭则统一显示为转发时的时间
forward_card_preview string source 聊天记录卡片预览:source=来源 + 标题(默认),显示卡片原本传递的预览文本,保留 [QQ小程序]、[分享] 等来源前缀(与 QQ 原生预览一致);title=仅标题,预览行只显示卡片标题;off=不显示,统一显示 [卡片消息];不显示简介、上传者、跳转链接等其它信息
forward_node_avatar bool true 转发聊天记录时获取发送者头像:按发送者昵称从群成员列表反查真实 QQ 号,让聊天记录里每条消息显示发送者本人的头像;发送者不在机器人所在的群、昵称重名或已改名时无法反查,仍显示默认头像。关闭后直接沿用协议端返回的发送者信息,不再额外拉取群成员列表

rules 每条规则包含

字段 类型 说明
enabled bool 是否启用此规则,关闭后规则保留但不再转发
remark string 自定义备注(规则展示名称),留空则显示 source_umo → target_umo
source_umo text 消息来源会话标识,每行一条,可填多个(任一命中即触发转发)
target_umo text 消息目标会话标识,每行一条,可填多个(消息会转发到其中的每一个)
hide_header bool 是否隐藏来源信息头
filter_mode string 过滤模式(inherit=继承全局),支持 inherit/off/blacklist/whitelist
filter_patterns list 过滤规则列表(留空=继承全局),每项格式:regex:表达式 或 关键词
cooldown_seconds int 转发冷却时间(秒),0=关闭本规则冷却;不填则继承全局默认值;规则处于队列模式时冷却不生效(显示 ❄失效(队列中))
queue_interval_seconds int 发送队列间隔(秒),0=关闭本规则队列(立即转发);不填则继承全局默认值;开启后消息进入队列每隔该秒数转发一条
queue_max_size int 发送队列长度上限(条),本规则在队列中允许积压的最大消息数;0 或不填=不限制(仅受全局总上限约束);达到后新消息被丢弃(记录 error 日志)
download_media_before_send string 是否在发送媒体前先下载到本地(inherit=继承全局),支持 inherit/true/false
content_types list 本规则转发的内容类型(多选,WebUI 显示中文、存储值为英文键,直接填中文也有效),空=继承全局 default_content_types
at_nickname_lookup string 高级 @(昵称反查)开关:false/off=At 一律转为文本 @昵称(默认),true/on=QQ 系目标透传真实 At 并按昵称反查精确 @,inherit=继承全局,支持 inherit/true/false

platform_names 格式说明

每项格式:原始平台名=显示名

默认已包含全部常见平台的映射(见下方完整列表),可在 WebUI 中直接增删改:

default=默认
aiocqhttp=QQ
qq_official=QQ官方机器人
qq_official_webhook=QQ官方机器人(Webhook)
telegram=Telegram
weixin_oc=个人微信
wecom=企业微信
weixin_official_account=微信公众号
lark=飞书
dingtalk=钉钉
discord=Discord
kook=KOOK
slack=Slack
vocechat=VoceChat
line=LINE
satori=Satori
matrix=Matrix
mattermost=Mattermost
misskey=Misskey
wecom_ai_bot=企微AI机器人

未在此列表中的平台保持原名(原样显示)。删空列表则全部平台保持原名。

header_template 可用变量

  • {sender_name} — 发送者昵称
  • {sender_id} — 发送者 ID
  • {platform} — 平台名称
  • {msg_type} — 消息类型(群组/私聊/未知类型)
  • {conversation_id} — 会话 ID

默认模板:

[转发] {sender_name} ({sender_id})
来自 {platform} 的 {msg_type}(ID: {conversation_id})消息

三、平台兼容性测试

以下为 AstrBot 支持的全部平台之间双向转发测试记录。每个平台一张折叠表,表内为该平台作为来源转发至各目标平台的测试结果;反向(目标平台 → 该平台)结果见对应目标平台的表格。

本插件在 metadata.yaml 中声明支持 AstrBot 官方全部平台适配器(aiocqhttp / qq_official / qq_official_webhook / telegram / wecom / wecom_ai_bot / lark / dingtalk / discord / slack / kook / vocechat / weixin_official_account / weixin_oc / satori / misskey / line / matrix / mattermost),并声明最低 AstrBot 版本 v4.0.0(astrbot_version: ">=4.0.0")。

QQ官方机器人 同时覆盖 qq_official 与 qq_official_webhook 两个适配器。

测试内容分为 文字 / 图片 / 语音 / 动图 / 视频 / 合并消息(合并转发的聊天记录)/ 文件 七类,表内每列一类。点击平台名展开对应表格。

状态标记:✅ 通过 ⚠️ 部分可用 ❌ 失败 🚫 适配器不支持 ⬜ 未测试

说明:测试需要两个会话均接入本插件并建立转发规则(如 /mf bindraw qq 654321 tg 123456)。同平台不同会话之间(如 QQ 群 A → QQ 群 B)同样需要测试。

已测试的 aiocqhttp 协议端:snowluma、LLOneBot、NapCat

aiocqhttp
目标平台 文字 图片 语音 动图 视频 合并消息 文件
aiocqhttp ✅ ✅ ⬜ ✅ ✅ ✅ ❌
QQ官方机器人 ✅ ✅ ⬜ ✅ ✅ ❌ ❌
Telegram ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
个人微信 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
企业微信 ⬜ ⬜ ⬜ ⬜ 🚫 ⬜ 🚫
微信公众号 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
飞书 ⬜ ⬜ 🚫 ⬜ 🚫 ⬜ 🚫
钉钉 ⬜ ⬜ 🚫 ⬜ 🚫 ⬜ 🚫
Discord ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
KOOK ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Slack ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
VoceChat ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
LINE ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Satori ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Matrix ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Mattermost ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Misskey ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
企微AI机器人 ⬜ ⬜ 🚫 ⬜ 🚫 ⬜ 🚫
QQ官方机器人
目标平台 文字 图片 语音 动图 视频 合并消息 文件
aiocqhttp ❌ ❌ ⬜ ❌ ❌ ❌ ⬜
QQ官方机器人 ✅ ✅ ⬜ ✅ ✅ ⚠️(信息炸开) ⚠️(文件名丢失)
Telegram ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
个人微信 ✅ ✅ ⬜ ⚠️(仅第一帧) ✅ ⚠️(信息炸开) ⬜
企业微信 ⬜ ⬜ ⬜ ⬜ 🚫 ⬜ 🚫
微信公众号 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
飞书 ⬜ ⬜ 🚫 ⬜ 🚫 ⬜ 🚫
钉钉 ⬜ ⬜ 🚫 ⬜ 🚫 ⬜ 🚫
Discord ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
KOOK ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Slack ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
VoceChat ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
LINE ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Satori ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Matrix ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Mattermost ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Misskey ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
企微AI机器人 ⬜ ⬜ 🚫 ⬜ 🚫 ⬜ 🚫
Telegram
目标平台 文字 图片 语音 动图 视频 合并消息 文件
aiocqhttp ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
QQ官方机器人 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Telegram ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
个人微信 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
企业微信 ⬜ ⬜ ⬜ ⬜ 🚫 ⬜ 🚫
微信公众号 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
飞书 ⬜ ⬜ 🚫 ⬜ 🚫 ⬜ 🚫
钉钉 ⬜ ⬜ 🚫 ⬜ 🚫 ⬜ 🚫
Discord ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
KOOK ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Slack ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
VoceChat ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
LINE ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Satori ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Matrix ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Mattermost ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Misskey ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
企微AI机器人 ⬜ ⬜ 🚫 ⬜ 🚫 ⬜ 🚫
个人微信
目标平台 文字 图片 语音 动图 视频 合并消息 文件
aiocqhttp ✅ ✅ ⬜ ❌ ✅ ❌ ✅
QQ官方机器人 ✅ ✅ ⬜ ❌ ✅ ❌ ✅
Telegram ⬜ ⬜ ⬜ ⬜ ⬜ ❌ ⬜
个人微信 ⬜ ⬜ ⬜ ⬜ ⬜ ❌ ⬜
企业微信 ⬜ ⬜ ⬜ ⬜ 🚫 ❌ 🚫
微信公众号 ⬜ ⬜ ⬜ ⬜ ⬜ ❌ ⬜
飞书 ⬜ ⬜ 🚫 ⬜ 🚫 ❌ 🚫
钉钉 ⬜ ⬜ 🚫 ⬜ 🚫 ❌ 🚫
Discord ⬜ ⬜ ⬜ ⬜ ⬜ ❌ ⬜
KOOK ⬜ ⬜ ⬜ ⬜ ⬜ ❌ ⬜
Slack ⬜ ⬜ ⬜ ⬜ ⬜ ❌ ⬜
VoceChat ⬜ ⬜ ⬜ ⬜ ⬜ ❌ ⬜
LINE ⬜ ⬜ ⬜ ⬜ ⬜ ❌ ⬜
Satori ⬜ ⬜ ⬜ ⬜ ⬜ ❌ ⬜
Matrix ⬜ ⬜ ⬜ ⬜ ⬜ ❌ ⬜
Mattermost ⬜ ⬜ ⬜ ⬜ ⬜ ❌ ⬜
Misskey ⬜ ⬜ ⬜ ⬜ ⬜ ❌ ⬜
企微AI机器人 ⬜ ⬜ 🚫 ⬜ 🚫 ❌ 🚫
企业微信
目标平台 文字 图片 语音 动图 视频 合并消息 文件
aiocqhttp ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
QQ官方机器人 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Telegram ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
个人微信 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
企业微信 ⬜ ⬜ ⬜ ⬜ 🚫 ⬜ 🚫
微信公众号 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
飞书 ⬜ ⬜ 🚫 ⬜ 🚫 ⬜ 🚫
钉钉 ⬜ ⬜ 🚫 ⬜ 🚫 ⬜ 🚫
Discord ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
KOOK ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Slack ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
VoceChat ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
LINE ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Satori ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Matrix ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Mattermost ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Misskey ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
企微AI机器人 ⬜ ⬜ 🚫 ⬜ 🚫 ⬜ 🚫
微信公众号
目标平台 文字 图片 语音 动图 视频 合并消息 文件
aiocqhttp ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
QQ官方机器人 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Telegram ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
个人微信 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
企业微信 ⬜ ⬜ ⬜ ⬜ 🚫 ⬜ 🚫
微信公众号 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
飞书 ⬜ ⬜ 🚫 ⬜ 🚫 ⬜ 🚫
钉钉 ⬜ ⬜ 🚫 ⬜ 🚫 ⬜ 🚫
Discord ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
KOOK ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Slack ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
VoceChat ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
LINE ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Satori ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Matrix ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Mattermost ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Misskey ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
企微AI机器人 ⬜ ⬜ 🚫 ⬜ 🚫 ⬜ 🚫
飞书
目标平台 文字 图片 语音 动图 视频 合并消息 文件
aiocqhttp ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
QQ官方机器人 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Telegram ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
个人微信 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
企业微信 ⬜ ⬜ ⬜ ⬜ 🚫 ⬜ 🚫
微信公众号 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
飞书 ⬜ ⬜ 🚫 ⬜ 🚫 ⬜ 🚫
钉钉 ⬜ ⬜ 🚫 ⬜ 🚫 ⬜ 🚫
Discord ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
KOOK ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Slack ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
VoceChat ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
LINE ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Satori ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Matrix ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Mattermost ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Misskey ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
企微AI机器人 ⬜ ⬜ 🚫 ⬜ 🚫 ⬜ 🚫
钉钉
目标平台 文字 图片 语音 动图 视频 合并消息 文件
aiocqhttp ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
QQ官方机器人 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Telegram ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
个人微信 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
企业微信 ⬜ ⬜ ⬜ ⬜ 🚫 ⬜ 🚫
微信公众号 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
飞书 ⬜ ⬜ 🚫 ⬜ 🚫 ⬜ 🚫
钉钉 ⬜ ⬜ 🚫 ⬜ 🚫 ⬜ 🚫
Discord ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
KOOK ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Slack ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
VoceChat ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
LINE ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Satori ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Matrix ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Mattermost ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Misskey ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
企微AI机器人 ⬜ ⬜ 🚫 ⬜ 🚫 ⬜ 🚫
Discord
目标平台 文字 图片 语音 动图 视频 合并消息 文件
aiocqhttp ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
QQ官方机器人 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Telegram ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
个人微信 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
企业微信 ⬜ ⬜ ⬜ ⬜ 🚫 ⬜ 🚫
微信公众号 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
飞书 ⬜ ⬜ 🚫 ⬜ 🚫 ⬜ 🚫
钉钉 ⬜ ⬜ 🚫 ⬜ 🚫 ⬜ 🚫
Discord ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
KOOK ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Slack ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
VoceChat ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
LINE ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Satori ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Matrix ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Mattermost ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Misskey ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
企微AI机器人 ⬜ ⬜ 🚫 ⬜ 🚫 ⬜ 🚫
KOOK
目标平台 文字 图片 语音 动图 视频 合并消息 文件
aiocqhttp ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
QQ官方机器人 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Telegram ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
个人微信 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
企业微信 ⬜ ⬜ ⬜ ⬜ 🚫 ⬜ 🚫
微信公众号 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
飞书 ⬜ ⬜ 🚫 ⬜ 🚫 ⬜ 🚫
钉钉 ⬜ ⬜ 🚫 ⬜ 🚫 ⬜ 🚫
Discord ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
KOOK ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Slack ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
VoceChat ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
LINE ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Satori ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Matrix ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Mattermost ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Misskey ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
企微AI机器人 ⬜ ⬜ 🚫 ⬜ 🚫 ⬜ 🚫
Slack
目标平台 文字 图片 语音 动图 视频 合并消息 文件
aiocqhttp ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
QQ官方机器人 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Telegram ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
个人微信 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
企业微信 ⬜ ⬜ ⬜ ⬜ 🚫 ⬜ 🚫
微信公众号 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
飞书 ⬜ ⬜ 🚫 ⬜ 🚫 ⬜ 🚫
钉钉 ⬜ ⬜ 🚫 ⬜ 🚫 ⬜ 🚫
Discord ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
KOOK ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Slack ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
VoceChat ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
LINE ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Satori ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Matrix ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Mattermost ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Misskey ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
企微AI机器人 ⬜ ⬜ 🚫 ⬜ 🚫 ⬜ 🚫
VoceChat
目标平台 文字 图片 语音 动图 视频 合并消息 文件
aiocqhttp ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
QQ官方机器人 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Telegram ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
个人微信 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
企业微信 ⬜ ⬜ ⬜ ⬜ 🚫 ⬜ 🚫
微信公众号 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
飞书 ⬜ ⬜ 🚫 ⬜ 🚫 ⬜ 🚫
钉钉 ⬜ ⬜ 🚫 ⬜ 🚫 ⬜ 🚫
Discord ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
KOOK ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Slack ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
VoceChat ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
LINE ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Satori ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Matrix ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Mattermost ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Misskey ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
企微AI机器人 ⬜ ⬜ 🚫 ⬜ 🚫 ⬜ 🚫
LINE
目标平台 文字 图片 语音 动图 视频 合并消息 文件
aiocqhttp ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
QQ官方机器人 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Telegram ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
个人微信 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
企业微信 ⬜ ⬜ ⬜ ⬜ 🚫 ⬜ 🚫
微信公众号 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
飞书 ⬜ ⬜ 🚫 ⬜ 🚫 ⬜ 🚫
钉钉 ⬜ ⬜ 🚫 ⬜ 🚫 ⬜ 🚫
Discord ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
KOOK ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Slack ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
VoceChat ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
LINE ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Satori ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Matrix ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Mattermost ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Misskey ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
企微AI机器人 ⬜ ⬜ 🚫 ⬜ 🚫 ⬜ 🚫
Satori
目标平台 文字 图片 语音 动图 视频 合并消息 文件
aiocqhttp ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
QQ官方机器人 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Telegram ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
个人微信 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
企业微信 ⬜ ⬜ ⬜ ⬜ 🚫 ⬜ 🚫
微信公众号 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
飞书 ⬜ ⬜ 🚫 ⬜ 🚫 ⬜ 🚫
钉钉 ⬜ ⬜ 🚫 ⬜ 🚫 ⬜ 🚫
Discord ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
KOOK ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Slack ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
VoceChat ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
LINE ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Satori ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Matrix ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Mattermost ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Misskey ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
企微AI机器人 ⬜ ⬜ 🚫 ⬜ 🚫 ⬜ 🚫
Matrix
目标平台 文字 图片 语音 动图 视频 合并消息 文件
aiocqhttp ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
QQ官方机器人 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Telegram ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
个人微信 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
企业微信 ⬜ ⬜ ⬜ ⬜ 🚫 ⬜ 🚫
微信公众号 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
飞书 ⬜ ⬜ 🚫 ⬜ 🚫 ⬜ 🚫
钉钉 ⬜ ⬜ 🚫 ⬜ 🚫 ⬜ 🚫
Discord ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
KOOK ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Slack ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
VoceChat ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
LINE ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Satori ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Matrix ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Mattermost ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Misskey ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
企微AI机器人 ⬜ ⬜ 🚫 ⬜ 🚫 ⬜ 🚫
Mattermost
目标平台 文字 图片 语音 动图 视频 合并消息 文件
aiocqhttp ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
QQ官方机器人 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Telegram ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
个人微信 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
企业微信 ⬜ ⬜ ⬜ ⬜ 🚫 ⬜ 🚫
微信公众号 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
飞书 ⬜ ⬜ 🚫 ⬜ 🚫 ⬜ 🚫
钉钉 ⬜ ⬜ 🚫 ⬜ 🚫 ⬜ 🚫
Discord ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
KOOK ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Slack ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
VoceChat ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
LINE ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Satori ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Matrix ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Mattermost ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Misskey ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
企微AI机器人 ⬜ ⬜ 🚫 ⬜ 🚫 ⬜ 🚫
Misskey
目标平台 文字 图片 语音 动图 视频 合并消息 文件
aiocqhttp ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
QQ官方机器人 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Telegram ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
个人微信 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
企业微信 ⬜ ⬜ ⬜ ⬜ 🚫 ⬜ 🚫
微信公众号 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
飞书 ⬜ ⬜ 🚫 ⬜ 🚫 ⬜ 🚫
钉钉 ⬜ ⬜ 🚫 ⬜ 🚫 ⬜ 🚫
Discord ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
KOOK ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Slack ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
VoceChat ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
LINE ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Satori ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Matrix ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Mattermost ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Misskey ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
企微AI机器人 ⬜ ⬜ 🚫 ⬜ 🚫 ⬜ 🚫
企微AI机器人
目标平台 文字 图片 语音 动图 视频 合并消息 文件
aiocqhttp ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
QQ官方机器人 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Telegram ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
个人微信 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
企业微信 ⬜ ⬜ ⬜ ⬜ 🚫 ⬜ 🚫
微信公众号 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
飞书 ⬜ ⬜ 🚫 ⬜ 🚫 ⬜ 🚫
钉钉 ⬜ ⬜ 🚫 ⬜ 🚫 ⬜ 🚫
Discord ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
KOOK ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Slack ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
VoceChat ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
LINE ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Satori ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Matrix ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Mattermost ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
Misskey ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
企微AI机器人 ⬜ ⬜ 🚫 ⬜ 🚫 ⬜ 🚫

四、其他

🔄 转发行为示例

假设你有两条 UMO:

  • aiocqhttp:GroupMessage:654321
  • your_name:FriendMessage:114514

创建规则后:

  • aiocqhttp 群 654321 的消息,会自动转发至 your_name 的好友 114514
  • 会自动加上消息链前的来源标注
  • 合并转发(聊天记录)在目标会话里显示为可正常打开的聊天记录,每条消息保留原本的发送时间,嵌套的子聊天记录同样可打开;聊天记录卡片外层的预览行与 QQ 原生一致(子聊天记录显示为 [聊天记录]、小程序 / 分享卡片默认连同来源前缀显示原始文本,可在配置「聊天记录卡片预览」中改为仅标题或统一显示 [卡片消息]);目标平台不支持时降级为 [聊天记录] 文字
  • 聊天记录里每条消息显示发送者本人的头像(按昵称反查真实 QQ 号);发送者不在机器人所在的群、昵称重名或已改名时无法反查,仍显示默认头像,可在配置「转发聊天记录时获取发送者头像」中关闭反查

多目标示例:一条规则中 target_umo 填写 ["aiocqhttp:GroupMessage:654321", "telegram:GroupMessage:987654"],则该群的消息会同时转发到这两个会话。

🧩 项目结构

项目结构示例:

astrbot/
└─ data/
   └─ plugins/
      └─ astrbot_plugin_msg_forward_cc/
         ├─ LICENSE
         ├─ logo.png
         ├─ _conf_schema.json
         ├─ main.py
         ├─ metadata.yaml
         ├─ README.md
         └─ requirements.txt

同时,插件会建立 astrbot/data/plugin_data/msg_forward_cc 目录以存储持久化数据:

astrbot/
└─ data/
   └─ plugin_data/
      └─ msg_forward_cc/
         └─ pending.json

🤝 贡献

欢迎提交:

  • Bug 报告
  • 新特性建议
  • PR(支持适配更多平台、更多规则类型)
  • 测试记录(包含成功/失败的平台、会话、规则等)

插件完全开源,希望它能够成为 AstrBot 最好用的"跨群桥接插件"。

About

A plugin for AstrBot that forwards and synchronizes messages between different chat endpoints.

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages