We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Bug: возможность замьютить самого себя
## Чеклист

- [x] Я поискал поиском по трекеру похожие проблемы, в том числе в закрытых Issues
- [x] Баг стабильно воспроизводится и я знаю как это сделать

## Описание бага

Пользователь технически может замьюить самого себя, после чего не сможет увидеть свои посты и комментарии.
Отмьютить себя пользователь тоже может самостоятельно (это работает в обе стороны).

## Ожидаемый результат

- При вызове мьюта самого себя система показывает шаблон с заглушкой: нельзя мьютить себя.
- Невозможность мьюта и размьюта самого себя.

## Шаги к воспроизведению

1. **Mute**: перейти на URL `vas3k.club/user/%USERNAME%/mute/`, где `%USERNAME%` — псевдоним пользователя (slug) 
2. Следовать мастеру мьюта.
3. **Unmute**: перейти на URL `vas3k.club/user/%USERNAME%/mute/`, где `%USERNAME%` — псевдоним пользователя (slug) 
4. Следовать мастеру мьюта.

Скриншот со страницы шаблона мьюта (продакшн):
![image](https://user-images.githubusercontent.com/94802477/148997272-685359bd-4d61-4f69-9dee-2b6beb6045d3.png)

--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `users/views/muted.py`
Content:
```
1 from django.conf import settings
2 from django.http import HttpResponseForbidden
3 from django.shortcuts import get_object_or_404, render
4 
5 from auth.helpers import auth_required
6 from club.exceptions import AccessDenied
7 from notifications.telegram.users import notify_admin_user_on_mute
8 from users.models.mute import Muted
9 from users.models.user import User
10 
11 
12 @auth_required
13 def toggle_mute(request, user_slug):
14     user_to = get_object_or_404(User, slug=user_slug)
15     if user_to.is_curator or user_to.is_moderator:
16         raise AccessDenied(title="У этого юзера иммунитет от мьюта")
17 
18     total_user_muted_count = Muted.objects.filter(user_from=request.me).count()
19 
20     # show form on GET
21     if request.method != "POST":
22         is_muted = Muted.is_muted(
23             user_from=request.me,
24             user_to=user_to,
25         )
26         if is_muted:
27             return render(request, "users/mute/unmute.html", {
28                 "user": user_to,
29             })
30         else:
31             return render(request, "users/mute/mute.html", {
32                 "user": user_to,
33                 "mutes_left": settings.MAX_MUTE_COUNT - total_user_muted_count,
34             })
35 
36     # else — process POST
37     if total_user_muted_count > settings.MAX_MUTE_COUNT:
38         raise AccessDenied(
39             title="Вы замьютили слишком много людей",
40             message="Рекомендуем притормозить и поговорить с кем-нибудь..."
41         )
42 
43     comment = request.POST.get("comment") or ""
44     mute, is_created = Muted.mute(
45         user_from=request.me,
46         user_to=user_to,
47         comment=comment,
48     )
49 
50     if is_created:
51         # notify admins
52         notify_admin_user_on_mute(
53             user_from=request.me,
54             user_to=user_to,
55             comment=comment,
56         )
57 
58         return render(request, "users/messages/muted.html", {
59             "user": user_to,
60         })
61     else:
62         # unmute this user
63         Muted.unmute(
64             user_from=request.me,
65             user_to=user_to,
66         )
67 
68         return render(request, "users/messages/unmuted.html", {
69             "user": user_to,
70         })
71 
72 
73 @auth_required
74 def muted(request, user_slug):
75     if request.me.slug != user_slug:
76         return HttpResponseForbidden()
77 
78     user = get_object_or_404(User, slug=user_slug)
79     muted_users = Muted.muted_by_user(user)
80 
81     return render(request, "users/mute/index.html", {
82         "user": user,
83         "muted": muted_users,
84     })
85
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/users/views/muted.py b/users/views/muted.py
--- a/users/views/muted.py
+++ b/users/views/muted.py
@@ -15,6 +15,10 @@
     if user_to.is_curator or user_to.is_moderator:
         raise AccessDenied(title="У этого юзера иммунитет от мьюта")
 
+    if user_to == request.me:
+        raise AccessDenied(title='Хорошая попытка, но мьютить себя нельзя. Кожаный мешок, ты прекрасен!',
+                           message='')
+
     total_user_muted_count = Muted.objects.filter(user_from=request.me).count()
 
     # show form on GET

{"golden_diff": "diff --git a/users/views/muted.py b/users/views/muted.py\n--- a/users/views/muted.py\n+++ b/users/views/muted.py\n@@ -15,6 +15,10 @@\n     if user_to.is_curator or user_to.is_moderator:\n         raise AccessDenied(title=\"\u0423 \u044d\u0442\u043e\u0433\u043e \u044e\u0437\u0435\u0440\u0430 \u0438\u043c\u043c\u0443\u043d\u0438\u0442\u0435\u0442 \u043e\u0442 \u043c\u044c\u044e\u0442\u0430\")\n \n+    if user_to == request.me:\n+        raise AccessDenied(title='\u0425\u043e\u0440\u043e\u0448\u0430\u044f \u043f\u043e\u043f\u044b\u0442\u043a\u0430, \u043d\u043e \u043c\u044c\u044e\u0442\u0438\u0442\u044c \u0441\u0435\u0431\u044f \u043d\u0435\u043b\u044c\u0437\u044f. \u041a\u043e\u0436\u0430\u043d\u044b\u0439 \u043c\u0435\u0448\u043e\u043a, \u0442\u044b \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u0435\u043d!',\n+                           message='')\n+\n     total_user_muted_count = Muted.objects.filter(user_from=request.me).count()\n \n     # show form on GET\n", "issue": "Bug: \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u043c\u044c\u044e\u0442\u0438\u0442\u044c \u0441\u0430\u043c\u043e\u0433\u043e \u0441\u0435\u0431\u044f\n## \u0427\u0435\u043a\u043b\u0438\u0441\u0442\r\n\r\n- [x] \u042f \u043f\u043e\u0438\u0441\u043a\u0430\u043b \u043f\u043e\u0438\u0441\u043a\u043e\u043c \u043f\u043e \u0442\u0440\u0435\u043a\u0435\u0440\u0443 \u043f\u043e\u0445\u043e\u0436\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0432 \u0437\u0430\u043a\u0440\u044b\u0442\u044b\u0445 Issues\r\n- [x] \u0411\u0430\u0433 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0438 \u044f \u0437\u043d\u0430\u044e \u043a\u0430\u043a \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c\r\n\r\n## \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0431\u0430\u0433\u0430\r\n\r\n\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438 \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043c\u044c\u044e\u0438\u0442\u044c \u0441\u0430\u043c\u043e\u0433\u043e \u0441\u0435\u0431\u044f, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043d\u0435 \u0441\u043c\u043e\u0436\u0435\u0442 \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0441\u0432\u043e\u0438 \u043f\u043e\u0441\u0442\u044b \u0438 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438.\r\n\u041e\u0442\u043c\u044c\u044e\u0442\u0438\u0442\u044c \u0441\u0435\u0431\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0442\u043e\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e (\u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 \u043e\u0431\u0435 \u0441\u0442\u043e\u0440\u043e\u043d\u044b).\r\n\r\n## \u041e\u0436\u0438\u0434\u0430\u0435\u043c\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\r\n\r\n- \u041f\u0440\u0438 \u0432\u044b\u0437\u043e\u0432\u0435 \u043c\u044c\u044e\u0442\u0430 \u0441\u0430\u043c\u043e\u0433\u043e \u0441\u0435\u0431\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0448\u0430\u0431\u043b\u043e\u043d \u0441 \u0437\u0430\u0433\u043b\u0443\u0448\u043a\u043e\u0439: \u043d\u0435\u043b\u044c\u0437\u044f \u043c\u044c\u044e\u0442\u0438\u0442\u044c \u0441\u0435\u0431\u044f.\r\n- \u041d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043c\u044c\u044e\u0442\u0430 \u0438 \u0440\u0430\u0437\u043c\u044c\u044e\u0442\u0430 \u0441\u0430\u043c\u043e\u0433\u043e \u0441\u0435\u0431\u044f.\r\n\r\n## \u0428\u0430\u0433\u0438 \u043a \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044e\r\n\r\n1. **Mute**: \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043d\u0430 URL `vas3k.club/user/%USERNAME%/mute/`, \u0433\u0434\u0435 `%USERNAME%` \u2014 \u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f (slug) \r\n2. \u0421\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u043c\u0430\u0441\u0442\u0435\u0440\u0443 \u043c\u044c\u044e\u0442\u0430.\r\n3. **Unmute**: \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043d\u0430 URL `vas3k.club/user/%USERNAME%/mute/`, \u0433\u0434\u0435 `%USERNAME%` \u2014 \u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f (slug) \r\n4. \u0421\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u043c\u0430\u0441\u0442\u0435\u0440\u0443 \u043c\u044c\u044e\u0442\u0430.\r\n\r\n\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442 \u0441\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0448\u0430\u0431\u043b\u043e\u043d\u0430 \u043c\u044c\u044e\u0442\u0430 (\u043f\u0440\u043e\u0434\u0430\u043a\u0448\u043d):\r\n![image](https://user-images.githubusercontent.com/94802477/148997272-685359bd-4d61-4f69-9dee-2b6beb6045d3.png)\n", "before_files": [{"content": "from django.conf import settings\nfrom django.http import HttpResponseForbidden\nfrom django.shortcuts import get_object_or_404, render\n\nfrom auth.helpers import auth_required\nfrom club.exceptions import AccessDenied\nfrom notifications.telegram.users import notify_admin_user_on_mute\nfrom users.models.mute import Muted\nfrom users.models.user import User\n\n\n@auth_required\ndef toggle_mute(request, user_slug):\n    user_to = get_object_or_404(User, slug=user_slug)\n    if user_to.is_curator or user_to.is_moderator:\n        raise AccessDenied(title=\"\u0423 \u044d\u0442\u043e\u0433\u043e \u044e\u0437\u0435\u0440\u0430 \u0438\u043c\u043c\u0443\u043d\u0438\u0442\u0435\u0442 \u043e\u0442 \u043c\u044c\u044e\u0442\u0430\")\n\n    total_user_muted_count = Muted.objects.filter(user_from=request.me).count()\n\n    # show form on GET\n    if request.method != \"POST\":\n        is_muted = Muted.is_muted(\n            user_from=request.me,\n            user_to=user_to,\n        )\n        if is_muted:\n            return render(request, \"users/mute/unmute.html\", {\n                \"user\": user_to,\n            })\n        else:\n            return render(request, \"users/mute/mute.html\", {\n                \"user\": user_to,\n                \"mutes_left\": settings.MAX_MUTE_COUNT - total_user_muted_count,\n            })\n\n    # else \u2014 process POST\n    if total_user_muted_count > settings.MAX_MUTE_COUNT:\n        raise AccessDenied(\n            title=\"\u0412\u044b \u0437\u0430\u043c\u044c\u044e\u0442\u0438\u043b\u0438 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e \u043b\u044e\u0434\u0435\u0439\",\n            message=\"\u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c \u043f\u0440\u0438\u0442\u043e\u0440\u043c\u043e\u0437\u0438\u0442\u044c \u0438 \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u0441 \u043a\u0435\u043c-\u043d\u0438\u0431\u0443\u0434\u044c...\"\n        )\n\n    comment = request.POST.get(\"comment\") or \"\"\n    mute, is_created = Muted.mute(\n        user_from=request.me,\n        user_to=user_to,\n        comment=comment,\n    )\n\n    if is_created:\n        # notify admins\n        notify_admin_user_on_mute(\n            user_from=request.me,\n            user_to=user_to,\n            comment=comment,\n        )\n\n        return render(request, \"users/messages/muted.html\", {\n            \"user\": user_to,\n        })\n    else:\n        # unmute this user\n        Muted.unmute(\n            user_from=request.me,\n            user_to=user_to,\n        )\n\n        return render(request, \"users/messages/unmuted.html\", {\n            \"user\": user_to,\n        })\n\n\n@auth_required\ndef muted(request, user_slug):\n    if request.me.slug != user_slug:\n        return HttpResponseForbidden()\n\n    user = get_object_or_404(User, slug=user_slug)\n    muted_users = Muted.muted_by_user(user)\n\n    return render(request, \"users/mute/index.html\", {\n        \"user\": user,\n        \"muted\": muted_users,\n    })\n", "path": "users/views/muted.py"}], "after_files": [{"content": "from django.conf import settings\nfrom django.http import HttpResponseForbidden\nfrom django.shortcuts import get_object_or_404, render\n\nfrom auth.helpers import auth_required\nfrom club.exceptions import AccessDenied\nfrom notifications.telegram.users import notify_admin_user_on_mute\nfrom users.models.mute import Muted\nfrom users.models.user import User\n\n\n@auth_required\ndef toggle_mute(request, user_slug):\n    user_to = get_object_or_404(User, slug=user_slug)\n    if user_to.is_curator or user_to.is_moderator:\n        raise AccessDenied(title=\"\u0423 \u044d\u0442\u043e\u0433\u043e \u044e\u0437\u0435\u0440\u0430 \u0438\u043c\u043c\u0443\u043d\u0438\u0442\u0435\u0442 \u043e\u0442 \u043c\u044c\u044e\u0442\u0430\")\n\n    if user_to == request.me:\n        raise AccessDenied(title='\u0425\u043e\u0440\u043e\u0448\u0430\u044f \u043f\u043e\u043f\u044b\u0442\u043a\u0430, \u043d\u043e \u043c\u044c\u044e\u0442\u0438\u0442\u044c \u0441\u0435\u0431\u044f \u043d\u0435\u043b\u044c\u0437\u044f. \u041a\u043e\u0436\u0430\u043d\u044b\u0439 \u043c\u0435\u0448\u043e\u043a, \u0442\u044b \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u0435\u043d!',\n                           message='')\n\n    total_user_muted_count = Muted.objects.filter(user_from=request.me).count()\n\n    # show form on GET\n    if request.method != \"POST\":\n        is_muted = Muted.is_muted(\n            user_from=request.me,\n            user_to=user_to,\n        )\n        if is_muted:\n            return render(request, \"users/mute/unmute.html\", {\n                \"user\": user_to,\n            })\n        else:\n            return render(request, \"users/mute/mute.html\", {\n                \"user\": user_to,\n                \"mutes_left\": settings.MAX_MUTE_COUNT - total_user_muted_count,\n            })\n\n    # else \u2014 process POST\n    if total_user_muted_count > settings.MAX_MUTE_COUNT:\n        raise AccessDenied(\n            title=\"\u0412\u044b \u0437\u0430\u043c\u044c\u044e\u0442\u0438\u043b\u0438 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e \u043b\u044e\u0434\u0435\u0439\",\n            message=\"\u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c \u043f\u0440\u0438\u0442\u043e\u0440\u043c\u043e\u0437\u0438\u0442\u044c \u0438 \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u0441 \u043a\u0435\u043c-\u043d\u0438\u0431\u0443\u0434\u044c...\"\n        )\n\n    comment = request.POST.get(\"comment\") or \"\"\n    mute, is_created = Muted.mute(\n        user_from=request.me,\n        user_to=user_to,\n        comment=comment,\n    )\n\n    if is_created:\n        # notify admins\n        notify_admin_user_on_mute(\n            user_from=request.me,\n            user_to=user_to,\n            comment=comment,\n        )\n\n        return render(request, \"users/messages/muted.html\", {\n            \"user\": user_to,\n        })\n    else:\n        # unmute this user\n        Muted.unmute(\n            user_from=request.me,\n            user_to=user_to,\n        )\n\n        return render(request, \"users/messages/unmuted.html\", {\n            \"user\": user_to,\n        })\n\n\n@auth_required\ndef muted(request, user_slug):\n    if request.me.slug != user_slug:\n        return HttpResponseForbidden()\n\n    user = get_object_or_404(User, slug=user_slug)\n    muted_users = Muted.muted_by_user(user)\n\n    return render(request, \"users/mute/index.html\", {\n        \"user\": user,\n        \"muted\": muted_users,\n    })\n", "path": "users/views/muted.py"}]}