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

使用Python Requests调用Telegram Bot API发送消息遇400错误求助

解决Telegram Bot API 400 Bad Request(message text is empty)问题

问题根源

你的代码中,requests.post使用了params参数传递请求参数,这会将参数拼接在URL的查询字符串中。但Telegram Bot API的sendMessage接口要求POST请求的参数放在请求体(form-data或JSON格式)中,接口无法从URL查询参数中读取text字段,因此返回"message text is empty"错误。

修正方案

将请求参数从params参数改为data或json参数传递:

方案1:使用form-data格式(data参数)

import requests
def send(text):
    token = 'your_token_goes_here'
    payload = {'chat_id': xxx, 'text': text, 'parse_mode': 'HTML'}
    resp = requests.post('https://api.telegram.org/bot{}/sendMessage'.format(token), data=payload)
    resp.raise_for_status()
send('hello')

方案2:使用JSON格式(json参数,推荐)

import requests
def send(text):
    token = 'your_token_goes_here'
    payload = {'chat_id': xxx, 'text': text, 'parse_mode': 'HTML'}
    resp = requests.post('https://api.telegram.org/bot{}/sendMessage'.format(token), json=payload)
    resp.raise_for_status()
send('hello')

额外检查项

  • 确认chat_id为正确的数值或字符串(如果是用户ID,可通过getUpdates接口获取)
  • 确保token替换为你机器人的真实令牌
  • 若使用parse_mode: HTML,需保证text内容符合Telegram的HTML格式规范(比如闭合标签、避免禁用标签)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 21:22:35