We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
[PORT] Remove Slack from the list of channels that support Suggested Actions
> Port this change from botbuilder-dotnet/master branch:
https://github.com/microsoft/botbuilder-dotnet/pull/4177

Fixes #2291 

Removing Slack from the list of channels that do not support suggested actions.


# Changed projects
* Microsoft.Bot.Builder.Dialogs





--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `libraries/botbuilder-dialogs/botbuilder/dialogs/choices/channel.py`
Content:
```
1 # Copyright (c) Microsoft Corporation. All rights reserved.
2 # Licensed under the MIT License.
3 
4 from botbuilder.core import TurnContext
5 from botframework.connector import Channels
6 
7 
8 class Channel:
9     """
10     Methods for determining channel-specific functionality.
11     """
12 
13     @staticmethod
14     def supports_suggested_actions(channel_id: str, button_cnt: int = 100) -> bool:
15         """Determine if a number of Suggested Actions are supported by a Channel.
16 
17         Args:
18             channel_id (str): The Channel to check the if Suggested Actions are supported in.
19             button_cnt (int, optional): Defaults to 100. The number of Suggested Actions to check for the Channel.
20 
21         Returns:
22             bool: True if the Channel supports the button_cnt total Suggested Actions, False if the Channel does not
23              support that number of Suggested Actions.
24         """
25 
26         max_actions = {
27             # https://developers.facebook.com/docs/messenger-platform/send-messages/quick-replies
28             Channels.facebook: 10,
29             Channels.skype: 10,
30             # https://developers.line.biz/en/reference/messaging-api/#items-object
31             Channels.line: 13,
32             # https://dev.kik.com/#/docs/messaging#text-response-object
33             Channels.kik: 20,
34             Channels.telegram: 100,
35             Channels.slack: 100,
36             Channels.emulator: 100,
37             Channels.direct_line: 100,
38             Channels.webchat: 100,
39         }
40         return (
41             button_cnt <= max_actions[channel_id]
42             if channel_id in max_actions
43             else False
44         )
45 
46     @staticmethod
47     def supports_card_actions(channel_id: str, button_cnt: int = 100) -> bool:
48         """Determine if a number of Card Actions are supported by a Channel.
49 
50         Args:
51             channel_id (str): The Channel to check if the Card Actions are supported in.
52             button_cnt (int, optional): Defaults to 100. The number of Card Actions to check for the Channel.
53 
54         Returns:
55             bool: True if the Channel supports the button_cnt total Card Actions, False if the Channel does not support
56              that number of Card Actions.
57         """
58 
59         max_actions = {
60             Channels.facebook: 3,
61             Channels.skype: 3,
62             Channels.ms_teams: 3,
63             Channels.line: 99,
64             Channels.slack: 100,
65             Channels.emulator: 100,
66             Channels.direct_line: 100,
67             Channels.webchat: 100,
68             Channels.cortana: 100,
69         }
70         return (
71             button_cnt <= max_actions[channel_id]
72             if channel_id in max_actions
73             else False
74         )
75 
76     @staticmethod
77     def has_message_feed(channel_id: str) -> bool:
78         """Determine if a Channel has a Message Feed.
79 
80         Args:
81             channel_id (str): The Channel to check for Message Feed.
82 
83         Returns:
84             bool: True if the Channel has a Message Feed, False if it does not.
85         """
86 
87         return not channel_id == Channels.cortana
88 
89     @staticmethod
90     def max_action_title_length(  # pylint: disable=unused-argument
91         channel_id: str,
92     ) -> int:
93         """Maximum length allowed for Action Titles.
94 
95         Args:
96             channel_id (str): The Channel to determine Maximum Action Title Length.
97 
98         Returns:
99             int: The total number of characters allowed for an Action Title on a specific Channel.
100         """
101 
102         return 20
103 
104     @staticmethod
105     def get_channel_id(turn_context: TurnContext) -> str:
106         """Get the Channel Id from the current Activity on the Turn Context.
107 
108         Args:
109             turn_context (TurnContext): The Turn Context to retrieve the Activity's Channel Id from.
110 
111         Returns:
112             str: The Channel Id from the Turn Context's Activity.
113         """
114 
115         if turn_context.activity.channel_id is None:
116             return ""
117 
118         return turn_context.activity.channel_id
119
```
--- 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/libraries/botbuilder-dialogs/botbuilder/dialogs/choices/channel.py b/libraries/botbuilder-dialogs/botbuilder/dialogs/choices/channel.py
--- a/libraries/botbuilder-dialogs/botbuilder/dialogs/choices/channel.py
+++ b/libraries/botbuilder-dialogs/botbuilder/dialogs/choices/channel.py
@@ -32,7 +32,6 @@
             # https://dev.kik.com/#/docs/messaging#text-response-object
             Channels.kik: 20,
             Channels.telegram: 100,
