如何通过 Telegram API 获取公开群组的聊天历史(非 Bot 方式)

云婷同学_1674

云婷同学_1674

2026-07-05

1125人浏览

原创

如何通过 Telegram API 获取公开群组的聊天历史(非 Bot 方式)

Telegram 官方 Bot API 不支持获取群组历史消息;需使用 Telegram 的原生 MTProto API,配合用户账号登录后调用 messages.getHistory 方法实现。

telegram 官方 bot api 不支持获取群组历史消息;需使用 telegram 的原生 mtproto api,配合用户账号登录后调用 `messages.gethistory` 方法实现。

在 Telegram 生态中,存在两套完全独立的 API 体系:

  • Telegram Bot API(如 node-telegram-bot-api 所封装):面向机器人开发,权限受限,无法读取任意群组的历史消息(即使群组为公开),仅能响应自身被提及或收到的私聊/群聊事件,且仅限 bot 被添加后的新消息(且需开启 groupPrivacy 关闭模式,仍不支持回溯历史)。

  • Telegram Core API(MTProto):面向客户端开发(如 Telegram Desktop、Android 客户端),基于 MTProto 协议,允许完整访问已加入会话的消息历史——这正是 messages.getHistory 方法所属的 API 层。

    阿里云百炼
    阿里云百炼

    阿里云百炼是一款AI大模型工具,一站式大模型开发与应用构建平台。

    下载

✅ 正确实现路径如下:

  1. 注册 Telegram 用户应用
    访问 my.telegram.org → 登录你的手机号 → 进入 “API development tools” → 创建新应用,获取 api_id 和 api_hash。

  2. 使用支持 MTProto 的 Node.js 库
    推荐使用 grammY(轻量、TypeScript 原生)或更底层的 telegram-client / telegraf(注意:Telegraf 默认是 Bot API,需搭配 @mtproto/core 才能走 MTProto)。
    示例(使用 grammY + @mtproto/core):

import { Api, TelegramClient } from 'telegram';
import { StringSession } from 'telegram/sessions';

// 1. 使用字符串 session 持久化登录状态(首次运行需短信验证)
const session = new StringSession(''); // 保存后可复用,避免重复验证码
const client = new TelegramClient(session, YOUR_API_ID, 'YOUR_API_HASH', {
  connectionRetries: 5,
});

async function fetchGroupHistory() {
  await client.start({
    phoneNumber: async () => await input.text('Enter phone number: '),
    password: async () => await input.text('Enter password: '),
    phoneCode: async () => await input.text('Enter SMS code: '),
    onError: (err) => console.error(err),
  });

  // 2. 获取目标群组实体(支持 username 或 chat ID)
  const entity = await client.getInputEntity('your_public_group_username'); // 如 'texample'

  // 3. 分页拉取历史消息(max 100 条/次,需循环 offset)
  let offsetId = 0;
  const allMessages: Api.Message[] = [];
  while (true) {
    const result = await client.invoke(
      new Api.messages.GetHistory({
        peer: entity,
        limit: 100,
        offsetId,
        offsetDate: 0,
        addOffset: 0,
        maxId: 0,
        minId: 0,
      })
    );

    if (result.messages.length === 0) break;
    allMessages.push(...result.messages);
    offsetId = result.messages[result.messages.length - 1].id;
  }

  console.log(`Fetched ${allMessages.length} messages`);
  return allMessages;
}

fetchGroupHistory();

⚠️ 重要注意事项:

  • 必须使用真实 Telegram 用户账号登录(非 Bot Token),并确保该账号已加入目标群组;
  • 公开群组(public group)需确认其隐私设置未禁用“对非成员隐藏历史消息”(即 signatures 或 history_read 权限未被限制);
  • 频繁调用可能触发 Telegram 限流(建议添加 await sleep(1000) 间隔);
  • 存储和处理聊天数据需严格遵守 GDPR / 本地隐私法规,尤其涉及他人消息时务必获得明确授权;
  • node-telegram-bot-api 等 Bot SDK 完全无法替代此流程——它与 MTProto 协议无兼容性。

? 总结:若项目必须获取历史消息,请放弃 Bot 方案,转向用户级 MTProto 客户端实现,并始终将账号安全、权限合规与反爬策略纳入设计前提。

大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
golang map内存释放
golang map内存释放

本专题整合了golang map内存相关教程,阅读专题下面的文章了解更多相关内容。

2025.09.05

430

5

golang map相关教程
golang map相关教程

本专题整合了golang map相关教程,阅读专题下面的文章了解更多详细内容。

2025.11.16

323

7

golang map原理
golang map原理

本专题整合了golang map相关内容,阅读专题下面的文章了解更多详细内容。

2025.11.17

473

20

java判断map相关教程
java判断map相关教程

本专题整合了java判断map相关教程,阅读专题下面的文章了解更多详细内容。

2025.11.27

243

6

Buffalo框架数据库开发全教程
Buffalo框架数据库开发全教程

本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。

2026.09.23

60

15

Buffalo框架路由与请求处理实操指南
Buffalo框架路由与请求处理实操指南

本专题讲解Buffalo框架路由与请求处理机制,涵盖路由注册与分组、资源路由、Handler编写规范、Context上下文方法、参数绑定、中间件编写挂载、Session与Cookie读写、Flash消息及错误页面定制方法。

2026.09.23

20

15

Buffalo框架零基础入门教程
Buffalo框架零基础入门教程

本专题整理Buffalo框架入门内容,涵盖Go环境准备、buffalo CLI安装、新项目生成、目录结构说明、dev热加载启动、数据库连接配置与常见报错排查,帮助新手按约定优于配置的思路跑通第一个Buffalo框架应用。

2026.09.23

20

15

Conan创建软件包配方指南
Conan创建软件包配方指南

本专题介绍通过conanfile.py创建软件包的方法,讲解包名、版本、依赖和构建设置等基础信息,以及source、build、package、package_info等常用方法的作用及编写思路。

2026.09.22

20

12

Conan二进制包配置指南
Conan二进制包配置指南

本专题介绍Conan根据操作系统、编译器、架构和构建类型生成二进制包的方法,讲解Profile、Settings、Options及Package ID的作用,帮助管理不同平台和编译环境下的包版本。

2026.09.22

20

13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.6万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.2万人学习