Repository: slackapi/python-slack-sdk (Python)

Issue:
DateLinks are not rendered as dates
### Description

Rendering `DateLink` objects will produce output not valid for automatic date formatting in Slack.

### What type of issue is this? (place an `x` in one of the `[ ]`)
- [x] bug
- [ ] enhancement (feature request)
- [ ] question
- [ ] documentation related
- [ ] testing related
- [ ] discussion

### Requirements (place an `x` in each of the `[ ]`)
* [x] I've read and understood the [Contributing guidelines](https://github.com/slackapi/python-slackclient/blob/master/.github/contributing.md) and have done my best effort to follow them.
* [x] I've read and agree to the [Code of Conduct](https://slackhq.github.io/code-of-conduct).
* [x] I've searched for any related issues and avoided creating a duplicate issue.

---

### Bug Report

Filling out the following details about bugs will help us solve your issue sooner.

#### Reproducible in:

slackclient version: 2.5.0

python version: 3.8.1

OS version(s): ArchLinux 2020.03.01

#### Steps to reproduce:

1. Include a DateLink object in a markdown text block.

#### Expected result:

The date is rendered in Slack as a date string.

#### Actual result:

The date is rendered as unparsed text, e.g. "<123456789^{date_short}|Fallback>"

#### Attachments:

None.


Discussion:
👋 slackclient **2.6.0rc1** is out. The pre-release version contains fixes for your issue described here. 
https://pypi.org/project/slackclient/2.6.0rc1/

One week later from now, we'll be releasing version 2.6.0 to PyPI.

If you have a chance, could you try the release candidate version out and let us know your feedback if you find something wrong with it? Thank you very much for being patient with this issue.



Patch:
diff --git a/slack/web/classes/objects.py b/slack/web/classes/objects.py
index 0dd871d58..ce5082d01 100644
--- a/slack/web/classes/objects.py
+++ b/slack/web/classes/objects.py
@@ -65,7 +65,7 @@ def __init__(
             link = f"^{link}"
         else:
             link = ""
-        super().__init__(url=f"{epoch}^{date_format}{link}", text=fallback)
+        super().__init__(url=f"!date^{epoch}^{date_format}{link}", text=fallback)
 
 
 class ObjectLink(Link):


Test patch:
diff --git a/tests/web/classes/test_objects.py b/tests/web/classes/test_objects.py
index f928ac6d7..2a14be556 100644
--- a/tests/web/classes/test_objects.py
+++ b/tests/web/classes/test_objects.py
@@ -100,7 +100,9 @@ def test_simple_formation(self):
         datelink = DateLink(
             date=self.epoch, date_format="{date_long}", fallback=f"{self.epoch}"
         )
-        self.assertEqual(f"{datelink}", f"<{self.epoch}^{{date_long}}|{self.epoch}>")
+        self.assertEqual(
+            f"{datelink}", f"<!date^{self.epoch}^{{date_long}}|{self.epoch}>"
+        )
 
     def test_with_url(self):
         datelink = DateLink(
@@ -111,7 +113,7 @@ def test_with_url(self):
         )
         self.assertEqual(
             f"{datelink}",
-            f"<{self.epoch}^{{date_long}}^http://google.com|{self.epoch}>",
+            f"<!date^{self.epoch}^{{date_long}}^http://google.com|{self.epoch}>",
         )
 
 
@@ -386,6 +388,7 @@ def test_label_length(self):
 
     def test_options_length(self):
         with self.assertRaises(SlackObjectFormationError):
-            OptionGroup(
-                label="option_group", options=self.common_options * 34
-            ).to_dict("text")
+            OptionGroup(label="option_group", options=self.common_options * 34).to_dict(
+                "text"
+            )
+