diff --git a/Makefile b/Makefile
index 80b8baaaccc53d73f7e22514835e2ae4d59204af..9332b706d37c46a4094d733c9c79aa3ab1381700 100644
--- a/Makefile
+++ b/Makefile
@@ -12,4 +12,4 @@ clean_test:
 
 _test:
 	pre-commit run -a
-	echo "Python tests coming soon..."
+	pytest
diff --git a/requirements/requirements.test.txt b/requirements/requirements.test.txt
index 2973bde044ef966fbb469fadd30c2cefed81b5aa..ef00d8b858fd55634821695dead29d5a95a48bdf 100644
--- a/requirements/requirements.test.txt
+++ b/requirements/requirements.test.txt
@@ -4,3 +4,5 @@ docker-compose==1.26.0
 flake8==3.8.3
 isort==4.3.21
 pre-commit==2.5.1
+pytest==5.4.3
+pytest-asyncio==0.14.0
diff --git a/src/actions/fun.py b/src/actions/fun.py
index c7298e62008bd4326f0a20821052b9ef1be16149..2446f693604554af6b5a154f1ef402c452d2aed7 100644
--- a/src/actions/fun.py
+++ b/src/actions/fun.py
@@ -25,7 +25,7 @@ swearing = [
 
 @config.telegram_client.on(events.NewMessage(pattern=r"^\.bl (.*)", forwards=False))
 async def blyaficate(event: events.NewMessage.Event):
-    message = event.pattern_match.group(1).strip()
+    message = event.message.lstrip(".bl ").strip()
     response = ""
     for symbol in message:
         if symbol == ",":
@@ -37,11 +37,12 @@ async def blyaficate(event: events.NewMessage.Event):
                     ", нахуй,",
                     ", еб твою мать,",
                     ", разрази меня гром,",
-                    ", ёбнуться,",
+                    ", пиздец,",
                 ]
             )
         else:
             response += symbol
+    response = response.lstrip(",").rstrip(",")
     await event.reply(response)
 
 
diff --git a/tests/__init__.py b/tests/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e745c0da8959a1c9ccfa23aeb08adabc9032fc31
--- /dev/null
+++ b/tests/__init__.py
@@ -0,0 +1,13 @@
+from unittest.mock import MagicMock
+
+
+def patch_client():
+    from src.config import config
+
+    client_mock = MagicMock()
+    print("Updating config")
+    client_mock.on = lambda x: lambda f: f
+    config.telegram_client = client_mock
+
+
+patch_client()
diff --git a/tests/conftest.py b/tests/conftest.py
new file mode 100644
index 0000000000000000000000000000000000000000..f93d08519095372475caf3664c253e111de1ad00
--- /dev/null
+++ b/tests/conftest.py
@@ -0,0 +1,28 @@
+from unittest.mock import MagicMock
+
+
+class NewMessageTestEvent(object):
+    def __init__(self, message: str, forwarded=False):
+        self._msg = message
+        self._fwd = forwarded
+        self._res = None
+
+    async def reply(self, response):
+        self._res = response
+
+    async def respond(self, response):
+        self._res = response
+
+    @property
+    def pattern_match(self):
+        mock = MagicMock()
+        mock.group = MagicMock(return_value=self._msg)
+        return mock
+
+    @property
+    def result(self):
+        return self._res
+
+    @property
+    def message(self):
+        return self._msg
diff --git a/tests/test_fun.py b/tests/test_fun.py
new file mode 100644
index 0000000000000000000000000000000000000000..1d3acd2e584cc77b0cfd5108a8185b429a58c333
--- /dev/null
+++ b/tests/test_fun.py
@@ -0,0 +1,18 @@
+import pytest
+
+from src.actions import fun
+from tests.conftest import NewMessageTestEvent
+
+
+@pytest.mark.asyncio
+async def test_bl_trailing_comma():
+    event_mock = NewMessageTestEvent("test,")
+    await fun.blyaficate(event_mock)
+    assert not event_mock.result.endswith(",")
+
+
+@pytest.mark.asyncio
+async def test_bl_starting_comma():
+    event_mock = NewMessageTestEvent(",test.")
+    await fun.blyaficate(event_mock)
+    assert not event_mock.result.startswith(",")