diff --git a/CHANGELOG.md b/CHANGELOG.md index 24d47a8..2b7e246 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,9 @@ # Change Log All notable changes to this project will be documented in this file. +## [0.3.1] - 28.02.2023 +### Changed +- fixed markdown replier to respect restricted characters provided in the [api docs](https://core.telegram.org/bots/api#markdownv2-style) ## [0.3.0] - 12.11.2021 ### Added - Dynamic mentioning by `@` character diff --git a/src/bot/message/replier.py b/src/bot/message/replier.py index 6d207dd..69fba47 100644 --- a/src/bot/message/replier.py +++ b/src/bot/message/replier.py @@ -8,24 +8,30 @@ from logger import Logger class Replier: - @staticmethod def interpolate(content: str, inbound_message: InboundMessage): - return content.format( + formatted = content.format( mention_markdown(inbound_message.user_id, inbound_message.username), inbound_message.group_name ) + telegramRestrictionCharacters = ['_', '*', '[', ']', '(', ')', '~', '`', '>', '#', '+', '-', '=', '|', '{', '}', '.', '!'] + + for character in telegramRestrictionCharacters: + formatted.replace(character, "\\" + character) + + return formatted + @staticmethod def markdown(update: Update, message: str, reply_markup: Optional[InlineKeyboardMarkup] = None) -> None: try: update.effective_message.reply_markdown_v2(message, reply_markup=reply_markup) except Exception as err: - Logger.error(str(err)) + Logger.error("replier.markdown error: "str(err)) @staticmethod def html(update: Update, html: str, reply_markup: Optional[InlineKeyboardMarkup] = None) -> None: try: update.effective_message.reply_html(html, reply_markup=reply_markup, disable_web_page_preview=True) except Exception as err: - Logger.error(str(err)) + Logger.error("replier.html error: " + str(err))