命令行 Telegram 能自动转发吗?

话题来源: Telegram CLI - 命令行终端版完整教程

  • 使用 -W(wait)参数可以让 CLI 持续保持会话,否则脚本会提前退出。
  • Telegram 对同一条消息的重复转发会返回 MESSAGE_ID_INVALID,加入去重逻辑可以避免无谓的 API 调用。
  • 在 Bot API 场景下,forward_message 只能在机器人已加入的群组内使用;如果目标是私聊,需要先让机器人发送一次“Hello”。
  • 实战:每日新闻频道到企业公告群

    公司内部有一条专门的公告群,需要把公开新闻频道的头条实时推送进去。实现思路是让一台 VPS 运行 telegram-cli,每天凌晨 6 点触发一次抓取最近 5 条消息的脚本,再统一转发。

    #!/usr/bin/env bash
    SOURCE_CHAT="-1001122334455"
    TARGET_CHAT="-1005566778899"
    LIMIT=5
    
    # 拉取最近的 LIMIT 条消息
    msgs=$(telegram-cli -W -e "view_history $SOURCE_CHAT $LIMIT" | grep '^#' | cut -d' ' -f1)
    
    for msg_id in $msgs; do
        telegram-cli -W -e "fwd $TARGET_CHAT $msg_id"
    done
    

    把这段脚本保存为 news_forward.sh,再用 crontab -e 加入 0 6 * * * 的定时任务。整个链路不需要任何图形界面,CPU 与内存占用几乎可以忽略不计。

    如果对可靠性有更高要求,建议在脚本里加入日志写入和错误重试;或者直接换成 Telethon 的异步客户端,利用 await client.forward_messages 把网络波动的风险降到最低。

    • 消息 ID 在不同会话间不共享,转发前务必确认来源和目标的 ID 正确。
    • 使用 -W(wait)参数可以让 CLI 持续保持会话,否则脚本会提前退出。
    • Telegram 对同一条消息的重复转发会返回 MESSAGE_ID_INVALID,加入去重逻辑可以避免无谓的 API 调用。
    • 在 Bot API 场景下,forward_message 只能在机器人已加入的群组内使用;如果目标是私聊,需要先让机器人发送一次“Hello”。

    实战:每日新闻频道到企业公告群

    公司内部有一条专门的公告群,需要把公开新闻频道的头条实时推送进去。实现思路是让一台 VPS 运行 telegram-cli,每天凌晨 6 点触发一次抓取最近 5 条消息的脚本,再统一转发。

    #!/usr/bin/env bash
    SOURCE_CHAT="-1001122334455"
    TARGET_CHAT="-1005566778899"
    LIMIT=5
    
    # 拉取最近的 LIMIT 条消息
    msgs=$(telegram-cli -W -e "view_history $SOURCE_CHAT $LIMIT" | grep '^#' | cut -d' ' -f1)
    
    for msg_id in $msgs; do
        telegram-cli -W -e "fwd $TARGET_CHAT $msg_id"
    done
    

    把这段脚本保存为 news_forward.sh,再用 crontab -e 加入 0 6 * * * 的定时任务。整个链路不需要任何图形界面,CPU 与内存占用几乎可以忽略不计。

    如果对可靠性有更高要求,建议在脚本里加入日志写入和错误重试;或者直接换成 Telethon 的异步客户端,利用 await client.forward_messages 把网络波动的风险降到最低。

    • 消息 ID 在不同会话间不共享,转发前务必确认来源和目标的 ID 正确。
    • 使用 -W(wait)参数可以让 CLI 持续保持会话,否则脚本会提前退出。
    • Telegram 对同一条消息的重复转发会返回 MESSAGE_ID_INVALID,加入去重逻辑可以避免无谓的 API 调用。
    • 在 Bot API 场景下,forward_message 只能在机器人已加入的群组内使用;如果目标是私聊,需要先让机器人发送一次“Hello”。

    实战:每日新闻频道到企业公告群

    公司内部有一条专门的公告群,需要把公开新闻频道的头条实时推送进去。实现思路是让一台 VPS 运行 telegram-cli,每天凌晨 6 点触发一次抓取最近 5 条消息的脚本,再统一转发。

    #!/usr/bin/env bash
    SOURCE_CHAT="-1001122334455"
    TARGET_CHAT="-1005566778899"
    LIMIT=5
    
    # 拉取最近的 LIMIT 条消息
    msgs=$(telegram-cli -W -e "view_history $SOURCE_CHAT $LIMIT" | grep '^#' | cut -d' ' -f1)
    
    for msg_id in $msgs; do
        telegram-cli -W -e "fwd $TARGET_CHAT $msg_id"
    done
    

    把这段脚本保存为 news_forward.sh,再用 crontab -e 加入 0 6 * * * 的定时任务。整个链路不需要任何图形界面,CPU 与内存占用几乎可以忽略不计。

    如果对可靠性有更高要求,建议在脚本里加入日志写入和错误重试;或者直接换成 Telethon 的异步客户端,利用 await client.forward_messages 把网络波动的风险降到最低。

  • 借助官方 Bot API:使用 curlwgetgetUpdates 拉取的消息转发到目标 chat_id。
  • 利用 Python 库 Telethonpython-telegram-bot,在异步回调里调用 forward_message
  • 在 Lua 脚本中挂载 on_msg_receive 回调,检测关键词后执行 send_msg + fwd
  • 代码示例:bash + telegram-cli

    #!/usr/bin/env bash
    # 监听来源 chat(ID 为 -1001234567890)并转发到目标 chat(ID 为 -1009876543210)telegram-cli -W -e "dialog_list" | while read line; do
        if [[$line =~ ^msg from (.+): ]]; then
            src_msg_id=${BASH_REMATCH[1]}
            telegram-cli -W -e "fwd -1009876543210 $src_msg_id"
        fi
    done
    

    常见陷阱与调试技巧

    • 消息 ID 在不同会话间不共享,转发前务必确认来源和目标的 ID 正确。
    • 使用 -W(wait)参数可以让 CLI 持续保持会话,否则脚本会提前退出。
    • Telegram 对同一条消息的重复转发会返回 MESSAGE_ID_INVALID,加入去重逻辑可以避免无谓的 API 调用。
    • 在 Bot API 场景下,forward_message 只能在机器人已加入的群组内使用;如果目标是私聊,需要先让机器人发送一次“Hello”。

    实战:每日新闻频道到企业公告群

    公司内部有一条专门的公告群,需要把公开新闻频道的头条实时推送进去。实现思路是让一台 VPS 运行 telegram-cli,每天凌晨 6 点触发一次抓取最近 5 条消息的脚本,再统一转发。

    #!/usr/bin/env bash
    SOURCE_CHAT="-1001122334455"
    TARGET_CHAT="-1005566778899"
    LIMIT=5
    
    # 拉取最近的 LIMIT 条消息
    msgs=$(telegram-cli -W -e "view_history $SOURCE_CHAT $LIMIT" | grep '^#' | cut -d' ' -f1)
    
    for msg_id in $msgs; do
        telegram-cli -W -e "fwd $TARGET_CHAT $msg_id"
    done
    

    把这段脚本保存为 news_forward.sh,再用 crontab -e 加入 0 6 * * * 的定时任务。整个链路不需要任何图形界面,CPU 与内存占用几乎可以忽略不计。

    如果对可靠性有更高要求,建议在脚本里加入日志写入和错误重试;或者直接换成 Telethon 的异步客户端,利用 await client.forward_messages 把网络波动的风险降到最低。

  • 直接调用 telegram-clifwd 命令,在 Bash 脚本里配合 while read 循环监听新消息。
  • 借助官方 Bot API:使用 curlwgetgetUpdates 拉取的消息转发到目标 chat_id。
  • 利用 Python 库 Telethonpython-telegram-bot,在异步回调里调用 forward_message
  • 在 Lua 脚本中挂载 on_msg_receive 回调,检测关键词后执行 send_msg + fwd
  • 代码示例:bash + telegram-cli

    #!/usr/bin/env bash
    # 监听来源 chat(ID 为 -1001234567890)并转发到目标 chat(ID 为 -1009876543210)telegram-cli -W -e "dialog_list" | while read line; do
        if [[$line =~ ^msg from (.+): ]]; then
            src_msg_id=${BASH_REMATCH[1]}
            telegram-cli -W -e "fwd -1009876543210 $src_msg_id"
        fi
    done
    

    常见陷阱与调试技巧

    • 消息 ID 在不同会话间不共享,转发前务必确认来源和目标的 ID 正确。
    • 使用 -W(wait)参数可以让 CLI 持续保持会话,否则脚本会提前退出。
    • Telegram 对同一条消息的重复转发会返回 MESSAGE_ID_INVALID,加入去重逻辑可以避免无谓的 API 调用。
    • 在 Bot API 场景下,forward_message 只能在机器人已加入的群组内使用;如果目标是私聊,需要先让机器人发送一次“Hello”。

    实战:每日新闻频道到企业公告群

    公司内部有一条专门的公告群,需要把公开新闻频道的头条实时推送进去。实现思路是让一台 VPS 运行 telegram-cli,每天凌晨 6 点触发一次抓取最近 5 条消息的脚本,再统一转发。

    #!/usr/bin/env bash
    SOURCE_CHAT="-1001122334455"
    TARGET_CHAT="-1005566778899"
    LIMIT=5
    
    # 拉取最近的 LIMIT 条消息
    msgs=$(telegram-cli -W -e "view_history $SOURCE_CHAT $LIMIT" | grep '^#' | cut -d' ' -f1)
    
    for msg_id in $msgs; do
        telegram-cli -W -e "fwd $TARGET_CHAT $msg_id"
    done
    

    把这段脚本保存为 news_forward.sh,再用 crontab -e 加入 0 6 * * * 的定时任务。整个链路不需要任何图形界面,CPU 与内存占用几乎可以忽略不计。

    如果对可靠性有更高要求,建议在脚本里加入日志写入和错误重试;或者直接换成 Telethon 的异步客户端,利用 await client.forward_messages 把网络波动的风险降到最低。

    • 直接调用 telegram-clifwd 命令,在 Bash 脚本里配合 while read 循环监听新消息。
    • 借助官方 Bot API:使用 curlwgetgetUpdates 拉取的消息转发到目标 chat_id。
    • 利用 Python 库 Telethonpython-telegram-bot,在异步回调里调用 forward_message
    • 在 Lua 脚本中挂载 on_msg_receive 回调,检测关键词后执行 send_msg + fwd

    代码示例:bash + telegram-cli

    #!/usr/bin/env bash
    # 监听来源 chat(ID 为 -1001234567890)并转发到目标 chat(ID 为 -1009876543210)telegram-cli -W -e "dialog_list" | while read line; do
        if [[$line =~ ^msg from (.+): ]]; then
            src_msg_id=${BASH_REMATCH[1]}
            telegram-cli -W -e "fwd -1009876543210 $src_msg_id"
        fi
    done
    

    常见陷阱与调试技巧

    • 消息 ID 在不同会话间不共享,转发前务必确认来源和目标的 ID 正确。
    • 使用 -W(wait)参数可以让 CLI 持续保持会话,否则脚本会提前退出。
    • Telegram 对同一条消息的重复转发会返回 MESSAGE_ID_INVALID,加入去重逻辑可以避免无谓的 API 调用。
    • 在 Bot API 场景下,forward_message 只能在机器人已加入的群组内使用;如果目标是私聊,需要先让机器人发送一次“Hello”。

    实战:每日新闻频道到企业公告群

    公司内部有一条专门的公告群,需要把公开新闻频道的头条实时推送进去。实现思路是让一台 VPS 运行 telegram-cli,每天凌晨 6 点触发一次抓取最近 5 条消息的脚本,再统一转发。

    #!/usr/bin/env bash
    SOURCE_CHAT="-1001122334455"
    TARGET_CHAT="-1005566778899"
    LIMIT=5
    
    # 拉取最近的 LIMIT 条消息
    msgs=$(telegram-cli -W -e "view_history $SOURCE_CHAT $LIMIT" | grep '^#' | cut -d' ' -f1)
    
    for msg_id in $msgs; do
        telegram-cli -W -e "fwd $TARGET_CHAT $msg_id"
    done
    

    把这段脚本保存为 news_forward.sh,再用 crontab -e 加入 0 6 * * * 的定时任务。整个链路不需要任何图形界面,CPU 与内存占用几乎可以忽略不计。

    如果对可靠性有更高要求,建议在脚本里加入日志写入和错误重试;或者直接换成 Telethon 的异步客户端,利用 await client.forward_messages 把网络波动的风险降到最低。

    • 直接调用 telegram-clifwd 命令,在 Bash 脚本里配合 while read 循环监听新消息。
    • 借助官方 Bot API:使用 curlwgetgetUpdates 拉取的消息转发到目标 chat_id。
    • 利用 Python 库 Telethonpython-telegram-bot,在异步回调里调用 forward_message
    • 在 Lua 脚本中挂载 on_msg_receive 回调,检测关键词后执行 send_msg + fwd

    代码示例:bash + telegram-cli

    #!/usr/bin/env bash
    # 监听来源 chat(ID 为 -1001234567890)并转发到目标 chat(ID 为 -1009876543210)telegram-cli -W -e "dialog_list" | while read line; do
        if [[$line =~ ^msg from (.+): ]]; then
            src_msg_id=${BASH_REMATCH[1]}
            telegram-cli -W -e "fwd -1009876543210 $src_msg_id"
        fi
    done
    

    常见陷阱与调试技巧

    • 消息 ID 在不同会话间不共享,转发前务必确认来源和目标的 ID 正确。
    • 使用 -W(wait)参数可以让 CLI 持续保持会话,否则脚本会提前退出。
    • Telegram 对同一条消息的重复转发会返回 MESSAGE_ID_INVALID,加入去重逻辑可以避免无谓的 API 调用。
    • 在 Bot API 场景下,forward_message 只能在机器人已加入的群组内使用;如果目标是私聊,需要先让机器人发送一次“Hello”。

    实战:每日新闻频道到企业公告群

    公司内部有一条专门的公告群,需要把公开新闻频道的头条实时推送进去。实现思路是让一台 VPS 运行 telegram-cli,每天凌晨 6 点触发一次抓取最近 5 条消息的脚本,再统一转发。

    #!/usr/bin/env bash
    SOURCE_CHAT="-1001122334455"
    TARGET_CHAT="-1005566778899"
    LIMIT=5
    
    # 拉取最近的 LIMIT 条消息
    msgs=$(telegram-cli -W -e "view_history $SOURCE_CHAT $LIMIT" | grep '^#' | cut -d' ' -f1)
    
    for msg_id in $msgs; do
        telegram-cli -W -e "fwd $TARGET_CHAT $msg_id"
    done
    

    把这段脚本保存为 news_forward.sh,再用 crontab -e 加入 0 6 * * * 的定时任务。整个链路不需要任何图形界面,CPU 与内存占用几乎可以忽略不计。

    如果对可靠性有更高要求,建议在脚本里加入日志写入和错误重试;或者直接换成 Telethon 的异步客户端,利用 await client.forward_messages 把网络波动的风险降到最低。

    在需要把某个频道或群组的消息毫不间断地搬运到别的聊天时,很多人会本能地去想图形化的客户端能否手动点几下完成。实际上,命令行下的 Telegram 完全可以做到“看得见、摸得着”的自动转发,只是实现细节稍有区别。

    实现路径概览

    • 直接调用 telegram-clifwd 命令,在 Bash 脚本里配合 while read 循环监听新消息。
    • 借助官方 Bot API:使用 curlwgetgetUpdates 拉取的消息转发到目标 chat_id。
    • 利用 Python 库 Telethonpython-telegram-bot,在异步回调里调用 forward_message
    • 在 Lua 脚本中挂载 on_msg_receive 回调,检测关键词后执行 send_msg + fwd

    代码示例:bash + telegram-cli

    #!/usr/bin/env bash
    # 监听来源 chat(ID 为 -1001234567890)并转发到目标 chat(ID 为 -1009876543210)telegram-cli -W -e "dialog_list" | while read line; do
        if [[$line =~ ^msg from (.+): ]]; then
            src_msg_id=${BASH_REMATCH[1]}
            telegram-cli -W -e "fwd -1009876543210 $src_msg_id"
        fi
    done
    

    常见陷阱与调试技巧

    • 消息 ID 在不同会话间不共享,转发前务必确认来源和目标的 ID 正确。
    • 使用 -W(wait)参数可以让 CLI 持续保持会话,否则脚本会提前退出。
    • Telegram 对同一条消息的重复转发会返回 MESSAGE_ID_INVALID,加入去重逻辑可以避免无谓的 API 调用。
    • 在 Bot API 场景下,forward_message 只能在机器人已加入的群组内使用;如果目标是私聊,需要先让机器人发送一次“Hello”。

    实战:每日新闻频道到企业公告群

    公司内部有一条专门的公告群,需要把公开新闻频道的头条实时推送进去。实现思路是让一台 VPS 运行 telegram-cli,每天凌晨 6 点触发一次抓取最近 5 条消息的脚本,再统一转发。

    #!/usr/bin/env bash
    SOURCE_CHAT="-1001122334455"
    TARGET_CHAT="-1005566778899"
    LIMIT=5
    
    # 拉取最近的 LIMIT 条消息
    msgs=$(telegram-cli -W -e "view_history $SOURCE_CHAT $LIMIT" | grep '^#' | cut -d' ' -f1)
    
    for msg_id in $msgs; do
        telegram-cli -W -e "fwd $TARGET_CHAT $msg_id"
    done
    

    把这段脚本保存为 news_forward.sh,再用 crontab -e 加入 0 6 * * * 的定时任务。整个链路不需要任何图形界面,CPU 与内存占用几乎可以忽略不计。

    如果对可靠性有更高要求,建议在脚本里加入日志写入和错误重试;或者直接换成 Telethon 的异步客户端,利用 await client.forward_messages 把网络波动的风险降到最低。

    各类账号ID
    评论(没有评论)