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

Telegram API:messages.getHistory能否用GET请求?PHP无依赖实现

问题解答

1. messages.getHistory能否用GET请求调用?

不能。原因如下:

  • 你之前调用的sendMessage属于Telegram HTTP Bot API,这类接口基于REST设计,支持GET/POST请求,地址格式为https://api.telegram.org/bot{TOKEN}/{METHOD}。
  • 而messages.getHistory是Telegram MTProto API的方法,这是Telegram的底层客户端协议,并非HTTP Bot API的一部分,无法通过普通HTTP GET请求直接调用,因此会返回404。

如果你只是需要获取聊天记录,HTTP Bot API提供了对应的getChatHistory方法,这个可以用GET或POST请求调用。

2. 最简PHP实现方案

方案一:使用HTTP Bot API的getChatHistory(推荐,无依赖)

直接用原生PHP curl发起请求,示例代码:

<?php
$token = '你的Bot Token';
$chatId = '目标聊天ID';
$limit = 10; // 要获取的消息数量

// 构造请求URL
$url = "https://api.telegram.org/bot{$token}/getChatHistory?chat_id={$chatId}&limit={$limit}";

// 发起GET请求
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);

// 处理响应
$result = json_decode($response, true);
if ($result['ok']) {
    print_r($result['result']);
} else {
    echo "请求失败:" . $result['description'];
}
?>

方案二:调用MTProto API的messages.getHistory(无依赖,但复杂度高)

由于MTProto需要加密通信,无依赖的实现需要处理AuthKey生成、消息加密等步骤,以下是极简的基础框架(仅作演示,实际使用需完善加密逻辑):

<?php
// 注意:此示例仅展示MTProto请求的基本结构,完整实现需要处理MTProto的加密、AuthKey等
$apiId = '你的API ID'; // 从my.telegram.org获取
$apiHash = '你的API Hash';
$chatId = 123456; // 目标聊天ID
$limit = 10;

// MTProto的基础请求地址
$url = 'https://api.telegram.org/';

// 构造messages.getHistory的请求结构(需加密)
$request = [
    '_' => 'messages.getHistory',
    'peer' => ['_' => 'inputPeerChat', 'chat_id' => $chatId],
    'limit' => $limit
];

// 此处省略MTProto的序列化、加密、AuthKey处理等关键步骤
// 最终需将加密后的数据包通过POST发送
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $encryptedRequest); // 替换为加密后的内容
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);

// 响应需解密和反序列化后才能处理
?>

注意:MTProto API的实现复杂度远高于HTTP Bot API,若仅为实现Bot的聊天记录获取需求,强烈推荐使用HTTP Bot API的getChatHistory方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 18:03:32