-            Channels.slack: 100,
             Channels.emulator: 100,
             Channels.direct_line: 100,
             Channels.webchat: 100,

{"golden_diff": "diff --git a/libraries/botbuilder-dialogs/botbuilder/dialogs/choices/channel.py b/libraries/botbuilder-dialogs/botbuilder/dialogs/choices/channel.py\n--- a/libraries/botbuilder-dialogs/botbuilder/dialogs/choices/channel.py\n+++ b/libraries/botbuilder-dialogs/botbuilder/dialogs/choices/channel.py\n@@ -32,7 +32,6 @@\n             # https://dev.kik.com/#/docs/messaging#text-response-object\n             Channels.kik: 20,\n             Channels.telegram: 100,\n-            Channels.slack: 100,\n             Channels.emulator: 100,\n             Channels.direct_line: 100,\n             Channels.webchat: 100,\n", "issue": "[PORT] Remove Slack from the list of channels that support Suggested Actions\n> Port this change from botbuilder-dotnet/master branch:\nhttps://github.com/microsoft/botbuilder-dotnet/pull/4177\n\nFixes #2291 \r\n\r\nRemoving Slack from the list of channels that do not support suggested actions.\n\n\r\n# Changed projects\r\n* Microsoft.Bot.Builder.Dialogs\r\n\r\n\r\n\n\n", "before_files": [{"content": "# Copyright (c) Microsoft Corporation. All rights reserved.\n# Licensed under the MIT License.\n\nfrom botbuilder.core import TurnContext\nfrom botframework.connector import Channels\n\n\nclass Channel:\n    \"\"\"\n    Methods for determining channel-specific functionality.\n    \"\"\"\n\n    @staticmethod\n    def supports_suggested_actions(channel_id: str, button_cnt: int = 100) -> bool:\n        \"\"\"Determine if a number of Suggested Actions are supported by a Channel.\n\n        Args:\n            channel_id (str): The Channel to check the if Suggested Actions are supported in.\n            button_cnt (int, optional): Defaults to 100. The number of Suggested Actions to check for the Channel.\n\n        Returns:\n            bool: True if the Channel supports the button_cnt total Suggested Actions, False if the Channel does not\n             support that number of Suggested Actions.\n        \"\"\"\n\n        max_actions = {\n            # https://developers.facebook.com/docs/messenger-platform/send-messages/quick-replies\n            Channels.facebook: 10,\n            Channels.skype: 10,\n            # https://developers.line.biz/en/reference/messaging-api/#items-object\n            Channels.line: 13,\n            # https://dev.kik.com/#/docs/messaging#text-response-object\n            Channels.kik: 20,\n            Channels.telegram: 100,\n            Channels.slack: 100,\n            Channels.emulator: 100,\n            Channels.direct_line: 100,\n            Channels.webchat: 100,\n        }\n        return (\n            button_cnt <= max_actions[channel_id]\n            if channel_id in max_actions\n            else False\n        )\n\n    @staticmethod\n    def supports_card_actions(channel_id: str, button_cnt: int = 100) -> bool:\n        \"\"\"Determine if a number of Card Actions are supported by a Channel.\n\n        Args:\n            channel_id (str): The Channel to check if the Card Actions are supported in.\n            button_cnt (int, optional): Defaults to 100. The number of Card Actions to check for the Channel.\n\n        Returns:\n            bool: True if the Channel supports the button_cnt total Card Actions, False if the Channel does not support\n             that number of Card Actions.\n        \"\"\"\n\n        max_actions = {\n            Channels.facebook: 3,\n            Channels.skype: 3,\n            Channels.ms_teams: 3,\n            Channels.line: 99,\n            Channels.slack: 100,\n            Channels.emulator: 100,\n            Channels.direct_line: 100,\n            Channels.webchat: 100,\n            Channels.cortana: 100,\n        }\n        return (\n            button_cnt <= max_actions[channel_id]\n            if channel_id in max_actions\n            else False\n        )\n\n    @staticmethod\n    def has_message_feed(channel_id: str) -> bool:\n        \"\"\"Determine if a Channel has a Message Feed.\n\n        Args:\n            channel_id (str): The Channel to check for Message Feed.\n\n        Returns:\n            bool: True if the Channel has a Message Feed, False if it does not.\n        \"\"\"\n\n        return not channel_id == Channels.cortana\n\n    @staticmethod\n    def max_action_title_length(  # pylint: disable=unused-argument\n        channel_id: str,\n    ) -> int:\n        \"\"\"Maximum length allowed for Action Titles.\n\n        Args:\n            channel_id (str): The Channel to determine Maximum Action Title Length.\n\n        Returns:\n            int: The total number of characters allowed for an Action Title on a specific Channel.\n        \"\"\"\n\n        return 20\n\n    @staticmethod\n    def get_channel_id(turn_context: TurnContext) -> str:\n        \"\"\"Get the Channel Id from the current Activity on the Turn Context.\n\n        Args:\n            turn_context (TurnContext): The Turn Context to retrieve the Activity's Channel Id from.\n\n        Returns:\n            str: The Channel Id from the Turn Context's Activity.\n        \"\"\"\n\n        if turn_context.activity.channel_id is None:\n            return \"\"\n\n        return turn_context.activity.channel_id\n", "path": "libraries/botbuilder-dialogs/botbuilder/dialogs/choices/channel.py"}], "after_files": [{"content": "# Copyright (c) Microsoft Corporation. All rights reserved.\n# Licensed under the MIT License.\n\nfrom botbuilder.core import TurnContext\nfrom botframework.connector import Channels\n\n\nclass Channel:\n    \"\"\"\n    Methods for determining channel-specific functionality.\n    \"\"\"\n\n    @staticmethod\n    def supports_suggested_actions(channel_id: str, button_cnt: int = 100) -> bool:\n        \"\"\"Determine if a number of Suggested Actions are supported by a Channel.\n\n        Args:\n            channel_id (str): The Channel to check the if Suggested Actions are supported in.\n            button_cnt (int, optional): Defaults to 100. The number of Suggested Actions to check for the Channel.\n\n        Returns:\n            bool: True if the Channel supports the button_cnt total Suggested Actions, False if the Channel does not\n             support that number of Suggested Actions.\n        \"\"\"\n\n        max_actions = {\n            # https://developers.facebook.com/docs/messenger-platform/send-messages/quick-replies\n            Channels.facebook: 10,\n            Channels.skype: 10,\n            # https://developers.line.biz/en/reference/messaging-api/#items-object\n            Channels.line: 13,\n            # https://dev.kik.com/#/docs/messaging#text-response-object\n            Channels.kik: 20,\n            Channels.telegram: 100,\n            Channels.emulator: 100,\n            Channels.direct_line: 100,\n            Channels.webchat: 100,\n        }\n        return (\n            button_cnt <= max_actions[channel_id]\n            if channel_id in max_actions\n            else False\n        )\n\n    @staticmethod\n    def supports_card_actions(channel_id: str, button_cnt: int = 100) -> bool:\n        \"\"\"Determine if a number of Card Actions are supported by a Channel.\n\n        Args:\n            channel_id (str): The Channel to check if the Card Actions are supported in.\n            button_cnt (int, optional): Defaults to 100. The number of Card Actions to check for the Channel.\n\n        Returns:\n            bool: True if the Channel supports the button_cnt total Card Actions, False if the Channel does not support\n             that number of Card Actions.\n        \"\"\"\n\n        max_actions = {\n            Channels.facebook: 3,\n            Channels.skype: 3,\n            Channels.ms_teams: 3,\n            Channels.line: 99,\n            Channels.slack: 100,\n            Channels.emulator: 100,\n            Channels.direct_line: 100,\n            Channels.webchat: 100,\n            Channels.cortana: 100,\n        }\n        return (\n            button_cnt <= max_actions[channel_id]\n            if channel_id in max_actions\n            else False\n        )\n\n    @staticmethod\n    def has_message_feed(channel_id: str) -> bool:\n        \"\"\"Determine if a Channel has a Message Feed.\n\n        Args:\n            channel_id (str): The Channel to check for Message Feed.\n\n        Returns:\n            bool: True if the Channel has a Message Feed, False if it does not.\n        \"\"\"\n\n        return not channel_id == Channels.cortana\n\n    @staticmethod\n    def max_action_title_length(  # pylint: disable=unused-argument\n        channel_id: str,\n    ) -> int:\n        \"\"\"Maximum length allowed for Action Titles.\n\n        Args:\n            channel_id (str): The Channel to determine Maximum Action Title Length.\n\n        Returns:\n            int: The total number of characters allowed for an Action Title on a specific Channel.\n        \"\"\"\n\n        return 20\n\n    @staticmethod\n    def get_channel_id(turn_context: TurnContext) -> str:\n        \"\"\"Get the Channel Id from the current Activity on the Turn Context.\n\n        Args:\n            turn_context (TurnContext): The Turn Context to retrieve the Activity's Channel Id from.\n\n        Returns:\n            str: The Channel Id from the Turn Context's Activity.\n        \"\"\"\n\n        if turn_context.activity.channel_id is None:\n            return \"\"\n\n        return turn_context.activity.channel_id\n", "path": "libraries/botbuilder-dialogs/botbuilder/dialogs/choices/channel.py"}]}