SkillAgentSearch skills...

TelegramForwarder

一个功能强大的 Telegram 消息转发器,支持多源转发、关键词过滤、正则替换、RSS订阅,AI处理,多平台推送等功能。

Install / Use

/learn @Heavrnl/TelegramForwarder
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

img

<h3><div align="center">Telegram 转发器 | Telegram Forwarder</div>
<div align="center">

Docker License: GPL-3.0

</div>

📖 简介

Telegram 转发器是一个强大的消息转发工具,只需要你的账号加入频道/群聊即可以将指定聊天中的消息转发到其他聊天,不需要bot进入对应的频道/群组即可监听。可用于信息流整合过滤,消息提醒,内容收藏等多种场景, 不受转发/复制禁止的限制。此外,利用 Apprise 强大的推送功能,你可以轻松将消息分发至聊天软件、邮件、短信、Webhooks、APIs 等各种平台。

✨ 特性

  • 🔄 多源转发:支持从多个来源转发到指定目标
  • 🔍 关键词过滤:支持白名单和黑名单模式
  • 📝 正则匹配:支持正则表达式匹配目标文本
  • 📋 内容修改:支持多种方式修改消息内容
  • 🤖 AI 处理:支持使用各大厂商的AI接口
  • 📹 媒体过滤:支持过滤指定类型的媒体文件
  • 📰 RSS订阅:支持RSS订阅
  • 📢 多平台推送:支持通过Apprise推送到多个平台

📋 目录

🚀 快速开始

1️⃣ 准备工作

  1. 获取 Telegram API 凭据:

    • 访问 https://my.telegram.org/apps
    • 创建一个应用获取 API_IDAPI_HASH
  2. 获取机器人 Token:

    • 与 @BotFather 对话创建机器人
    • 获取机器人的 BOT_TOKEN
  3. 获取用户 ID:

    • 与 @userinfobot 对话获取你的 USER_ID

2️⃣ 配置环境

新建文件夹

mkdir ./TelegramForwarder && cd ./TelegramForwarder

下载仓库的 docker-compose.yml 到目录下

接着下载或复制仓库的 .env.example 文件,填入必填项,然后重命名为.env

wget https://raw.githubusercontent.com/Heavrnl/TelegramForwarder/refs/heads/main/.env.example -O .env

3️⃣ 启动服务

首次运行(需要验证):

docker-compose run -it telegram-forwarder

CTRL+C 退出容器

修改 docker-compose.yml 文件,修改 stdin_open: falsetty: false

后台运行:

docker-compose up -d

4️⃣ 更新

注意:docker-compose运行不需要拉取仓库源码,除非你打算自己build,否则只需要在项目目录执行以下命令即可更新。

docker-compose down
docker-compose pull
docker-compose up -d

📚 使用指南

🌟 基础使用示例

假设订阅了频道 "TG 新闻" (https://t.me/tgnews) 和 "TG 阅读" (https://t.me/tgread) ,但想过滤掉一些不感兴趣的内容:

  1. 创建一个 Telegram 群组/频道(例如:"My TG Filter")

  2. 将机器人添加到群组/频道,并设置为管理员

  3. 新创建的群组/频道中发送命令:

    /bind https://t.me/tgnews 或者 /bind "TG 新闻"
    /bind https://t.me/tgread 或者 /bind "TG 阅读"
    
  4. 设置消息处理模式:

    /settings
    

    选择要操作的对应频道的规则,根据喜好设置

    详细设置说明请查看 🛠️ 功能详解

  5. 添加屏蔽关键词:

    /add 广告 推广 '这是 广告'
    
  6. 如果发现转发的消息格式有问题(比如有多余的符号),可以使用正则表达式处理:

    /replace \*\*
    

    这会删除消息中的所有 ** 符号

注意:以上增删改查操作,只对第一个绑定的规则生效,示例里是TG 新闻。若想对TG 阅读进行操作,需要先使用/settings(/s),选择TG 阅读,再点击"应用当前规则",就可以对此进行增删改查操作了。也可以使用/add_all(/aa)/replace_all(/ra)等指令同时对两条规则生效

这样,你就能收到经过过滤和格式化的频道消息了

🔧 特殊使用场景示例

1. TG 频道的部分消息由于文字嵌入链接,点击会让你确认再跳转,例如 NodeSeek 的官方通知频道

频道的原始消息格式

[**贴子标题**](https://www.nodeseek.com/post-xxxx-1)

可以对通知频道的转发规则 依次 使用以下指令:

/replace \*\*
/replace \[(?:\[([^\]]+)\])?([^\]]+)\]\(([^)]+)\) [\1]\2\n(\3)
/replace \[\]\s*

