Prevent message is not modified exceptions

This commit is contained in:
Davte 2020-05-18 22:08:10 +02:00
parent 7f140371b6
commit 2131c6acf9
2 changed files with 24 additions and 11 deletions

View File

@ -11,7 +11,7 @@ __author__ = "Davide Testa"
__email__ = "davide@davte.it" __email__ = "davide@davte.it"
__credits__ = ["Marco Origlia", "Nick Lee @Nickoala"] __credits__ = ["Marco Origlia", "Nick Lee @Nickoala"]
__license__ = "GNU General Public License v3.0" __license__ = "GNU General Public License v3.0"
__version__ = "2.5.19" __version__ = "2.5.20"
__maintainer__ = "Davide Testa" __maintainer__ = "Davide Testa"
__contact__ = "t.me/davte" __contact__ = "t.me/davte"

View File

@ -186,12 +186,21 @@ operators = get_operators()
operators_spacer = re.compile(r"(\d)\s*([+\-*%]|/{1,2})\s*(\d)") operators_spacer = re.compile(r"(\d)\s*([+\-*%]|/{1,2})\s*(\d)")
spaced_operators = r"\1 \2 \3" spaced_operators = r"\1 \2 \3"
operators_space_remover = re.compile(r"(\d)\s*(\*\*)\s*(\d)") operators_space_remover = re.compile(r"(\d)\s*(\*\*)\s*(\d)")
un_spaced_operators = r"\1\2\3" non_spaced_operators = r"\1\2\3"
multiple_newlines_regex = re.compile(r"[\n|\r][\n|\s]{2,}")
multiple_spaces_regex = re.compile(r"\s{2,}")
def prettify_expression(expression): def prettify_expression(expression):
"""Make expression cleaner to read.
Place a single space around binary operators `+,-,*,%,/,//`, no space
around `**`, single newlines and single spaces.
"""
expression = operators_spacer.sub(spaced_operators, expression) expression = operators_spacer.sub(spaced_operators, expression)
expression = operators_space_remover.sub(un_spaced_operators, expression) expression = operators_space_remover.sub(non_spaced_operators, expression)
expression = multiple_newlines_regex.sub('\n', expression)
expression = multiple_spaces_regex.sub(' ', expression)
return expression return expression
@ -353,6 +362,7 @@ async def calculate_session(bot: Bot,
record = bot.db['calculations'].find_one( record = bot.db['calculations'].find_one(
id=record_id id=record_id
) )
old_expression = record['expression']
if record is None: if record is None:
logging.error("Invalid record identifier!") logging.error("Invalid record identifier!")
return return
@ -389,6 +399,7 @@ async def calculate_session(bot: Bot,
['id'] ['id']
) )
if expression: if expression:
if expression.strip(' \n') != old_expression.strip(' \n'):
text = bot.get_message( text = bot.get_message(
'useful_tools', 'calculate_command', 'result', 'useful_tools', 'calculate_command', 'result',
language=language, language=language,
@ -396,12 +407,14 @@ async def calculate_session(bot: Bot,
expressions=expression, expressions=expression,
language=language) language=language)
) )
else:
text = ''
else: else:
text = bot.get_message( text = bot.get_message(
'useful_tools', 'calculate_command', 'instructions', 'useful_tools', 'calculate_command', 'instructions',
language=language language=language
) )
if last_entry is None: if last_entry is None or not text:
return return
await bot.edit_message_text( await bot.edit_message_text(
text=text, text=text,