✈️ 飞机克隆机器人功能需求文档(2025 年 11 月 29 日)

:airplane: 飞机克隆机器人功能需求文档(2025 年 11 月 29 日)

本需求文档用于描述 Telegram 克隆机器人新增的 群组克隆功能转发规则优化功能,目标是让机器人具备“完整复制群组结构、成员形象、聊天内容、聊天行为”的能力,并支持实时同步。


一、群组克隆功能(新增)

1.1 功能入口设计

在左侧菜单新增一个 「群组克隆」 功能模块,独立于原本的“频道克隆”,因为两者逻辑完全不同。


1.2 群组克隆与频道克隆的核心区别

频道(Channel)

  • 只有管理员可发消息
  • 用户看不到具体发布者
  • 内容形式偏公告、通知

群组(Group)

  • 多用户实时聊天
  • 用户间有回复关系
  • 消息来自不同用户身份
  • 需要模拟多人参与对话

因此 群组克隆不能仅用单账号克隆,而是需要多个虚拟账号共同模拟原群组的聊天结构。

示例图片:




1.3 读取原群组数据(必要步骤)

为了完整克隆群组,需要执行以下操作:

系统需自动执行:

  1. 读取群组所有历史消息(从建群至今)
  2. 识别所有参与聊天的用户数量
  3. 排除已封号用户或无效账号(避免无法克隆)
  4. 生成“参与用户列表”,用于展示给脚本使用者

在克隆界面需展示类似下图的用户信息:


1.4 用户身份克隆规则

每个参与聊天的用户都需对应克隆:

  • 头像(profile photo)
  • 昵称(name)
  • 用户简介(bio)
  • 用户名(@username)

:star: 用户名规则(必须实现自动检测)

若用户原用户名为:

@gonzhonhao

机器人需要生成相同结构但不重复的用户名,如:

  • @gonzhonhao1
  • @gonzhonhao2
  • @gonzhonhao3

逻辑:

  1. 自动检测 @username 是否可注册
  2. 不可用则在末尾递增数字
  3. 直到找到可用用户名

示例截图:


1.5 消息克隆规则(核心)

群组克隆后的消息必须:

:check_mark: 保持 顺序完全一致
:check_mark: 保持 回复关系不变(reply_to_message_id 映射)
:check_mark: 每条消息由正确的克隆用户发送
:check_mark: 支持文字、表情、图片、语音、视频、贴纸等多格式

目标是做到:
克隆后的群组聊天内容与原始群组完全一致,如同镜像复制。


1.6 群组实时同步(增量更新)

克隆完成后,机器人要持续监听原群组,处理两类更新:

:blue_square:(1)新消息同步

当原群组出现新消息时:
→ 机器人需立即将该消息同步到克隆群组
→ 并保持与原群组一致的发送者身份

:green_square:(2)新用户加入

如果新用户加入原群组:

  1. 检查该用户是否已在克隆用户列表中
  2. 如果不存在:
    → 自动选一个尚未使用的账号进行克隆
    → 克隆其头像、简介、用户名(同 1.4 规则)

确保克隆群组的用户数量与原群组一致。


二、转发功能优化(用户反馈改善)

用户反馈示例:

用户担忧:
频道消息中常包含网址、联系方式、推广信息,机器人直接转发会变成帮对方免费宣传

因此需要优化转发功能,让用户能自定义处理方式。


2.1 新增转发规则选项

系统需提供两种可选择模式:


模式一:自动移除所有链接(Link Removal)

当用户启用此模式:

  • 转发时移除内容中的:
    • http / https 链接
    • Telegram 链接
    • 邮箱地址
    • 任何形式的 URL

示例:

原文:

加入我们的频道:https://example.com

转发变为:

加入我们的频道:

模式二:链接替换为用户自定义链接(Link Replace)

用户可设置一个自定义链接,例如:

https://mywebsite.com

当检测到消息内含任何链接,统一替换:

原文:

查看详情:https://othersite.com

自动替换为:

查看详情:https://mywebsite.com

2.2 扩展项(可选,建议加入)

为了让功能更加完善,可新增:

  • 白名单链接(不被替换/删除)
  • 正则表达式自定义替换规则
  • 是否替换链接预览(Instant View)
  • 是否去除消息中的 @username mentions

三、后续待补充内容(TODO)