diff --git a/Dockerfiles/test.Dockerfile b/Dockerfiles/test.Dockerfile
index 0374574f87ec2a85ddc24b8d1fe7477f711bcc92..6536daaeb868970cc3e0e1273804e69ad7eacee7 100644
--- a/Dockerfiles/test.Dockerfile
+++ b/Dockerfiles/test.Dockerfile
@@ -13,7 +13,7 @@ COPY --from=docker_linter /bin/hadolint /bin/
 RUN hadolint -v
 # Installing requirements
 COPY requirements/ /reqs
-RUN pip install -r /reqs/requirements.test.txt
+RUN pip install -r /reqs/requirements.dev.txt
 
 # Copying actuall application
 COPY . /app
diff --git a/requirements/requirements.test.txt b/requirements/requirements.dev.txt
similarity index 100%
rename from requirements/requirements.test.txt
rename to requirements/requirements.dev.txt
diff --git a/src/actions/__init__.py b/src/actions/__init__.py
index 147caf4fe4229ba8180a17528bd38c10bd994bb3..5d8aab99aa912cf676eefd333b31b10cad57319d 100644
--- a/src/actions/__init__.py
+++ b/src/actions/__init__.py
@@ -8,4 +8,5 @@ def finish():
     importlib.import_module("src.actions.replies")
     importlib.import_module("src.actions.package_indexes")
     importlib.import_module("src.actions.search_engines")
+    importlib.import_module("src.actions.reminder")
     logging.info("All actions loaded")
diff --git a/src/actions/fun.py b/src/actions/fun.py
index 8becf3ab1c1e4a458fffebab48158355f4f6d2bd..2058a5983a71ae4ce63679910cae24a8c051ff31 100644
--- a/src/actions/fun.py
+++ b/src/actions/fun.py
@@ -37,8 +37,9 @@ async def blyaficate(event: events.NewMessage.Event):
                     ", ебать,",
                     ", нахуй,",
                     ", еб твою мать,",
-                    ", разрази меня гром,",
+                    ", укуси меня пчела,",
                     ", пиздец,",
+                    ", блять,",
                 ]
             )
         else:
@@ -88,18 +89,18 @@ async def lenochka_reply(event: events.NewMessage.Event):
                 "Тебе норм вообще, Леночка?",
                 "А что-нибудь поинтереснее не могла?",
                 "Завались, Леночка.",
-                "В точку, подружка.",
+                "Паучье чутьё подсказывает мне, что это плохая шутка.",
                 "За такое поведение отправляют в EPAM поломойкой.",
                 "Аккуратнее будь.",
                 "Необучаемая дурочка.",
-                "Вот эти твои приколы уже достали",
+                "Вот эти твои приколы уже достали.",
                 "Другого от тебя и не ожидал.",
                 "У меня складывается ощущение, что ты бот.",
                 "Пока ребята не видят, может сходим ко мне на сервер?",
                 "Какая же ты смешная.",
                 "Думай прежде чем говорить такое.",
-                "А что если бы ты задела чьи-нибудь чувства?",
-                "А вот это неожиданно было.",
+                "Вспоминай всех богов, что тебе известны и начинай молиться.",
+                "Знаешь, что говорит один бот другому боту? Встретимся в /tmp.",
             ]
         )
     )
