PHP Telegram Bot实现频道发消息后自动回复关联讨论组线程
实现Telegram频道消息同步至讨论组并自动发首条评论的PHP方案
核心逻辑
要达成需求,关键是拿到频道消息同步到讨论组后的对应消息ID,以此为回复目标在讨论组发送评论,就能让频道消息显示存在评论。
具体PHP实现步骤
第一步:在频道发布消息并保存ID
调用Telegram Bot API的sendMessage接口发布频道消息,保存返回结果里的频道消息ID:$botToken = '你的机器人Token'; $channelId = '@你的频道用户名'; $msgContent = '频道要发布的内容'; // 发送频道消息 $resp = file_get_contents("https://api.telegram.org/bot{$botToken}/sendMessage?chat_id={$channelId}&text={$msgContent}"); $channelMsgInfo = json_decode($resp, true); $channelMsgId = $channelMsgInfo['result']['message_id'];第二步:获取讨论组内同步的消息ID
频道消息会自动同步到关联讨论组,调用searchMessages接口,通过频道ID和频道消息ID,搜索讨论组内对应的同步消息:$groupId = '-100你的讨论组ID'; // 超级群ID需带-100前缀 // 搜索讨论组中的同步消息 $searchResp = file_get_contents("https://api.telegram.org/bot{$botToken}/searchMessages?chat_id={$groupId}&from_chat_id={$channelId}&message_id={$channelMsgId}"); $groupMsgInfo = json_decode($searchResp, true); $groupSyncMsgId = $groupMsgInfo['result'][0]['message_id'];注:如果搜索无结果,可延迟1-2秒再重试,同步可能有短暂延迟。
第三步:在讨论组对应线程发送评论
调用sendMessage接口,指定reply_to_message_id为上面拿到的讨论组同步消息ID,发送评论:$replyContent = '自动发布的首条评论内容'; // 发送线程评论 file_get_contents("https://api.telegram.org/bot{$botToken}/sendMessage?chat_id={$groupId}&text={$replyContent}&reply_to_message_id={$groupSyncMsgId}");
必要权限说明
- 机器人必须是频道和讨论组的管理员,拥有发布消息和读取消息的权限。
- 建议用PHP的cURL替代
file_get_contents,处理大内容或网络波动时更稳定。
内容的提问来源于stack exchange,提问作者ram108
相关产品推荐
相关产品推荐

