如何用Telethon从用户端交互机器人Web应用及解决调用报错
使用Telethon与机器人Web应用交互的正确方式
核心问题定位
你之前调用RequestAppWebViewRequest报错,本质是InputBotAppID参数填错了——你用了机器人实体的id和access_hash,但这个参数需要的是Web应用自身的ID和访问哈希,不是机器人的。
正确获取Web应用的ID和Access Hash
有两种可靠方式拿到正确参数:
- 从机器人的内联按钮数据提取:当你收到包含Web应用按钮的消息时,解析按钮的
web_app字段(通常在KeyboardButtonWebView类型里),里面会直接给出bot_app_id和access_hash,这就是InputBotAppID需要的id和access_hash。 - 调用
messages.GetBotAppRequest:传入机器人实体、Web应用的ID(需从按钮或机器人官方信息获取),就能返回包含access_hash的Web应用详情。
修正后的调用代码
# 先获取目标机器人的实体 bot_entity = await client.get_entity('@目标机器人用户名') # 替换成从按钮数据或GetBotApp拿到的Web应用ID和Access Hash web_app_id = 123456789 web_app_access_hash = 9876543210987654321 # 发起WebView请求 result = await client(functions.messages.RequestAppWebViewRequest( peer=bot_entity, app=types.InputBotAppID( id=web_app_id, access_hash=web_app_access_hash ), platform='desktop' # 合法值包括android/ios/desktop,不能随便填 )) print(result.stringify())
额外注意事项
platform字段必须填Telethon认可的合法值,比如desktop、android、ios,否则也会触发参数错误。- 确保
peer参数是正确的机器人实体(通过get_entity获取的对象或合法的用户名/ID),避免用无效的链接格式。
内容的提问来源于stack exchange,提问作者Ivan
相关产品推荐
相关产品推荐

