刚接触飞机开发者 API ,写的 python 脚本用于群关键字监控,运行时报错 Attempt 1 at connecting failed: TimeoutError
。
之后使用 curl -4 -L https://api.telegram.org
测试连通性,返回的是一个 html 网页,而不是 json 。
该 IP 用于飞机登录和日常使用是没问题的。期间也换了几个,报错都一样。
请问这问题是不是出在 IP 上?
脚本:
import asyncio from telethon import TelegramClient, events from telethon.network import ConnectionTcpMTProxyRandomizedIntermediate # 替换为你的 API 凭证 api_id = 'xxxx' # 你的 api_id api_hash = 'xxxx' # 你的 api_hash phone_number = 'xxxx' # 你的电话号码,例如 '+1234567890' group_name = 'xxxx' # 目标群聊的用户名(例如 '@MyGroup')或 ID (例如 -100123456789 ) # 定义要监控的关键字列表 keywords = ['test', 'python'] # 替换为你想监控的关键字 # 代理设置(根据你的代理类型选择 SOCKS5 或 HTTP ) proxy = { 'proxy_type': 'http', # 可选值:'socks5', 'http', 或 'mtproxy' 'addr': '127.0.0.1', # 代理服务器地址 'port': 7897, # 代理服务器端口 'username': None, # 代理用户名(如果不需要认证,设为 None ) 'password': None # 代理密码(如果不需要认证,设为 None ) } # 创建 Telegram 客户端并应用代理设置 if proxy['proxy_type'] == 'mtproxy': client = TelegramClient( 'session_name', api_id, api_hash, cOnnection=ConnectionTcpMTProxyRandomizedIntermediate, proxy=(proxy['addr'], proxy['port'], proxy.get('secret')) # MTProxy 需要 secret ) else: client = TelegramClient( 'session_name', api_id, api_hash, proxy=(proxy['proxy_type'].upper(), proxy['addr'], proxy['port'], proxy['username'], proxy['password']) ) # 事件处理器:监听新消息 @client.on(events.NewMessage(chats=group_name)) async def handler(event): message = event.message.text if not message: # 确保消息内容不为空 return message = message.lower() # 获取消息内容并转为小写 # 检查消息是否包含任意关键字 for keyword in keywords: if keyword.lower() in message: print(f"检测到关键字 '{keyword}' 在消息: {event.message.text}") print(f"发送者: {event.message.sender_id}, 时间: {event.message.date}") # 将消息保存到文件 with open('keyword_messages.txt', 'a', encoding='utf-8') as f: f.write(f"关键字: {keyword}\n 消息: {event.message.text}\n 发送者: {event.message.sender_id}\n 时间: {event.message.date}\n\n") async def main(): # 启动客户端并登录 try: await client.start(phOne=phone_number) print("正在通过代理监控群聊消息...") # 保持脚本运行 await client.run_until_disconnected() except Exception as e: print(f"启动客户端失败: {e}") # 运行脚本 if __name__ == '__main__': asyncio.run(main())
1 julyclyde 40 天前 api.telegram.org 好像是 bot api 服务器吧 client API 也是同一个吗? |
2 tianhualefei 19 天前 同样问题,我也没解决 gPT5 的回复是 你要连接的是 telegram 的 禁止或不支持 Telegram 的协议流量 如果代理只是个“通用”SOCKS5 ,但背后节点是 HTTP/HTTPS 转发,可能不支持 Telegram 的二进制 MTProto/TLS ,还会主动把连接关掉。 API 是链接 149.154.167.51:443 这种数据中心 IP 的。 |
![]() | 3 UEVdugfw OP @tianhualefei #2 还真没往这方面想。之前 tg api 找了个变相的方案暂时把问题解决了。 我之前思路一直以为是 vps ip 问题,所以在寻找可用 vps 这个方向。 过几天有空了再研究研究 |