prompt: We are currently solving the following issue within our repository. Here is the issue text:
  --- BEGIN ISSUE ---
  Make newlines visible in the deleted messages front-end
  The deleted messages front-end currently doesn't display newlines if they're consecutive, i.e., if the lines are otherwise empty (`"\n\n\n\n\n\n\n\n\n"`). This makes it difficult to interpret what actually happened in chat. A good solution to this would be to make newlines character visible using the `↵` character, printed in a light gray color (similar to how IDEs do it).
  
  **before**
  ![2019-10-27_18-30](https://user-images.githubusercontent.com/33516116/67638694-d53a1c80-f8e7-11e9-9971-d022a1d90a17.png)
  
  **proposed after**
  ![2019-10-27_18-29](https://user-images.githubusercontent.com/33516116/67638696-e08d4800-f8e7-11e9-8a7d-acf41e2b1f8a.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: `pydis_site/apps/staff/templatetags/deletedmessage_filters.py`
  Content:
  ```
  1 from datetime import datetime
  2 
  3 from django import template
  4 
  5 register = template.Library()
  6 
  7 
  8 @register.filter
  9 def hex_colour(color: int) -> str:
  10     """Converts an integer representation of a colour to the RGB hex value."""
  11     return f"#{color:0>6X}"
  12 
  13 
  14 @register.filter
  15 def footer_datetime(timestamp: str) -> datetime:
  16     """Takes an embed timestamp and returns a timezone-aware datetime object."""
  17     return datetime.fromisoformat(timestamp)
  18
  ```
  --- 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()
  
  ```
  
golden_diff: diff --git a/pydis_site/apps/staff/templatetags/deletedmessage_filters.py b/pydis_site/apps/staff/templatetags/deletedmessage_filters.py
  --- a/pydis_site/apps/staff/templatetags/deletedmessage_filters.py
  +++ b/pydis_site/apps/staff/templatetags/deletedmessage_filters.py
  @@ -7,11 +7,22 @@
   
   @register.filter
   def hex_colour(color: int) -> str:
  -    """Converts an integer representation of a colour to the RGB hex value."""
  -    return f"#{color:0>6X}"
  +    """
  +    Converts an integer representation of a colour to the RGB hex value.
  +
  +    As we are using a Discord dark theme analogue, black colours are returned as white instead.
  +    """
  +    colour = f"#{color:0>6X}"
  +    return colour if colour != "#000000" else "#FFFFFF"
   
   
   @register.filter
   def footer_datetime(timestamp: str) -> datetime:
       """Takes an embed timestamp and returns a timezone-aware datetime object."""
       return datetime.fromisoformat(timestamp)
  +
  +
  +@register.filter
  +def visible_newlines(text: str) -> str:
  +    """Takes an embed timestamp and returns a timezone-aware datetime object."""
  +    return text.replace("\n", " <span class='has-text-grey'>↵</span><br>")
  
verification_info: {"golden_diff": "diff --git a/pydis_site/apps/staff/templatetags/deletedmessage_filters.py b/pydis_site/apps/staff/templatetags/deletedmessage_filters.py\n--- a/pydis_site/apps/staff/templatetags/deletedmessage_filters.py\n+++ b/pydis_site/apps/staff/templatetags/deletedmessage_filters.py\n@@ -7,11 +7,22 @@\n \n @register.filter\n def hex_colour(color: int) -> str:\n-    \"\"\"Converts an integer representation of a colour to the RGB hex value.\"\"\"\n-    return f\"#{color:0>6X}\"\n+    \"\"\"\n+    Converts an integer representation of a colour to the RGB hex value.\n+\n+    As we are using a Discord dark theme analogue, black colours are returned as white instead.\n+    \"\"\"\n+    colour = f\"#{color:0>6X}\"\n+    return colour if colour != \"#000000\" else \"#FFFFFF\"\n \n \n @register.filter\n def footer_datetime(timestamp: str) -> datetime:\n     \"\"\"Takes an embed timestamp and returns a timezone-aware datetime object.\"\"\"\n     return datetime.fromisoformat(timestamp)\n+\n+\n+@register.filter\n+def visible_newlines(text: str) -> str:\n+    \"\"\"Takes an embed timestamp and returns a timezone-aware datetime object.\"\"\"\n+    return text.replace(\"\\n\", \" <span class='has-text-grey'>\u21b5</span><br>\")\n", "issue": "Make newlines visible in the deleted messages front-end\nThe deleted messages front-end currently doesn't display newlines if they're consecutive, i.e., if the lines are otherwise empty (`\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\"`). This makes it difficult to interpret what actually happened in chat. A good solution to this would be to make newlines character visible using the `\u21b5` character, printed in a light gray color (similar to how IDEs do it).\r\n\r\n**before**\r\n![2019-10-27_18-30](https://user-images.githubusercontent.com/33516116/67638694-d53a1c80-f8e7-11e9-9971-d022a1d90a17.png)\r\n\r\n**proposed after**\r\n![2019-10-27_18-29](https://user-images.githubusercontent.com/33516116/67638696-e08d4800-f8e7-11e9-8a7d-acf41e2b1f8a.png)\r\n\n", "before_files": [{"content": "from datetime import datetime\n\nfrom django import template\n\nregister = template.Library()\n\n\n@register.filter\ndef hex_colour(color: int) -> str:\n    \"\"\"Converts an integer representation of a colour to the RGB hex value.\"\"\"\n    return f\"#{color:0>6X}\"\n\n\n@register.filter\ndef footer_datetime(timestamp: str) -> datetime:\n    \"\"\"Takes an embed timestamp and returns a timezone-aware datetime object.\"\"\"\n    return datetime.fromisoformat(timestamp)\n", "path": "pydis_site/apps/staff/templatetags/deletedmessage_filters.py"}], "after_files": [{"content": "from datetime import datetime\n\nfrom django import template\n\nregister = template.Library()\n\n\n@register.filter\ndef hex_colour(color: int) -> str:\n    \"\"\"\n    Converts an integer representation of a colour to the RGB hex value.\n\n    As we are using a Discord dark theme analogue, black colours are returned as white instead.\n    \"\"\"\n    colour = f\"#{color:0>6X}\"\n    return colour if colour != \"#000000\" else \"#FFFFFF\"\n\n\n@register.filter\ndef footer_datetime(timestamp: str) -> datetime:\n    \"\"\"Takes an embed timestamp and returns a timezone-aware datetime object.\"\"\"\n    return datetime.fromisoformat(timestamp)\n\n\n@register.filter\ndef visible_newlines(text: str) -> str:\n    \"\"\"Takes an embed timestamp and returns a timezone-aware datetime object.\"\"\"\n    return text.replace(\"\\n\", \" <span class='has-text-grey'>\u21b5</span><br>\")\n", "path": "pydis_site/apps/staff/templatetags/deletedmessage_filters.py"}]}