如何用Pyrogram点击机器人的Web应用菜单按钮?
解决Pyrogram调用RequestWebView报BotInvalid错误的方案
错误原因
你遇到的BOT_INVALID错误,是因为messages.RequestWebView的bot参数需要传入机器人的InputUser对象,而你直接使用resolve_peer返回的Peer对象不符合要求,导致Telegram判定参数无效。
修正后的代码
from pyrogram.types import InputUser from pyrogram.raw.functions.messages import RequestWebView # 获取机器人的用户信息(包含id和access_hash) bot_user = await user_bot.get_users('xxx_bot') # 构造正确的InputUser对象 bot_input_user = InputUser(id=bot_user.id, access_hash=bot_user.access_hash) # 获取与机器人对话的会话Peer chat_peer = await user_bot.resolve_peer('xxx_bot') # 调用RequestWebView触发菜单Web应用 ret = await user_bot.invoke( RequestWebView( peer=chat_peer, bot=bot_input_user, platform='android', from_bot_menu=True ) )
关键说明
get_users方法能准确获取机器人的完整用户数据,包括构造InputUser必需的id和access_hash,这是让Telegram识别到有效机器人的核心。peer参数指定你与机器人的对话会话,用resolve_peer解析机器人用户名即可。- 确保你的userbot账号已经和该机器人建立过对话(至少发送过一条消息),否则可能触发会话不存在的错误。
- 确认目标机器人确实设置了菜单按钮为Web应用,且该应用对当前账号可见。
内容的提问来源于stack exchange,提问作者zhongwang
相关产品推荐
相关产品推荐

