diff --git a/src/actions/converter.py b/src/actions/converter.py
index 887647080b182d3c5d0139bb7202a22ef20c5ac2..8bd628ff4be4850fa63d44667fd52fa5a559fcdc 100644
--- a/src/actions/converter.py
+++ b/src/actions/converter.py
@@ -8,6 +8,36 @@ from telethon import events
 
 logger = logging.getLogger(__name__)
 
+CURRENCY_MAPPING = {
+    "фунт": "GBP",
+    "фунта": "GBP",
+    "фунтов": "GBP",
+    "бакс": "USD",
+    "бакса": "USD",
+    "баксов": "USD",
+    "доллар": "USD",
+    "доллара": "USD",
+    "долларов": "USD",
+    "евро": "EUR",
+    "иена": "JPY",
+    "иены": "JPY",
+    "иен": "JPY",
+    "йена": "JPY",
+    "йены": "JPY",
+    "йен": "JPY",
+    "вон": "KRW",
+    "франк": "CHF",
+    "франка": "CHF",
+    "франков": "CHF",
+    "крона": "SEK",
+    "кроны": "SEK",
+    "крон": "SEK",
+    "гривна": "UAH",
+    "гривны": "UAH",
+    "гривен": "UAH",
+    "грiвен": "UAH",
+}
+
 SUPPORTED_CURRENCIES = [
     "GBP",
     "HUF",
@@ -21,10 +51,16 @@ SUPPORTED_CURRENCIES = [
     "KRW",
     "JPY",
 ]
-CURRENCY_PATTERN = rf"\s*((\d+)(\.\d+)?)\s+({'|'.join(SUPPORTED_CURRENCIES)})"
+
+CURRENCY_PATTERN = (
+    rf"\s*((\d+)(\.\d+)?)\s+("
+    rf"{'|'.join(SUPPORTED_CURRENCIES + list(CURRENCY_MAPPING.keys()))})"
+)
 
 
-@config.telegram_client.on(events.NewMessage(pattern=f".*{CURRENCY_PATTERN}.*"))
+@config.telegram_client.on(
+    events.NewMessage(pattern=re.compile(f".*{CURRENCY_PATTERN}.*", re.IGNORECASE))
+)
 @mark_unread
 async def replace_currency(event):
     async with httpx.AsyncClient() as f:
@@ -33,11 +69,17 @@ async def replace_currency(event):
     currencies = response_json["Valute"]
     groups = re.findall(CURRENCY_PATTERN, event.message.message)
     response = "**Полагаясь на текщий курс валют могу сказать следующее:**\n\n"
+    currency_mapper = []
     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"]
-        response += f"`{val:.2f} {name} = {new_val:.2f} RUB`\n"
+        new_val = val * currencies[name]["Value"] / currencies[name]["Nominal"]
+        val_id = f"{val:.2f} {name}"
+        if val_id not in currency_mapper:
+            response += f"`{val:.2f} {name} = {new_val:.2f} RUB`\n"
+            currency_mapper.append(val_id)
 
     await event.reply(response)
 
diff --git a/src/actions/fun.py b/src/actions/fun.py
index 2058a5983a71ae4ce63679910cae24a8c051ff31..a559db18ee799fd77d89257e0ead8ee0c9c9df77 100644
--- a/src/actions/fun.py
+++ b/src/actions/fun.py
@@ -1,5 +1,6 @@
 import logging
 import random
+import re
 
 from src.config import config
 from src.utils.responses import mark_unread
@@ -7,19 +8,19 @@ from telethon import events
 
 logger = logging.getLogger(__name__)
 swearing = [
-    "(И|и)ди нахуй",
-    "(И|и)ди в хуй",
-    "(П|п)ошел нахуй",
-    "(И|и)ди на хуй",
-    "(П|п)ошел на хуй",
-    "(П|п)ошел в пизду",
-    "(П|п)издуй нахуй",
-    "(П|п)издуй на хуй",
-    "(С|с)ъеби нахуй",
-    "(С|с)ъеби на хуй",
-    "(С|с)оси хуй",
-    "(Х|х)уй соси",
-    "(С|с)осать",
+    "[Ии]ди нахуй",
+    "[Ии]ди в хуй",
+    "[Пп]ошел нахуй",
+    "[Ии]ди на хуй",
+    "[Пп]ошел на хуй",
+    "[Пп]ошел в пизду",
+    "[Пп]издуй нахуй",
+    "[Пп]издуй на хуй",
+    "[Сс]ъеби нахуй",
+    "[Сс]ъеби на хуй",
+    "[Сс]оси хуй",
+    "[Хх]уй соси",
+    "[Сс]осать",
 ]
 
 
@@ -50,7 +51,11 @@ async def blyaficate(event: events.NewMessage.Event):
 
 @config.telegram_client.on(
     events.NewMessage(
-        pattern=rf"^({'|'.join(swearing)})\.?.*", forwards=False, outgoing=False
+        pattern=re.compile(
+            rf"^\s*(@s3rius_san,?\s+)?({'|'.join(swearing)})\.?.*", re.IGNORECASE
+        ),
+        forwards=False,
+        outgoing=False,
     )
 )
 @mark_unread
@@ -84,23 +89,20 @@ async def lenochka_reply(event: events.NewMessage.Event):
     await event.reply(
         random.choice(
             [
-                "Какая же ты агрессивная, Леночка.",
+                "Умерь свой пыл, они всего лишь люди.",
                 "Как обычно, верно подметила.",
                 "Тебе норм вообще, Леночка?",
                 "А что-нибудь поинтереснее не могла?",
                 "Завались, Леночка.",
-                "Паучье чутьё подсказывает мне, что это плохая шутка.",
-                "За такое поведение отправляют в EPAM поломойкой.",
-                "Аккуратнее будь.",
-                "Необучаемая дурочка.",
-                "Вот эти твои приколы уже достали.",
-                "Другого от тебя и не ожидал.",
+                "Дa иди ты нахуй уже, сука.",
+                "Где твои дaмские манеры?" "Аккуратнее будь.",
                 "У меня складывается ощущение, что ты бот.",
+                "Дa-дa-дa, это я уже где-то слышал.",
                 "Пока ребята не видят, может сходим ко мне на сервер?",
                 "Какая же ты смешная.",
-                "Думай прежде чем говорить такое.",
-                "Вспоминай всех богов, что тебе известны и начинай молиться.",
-                "Знаешь, что говорит один бот другому боту? Встретимся в /tmp.",
+                "1101000010100001110100001011111011010001100000011101"
+                "0000101110000010000011010001100001011101000110000011"
+                "110100001011100100101110",
             ]
         )
     )
diff --git a/src/actions/replies.py b/src/actions/replies.py
index 96ddbfce9dd1516987796feaded41ba68f642100..1df60a16a340faf8d69ea04d0230a509d40ff036 100644
--- a/src/actions/replies.py
+++ b/src/actions/replies.py
@@ -1,5 +1,6 @@
 import logging
 import random
+import re
 
 from src.config import config
 from src.utils.responses import mark_unread
@@ -23,7 +24,38 @@ async def welcome(event: events.ChatAction.Event):
         )
 
 
