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

Telegram机器人无法发送消息至群组的问题求助

Telegram机器人发送群组消息失败问题排查与解决

操作背景

  • 通过BotFather创建机器人并创建Telegram群组
  • 将机器人添加至目标群组
  • 在BotFather的机器人设置中关闭Privacy Mode并允许群组使用

初始代码及问题

初始代码:

import requests
bot_id = '261600102:AAGx**************uRljA'
chat_id = '27*****'
#chat_id = "MyPythonTesting"
message = input('ENTER THE MESSAGE:     ')
url = f"https://api.telegram.org/bot{bot_id}/sendmessage?chat_id={chat_id}&test={message}"
url = f"https://core.telegram.org/bot{bot_id}/sendmessage?chat_id={chat_id}&test={message}"
response = requests.get(url)
print(response)

运行情况:

  • 第一个URL触发ConnectionError,报错信息:
raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPSConnectionPool(host='api.telegram.org', port=443): Max retries exceeded with 
url: /bot261600102:AAG********7uRljA/sendmessage?chat_id=276******&test=esae (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0x000001AC0425F910>: Failed to resolve 'api.telegram.org' ([Errno 11001] getaddrinfo failed)"))
  • 第二个URL返回状态码200,但消息未发送至群组

修改后代码及新错误

修改后代码:

import requests
bot_id = '261600102:AAGx**********YHCCeXV6VqD67uRljA'
chat_id = "MyPythonTesting"
message = input('ENTER THE MESSAGE:     ')
url = f"https://api.telegram.org/bot{bot_id}/sendmessage?chat_id={chat_id}&text={message}"
response = requests.get(url)
print(response)

触发ConnectionError,完整报错栈:

C:\Users\Administrator\AppData\Local\Programs\Python\Python311\python.exe E:\pycharm\projecttelegram\MyPythonTesting_1.py 
ENTER THE MESSAGE:     test
Traceback (most recent call last):
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\site-packages\urllib3\connection.py", line 203, in _new_conn
    sock = connection.create_connection(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\site-packages\urllib3\util\connection.py", line 60, in create_connection
    for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM):
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\socket.py", line 962, in getaddrinfo
    for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
socket.gaierror: [Errno 11001] getaddrinfo failed

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\site-packages\urllib3\connectionpool.py", line 790, in urlopen
    response = self._make_request(
               ^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\site-packages\urllib3\connectionpool.py", line 491, in _make_request
    raise new_e
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\site-packages\urllib3\connectionpool.py", line 467, in _make_request
    self._validate_conn(conn)
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\site-packages\urllib3\connectionpool.py", line 1092, in _validate_conn
    conn.connect()
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\site-packages\urllib3\connection.py", line 611, in connect
    self.sock = sock = self._new_conn()
                       ^^^^^^^^^^^^^^^^
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\site-packages\urllib3\connection.py", line 210, in _new_conn
    raise NameResolutionError(self.host, self, e) from e
urllib3.exceptions.NameResolutionError: <urllib3.connection.HTTPSConnection object at 0x000001EC5FA8BCD0>: Failed to resolve 'api.telegram.org' ([Errno 11001] getaddrinfo failed)

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\site-packages\requests\adapters.py", line 486, in send
    resp = conn.urlopen(
           ^^^^^^^^^^^^^
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\site-packages\urllib3\connectionpool.py", line 844, in urlopen
    retries = retries.increment(
              ^^^^^^^^^^^^^^^^^^
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\site-packages\urllib3\util\retry.py", line 515, in increment
    raise MaxRetryError(_pool, url, reason) from reason  # type: ignore[arg-type]
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='api.telegram.org', port=443): Max retries exceeded with url: /bot261600102:AAGxPuS8CVlJB_0tZYHCCeXV6VqD67uRljA/sendmessage?chat_id=MyPythonTesting&text=test (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0x000001EC5FA8BCD0>: Failed to resolve 'api.telegram.org' ([Errno 11001] getaddrinfo failed)"))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "E:\pycharm\projecttelegram\MyPythonTesting_1.py", line 7, in <module>
    response = requests.get(url)
               ^^^^^^^^^^^^^^^^^
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\site-packages\requests\api.py", line 73, in get
    return request("get", url, params=params, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\site-packages\requests\api.py", line 59, in request
    return session.request(method=method, url=url, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\site-packages\requests\sessions.py", line 589, in request
    resp = self.send(prep, **send_kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\site-packages\requests\sessions.py", line 703, in send
    r = adapter.send(request, **kwargs)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\site-packages\requests\adapters.py", line 519, in send
    raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPSConnectionPool(host='api.telegram.org', port=443): Max retries exceeded with url: /bot261600102:AAGxPuS8CVlJB_0tZYHCCeXV6VqD67uRljA/sendmessage?chat_id=MyPythonTesting&text=test (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0x000001EC5FA8BCD0>: Failed to resolve 'api.telegram.org' ([Errno 11001] getaddrinfo failed)"))

Process finished with exit code 1

解决方案建议

1. 解决域名解析/网络访问问题

报错getaddrinfo failed说明无法解析api.telegram.org域名,或无法建立网络连接:

  • 先在终端执行ping api.telegram.org,或用浏览器访问https://api.telegram.org,确认网络是否能正常访问该地址
  • 若处于受限网络环境,需为requests配置代理:
import requests
bot_id = '你的机器人ID'
chat_id = '群组数字ID'
message = input('ENTER THE MESSAGE:     ')
url = f"https://api.telegram.org/bot{bot_id}/sendmessage?chat_id={chat_id}&text={message}"
# 配置代理,替换为你的代理地址和端口
proxies = {
    'https': 'http://your-proxy-address:port'
}
response = requests.get(url, proxies=proxies)
print(response.text)  # 打印响应内容,便于排查错误

2. 修正API地址与请求参数

  • 必须使用https://api.telegram.org作为API域名,core.telegram.org是官方文档地址,无法处理API请求
  • 请求参数中消息内容的键是text,而非初始代码中的test,修改后的代码已修正此问题

3. 确认Chat ID正确性

  • 群组名称(如MyPythonTesting)无法直接作为chat_id使用,需获取群组的数字ID:
    • 在群组内发送一条消息,然后调用https://api.telegram.org/bot<你的机器人ID>/getUpdates接口,查看返回的JSON数据中的chat.id字段
    • 或使用Telegram机器人@getidsbot,将其加入群组后获取群组ID

4. 检查机器人权限

确保机器人在群组内拥有发送消息的权限,可在群组设置中确认机器人的权限为"发送消息"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 20:05:57