EFB 新玩法:用 Telegram 话题(Topic)分类管理微信群消息

背景知识

  • EFB (EhForwarderBot) 是什么?
    简单来说,它是一个帮你把微信消息转发到 Telegram,并且能让你在 Telegram 里回复微信消息的工具。你需要自己准备服务器或者电脑来运行它。
  • Telegram 话题(Topic)是什么?
    这是 Telegram 群组的一个功能。如果一个群组开启了话题功能,那么群里的消息就可以像论坛帖子一样,分成不同的话题进行讨论,让信息更有条理。只有群组管理员可以开启或关闭这个功能。

这个功能解决了什么问题?

用 EFB 把微信消息转发到 Telegram 后,默认情况下,每一个微信群或者好友都会在 Telegram 里创建一个对应的群组。如果你的微信联系人很多,Telegram 里就会变得非常杂乱。

这个教程介绍的方法,利用了 Telegram 的话题(Topic)功能,可以将所有未单独绑定的微信群聊和私聊消息,都聚合到一个 Telegram 大群组里,并自动为每个微信对话创建一个对应的话题。这样你的 Telegram 界面会清爽很多!

效果图:
(所有来自不同微信群的消息,都被整理到 “EFB Topic Group” 这个群的不同话题下了)
upgit_20250413_1744529293.png

如何设置?

重要提示: 这个功能需要使用一个修改版的 EFB Telegram 主端(efb-telegram-master),官方版本目前还不支持。

步骤一:安装修改版的 EFB Telegram 主端

如果你之前已经安装了官方的 efb-telegram-master,需要先卸载掉,然后安装我修改过的版本。打开你的终端(命令行界面),运行以下命令:

# 如果你之前安装过,先卸载
pip uninstall efb-telegram-master -y

# 安装修改版(注意:这个命令会从 GitHub 直接安装)
pip install git+https://github.com/jiz4oh/efb-telegram-master.git

步骤二:修改 EFB 配置文件

找到你的 EFB 配置文件。通常在目录下的 profiles/default/blueset.telegram/config.yaml (路径可能因人而异)。

用文本编辑器打开 config.yaml 文件,在 flags: 下面添加一行 topic_group:,后面跟上你的 Telegram 话题群组 ID。

# config.yaml 文件内容示例
# ... 其他配置项 ...

flags:
    # ... 其他可能存在的 flag ...
    topic_group: -100xxxxxxxxxx # <--- 把这里换成你的 Topic Group ID

# ... 其他配置项 ...

如何获取 topic_group ID? 请看下面的 Q&A 部分。

步骤三:设置 Telegram 机器人权限

  1. 在 Telegram 里创建一个新的群组,并且启用话题(Topics)功能。(在群组设置里可以找到开启选项)
  2. 把你的 EFB 机器人账号(就是你在 Telegram 里用来收发消息的那个 Bot)添加到这个新创建的话题群组中。
  3. 确保你的 EFB 机器人账号在这个群组里有“管理话题 (Manage Topics)” 的权限。你需要将机器人提升为管理员,并勾选这个权限。这一步很重要,否则机器人无法自动创建话题。

完成以上三步并重启 EFB 后,所有新的、未被你手动绑定到其他 Telegram 群组的微信消息,就会自动出现在这个话题群组里,并按聊天对象自动创建话题了。

常见问题解答 (Q & A)

  1. Q:如何获取 topic_group ID?
    A:

    1. 首先,你需要创建一个新的 Telegram 群组,并在群组设置里启用话题(Topics)功能
    2. 随便在群里的某个话题(比如默认的 “General”)里发一条消息。
    3. 右键点击这条消息(或者长按消息),选择“复制消息链接 (Copy Message Link)”或类似的选项。
    4. 你会得到一个类似 https://t.me/c/1234567890/1https://t.me/your_public_group_username/1 的链接。
      • 如果是 https://t.me/c/1234567890/1 这种形式,那么你的群组 ID 就是 -1001234567890。(注意前面的 -100 是必须加上的!)
      • 如果是公开群组链接 https://t.me/your_public_group_username/1,你需要先通过其他方法获取群组的数字 ID(比如使用一些 Telegram Bot 查询),然后同样在前面加上 -100。对于私有群组,使用第一种方法通常更简单。
    5. 将获取到的 -100xxxxxxxxxx 填入 config.yaml 文件中的 topic_group: 后面。
  2. Q:设置好了但没效果,消息还是没出现在话题群组里?
    A: 请检查以下几点:

    • 确认 config.yaml 文件里的 topic_group ID 填写正确,特别是前面的 -100 不要漏掉。
    • 确认你的 EFB 机器人账号已经加入了你设置的那个话题群组。
    • 确认你的 EFB 机器人账号在那个话题群组里有“管理话题 (Manage Topics)”的权限
  3. Q:如果我不设置 topic_group 会怎么样?
    A: 如果你不设置 topic_group 或者把它注释掉(在前面加 #),那么 EFB 的行为就和原版一样,每个微信聊天会对应创建一个独立的 Telegram 群组,或者需要你手动使用 /link 命令绑定。

  4. Q:用了这个话题功能,我还能像以前一样把某个特别重要的微信群单独绑定到一个普通的 Telegram 群吗?
    A: 可以的。话题聚合功能只对那些没有被手动 /link 绑定的聊天生效。你仍然可以使用 /link 命令将特定的微信聊天(比如你的家庭群、工作群)绑定到任意一个普通的 Telegram 群组(不需要开启话题功能)。这些被手动绑定的群聊消息不会出现在话题群组里。

  5. Q:我有好几个微信账号,跑了好几个 EFB 实例,可以让它们都把消息发到同一个 Telegram 话题群组吗?
    A: 可以。不同的 EFB 实例(即使它们使用同一个 Telegram 机器人账号或者不同的机器人账号)可以配置相同topic_group ID。它们会自动管理各自负责的微信聊天对应的话题,互不影响。

  6. Q:我以前把某个微信聊天(比如“摸鱼群”)用 /link 命令绑定到了一个普通 Telegram 群组,现在想让它也进入话题群组统一管理,怎么办?
    A: 很简单。去那个你之前绑定用的普通 Telegram 群组(不是话题群组),在里面发送命令 /unlink。这样就解除了手动绑定。之后“摸鱼群”再有新消息,就会自动出现在你的话题群组里,并创建一个名为“摸鱼群”的话题了。如果你想解绑所有在这个普通群组里绑定的聊天,可以使用 /unlink_all 命令。

  7. Q:有没有更快速的搭建方法?我不想一步步配置。
    A: 如果你熟悉 Docker,可以参考我的另一篇教程来快速部署 EFB。我已经准备好了包含这个话题功能的 docker-compose 配置文件,可以帮你简化很多配置步骤。