python-telegram-bot inline查询报错input message content is not specified如何解决
问题解决方法
报错Can't parse inline query result: input message content is not specified的核心原因是传入InputTextMessageContent的内容不合法,包括返回空值、非字符串类型、特殊字符解析失败三类情况,按以下步骤排查修复:
- 给
response函数的返回值加兜底校验
当前代码未校验response(query)的返回结果,当查询关键词无匹配内容、response返回None/空字符串/非字符串类型时,就会触发该报错。修改代码提前校验返回值,无结果时返回默认提示:
def inlinequery(update, context: CallbackContext) : query = update.inline_query.query # 优化空查询判断,过滤全空格的无效输入 if not query.strip(): return # 提前获取检索结果并做合法性校验 res = response(query) if not isinstance(res, str) or not res.strip(): # 无匹配结果时返回默认提示,确保内容一定是合法非空字符串 res = "未查询到匹配的班级编码,请检查输入后重试" results = [ InlineQueryResultArticle( id=str(uuid4()), title="find this class code", description='example 1322008', input_message_content=InputTextMessageContent(res) ) ] update.inline_query.answer(results)
- 处理特殊字符解析问题
如果返回内容包含HTML/Markdown格式的特殊字符未转义,Telegram服务端解析内容失败也会抛出该类错误。可显式禁用解析模式避免该问题,修改InputTextMessageContent传参如下:
InputTextMessageContent(res, parse_mode=None)
内容的提问来源于stack exchange,提问作者meysam
相关产品推荐
相关产品推荐

