用Telegram Bot API+Webhook调用天气API,实现每日自动推送,兼容2026最新版,含完整代码与避坑指南。
功能定位与版本演进
Telegram机器人调用天气API实现实时推送,本质是把「Bot API 更新机制」与「第三方天气接口」拼成一条低延迟管道。2026年初,官方把Webhook单次最大超时从30 s放宽到60 s,并允许在setWebhook里同时注册子路径,这意味着我们可以把「/weather」这类业务路由直接挂在同一台服务器,而不用另开端口,显著降低运维成本。
相比2024年以前的轮询(getUpdates)方案,Webhook在十万级订阅频道里可减少约九成空请求,带宽与Stars(Telegram内购代币)消耗同步下降。若你的频道日更200条以内、单条消息<1 KB,使用Webhook+天气API的组合在经验性观察中可把平均到达延迟压到亚秒级;若超过该频率,需引入队列与重试,否则容易触发429限流。
决策树:轮询 vs Webhook vs 定时任务
1. 频道订阅<1 k且无法备案域名→选getUpdates轮询,代码最简单,但5 s间隔是硬下限。2. 需要秒级推送、可暴露443端口→选Webhook,一次配置长期生效。3. 仅每日早晚两次广播→用Linux crontab+sendMessage即可,省云函数费用。决策核心是「延迟要求」与「运维成本」二选一,不可兼得。
准备工作:最小权限原则
在BotFather新建机器人时,只勾选「发送消息」「删除消息」两项,关闭「添加成员」「删除频道」等高危权限;这样即使Token泄露,攻击者也无法把频道改名或踢光用户。接着记录HTTP API Token,格式类似123456:ABC-def...,后续所有请求都靠它签名。
天气API选型与配额对比
| 服务商 | 免费额度 | 最小更新间隔 | HTTPS | 需备案 |
|---|---|---|---|---|
| OpenWeatherMap | 1000次/日 | 10 min | 是 | 否 |
| 和风天气 | 5000次/日 | 1 min | 是 | 域名需备案 |
| 心知天气 | 300次/日 | 30 min | 是 | 否 |
若频道订阅10万,每小时全量推送一次,和风天气的5000次/日刚好够用;若再做个性化「城市订阅」,需要按用户纬度拆分缓存,否则配额会在上午高峰就耗尽。
Webhook一次性配置(含失败回退)
- 准备域名与SSL证书,路径如
https://bot.example.com/telegram;证书需TLS1.2+,Let's Encrypt可自动续期。 - 在服务器根目录放验证脚本,返回固定字符串,用于后续自检。
- 浏览器访问
https://api.telegram.org/bot{TOKEN}/setWebhook?url=https://bot.example.com/telegram,返回{
