Telegram Bot使用MARKDOWN_V2格式时遭遇两类错误求助
问题解决方法
第一个错误:NameError: name 'telegram' is not defined
你导入的是from telegram.constants import ParseMode,已经将ParseMode类直接导入当前命名空间,无需加telegram.constants.前缀,直接使用ParseMode.MARKDOWN_V2即可,修正后的代码:
await update.message.reply_text(await main_menu_message(), reply_markup=await main_menu_keyboard(), parse_mode=ParseMode.MARKDOWN_V2)
第二个错误:telegram.error.BadRequest: Can't parse entities: character '(' is reserved and must be escaped with the preceding '\'
Telegram的MarkdownV2格式要求所有保留字符(包括(、)、[、]、*、~等)必须用反斜杠\转义。你的消息里(for trial purposes only)中的括号需要转义,修改后的消息函数:
async def main_menu_message(): return """Bot Demo *bold* \(for trial purposes only\) ~~---------------~~ [Link Text](http://example.com)"""
如果后续消息中出现其他保留字符,也需要按此规则转义。
内容的提问来源于stack exchange,提问作者Alienbyte
相关产品推荐
相关产品推荐

