diff --git a/slack_sdk/models/blocks/block_elements.py b/slack_sdk/models/blocks/block_elements.py index 16f94a227..2588cae49 100644 --- a/slack_sdk/models/blocks/block_elements.py +++ b/slack_sdk/models/blocks/block_elements.py @@ -325,7 +325,7 @@ class LinkButtonElement(ButtonElement): def __init__( self, *, - text: str, + text: Union[str, dict, PlainTextObject], url: str, action_id: Optional[str] = None, style: Optional[str] = None, diff --git a/tests/slack_sdk/models/test_elements.py b/tests/slack_sdk/models/test_elements.py index a1205bb6f..413d8ee7d 100644 --- a/tests/slack_sdk/models/test_elements.py +++ b/tests/slack_sdk/models/test_elements.py @@ -26,6 +26,7 @@ Option, InputInteractiveElement, InteractiveElement, + PlainTextObject, ) from . import STRING_3001_CHARS, STRING_301_CHARS @@ -209,6 +210,23 @@ def test_json(self): button.to_dict(), ) + # https://github.com/slackapi/python-slack-sdk/issues/1178 + def test_text_patterns_issue_1178(self): + button = LinkButtonElement( + action_id="test", + text=PlainTextObject(text="button text"), + url="http://slack.com", + ) + self.assertDictEqual( + { + "text": {"text": "button text", "type": "plain_text"}, + "url": "http://slack.com", + "type": "button", + "action_id": button.action_id, + }, + button.to_dict(), + ) + def test_url_length(self): with self.assertRaises(SlackObjectFormationError): LinkButtonElement(text="Button", url=STRING_3001_CHARS).to_dict()