最终所有转发的消息都会变成以下格式,这样直接点击链接就无需确认跳转:

贴子标题
(https://www.nodeseek.com/post-xxxx-1)

2. 监听用户消息格式不美观,可优化消息显示方式

依次 使用以下指令:

/r ^(?=.) <blockquote>
/r (?<=.)(?=$) </blockquote>

然后设置消息格式为 HTML,这样监听用户消息时,消息格式就会美观很多:

示例图片


3. 同步规则操作

设置菜单 中开启 "同步规则",并选择 目标规则,当前规则的所有操作将同步到选定的规则。

适用于以下场景:

  • 不想在当前窗口处理规则
  • 需要同时操作多个规则

如果当前规则仅用于同步而不需实际生效,可将 "是否启用规则" 设置为 "否"


4. 如何转发到收藏夹 (Saved Messages)

不推荐,操作比较繁琐

  1. 在你的 bot 管理的任意群组或频道中发送以下命令:

    /bind https://t.me/tgnews 你的用户名(即展示的名称)
    
  2. 随意新建一个规则,并进行以下设置:

    • 开启同步功能,同步到 转发收藏夹的规则
    • 转发模式 选择 "用户模式"
    • 禁用规则(将规则”是否启用规则“设置为关闭)

这样,你就可以在其他规则中管理收藏夹的规则,所有操作都会同步到 转发收藏夹 规则中。

🛠️ 功能详解

⚡ 过滤流程

首先要清楚消息过滤顺序,括号里对应设置里的选项:

img

⚙️ 设置说明

| 主设置界面 | AI设置界面 | 媒体设置界面 | |---------|------|------| | img | img | img |

主设置说明

以下对设置选项进行说明 | 设置选项 | 说明 | |---------|------| | 应用当前规则 | 选择后,关键字指令(/add,/remove_keyword,/list_keyword等)和替换指令(/replace,/list_replace等)的增删改查导入导出将作用于当前规则 | | 是否启用规则 | 选择后,当前规则将被启用,否则将被禁用 | | 当前关键字添加模式 | 点击可切换黑/白名单模式,由于黑白名单是分开处理的,需要手动切换,注意,此时关键字的增删改查都和这里的模式有关,如果要使用指令对当前规则的白名单进行增删改查操作,请确保这里的模式是白名单 | | 过滤关键字时是否附带发送者名称和ID | 启用后,过滤关键字时会包含发送者名称和ID信息(不会添加到实际消息中),可用于针对特定用户进行过滤 | | 处理模式 | 可切换编辑/转发模式。编辑模式下会直接修改原消息;转发模式下会将处理后的消息转发到目标聊天。注意:编辑模式仅适用于你是管理员的且原消息是频道消息或群组中自己发送的消息 | | 过滤模式 | 可切换仅黑名单/仅白名单/先黑后白/先白后黑模式。由于黑白名单分开存储,可根据需要选择不同的过滤方式 | | 转发模式 | 可切换用户/机器人模式。用户模式下使用用户账号转发消息;机器人模式下使用机器人账号发送消息 | | 替换模式 | 启用后将根据已设置的替换规则对消息进行处理 | | 消息格式 | 可切换Markdown/HTML格式,在最终发送阶段生效,一般使用默认的Markdown即可 | | 预览模式 | 可切换开启/关闭/跟随原消息。开启后会预览消息中的第一个链接,默认跟随原消息的预览状态 | | 原始发送者/原始链接/发送时间 | 启用后会在消息发送时添加这些信息,默认关闭,可在"其他设置"菜单中设置自定义模板 | | 延时处理 | 启用后会按设定的延迟时间重新获取原消息内容,再开始处理流程,适用于频繁修改消息的频道/群组,可在 config/delay_time.txt 中添加自定义延迟时间 | | 删除原始消息 | 启用后会删除原消息,使用前请确认是否有删除权限 | | 评论区直达按钮 | 启用后在转发后的消息下发添加评论区直达按钮,前提是原消息有评论区 | | 同步到其他规则 | 启用后会同步当前规则的操作到其他规则,除了"是否启用规则"和"开启同步"其他设置都会同步 |

媒体设置说明

| 设置选项 | 说明 | |---------|------| | 媒体类型过滤 | 启用后会过滤掉非选中的媒体类型 | | 选择的媒体类型 | 选择要屏蔽的媒体类型,注意:Telegram对媒体文件的分类是固定的,主要就是这几种,图片 (photo),文档 (document),视频 (video),音频 (audio),语音 (voice),其中所有不属于图片、视频、音频、语音的文件都会被归类为"文档"类型。比如病毒文件(.exe)、压缩包(.zip)、文本文件(.txt)等,在 Telegram 中都属于"文档"类型。 | | 媒体大小过滤 | 启用后会过滤掉超过设置大小的媒体 | | 媒体大小限制 | 设置媒体大小限制,单位:MB,可在 config/media_size.txt 中添加自定义大小 | | 媒体大小超限时发送提醒 | 启用后媒体超限会发送提醒消息 | | 媒体扩展名过滤 | 启用后会过滤掉选中的媒体扩展名 | | 媒体扩展名过滤模式 | 切换黑/白名单模式 | | 选择的媒体扩展名 | 选择要过滤的的媒体扩展名,可在 config/media_extensions.txt 中添加自定义扩展名 | | 放行文本 | 开启后过滤媒体时不会屏蔽整条消息,而是单独转发文本 |

其他设置说明

其他设置菜单中整合了常用的几个指令,使其可以在界面直接交互,包括:

  • 复制规则
  • 复制关键字
  • 复制替换规则
  • 清除关键字
  • 清除替换规则
  • 删除规则

其中清除关键字、清除替换规则、删除规则可以对其他规则生效

同时你可以在这里设置自定义模板,包括:用户信息模板、时间模板、原始链接模板 | 设置选项 | 说明 | |---------|------| |反转黑名单| 启用后,将把黑名单当成白名单处理,若使用先白后黑模式,黑名单会作为第二重白名单处理| |反转白名单| 启用后,将把白名单当成黑名单处理,若使用先白后黑模式,白名单会作为第二重黑名单处理|

结合“先 X 后 X”模式,可实现双层黑/白名单机制。例如,反转黑名单后,“先白后黑”中的黑名单将变为第二层级的白名单,适用于监听特定用户并筛选其特殊关键词等多种场景。

🤖 AI功能

项目内置了各大厂商的AI接口,可以帮你:

  • 自动翻译外语内容
  • 定时总结群组消息
  • 智能过滤广告信息
  • 自动为内容打标签 ....

配置

  1. .env 文件中配置你的 AI 接口:
# OpenAI API
OPENAI_API_KEY=your_key
OPENAI_API_BASE=  # 可选,默认官方接口

# Claude API
CLAUDE_API_KEY=your_key

# 其他支持的接口...

自定义模型

没找到想要的模型名字?在 config/ai_models.json 中添加即可。

AI 处理

AI处理提示词中可以使用以下格式:

  • {source_message_context:数字} - 获取源聊天窗口最新的指定数量消息
  • {target_message_context:数字} - 获取目标聊天窗口最新的指定数量消息
  • {source_message_time:数字} - 获取源聊天窗口最近指定分钟数的消息
  • {target_message_time:数字} - 获取目标聊天窗口最近指定分钟数的消息

提示词示例:

前置:开启AI处理后再次执行关键词过滤,把“#不转发”添加到过滤关键字中

这是一个资讯整合频道,从多个源获取消息,现在你要判断新资讯是否和历史资讯内容重复了,若重复,则只需要回复“#不转发”,否则请返回新资讯的原文并保持格式。
记住,你只能返回“#不转发”或者新资讯的原文。
以下是历史资讯:{target_message_context:10}
以下是新资讯:

定时总结

开启定时总结后,机器人会在指定时间(默认每天早上 7 点)自动总结过去 24 小时的消息。

  • 可在 config/summary_time.txt 中添加多个总结时间点
  • .env 中设置默认时区
  • 自定义总结的提示词

注意:总结功能会消耗较多的 API 额度,请根据需要开启。

📢 推送功能

除了telegram内部消息转发外,项目还集成了Apprise,利用其强大的推送功能,你可以轻松将消息分发至聊天软件、邮件、短信、Webhooks、APIs 等各种平台。

| 推送设置主界面 | 推送设置子界面 | |---------|------| | img | img |

设置说明

| 设置选项 | 说明 | |---------|------| | 只转发到推送配置 | 开启后跳过转发过滤器,直接跳到推送过滤器 | | 媒体发送方式 | 支持两种模式:<br>- 单个:每个媒体文件单独推送一条消息<br>- 全部:将所有媒体文件合并到一条消息中推送<br>具体使用哪种模式取决于目标平台是否支持一次推送多个附件 |

如何添加推送配置?

完整的推送平台列表和配置格式请参考 Apprise Wiki

示例:使用 ntfy.sh 推送

  • 假设你想推送到 ntfy.sh 上的一个名为 my_topic 的主题。
  • 根据 Apprise Wiki,其格式为 ntfy://ntfy.sh/你的主题名
  • 那么,你需要添加的配置 URL 就是:
    ntfy://ntfy.sh/my_topic
    

📰 RSS订阅

项目集成了将Telegram消息转换为RSS Feed的功能,可以轻松地将Telegram频道/群组内容转为标准RSS格式,方便通过RSS阅读器跟踪。

启用RSS功能

  1. .env 文件中配置RSS相关参数:
    # RSS配置
    # 是否启用RSS功能 (true/false)
    RSS_ENABLED=true
    # RSS基础访问URL,留空则使用默认的访问URL(例如:https://rss.example.com)
    RSS_BASE_URL=
    # RSS媒体文件基础URL,留空则使用默认的访问URL(例如:https://media.example.com)
    RSS_MEDIA_BASE_URL=
    
  2. docker-compose.yml取消注释
     # 如果需要使用 RSS 功能,请取消以下注释
      ports:
        - 9804:8000
    
  3. 重启服务以启用RSS功能:
    docker-compose restart
    

注意:旧版本用户需要用新的docker-compose.yml文件重新部署:docker-compose.yml

访问RSS仪表盘

浏览器访问 http://你的服务器地址:9804/

Nginx配置

 location / {
        proxy_pass http://127.0.0.1:9804;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Host $host;
    }

RSS配置管理

相关界面

| 登录界面 | Dashboard界面 | 新建/编辑配置界面 | |---------|------|------| | img | img | img |

新建/编辑配置界面说明

| 设置选项 | 说明 | |---------|------| | 规则ID | 选择现有的一个转发规则,用于生成RSS订阅 | | 复制已有配置 | 选择现有的一个RSS配置,复制它的配置到当前表单| |订阅源标题| 设置订阅源标题 | |自动填充| 点击后自动根据规则的源聊天窗口名字生成订阅源标题 | |订阅源描述| 设置订阅源描述 | |语言| 占位,暂无特殊功能 | |最大条目数| 设置RSS订阅源的最大条目数,默认50,对于媒体比较多的聊天源,请根据硬盘实际硬盘大小设置 | |使用 AI 提取标题和内容| 启用后,将使用AI服务自动分析消息,提取标题和内容和整理格式,AI模型请在bot中设置,不受bot中“是否开启

Related Skills

View on GitHub
GitHub Stars1.1k
CategoryDevelopment
Updated6h ago
Forks197

Languages

Python

Security Score

100/100

Audited on Apr 3, 2026

No findings