-@config.telegram_client.on(events.NewMessage(pattern=r"^(П|п)ривет\.?", forwards=False))
+@config.telegram_client.on(
+    events.NewMessage(
+        pattern=re.compile(r"^[Пп]ривет\.?", re.IGNORECASE), forwards=False
+    )
+)
 @mark_unread
 async def hello(event):
     await event.respond(random.choice(["Здравствуте!", "Добрый день!", "Приветствую."]))
+
+
+@config.telegram_client.on(events.NewMessage(pattern=r"^\)+\.?$", outgoing=False))
+@mark_unread
+async def smile(event: events.NewMessage.Event):
+    await event.respond(event.message.message)
+
+
+@config.telegram_client.on(
+    events.NewMessage(
+        pattern=re.compile(r"^[Зз]дарова\s+(,\s*)?ебать\.?$", re.IGNORECASE),
+        outgoing=False,
+        forwards=False,
+    )
+)
+@mark_unread
+async def hello_fucker(event: events.NewMessage.Event):
+    await event.respond(
+        random.choice(
+            [
+                "Чего тебе, дружок?",
+                "И что ты хотел?",
+                "Ну, здравствуй.",
+                "И вам не хворать.",
+            ]
+        )
+    )
diff --git a/src/actions/speller.py b/src/actions/speller.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391