diff --git a/src/actions/converter.py b/src/actions/converter.py index a03ea9e3bdfb16303d6f24ddca109faa3435c19a..f4b377bdd3481a937e6f1da98f1f5cb832ec265e 100644 --- a/src/actions/converter.py +++ b/src/actions/converter.py @@ -1,6 +1,6 @@ import logging import re -from decimal import Decimal, getcontext +from decimal import Decimal import httpx from src.config import config @@ -71,22 +71,26 @@ async def replace_currency(event): groups = re.findall(CURRENCY_PATTERN, event.message.message) response = "**ПолагаÑÑÑŒ на текщий ÐºÑƒÑ€Ñ Ð²Ð°Ð»ÑŽÑ‚ могу Ñказать Ñледующее:**\n\n" currency_mapper = [] - getcontext().prec = 2 for group in groups: + scientific = False name = group[3] if name in CURRENCY_MAPPING: name = CURRENCY_MAPPING[name] val = Decimal(group[0]) + val_id = f"{val} {name}" + if len(f"{val:.2f}") > 30: + scientific = True new_val = ( val * Decimal(currencies[name]["Value"]) / Decimal(currencies[name]["Nominal"]) ) - val_id = f"{val} {name}" if val_id not in currency_mapper: - response += f"`{val} {name} = {new_val} RUB`\n" + if scientific: + response += f"`{val} {name} = {new_val.to_eng_string()} RUB`\n" + else: + response += f"`{val} {name} = {new_val:.2f} RUB`\n" currency_mapper.append(val_id) - await event.reply(response)