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

Telegram Bot调用sendMessage时报错“Bad Request: message text is empty”求助

解决Telegram Bot sendMessage报错“Bad Request: message text is empty”的排查步骤

我之前帮朋友处理过几乎一模一样的问题,结合实际经验给你几个可行的排查方向:

  • 确认请求参数的实际有效性:
    虽然你提到用UTF-8编码,但GET请求的参数很容易因为URL编码遗漏或变量赋值出错导致text为空。比如文本含&、%这类特殊字符时,未正确编码会直接截断参数;或者代码里的变量被意外清空(比如依赖库更新导致字符串处理逻辑异常)。建议先测试纯文本内容(如test message),同时检查text参数名是否拼写正确(别写成txt之类的低级错误)。

  • 用curl验证基础请求是否正常:
    直接用curl发送最简测试请求,排除代码逻辑的干扰:

    curl "https://api.telegram.org/bot<你的BotToken>/sendMessage?chat_id=<测试ChatID>&text=HelloWorld"
    

    如果这个请求成功,说明问题肯定出在你的代码逻辑里;如果仍报错,大概率是Bot权限或Telegram临时问题,但结合你GetUpdates正常的情况,后者概率极低。

  • 排查中间层干扰:
    若你的Bot部署在服务器上,近期是否更换过代理、CDN或防火墙规则?部分网关会过滤GET参数或限制URL长度——如果消息文本较长,GET请求的URL可能超过服务器允许的上限,导致text被截断为空。这种情况建议换成POST方法,将参数放在请求体中(这也是Telegram API推荐的方式,更适配长文本和复杂参数)。

  • 检查文本生成逻辑:
    有没有最近的代码更新(或依赖库自动更新)导致消息文本为空?比如从数据库/第三方接口取数据时返回空值,或者条件判断错误导致文本未正常生成。建议在发送请求前添加日志,打印要发送的text内容,确认它确实不是空字符串。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:11:51