-W(wait)参数可以让 CLI 持续保持会话,否则脚本会提前退出。MESSAGE_ID_INVALID,加入去重逻辑可以避免无谓的 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 把网络波动的风险降到最低。
curl 或 wget 把 getUpdates 拉取的消息转发到目标 chat_id。
Telethon 或 python-telegram-bot,在异步回调里调用 forward_message。
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-cli 的 fwd 命令,在 Bash 脚本里配合 while read 循环监听新消息。
curl 或 wget 把 getUpdates 拉取的消息转发到目标 chat_id。
Telethon 或 python-telegram-bot,在异步回调里调用 forward_message。
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-cli的fwd命令,在 Bash 脚本里配合while read循环监听新消息。 - 借助官方 Bot API:使用
curl或wget把getUpdates拉取的消息转发到目标 chat_id。 - 利用 Python 库
Telethon或python-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-cli的fwd命令,在 Bash 脚本里配合while read循环监听新消息。 - 借助官方 Bot API:使用
curl或wget把getUpdates拉取的消息转发到目标 chat_id。 - 利用 Python 库
Telethon或python-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-cli的fwd命令,在 Bash 脚本里配合while read循环监听新消息。 - 借助官方 Bot API:使用
curl或wget把getUpdates拉取的消息转发到目标 chat_id。 - 利用 Python 库
Telethon或python-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 把网络波动的风险降到最低。
