You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用python-telegram-bot实现Telegram群组消息全量转发?

使用python-telegram-bot实现群组消息全量转发方案

Telegram Bot API没有提供直接获取聊天所有历史消息的接口,但可以通过分批拉取历史消息+循环转发的方式实现需求,以下是具体实现方案:

前提条件

  • 机器人在源群组和目标群组均为管理员,且拥有「读取消息历史」「发送消息」权限
  • 使用python-telegram-bot v20及以上版本(异步API版本)

核心实现代码

批量拉取并转发历史消息的函数

import asyncio
from telegram import Update
from telegram.ext import ContextTypes, CommandHandler, Application

async def forward_all_group_messages(context: ContextTypes.DEFAULT_TYPE):
    source_chat_id = "<替换为源群组ID>"
    target_chat_id = "<替换为目标群组ID>"
    offset_id = 0  # 起始偏移ID,从最新消息开始拉取
    batch_limit = 100  # 每次拉取的最大消息数(Telegram API限制最大值为100)

    while True:
        # 拉取一批历史消息
        messages = await context.bot.get_messages(
            chat_id=source_chat_id,
            offset_id=offset_id,
            limit=batch_limit
        )

        if not messages:
            break  # 无更多消息时终止循环

        # 反转消息顺序,保证按时间先后转发(API默认从新到旧返回消息)
        for msg in reversed(messages):
            try:
                await msg.forward(chat_id=target_chat_id)
                # 添加延迟避免触发API频率限制
                await asyncio.sleep(0.5)
            except Exception as e:
                print(f"转发消息ID {msg.id} 失败: {str(e)}")

        # 更新偏移ID,拉取更早的消息
        offset_id = messages[-1].id - 1

触发转发的命令处理器

async def trigger_forward(update: Update, context: ContextTypes.DEFAULT_TYPE):
    await update.message.reply_text("开始批量转发历史消息...")
    await forward_all_group_messages(context)
    await update.message.reply_text("历史消息转发完成!")

def main():
    # 替换为你的机器人Token
    bot_token = "YOUR_BOT_TOKEN"
    application = Application.builder().token(bot_token).build()

    # 添加命令触发处理器
    application.add_handler(CommandHandler("start_forward", trigger_forward))

    application.run_polling()

if __name__ == "__main__":
    main()

注意事项

  • API频率限制:Telegram对Bot的请求频率有限制,批量转发时必须添加延迟(如示例中的0.5秒),否则可能导致账号被临时封禁
  • 权限验证:务必确认机器人在两个群组的管理员权限包含所需操作权限,否则会抛出权限错误
  • 异常处理:部分消息(如已删除消息、私密内容)可能无法拉取或转发,需通过异常捕获避免程序中断
  • 大历史量处理:如果群组历史消息极多,首次转发耗时较长,建议在低峰时段执行

内容的提问来源于stack exchange,提问作者Amin Sanei

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 10:07:18