diff --git a/requirements/requirements.base.txt b/requirements/requirements.base.txt
index d23a95b5a25f078d37521cdb4ed0e9fc3a5c4c2f..1e3d88598b0031f64b67a1a9037f192a86404fc8 100644
--- a/requirements/requirements.base.txt
+++ b/requirements/requirements.base.txt
@@ -1,3 +1,4 @@
+autocorrect==2.0.0
 Flask==1.1.2
 httpx==0.13.*
 pydantic==1.5.1
diff --git a/src/actions/speller.py b/src/actions/speller.py
index 2ee762b1eabd815e796e0947817ea9fdfb5c2391..c3b9ef4ee07109eb135c04988939a6feb9d33d7a 100644
--- a/src/actions/speller.py
+++ b/src/actions/speller.py
@@ -3,14 +3,30 @@ from src.utils.responses import mark_unread
 from telethon import events
 
 
+def check_missing_dot(message: str):
+    return not message.endswith((".", "?", "!")) and not message.startswith(".")
+
+
+def check_spell(message: str):
+    return message != config.speller.autocorrect_sentence(message)
+
+
 @config.telegram_client.on(
-    events.NewMessage(
-        pattern=lambda x: not x.endswith(".") and not x.startswith("."),
-        incoming=False,
-        forwards=False,
-    )
+    events.NewMessage(pattern=check_missing_dot, incoming=False, forwards=False,)
 )
 @mark_unread
 async def add_dot(event: events.NewMessage.Event):
     text = event.message.text
     await event.message.edit(f"{text}.")
+
+
+@config.telegram_client.on(
+    events.NewMessage(pattern=check_spell, incoming=False, forwards=False,)
+)
+@mark_unread
+async def fix_misspelling(event: events.NewMessage.Event):
+    text = event.message.text
+    corrected_text = config.speller.autocorrect_sentence(text)
+    if check_missing_dot(corrected_text):
+        corrected_text += "."
+    await event.message.edit(corrected_text)
diff --git a/src/config.py b/src/config.py
index 3ed8fd8f29f0a4ff1443e4c4add5fc9439c5a62e..54722f5c65d79d4f24365f53f4614971c7bb39d7 100644
--- a/src/config.py
+++ b/src/config.py
@@ -1,3 +1,4 @@
+from autocorrect import Speller
 from pydantic import BaseSettings
 from pydantic.fields import Field
 from telethon import TelegramClient
@@ -24,5 +25,7 @@ class Config(BaseSettings):
 
     telegram_client: TelegramClient = None
 
+    speller: Speller = None
+
 
 config = Config()
diff --git a/src/initializator.py b/src/initializator.py
index 9f04cb172cb07b6749fde75a2e590bad1d85dd60..141ff10513c94b0cc940facfd61add5bf5142af3 100644
--- a/src/initializator.py
+++ b/src/initializator.py
@@ -2,6 +2,7 @@ import asyncio
 import logging
 from multiprocessing import Manager, Process
 
+from autocorrect import Speller
 from src.config import config
 from src.server_app import create_web_app
 from telethon import TelegramClient
@@ -39,6 +40,7 @@ def init():
     client.start(
         phone=config.telegram_account_phone, code_callback=get_code_from_web(token)
     )
+    config.speller = Speller("ru")
     config.telegram_client = client
     from src.actions import finish