Pyrogram请求用户自有频道时键盘引发异常问题求助
问题排查与解决方法
核心问题点
- 函数定义语法错误:
async def request_channel(message:types.Message)末尾缺少冒号:,这会直接触发语法异常 - 按钮类型与键盘类型不匹配:你误用了Raw层的
KeyboardButtonRequestPeer,还错误搭配了InlineKeyboardMarkup。请求用户选择频道的按钮属于回复键盘(ReplyKeyboardMarkup),而非内联键盘,且应使用Pyrogram封装好的types.KeyboardButtonRequestPeer,而非Raw类型。
修正后的代码
from pyrogram import types async def request_channel(message: types.Message): btn = [ [ types.KeyboardButtonRequestPeer( text="Select Channel", button_id=1, peer_type=types.RequestPeerTypeBroadcast(creator=True), ) ] ] # 使用ReplyKeyboardMarkup替代InlineKeyboardMarkup keyboard = types.ReplyKeyboardMarkup(btn, one_time_keyboard=True) await message.reply_text("Select your channel:", reply_markup=keyboard)
额外说明
- 添加
one_time_keyboard=True可让用户选择频道后自动收起键盘,优化交互体验 - 用户选择频道后,需在客户端的事件监听逻辑中,通过
button_id=1匹配响应,获取用户选中的频道信息
内容的提问来源于stack exchange,提问作者mostifa aa
相关产品推荐
相关产品推荐

