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

如何通过本地Telegram Bot API创建机器人并解决连接超时问题

Telegram本地Bot API服务器适配与python-telegram-bot使用问题解答

问题1:如何创建适配本地API服务器的机器人以规避文件大小限制?

  • 仍需保留BotFather生成的机器人token,本地API服务器仅作为代理层突破官方API的文件大小限制,机器人本身仍由BotFather管理,无需修改BotFather的任何设置。
  • my.telegram.org创建的api_id和api_hash是给本地API服务器使用的,用于让服务器与Telegram核心网络建立高权限会话,和BotFather的机器人token是互补关系:
    • BotFather的token:让Python代码识别对应机器人身份
    • api_id/api_hash:赋予本地API服务器突破文件传输限制的权限

问题2:能否继续使用python-telegram-bot包?

可以继续使用,但你的配置存在问题导致连接超时,以下是修复方案:

1. 修正本地API服务器启动命令

当前启动命令的--local参数会让服务器仅监听本地127.0.0.1,容器环境下无法被其他容器访问,需修改为:

telegram-bot-api --api-id=你的api_id --api-hash=你的api_hash --listen-ip=0.0.0.0 --port=8081 -v 3
  • --listen-ip=0.0.0.0:允许外部容器访问服务器
  • --port=8081:明确端口与代码配置对应

2. 调整Python代码

确保配置格式正确,增加超时容错:

from telegram.ext import Application, CommandHandler

def help_command(update, context):
    update.message.reply_text("这是帮助命令")

def main():
    builder = Application.builder()
    builder.token(VALUES['BOT_TOKEN'])
    builder.local_mode(local_mode=True)
    # 确认bot-api是docker-compose中定义的本地API服务器服务名
    builder.base_url('http://bot-api:8081/bot')
    # 延长请求超时时间,避免初始化阶段超时
    builder.request_timeout(30)
    app = builder.build()
    app.add_handler(CommandHandler('help', help_command))
    app.run_polling(poll_interval=10)

if __name__ == '__main__':
    main()

3. 容器网络排查

  • 若使用docker-compose,确保bot容器与本地API服务器容器处于同一网络
  • 在bot容器内执行curl http://bot-api:8081/bot/你的token/getMe测试连通性:返回正常JSON则网络无问题,超时则检查容器网络配置

超时错误核心原因

--local参数导致本地API服务器仅允许本地访问,bot容器无法建立连接,修改监听IP即可解决。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 06:04:51