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