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

Telegram机器人可向自身发消息但无法给其他用户发送的问题求助

Telegram Bot 无法向非本人用户发送消息问题排查

问题描述

尝试使用以下代码向Telegram群组或非本人用户发送消息:

import requests
token = "my_bot_token"
url = f"https://api.telegram.org/bot{token}"

Index = "Hola"
myPersonalId = "my_personal_id"
params = {"chat_id": myPersonalId, "text": Index} #John
r = requests.get(url + "/sendMessage", params=params)

JosephId = "Joseph_ID"
params = {"chat_id": JosephId, "text": Index} #Joseph
r = requests.get(url + "/sendMessage", params=params)

代码中向本人chat_id发送消息的请求可正常执行,但向Joseph的chat_id发送消息的请求失败,且代码无报错,此前认为只要拥有目标chat_id即可发送消息,寻求解决办法。

排查与解决办法

  • 目标用户未主动与Bot互动:Telegram的隐私规则限制,Bot只能给主动发过消息的用户发送消息。让Joseph先给你的Bot发一条消息(任意内容),之后Bot就能正常给他发消息了。
  • Chat ID不正确:确认Joseph的Chat ID是否准确。可以让Joseph给Bot发消息后,调用getUpdates接口获取正确ID:
    r = requests.get(url + "/getUpdates")
    print(r.json())
    
    在返回的JSON数据里找到对应消息的chat.id字段,这就是正确的Chat ID。
  • Bot被用户屏蔽/拉黑:检查Joseph是否将Bot拉黑,或者在Telegram隐私设置中禁止了Bot发送消息。如果是这种情况,需要用户解除屏蔽。
  • 改用POST请求:Telegram官方推荐使用POST请求发送消息,GET请求可能在某些场景下受限。修改代码中的请求方式:
    r = requests.post(url + "/sendMessage", json=params)
    
  • 查看请求返回的错误信息:代码中未打印请求结果,无法定位具体问题。添加打印语句查看Telegram返回的错误详情:
    print(r.json())
    
    比如返回{"ok":false,"error_code":403,"description":"Forbidden: bot was blocked by the user"},就明确是被用户屏蔽了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 16:33:21