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

如何解决Python Telegram Bot中的[Errno 111] Connection refused错误

解决Telegram Bot开发中的Connection Refused错误

你在开发Telegram Bot时遇到的ConnectionRefusedError本质是程序无法成功连接到Telegram的API服务器,我来帮你一步步排查和解决:

错误核心原因分析

这个报错的关键是网络连接失败,常见触发场景有:

  • 所在地区/网络环境无法直接访问Telegram的API服务器(这是最常见的原因)
  • 代码未配置必要的代理(如果你的网络需要代理才能访问外部服务)
  • 虽然概率较低,但也可能是URL格式的细微问题(比如方法名规范)

具体解决方案

1. 先验证基础有效性

首先打开浏览器,直接访问这个地址(替换成你的真实Token):
https://api.telegram.org/bot<你的TOKEN>/getMe

  • 如果浏览器能返回类似{"ok":true,"result":{"id":xxx,...}}的JSON数据,说明Token和浏览器环境的网络是正常的,问题出在Python代码的网络配置上
  • 如果浏览器也打不开,那就是网络环境的问题,必须先解决Telegram API的访问权限(比如使用代理)

2. 给urllib配置代理(适配需要代理的环境)

如果你的网络需要代理才能访问Telegram,修改代码添加代理配置:

import json
from urllib.request import urlopen, ProxyHandler, build_opener

TOKEN = '你的真实Bot Token'
URL = 'https://api.telegram.org/bot{}/'.format(TOKEN)
cmd = 'getMe'  # 建议使用官方规范的驼峰命名,虽然小写可能也兼容

# 替换为你实际的代理地址和端口
proxy_handler = ProxyHandler({
    'https': 'http://your-proxy-ip:port',
    'http': 'http://your-proxy-ip:port'
})
opener = build_opener(proxy_handler)

try:
    resp = opener.open(URL + cmd)
    data = json.load(resp)
    print("请求成功:", data)
except Exception as e:
    print("错误详情:", e)

3. 改用更易用的专用库(推荐)

手动用urllib处理请求太繁琐,推荐使用python-telegram-bot库,它已经封装了所有API调用和网络细节,包括代理配置:
首先安装库:

pip install python-telegram-bot --upgrade

然后用极简代码测试:

from telegram import Bot

TOKEN = '你的真实Bot Token'
# 初始化Bot,需要代理的话添加request_kwargs参数
bot = Bot(
    token=TOKEN,
    # request_kwargs={'proxy_url': 'http://your-proxy-ip:port'}
)

try:
    bot_info = bot.get_me()
    print(f"Bot信息: {bot_info.first_name} (ID: {bot_info.id})")
except Exception as e:
    print("错误详情:", e)

额外提醒

  • 绝对不要把你的Bot Token泄露给任何人,一旦泄露他人就能完全控制你的Bot
  • 国内环境必须使用代理才能访问Telegram API,这是绝大多数开发者遇到这个错误的根源

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:40:45