diff --git a/src/actions/reminder.py b/src/actions/reminder.py
new file mode 100644
index 0000000000000000000000000000000000000000..58869657b641ed47f8d888710d8c00d39743a0d7
--- /dev/null
+++ b/src/actions/reminder.py
@@ -0,0 +1,79 @@
+import datetime
+import logging
+
+from src.config import config
+from telethon import events
+
+logger = logging.getLogger(__name__)
+
+FINAL_CAPTION = "\n\n`Напоминание сделано автоматически, но с любовью.`"
+
+date_translation = {
+    "завтра": datetime.timedelta(days=1),
+    "послезавтра": datetime.timedelta(days=2),
+    "": datetime.timedelta(),
+}
+
+
+@config.telegram_client.on(events.NewMessage(pattern=".rh"))
+async def reminder_help(event):
+    with open("./static_messages/reminder_help.txt") as f:
+        contents = f.read()
+    await event.respond(contents)
+
+
+@config.telegram_client.on(
+    events.NewMessage(
+        pattern=r"[Н|н]апомни(\s+мне)?\s*(?P<date>\s+завтра|\s+послезавтра|\d{4})?"
+        r"\s+в\s+(?P<time>\d{2}(:\d{2})?([+|-]\d\d?)?)\s+(?P<action>.+)",
+        forwards=False,
+    )
+)
+async def set_reminder(event: events.NewMessage.Event):
+    groups = event.pattern_match.groupdict()
+    target_time = datetime.datetime.now()
+    action = groups["action"]
+    date = groups["date"] or ""
+    target_time += date_translation[date.strip()]
+    time_with_zone = groups.get("time")
+    time = time_with_zone
+    time_offset = None
+    if "+" in time:
+        time, offset = time.split("+")
+        time_offset = datetime.timedelta(hours=-int(offset))
+    if "-" in time:
+        time, offset = time.split("-")
+        time_offset = datetime.timedelta(hours=int(offset))
+    if ":" in time:
+        hour, minute = time.split(":")
+        target_time = target_time.replace(hour=int(hour), minute=int(minute))
+    else:
+        target_time = target_time.replace(hour=int(time), minute=0)
+    target_time = target_time.replace(second=0, microsecond=0)
+    if time_offset:
+        target_time_delta = (
+            target_time.replace() + time_offset
+        ) - datetime.datetime.utcnow()
+    else:
+        target_time_delta = target_time.replace() - datetime.datetime.now()
+    chat = await event.get_chat()
+    message = event.message
+    username = ""
+    if event.is_group:
+        sender = await message.get_sender()
+        if sender.username:
+            username = f" @{sender.username},"
+        else:
+            username = (
+                f" [{sender.first_name} {sender.last_name}](tg://user?id={sender.id}),"
+            )
+    logger.debug(target_time_delta)
+    if target_time_delta >= datetime.timedelta(0):
+        await event.client.send_message(
+            chat,
+            f"Привет,{username} напоминаю тебе, что ты хотел {action}{FINAL_CAPTION}",
+            schedule=target_time_delta,
+        )
+        await event.reply("Напоминание оставлено!")
+    else:
+        await event.reply("Упущенного не вернуть!")
diff --git a/static_messages/help.txt b/static_messages/help.txt
index 35c29fd472f1e400741546dd32db3f55e78087a3..80783b13f99b83a2763806922297234cd2e6b7fc 100644
--- a/static_messages/help.txt
+++ b/static_messages/help.txt
@@ -12,10 +12,9 @@
 * `.aur` -- для Arch Linux
 * `.brew` -- для MacOs
 
-Также можно быстро поискать картиночки в интенетиках.
-`.i <запрос>` вернет пачку картинок с интернетиков.
-
 Также умею ещё пару забавных штук.
+`.rh` покажет как устанавливать напоминания.
+`.i <запрос>` вернет пачку картинок с интернетиков.
 * `.bl` <любой текст> - заменит все запятые на всякие гадости.
 * `.t` - показать текущее время
 * `@all` -- упомянуть всех в беседе
diff --git a/static_messages/reminder_help.txt b/static_messages/reminder_help.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f8954a3a830ca9b20d26727b420a08bb75067fc5
--- /dev/null
+++ b/static_messages/reminder_help.txt
@@ -0,0 +1,13 @@
+** Небольшая справка, как управлять напоминаниями **
+
+Устанавливаются напоминаня просто и на естественном языке.
+
+Вот несколько примеров как установить напоминания:
+
+* `Напомни в 10:00+04 заварить чай.`
+* `Напомни мне в 10:00+04 заварить чай.`
+* `Напомни завтра в 10:00+04 заварить чай.`
+* `Напомни послезавтра в 10:00+04 заварить чай.`
+
+В приведенных примерах бот напишет вам сообщение в 10 часов утра по Самарскому времени.
+`+04` в этом случае означает смещение по `UTC`.