Telegram Bot API 中如何正确获取转发消息的原始发送者 ID
发布时间 - 2026-01-27 00:00:00 点击率:次在 telegram bot 开发中,`forward_from` 字段嵌套在 `message` 对象内,直接访问 `$update['forward_from']['id']` 会因路径错误返回 null;正确路径是 `$update['message']['forward_from']['id']`。
Telegram 的 Webhook 接收的更新(Update)对象是一个层级结构的 JSON 数据,其根节点并不直接包含 forward_from,而是通过 message(或 channel_post、edited_

✅ 正确用法示例:
$update = json_decode(file_get_contents('php://input'), TRUE);
// 安全检查:确保是消息更新,且存在 forward_from
if (isset($update['message']) && isset($update['message']['forward_from'])) {
$originalUserId = $update['message']['forward_from']['id'];
$originalFirstName = $update['message']['forward_from']['first_name'] ?? 'Unknown';
$originalUsername = $update['message']['forward_from']['username'] ?? null;
echo "原始发送者 ID: {$originalUserId}\n";
echo "姓名: {$originalFirstName}" . ($originalUsername ? " (@{$originalUsername})" : "");
} else {
echo "未检测到转发来源(可能为非转发消息、隐私限制或频道转发)";
}⚠️ 注意事项:
- forward_from 仅适用于私聊/群组中由用户手动转发的消息;频道转发(forward_from_chat)使用不同字段,且不暴露用户 ID;
- 即使用户关闭了“隐藏转发来源”,若其账号为新注册的 Telegram 账号(2018 年后创建),默认仍不向 bot 暴露 forward_from ——这是 Telegram 的强制隐私策略,无法绕过;
- 始终进行嵌套键存在性校验(如 isset()),避免 PHP Notice 错误;
- 若需识别转发行为但 forward_from 为空,可结合 forward_date 和 forward_from_chat 判断是否来自频道。
? 总结:路径错误是最常见的 forward_from 为 null 原因。牢记 Telegram Update 结构:$update → ['message'] → ['forward_from'] → ['id']。调试时建议先 var_dump($update) 查看完整结构,再精准取值。
# php
# js
# json
# NULL
# 对象
# 是一个
# 这是
# 当你
# 适用于
# 能为
# 群组
# 最常见
# 不向
# 安全检查
# 为空
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何在IIS7上新建站点并设置安全权限?
深圳网站制作平台,深圳市做网站好的公司有哪些?
php485函数参数是什么意思_php485各参数详细说明【介绍】
Laravel如何使用Vite进行前端资源打包?(配置示例)
如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?
详解jQuery中的事件
Laravel广播系统如何实现实时通信_Laravel Reverb与WebSockets实战教程
微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】
海南网站制作公司有哪些,海口网是哪家的?
矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?
Laravel如何生成URL和重定向?(路由助手函数)
JavaScript如何实现路由_前端路由原理是什么
Laravel如何使用Eloquent进行子查询
悟空识字如何进行跟读录音_悟空识字开启麦克风权限与录音
Laravel如何处理CORS跨域请求?(配置示例)
标题:Vue + Vuex 项目中正确使用 JWT 进行身份认证的实践指南
网站制作价目表怎么做,珍爱网婚介费用多少?
小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?
Laravel怎么使用Markdown渲染文档_Laravel将Markdown内容转HTML页面展示【实战】
如何有效防御Web建站篡改攻击?
node.js报错:Cannot find module 'ejs'的解决办法
BootStrap整体框架之基础布局组件
Laravel全局作用域是什么_Laravel Eloquent Global Scopes应用指南
html5的keygen标签为什么废弃_替代方案说明【解答】
如何在搬瓦工VPS快速搭建网站?
Laravel API资源类怎么用_Laravel API Resource数据转换
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
Laravel Fortify是什么,和Jetstream有什么关系
如何快速搭建高效简练网站?
javascript基于原型链的继承及call和apply函数用法分析
Laravel如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法
Firefox Developer Edition开发者版本入口
Internet Explorer官网直接进入 IE浏览器在线体验版网址
DeepSeek是免费使用的吗 DeepSeek收费模式与Pro版本功能详解
浅析上传头像示例及其注意事项
如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框
Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程
Laravel如何安装使用Debugbar工具栏_Laravel性能调试与SQL监控插件【步骤】
Laravel模型关联查询教程_Laravel Eloquent一对多关联写法
Laravel的HTTP客户端怎么用_Laravel HTTP Client发起API请求教程
电视网站制作tvbox接口,云海电视怎样自定义添加电视源?
文字头像制作网站推荐软件,醒图能自动配文字吗?
Laravel事件监听器怎么写_Laravel Event和Listener使用教程
如何用免费手机建站系统零基础打造专业网站?
Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用
重庆市网站制作公司,重庆招聘网站哪个好?
焦点电影公司作品,电影焦点结局是什么?
Bootstrap整体框架之JavaScript插件架构
Laravel如何处理文件下载请求?(Response示例)
Laravel怎么设置路由分组Prefix_Laravel多级路由嵌套与命名空间隔离【步骤】

