Repository: slackapi/python-slack-sdk
Pull request #860 (2020-10-24 03:34:46)

[v3] Add memory-cache wrapper for InstallationStore/AsyncInstallationStore
## Summary

This pull request adds optional classes that are useful for improving Slack apps' performance. Using the wrapper classes (in the decorator design pattern) enables Slack apps to reduce queries to datastore.

This PR doesn't change any default behaviors and it just adds optional modules.

### Category (place an `x` in each of the `[ ]`)

- [x] **slack_sdk.oauth** (OAuth)

## Requirements (place an `x` in each `[ ]`)

- [x] I've read and understood the [Contributing Guidelines](https://github.com/slackapi/python-slackclient/blob/main/.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 run `python setup.py validate` after making the changes.



Patch:
diff --git a/.github/ISSUE_TEMPLATE/01_question.md b/.github/ISSUE_TEMPLATE/01_question.md
index 712a4d9..628fb41 100644
--- a/.github/ISSUE_TEMPLATE/01_question.md
+++ b/.github/ISSUE_TEMPLATE/01_question.md
@@ -48,4 +48,4 @@ sw_vers && uname -v # or `ver`
 
 For general questions/issues about Slack API platform or its server-side, could you submit questions at https://my.slack.com/help/requests/new instead. :bow:
 
-Please read the [Contributing guidelines](https://github.com/slackapi/python-slackclient/blob/main/.github/contributing.md) and [Code of Conduct](https://slackhq.github.io/code-of-conduct) before creating this issue or pull request. By submitting, you are agreeing to those rules.
+Please read the [Contributing guidelines](https://github.com/slackapi/python-slack-sdk/blob/main/.github/contributing.md) and [Code of Conduct](https://slackhq.github.io/code-of-conduct) before creating this issue or pull request. By submitting, you are agreeing to those rules.
diff --git a/.github/ISSUE_TEMPLATE/02_enhancement.md b/.github/ISSUE_TEMPLATE/02_enhancement.md
index cc30e08..1c6e567 100644
--- a/.github/ISSUE_TEMPLATE/02_enhancement.md
+++ b/.github/ISSUE_TEMPLATE/02_enhancement.md
@@ -19,4 +19,4 @@ assignees: ""
 
 ### Requirements
 
-Please read the [Contributing guidelines](https://github.com/slackapi/python-slackclient/blob/main/.github/contributing.md) and [Code of Conduct](https://slackhq.github.io/code-of-conduct) before creating this issue or pull request. By submitting, you are agreeing to those rules.
+Please read the [Contributing guidelines](https://github.com/slackapi/python-slack-sdk/blob/main/.github/contributing.md) and [Code of Conduct](https://slackhq.github.io/code-of-conduct) before creating this issue or pull request. By submitting, you are agreeing to those rules.
diff --git a/.github/ISSUE_TEMPLATE/03_document.md b/.github/ISSUE_TEMPLATE/03_document.md
index f77b6f9..a07f7a4 100644
--- a/.github/ISSUE_TEMPLATE/03_document.md
+++ b/.github/ISSUE_TEMPLATE/03_document.md
@@ -14,4 +14,4 @@ assignees: ""
 
 ### Requirements
 
-Please read the [Contributing guidelines](https://github.com/slackapi/python-slackclient/blob/main/.github/contributing.md) and [Code of Conduct](https://slackhq.github.io/code-of-conduct) before creating this issue or pull request. By submitting, you are agreeing to those rules.
+Please read the [Contributing guidelines](https://github.com/slackapi/python-slack-sdk/blob/main/.github/contributing.md) and [Code of Conduct](https://slackhq.github.io/code-of-conduct) before creating this issue or pull request. By submitting, you are agreeing to those rules.
diff --git a/.github/ISSUE_TEMPLATE/04_bug.md b/.github/ISSUE_TEMPLATE/04_bug.md
index ce4f413..89fa4bc 100644
--- a/.github/ISSUE_TEMPLATE/04_bug.md
+++ b/.github/ISSUE_TEMPLATE/04_bug.md
@@ -48,4 +48,4 @@ sw_vers && uname -v # or `ver`
 
 For general questions/issues about Slack API platform or its server-side, could you submit questions at https://my.slack.com/help/requests/new instead. :bow:
 
-Please read the [Contributing guidelines](https://github.com/slackapi/python-slackclient/blob/main/.github/contributing.md) and [Code of Conduct](https://slackhq.github.io/code-of-conduct) before creating this issue or pull request. By submitting, you are agreeing to those rules.
+Please read the [Contributing guidelines](https://github.com/slackapi/python-slack-sdk/blob/main/.github/contributing.md) and [Code of Conduct](https://slackhq.github.io/code-of-conduct) before creating this issue or pull request. By submitting, you are agreeing to those rules.
diff --git a/.github/contributing.md b/.github/contributing.md
index 67ccc5a..686241b 100644
--- a/.github/contributing.md
+++ b/.github/contributing.md
@@ -8,8 +8,8 @@ There are many ways you can contribute! :heart:
 
 ### Bug Reports and Fixes :bug:
 
-- If you find a bug, please search for it in the [Issues](https://github.com/slackapi/python-slackclient/issues), and if it isn't already tracked,
-  [create a new issue](https://github.com/slackapi/python-slackclient/issues/new). Fill out the "Bug Report" section of the issue template. Even if an Issue is closed, feel free to comment and add details, it will still
+- If you find a bug, please search for it in the [Issues](https://github.com/slackapi/python-slack-sdk/issues), and if it isn't already tracked,
+  [create a new issue](https://github.com/slackapi/python-slack-sdk/issues/new). Fill out the "Bug Report" section of the issue template. Even if an Issue is closed, feel free to comment and add details, it will still
   be reviewed.
 - Issues that have already been identified as a bug (note: able to reproduce) will be labelled `bug`.
 - If you'd like to submit a fix for a bug, [send a Pull Request](#creating_a_pull_request) and mention the Issue number.
@@ -17,7 +17,7 @@ There are many ways you can contribute! :heart:
 
 ### New Features :bulb:
 
-- If you'd like to add new functionality to this project, describe the problem you want to solve in a [new Issue](https://github.com/slackapi/python-slackclient/issues/new).
+- If you'd like to add new functionality to this project, describe the problem you want to solve in a [new Issue](https://github.com/slackapi/python-slack-sdk/issues/new).
 - Issues that have been identified as a feature request will be labelled `enhancement`.
 - If you'd like to implement the new feature, please wait for feedback from the project
   maintainers before spending too much time writing the code. In some cases, `enhancement`s may
@@ -29,7 +29,7 @@ There are many ways you can contribute! :heart:
   alternative implementation of something that may have advantages over the way its currently
   done, or you have any other change, we would be happy to hear about it!
 - If its a trivial change, go ahead and [send a Pull Request](#creating_a_pull_request) with the changes you have in mind.
-- If not, [open an Issue](https://github.com/slackapi/python-slackclient/issues/new) to discuss the idea first.
+- If not, [open an Issue](https://github.com/slackapi/python-slack-sdk/issues/new) to discuss the idea first.
 
 If you're new to our project and looking for some way to make your first contribution, look for
 Issues labelled `good first contribution`.
@@ -38,7 +38,7 @@ Issues labelled `good first contribution`.
 
 For your contribution to be accepted:
 
-- [x] You must have signed the [Contributor License Agreement (CLA)](https://cla-assistant.io/slackapi/python-slackclient).
+- [x] You must have signed the [Contributor License Agreement (CLA)](https://cla-assistant.io/slackapi/python-slack-sdk).
 - [x] The test suite must be complete and pass.
 - [x] The changes must be approved by code review.
 - [x] Commits should be atomic and messages must be descriptive. Related issues should be mentioned by Issue number.
diff --git a/.github/maintainers_guide.md b/.github/maintainers_guide.md
index d7a70f1..6bdbc1b 100644
--- a/.github/maintainers_guide.md
+++ b/.github/maintainers_guide.md
@@ -15,7 +15,7 @@ $ brew update
 $ brew install pyenv
 ```
 
-Install necessary Python runtimes for development/testing. You can rely on Travis CI builds for testing with various major versions. https://github.com/slackapi/python-slackclient/blob/main/.travis.yml
+Install necessary Python runtimes for development/testing. You can rely on Travis CI builds for testing with various major versions. https://github.com/slackapi/python-slack-sdk/blob/main/.travis.yml
 
 ```bash
 $ pyenv install -l | grep -v "-e[conda|stackless|pypy]"
@@ -27,7 +27,7 @@ $ pyenv versions
   system
   3.6.10
   3.7.7
-* 3.8.5 (set by /path-to-python-slackclient/.python-version)
+* 3.8.5 (set by /path-to-python-slack-sdk/.python-version)
 
 $ pyenv rehash
 ```
@@ -57,7 +57,7 @@ You can rely on Travis CI builds for running the tests on a variety of Python ru
 
 ### Testing (Integration Tests with Real Slack APIs)
 
-This project also has integration tests that verify the SDK works with the Slack API platform. As a preparation, you need to set [the required env variables](https://github.com/slackapi/python-slackclient/blob/main/integration_tests/env_variable_names.py) properly. You don't need to setup all of them if you just want to run some of the tests. Commonly, `SLACK_SDK_TEST_BOT_TOKEN` and `SLACK_SDK_TEST_USER_TOKEN` are used for running `WebClient` tests.
+This project also has integration tests that verify the SDK works with the Slack API platform. As a preparation, you need to set [the required env variables](https://github.com/slackapi/python-slack-sdk/blob/main/integration_tests/env_variable_names.py) properly. You don't need to setup all of them if you just want to run some of the tests. Commonly, `SLACK_SDK_TEST_BOT_TOKEN` and `SLACK_SDK_TEST_USER_TOKEN` are used for running `WebClient` tests.
 
 ```bash
 python setup.py run_integration_tests # run all
@@ -97,7 +97,7 @@ You can generate the documentation by running `./docs.sh`.
 - Create a GitHub Release. You will select the commit with updated version number (e.g. `version 2.5.0`) to associate with the tag, and name the tag after this version (e.g. `v2.5.0`). This will also serve as a Changelog for the project. Add a description of changes to the Release. Mention Issue and PR #'s and @-mention contributors.
 
 ```markdown
-Refer to [v{version} milestone](https://github.com/slackapi/python-slackclient/milestone/{TODO}?closed=1) to know the complete list of the issues resolved by this release.
+Refer to [v{version} milestone](https://github.com/slackapi/python-slack-sdk/milestone/{TODO}?closed=1) to know the complete list of the issues resolved by this release.
 
 **Updates**
 
@@ -106,7 +106,7 @@ Refer to [v{version} milestone](https://github.com/slackapi/python-slackclient/m
 
 **All Changes**
 
-https://github.com/slackapi/python-slackclient/compare/{the previous release version tag}...{the release version tag}
+https://github.com/slackapi/python-slack-sdk/compare/{the previous release version tag}...{the release version tag}
 ```
 
 3. (Slack Internal) Communicate the release internally
diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md
index 9e3825c..db43ca9 100644
--- a/.github/pull_request_template.md
+++ b/.github/pull_request_template.md
@@ -15,6 +15,6 @@
 
 ## Requirements (place an `x` in each `[ ]`)
 
-- [ ] I've read and understood the [Contributing Guidelines](https://github.com/slackapi/python-slackclient/blob/main/.github/contributing.md) and have done my best effort to follow them.
+- [ ] I've read and understood the [Contributing Guidelines](https://github.com/slackapi/python-slack-sdk/blob/main/.github/contributing.md) and have done my best effort to follow them.
 - [ ] I've read and agree to the [Code of Conduct](https://slackhq.github.io/code-of-conduct).
 - [ ] I've run `python setup.py validate` after making the changes.
diff --git a/README.md b/README.md
index e89b5c7..9d577e1 100755
--- a/README.md
+++ b/README.md
@@ -253,7 +253,7 @@ If you're migrating from slackclient v2.x of slack_sdk to v3.x, Please follow ou
 
 If you're migrating from v1.x of slackclient to v2.x, Please follow our migration guide to ensure your app continues working after updating.
 
-**[Check out the Migration Guide here!](https://github.com/slackapi/python-slackclient/wiki/Migrating-to-2.x)**
+**[Check out the Migration Guide here!](https://github.com/slackapi/python-slack-sdk/wiki/Migrating-to-2.x)**
 
 ### Support
 
@@ -269,10 +269,10 @@ Visit the [Slack Community][slack-community] for getting help using Slack Develo
 [pypi-image]: https://badge.fury.io/py/slack-sdk.svg
 [pypi-url]: https://pypi.org/project/slack-sdk/
 [python-version]: https://img.shields.io/pypi/pyversions/slack-sdk.svg
-[travis-image]: https://travis-ci.org/slackapi/python-slackclient.svg?branch=v3
-[travis-url]: https://travis-ci.org/slackapi/python-slackclient
-[codecov-image]: https://codecov.io/gh/slackapi/python-slackclient/branch/v3/graph/badge.svg
-[codecov-url]: https://codecov.io/gh/slackapi/python-slackclient
+[travis-image]: https://travis-ci.org/slackapi/python-slack-sdk.svg?branch=main
+[travis-url]: https://travis-ci.org/slackapi/python-slack-sdk
+[codecov-image]: https://codecov.io/gh/slackapi/python-slack-sdk/branch/main/graph/badge.svg
+[codecov-url]: https://codecov.io/gh/slackapi/python-slack-sdk
 [contact-image]: https://img.shields.io/badge/contact-support-green.svg
 [contact-url]: https://slack.com/support
 [slackclientv1]: https://github.com/slackapi/python-slackclient/tree/v1
@@ -281,7 +281,7 @@ Visit the [Slack Community][slack-community] for getting help using Slack Develo
 [events-docs]: https://api.slack.com/events-api
 [bolt-python]: https://github.com/slackapi/bolt-python
 [pypi]: https://pypi.org/
-[gh-issues]: https://github.com/slackapi/python-slackclient/issues
+[gh-issues]: https://github.com/slackapi/python-slack-sdk/issues
 [slack-community]: http://slackcommunity.com/
 [files.upload]: https://api.slack.com/methods/files.upload
 [aiohttp]: https://aiohttp.readthedocs.io/
diff --git a/docs-src/_themes/slack/conf.py b/docs-src/_themes/slack/conf.py
index c7f06e4..c00b2e3 100644
--- a/docs-src/_themes/slack/conf.py
+++ b/docs-src/_themes/slack/conf.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 #
-# python-slackclient documentation build configuration file, created by
+# python-slack-sdk documentation build configuration file, created by
 # sphinx-quickstart on Mon Jun 27 17:36:09 2016.
 #
 # This file is execfile()d with the current directory set to its
@@ -146,7 +146,7 @@ highlight_language = "python"
 # The name for this set of Sphinx documents.
 # "<project> v<release> documentation" by default.
 #
-# html_title = u'python-slackclient v1.0.1'
+# html_title = u'python-slack-sdk v1.0.1'
 
 # A shorter title for the navigation bar.    Default is the same as html_title.
 #
@@ -250,7 +250,7 @@ html_context = {
 # html_search_scorer = 'scorer.js'
 
 # Output file base name for HTML help builder.
-htmlhelp_basename = 'python-slackclientdoc'
+htmlhelp_basename = 'python-slack-sdkdoc'
 
 # -- Options for LaTeX output ---------------------------------------------
 
@@ -276,7 +276,7 @@ latex_elements = {
 # (source start file, target name, title,
 #    author, documentclass [howto, manual, or own class]).
 latex_documents = [
-        (master_doc, 'python-slackclient.tex', u'python-slackclient Documentation',
+        (master_doc, 'python-slack-sdk.tex', u'python-slack-sdk Documentation',
          u'Ryan Huber, Jeff Ammons', 'manual'),
 ]
 
@@ -312,7 +312,7 @@ latex_documents = [
 # One entry per manual page. List of tuples
 # (source start file, name, description, authors, manual section).
 man_pages = [
-        (master_doc, 'python-slackclient', u'python-slackclient Documentation',
+        (master_doc, 'python-slack-sdk', u'python-slack-sdk Documentation',
          [author], 1)
 ]
 
@@ -327,8 +327,8 @@ man_pages = [
 # (source start file, target name, title, author,
 #    dir menu entry, description, category)
 texinfo_documents = [
-        (master_doc, 'python-slackclient', u'python-slackclient Documentation',
-         author, 'python-slackclient', 'A basic client for Slack.com, which can optionally connect to the Slack Real Time Messaging (RTM) API.',
+        (master_doc, 'python-slack-sdk', u'python-slack-sdk Documentation',
+         author, 'python-slack-sdk', 'A basic client for Slack.com, which can optionally connect to the Slack Real Time Messaging (RTM) API.',
          'Miscellaneous'),
 ]
 
diff --git a/docs-src/_themes/slack/layout.html b/docs-src/_themes/slack/layout.html
index 868112c..ff68e21 100644
--- a/docs-src/_themes/slack/layout.html
+++ b/docs-src/_themes/slack/layout.html
@@ -111,7 +111,7 @@
             </span>
             <div class="header_nav">
                 <a
-                    href="https://github.com/SlackAPI/python-slackclient"
+                    href="https://github.com/SlackAPI/python-slack-sdk"
                     class="btn header_btn float_right"
                     data-qa="go_to_slack"
                     >Go to GitHub</a
diff --git a/docs-src/_themes/slack/sidebar.html b/docs-src/_themes/slack/sidebar.html
index afc3657..6f46183 100644
--- a/docs-src/_themes/slack/sidebar.html
+++ b/docs-src/_themes/slack/sidebar.html
@@ -3,9 +3,9 @@
 <div id="footer">
 
         <ul id="footer_nav">
-                <li><a href="https://github.com/SlackAPI/python-slackclient/blob/main/LICENSE">License</a></li>
+                <li><a href="https://github.com/SlackAPI/python-slack-sdk/blob/main/LICENSE">License</a></li>
                 <li><a href="https://slackhq.github.io/code-of-conduct">Code of Conduct</a></li>
-                <li><a href="https://github.com/slackapi/python-slackclient/blob/main/.github/contributing.md">Contributing</a></li>
+                <li><a href="https://github.com/slackapi/python-slack-sdk/blob/main/.github/contributing.md">Contributing</a></li>
                 <li><a href="https://docs.google.com/a/slack-corp.com/forms/d/e/1FAIpQLSfzjVoCM7ohBnjWf7eDYQxzti1EPpinsIJQA5RAUBwJKRUQHg/viewform">Contributor License Agreement</a></li>
         </ul>
 
diff --git a/docs-src/index.rst b/docs-src/index.rst
index 981f9f7..ff53028 100644
--- a/docs-src/index.rst
+++ b/docs-src/index.rst
@@ -48,7 +48,7 @@ Of course, you can always pull the source code directly into your project:
 
 .. code-block:: bash
 
-	git clone https://github.com/slackapi/python-slackclient.git
+	git clone https://github.com/slackapi/python-slack-sdk.git
 
 And then, save a few lines of code as ``./test.py``.
 
@@ -57,7 +57,7 @@ And then, save a few lines of code as ``./test.py``.
         # test.py
         import sys
         # Load the local source directly
-        sys.path.insert(1, "./python-slackclient")
+        sys.path.insert(1, "./python-slack-sdk")
         # Enable debug logging
         import logging
         logging.basicConfig(level=logging.DEBUG)
@@ -79,7 +79,7 @@ Getting Help
 
 If you get stuck, we’re here to help. The following are the best ways to get assistance working through your issue:
 
-- `GitHub Issue Tracker <https://github.com/slackapi/python-slackclient/issues>`_ for questions, feature requests, bug reports and general discussion related to this package.
+- `GitHub Issue Tracker <https://github.com/slackapi/python-slack-sdk/issues>`_ for questions, feature requests, bug reports and general discussion related to this package.
 - Visit the `Slack Developer Community <http://slackcommunity.com>`_ for getting help using |product_name| or just generally bond with your fellow Slack developers.
 
 .. include:: metadata.rst
diff --git a/docs-src/metadata.rst b/docs-src/metadata.rst
index 8ed8946..d7f207c 100644
--- a/docs-src/metadata.rst
+++ b/docs-src/metadata.rst
@@ -1,17 +1,17 @@
 .. Site settings
 .. |product_name| replace:: Python Slack SDK
 .. |email| replace:: opensource@slack.com
-.. |repo_name| replace:: python-slackclient
+.. |repo_name| replace:: python-slack-sdk
 .. |github_username| replace:: SlackAPI
 .. |twitter_username| replace:: SlackAPI
 
-.. _Bot Developer Hangout: https://dev4slack.slack.com/archives/sdk-python-slackclient
-.. _Issue Tracker: http://github.com/SlackAPI/python-slackclient/issues
-.. _pull request: http://github.com/SlackAPI/python-slackclient/pulls
-.. _License: https://github.com/SlackAPI/python-slackclient/blob/main/LICENSE
+.. _Bot Developer Hangout: https://dev4slack.slack.com/archives/sdk-python-slack-sdk
+.. _Issue Tracker: http://github.com/SlackAPI/python-slack-sdk/issues
+.. _pull request: http://github.com/SlackAPI/python-slack-sdk/pulls
+.. _License: https://github.com/SlackAPI/python-slack-sdk/blob/main/LICENSE
 .. _Code of Conduct: https://slackhq.github.io/code-of-conduct
-.. _Contributing: https://github.com/slackapi/python-slackclient/blob/main/.github/contributing.md
-.. _contributing guidelines: https://github.com/slackapi/python-slackclient/blob/main/.github/contributing.md
+.. _Contributing: https://github.com/slackapi/python-slack-sdk/blob/main/.github/contributing.md
+.. _contributing guidelines: https://github.com/slackapi/python-slack-sdk/blob/main/.github/contributing.md
 .. _Contributor License Agreement: https://docs.google.com/a/slack-corp.com/forms/d/e/1FAIpQLSfzjVoCM7ohBnjWf7eDYQxzti1EPpinsIJQA5RAUBwJKRUQHg/viewform
 .. _Real Time Messaging (RTM) API: https://api.slack.com/rtm
 .. _Web API: https://api.slack.com/web
diff --git a/docs-src/v3-migration/index.rst b/docs-src/v3-migration/index.rst
index 1710cea..6a24a59 100644
--- a/docs-src/v3-migration/index.rst
+++ b/docs-src/v3-migration/index.rst
@@ -2,6 +2,8 @@
 Migration Guide
 ==============================================
 
+The v2 website is live `here <https://slack.dev/python-slackclient/>`_ just like before. However, the **slackclient** project is in maintenance mode now and this **slack_sdk** project is the successor.
+
 From slackclient 2.x
 *************************************************
 
@@ -54,5 +56,9 @@ The new ``slack_sdk.web.WebClient`` doesn't rely on ``aiohttp`` internally at al
 
 If you're using ``run_async=True`` option, we highly recommend switching to ``AsyncWebClient``. ``AsyncWebClient`` is a straight-forward async HTTP client. You can expect the class properly works in the nature of ``async/await`` provided by the standard ``asyncio`` library.
 
+From slackclient 1.x
+*************************************************
+
+Refer to `the migration guide <https://github.com/slackapi/python-slack-sdk/wiki/Migrating-to-2.x>`_.
 
 .. include:: ../metadata.rst
diff --git a/docs-v2.sh b/docs-v2.sh
index 387ba56..1482247 100755
--- a/docs-v2.sh
+++ b/docs-v2.sh
@@ -1,3 +1,8 @@
 #!/usr/bin/env bash
 
-sphinx-build -E -c ./docs-src-v2/_themes/slack/ -b html docs-src-v2 docs-v2 && touch ./docs-v2/.nojekyll
+sphinx-build -E -c ./docs-src-v2/_themes/slack/ -b html docs-src-v2 docs-v2 \
+  && touch ./docs-v2/.nojekyll \
+  && cd docs-v2/ \
+  && mv _static/* assets/ \
+  && find . -name '*.html' | xargs sed -i '' 's/_static/assets/'g \
+  && cd -
diff --git a/docs-v2/about.html b/docs-v2/about.html
index 061d53f..ec48bab 100644
--- a/docs-v2/about.html
+++ b/docs-v2/about.html
@@ -38,17 +38,17 @@
     />
     <link
       rel="stylesheet"
-      href="./_static/default.css"
+      href="./assets/default.css"
       type="text/css"
     />
     <link
       rel="stylesheet"
-      href="./_static/pygments.css"
+      href="./assets/pygments.css"
       type="text/css"
     />
     <link
       rel="stylesheet"
-      href="./_static/docs.css"
+      href="./assets/docs.css"
       type="text/css"
     />
     <link
@@ -279,4 +279,4 @@
     </script>
     <script async src="https://www.google-analytics.com/analytics.js"></script>
   </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/docs-v2/_static/basic.css b/docs-v2/assets/basic.css
similarity index 100%
rename from docs-v2/_static/basic.css
rename to docs-v2/assets/basic.css
diff --git a/docs-v2/_static/classic.css b/docs-v2/assets/classic.css
similarity index 100%
rename from docs-v2/_static/classic.css
rename to docs-v2/assets/classic.css
diff --git a/docs-v2/_static/default.css b/docs-v2/assets/default.css
similarity index 100%
rename from docs-v2/_static/default.css
rename to docs-v2/assets/default.css
diff --git a/docs-v2/_static/docs.css b/docs-v2/assets/docs.css
similarity index 100%
rename from docs-v2/_static/docs.css
rename to docs-v2/assets/docs.css
diff --git a/docs-v2/_static/doctools.js b/docs-v2/assets/doctools.js
similarity index 100%
rename from docs-v2/_static/doctools.js
rename to docs-v2/assets/doctools.js
diff --git a/docs-v2/_static/documentation_options.js b/docs-v2/assets/documentation_options.js
similarity index 100%
rename from docs-v2/_static/documentation_options.js
rename to docs-v2/assets/documentation_options.js
diff --git a/docs-v2/_static/file.png b/docs-v2/assets/file.png
similarity index 100%
rename from docs-v2/_static/file.png
rename to docs-v2/assets/file.png
diff --git a/docs-v2/_static/jquery-3.2.1.js b/docs-v2/assets/jquery-3.2.1.js
similarity index 100%
rename from docs-v2/_static/jquery-3.2.1.js
rename to docs-v2/assets/jquery-3.2.1.js
diff --git a/docs-v2/_static/jquery-3.4.1.js b/docs-v2/assets/jquery-3.4.1.js
similarity index 100%
rename from docs-v2/_static/jquery-3.4.1.js
rename to docs-v2/assets/jquery-3.4.1.js
diff --git a/docs-v2/_static/jquery-3.5.1.js b/docs-v2/assets/jquery-3.5.1.js
similarity index 100%
rename from docs-v2/_static/jquery-3.5.1.js
rename to docs-v2/assets/jquery-3.5.1.js
diff --git a/docs-v2/_static/jquery.js b/docs-v2/assets/jquery.js
similarity index 100%
rename from docs-v2/_static/jquery.js
rename to docs-v2/assets/jquery.js
diff --git a/docs-v2/_static/language_data.js b/docs-v2/assets/language_data.js
similarity index 100%
rename from docs-v2/_static/language_data.js
rename to docs-v2/assets/language_data.js
diff --git a/docs-v2/_static/minus.png b/docs-v2/assets/minus.png
similarity index 100%
rename from docs-v2/_static/minus.png
rename to docs-v2/assets/minus.png
diff --git a/docs-v2/_static/plus.png b/docs-v2/assets/plus.png
similarity index 100%
rename from docs-v2/_static/plus.png
rename to docs-v2/assets/plus.png
diff --git a/docs-v2/_static/pygments.css b/docs-v2/assets/pygments.css
similarity index 100%
rename from docs-v2/_static/pygments.css
rename to docs-v2/assets/pygments.css
diff --git a/docs-v2/_static/searchtools.js b/docs-v2/assets/searchtools.js
similarity index 100%
rename from docs-v2/_static/searchtools.js
rename to docs-v2/assets/searchtools.js
diff --git a/docs-v2/_static/sidebar.js b/docs-v2/assets/sidebar.js
similarity index 100%
rename from docs-v2/_static/sidebar.js
rename to docs-v2/assets/sidebar.js
diff --git a/docs-v2/_static/underscore-1.3.1.js b/docs-v2/assets/underscore-1.3.1.js
similarity index 100%
rename from docs-v2/_static/underscore-1.3.1.js
rename to docs-v2/assets/underscore-1.3.1.js
diff --git a/docs-v2/_static/underscore.js b/docs-v2/assets/underscore.js
similarity index 100%
rename from docs-v2/_static/underscore.js
rename to docs-v2/assets/underscore.js
diff --git a/docs-v2/auth.html b/docs-v2/auth.html
index f742b25..57bfec1 100644
--- a/docs-v2/auth.html
+++ b/docs-v2/auth.html
@@ -38,17 +38,17 @@
     />
     <link
       rel="stylesheet"
-      href="./_static/default.css"
+      href="./assets/default.css"
       type="text/css"
     />
     <link
       rel="stylesheet"
-      href="./_static/pygments.css"
+      href="./assets/pygments.css"
       type="text/css"
     />
     <link
       rel="stylesheet"
-      href="./_static/docs.css"
+      href="./assets/docs.css"
       type="text/css"
     />
     <link
@@ -374,4 +374,4 @@ your workspace for changes to take effect.</p>
     </script>
     <script async src="https://www.google-analytics.com/analytics.js"></script>
   </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/docs-v2/basic_usage.html b/docs-v2/basic_usage.html
index 6a75c31..ec20b58 100644
--- a/docs-v2/basic_usage.html
+++ b/docs-v2/basic_usage.html
@@ -38,17 +38,17 @@
     />
     <link
       rel="stylesheet"
-      href="./_static/default.css"
+      href="./assets/default.css"
       type="text/css"
     />
     <link
       rel="stylesheet"
-      href="./_static/pygments.css"
+      href="./assets/pygments.css"
       type="text/css"
     />
     <link
       rel="stylesheet"
-      href="./_static/docs.css"
+      href="./assets/docs.css"
       type="text/css"
     />
     <link
@@ -683,4 +683,4 @@ joined one by accident. This is how you leave a channel.</p>
     </script>
     <script async src="https://www.google-analytics.com/analytics.js"></script>
   </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/docs-v2/changelog.html b/docs-v2/changelog.html
index 17107ad..589b119 100644
--- a/docs-v2/changelog.html
+++ b/docs-v2/changelog.html
@@ -38,17 +38,17 @@
     />
     <link
       rel="stylesheet"
-      href="./_static/default.css"
+      href="./assets/default.css"
       type="text/css"
     />
     <link
       rel="stylesheet"
-      href="./_static/pygments.css"
+      href="./assets/pygments.css"
       type="text/css"
     />
     <link
       rel="stylesheet"
-      href="./_static/docs.css"
+      href="./assets/docs.css"
       type="text/css"
     />
     <link
@@ -736,4 +736,4 @@ This release would not have been possible without the support of our community.
     </script>
     <script async src="https://www.google-analytics.com/analytics.js"></script>
   </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/docs-v2/conversations.html b/docs-v2/conversations.html
index dc695e6..7be8e70 100644
--- a/docs-v2/conversations.html
+++ b/docs-v2/conversations.html
@@ -38,17 +38,17 @@
     />
     <link
       rel="stylesheet"
-      href="./_static/default.css"
+      href="./assets/default.css"
       type="text/css"
     />
     <link
       rel="stylesheet"
-      href="./_static/pygments.css"
+      href="./assets/pygments.css"
       type="text/css"
     />
     <link
       rel="stylesheet"
-      href="./_static/docs.css"
+      href="./assets/docs.css"
       type="text/css"
     />
     <link
@@ -373,4 +373,4 @@
     </script>
     <script async src="https://www.google-analytics.com/analytics.js"></script>
   </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/docs-v2/faq.html b/docs-v2/faq.html
index ce11adf..8d6fe36 100644
--- a/docs-v2/faq.html
+++ b/docs-v2/faq.html
@@ -38,17 +38,17 @@
     />
     <link
       rel="stylesheet"
-      href="./_static/default.css"
+      href="./assets/default.css"
       type="text/css"
     />
     <link
       rel="stylesheet"
-      href="./_static/pygments.css"
+      href="./assets/pygments.css"
       type="text/css"
     />
     <link
       rel="stylesheet"
-      href="./_static/docs.css"
+      href="./assets/docs.css"
       type="text/css"
     />
     <link
@@ -332,4 +332,4 @@ the changelog in <code class="docutils literal notranslate"><span class="pre">ch
     </script>
     <script async src="https://www.google-analytics.com/analytics.js"></script>
   </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/docs-v2/genindex.html b/docs-v2/genindex.html
index 2577b0a..7ef23bf 100644
--- a/docs-v2/genindex.html
+++ b/docs-v2/genindex.html
@@ -38,17 +38,17 @@
     />
     <link
       rel="stylesheet"
-      href="./_static/default.css"
+      href="./assets/default.css"
       type="text/css"
     />
     <link
       rel="stylesheet"
-      href="./_static/pygments.css"
+      href="./assets/pygments.css"
       type="text/css"
     />
     <link
       rel="stylesheet"
-      href="./_static/docs.css"
+      href="./assets/docs.css"
       type="text/css"
     />
     <link
@@ -271,4 +271,4 @@
     </script>
     <script async src="https://www.google-analytics.com/analytics.js"></script>
   </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/docs-v2/index.html b/docs-v2/index.html
index eec2e30..9c5aed1 100644
--- a/docs-v2/index.html
+++ b/docs-v2/index.html
@@ -38,17 +38,17 @@
     />
     <link
       rel="stylesheet"
-      href="./_static/default.css"
+      href="./assets/default.css"
       type="text/css"
     />
     <link
       rel="stylesheet"
-      href="./_static/pygments.css"
+      href="./assets/pygments.css"
       type="text/css"
     />
     <link
       rel="stylesheet"
-      href="./_static/docs.css"
+      href="./assets/docs.css"
       type="text/css"
     />
     <link
@@ -324,4 +324,4 @@ consider using v1 of the SDK.</p>
     </script>
     <script async src="https://www.google-analytics.com/analytics.js"></script>
   </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/docs-v2/metadata.html b/docs-v2/metadata.html
index cfb023a..0104ed5 100644
--- a/docs-v2/metadata.html
+++ b/docs-v2/metadata.html
@@ -38,17 +38,17 @@
     />
     <link
       rel="stylesheet"
-      href="./_static/default.css"
+      href="./assets/default.css"
       type="text/css"
     />
     <link
       rel="stylesheet"
-      href="./_static/pygments.css"
+      href="./assets/pygments.css"
       type="text/css"
     />
     <link
       rel="stylesheet"
-      href="./_static/docs.css"
+      href="./assets/docs.css"
       type="text/css"
     />
     <link
@@ -265,4 +265,4 @@
     </script>
     <script async src="https://www.google-analytics.com/analytics.js"></script>
   </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/docs-v2/real_time_messaging.html b/docs-v2/real_time_messaging.html
index 0b496c3..aec6d5b 100644
--- a/docs-v2/real_time_messaging.html
+++ b/docs-v2/real_time_messaging.html
@@ -38,17 +38,17 @@
     />
     <link
       rel="stylesheet"
-      href="./_static/default.css"
+      href="./assets/default.css"
       type="text/css"
     />
     <link
       rel="stylesheet"
-      href="./_static/pygments.css"
+      href="./assets/pygments.css"
       type="text/css"
     />
     <link
       rel="stylesheet"
-      href="./_static/docs.css"
+      href="./assets/docs.css"
       type="text/css"
     />
     <link
@@ -352,4 +352,4 @@ and it supports most of the event types in the RTM API. If you’d like to use t
     </script>
     <script async src="https://www.google-analytics.com/analytics.js"></script>
   </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/docs-v2/search.html b/docs-v2/search.html
index 489eae1..25634a3 100644
--- a/docs-v2/search.html
+++ b/docs-v2/search.html
@@ -38,17 +38,17 @@
     />
     <link
       rel="stylesheet"
-      href="./_static/default.css"
+      href="./assets/default.css"
       type="text/css"
     />
     <link
       rel="stylesheet"
-      href="./_static/pygments.css"
+      href="./assets/pygments.css"
       type="text/css"
     />
     <link
       rel="stylesheet"
-      href="./_static/docs.css"
+      href="./assets/docs.css"
       type="text/css"
     />
     <link
@@ -285,4 +285,4 @@
     </script>
     <script async src="https://www.google-analytics.com/analytics.js"></script>
   </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/docs.sh b/docs.sh
index 3272cd1..1d9dd2f 100755
--- a/docs.sh
+++ b/docs.sh
@@ -1,3 +1,8 @@
 #!/usr/bin/env bash
 
-sphinx-build -E -c ./docs-src/_themes/slack/ -b html docs-src docs && touch ./docs/.nojekyll
+sphinx-build -E -c ./docs-src/_themes/slack/ -b html docs-src docs \
+  && touch ./docs/.nojekyll \
+  && cd docs/ \
+  && mv _static/* assets/ \
+  && find . -name '*.html' | xargs sed -i '' 's/_static/assets/'g \
+  && cd -
\ No newline at end of file
diff --git a/docs/about.html b/docs/about.html
index e7e5050..5e1aa61 100644
--- a/docs/about.html
+++ b/docs/about.html
@@ -38,17 +38,17 @@
         />
         <link
             rel="stylesheet"
-            href="./_static/default.css"
+            href="./assets/default.css"
             type="text/css"
         />
         <link
             rel="stylesheet"
-            href="./_static/pygments.css"
+            href="./assets/pygments.css"
             type="text/css"
         />
         <link
             rel="stylesheet"
-            href="./_static/docs.css"
+            href="./assets/docs.css"
             type="text/css"
         />
         <link
@@ -99,7 +99,7 @@
             </span>
             <div class="header_nav">
                 <a
-                    href="https://github.com/SlackAPI/python-slackclient"
+                    href="https://github.com/SlackAPI/python-slack-sdk"
                     class="btn header_btn float_right"
                     data-qa="go_to_slack"
                     >Go to GitHub</a
@@ -117,6 +117,7 @@
 <li class="toctree-l1"><a class="reference internal" href="index.html">Python Slack SDK</a></li>
 <li class="toctree-l1"><a class="reference internal" href="v3-migration/index.html">Migration Guide</a><ul>
 <li class="toctree-l2"><a class="reference internal" href="v3-migration/index.html#from-slackclient-2-x">From slackclient 2.x</a></li>
+<li class="toctree-l2"><a class="reference internal" href="v3-migration/index.html#from-slackclient-1-x">From slackclient 1.x</a></li>
 </ul>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="installation/index.html">Installation</a><ul>
@@ -170,9 +171,9 @@
 <div id="footer">
 
         <ul id="footer_nav">
-                <li><a href="https://github.com/SlackAPI/python-slackclient/blob/main/LICENSE">License</a></li>
+                <li><a href="https://github.com/SlackAPI/python-slack-sdk/blob/main/LICENSE">License</a></li>
                 <li><a href="https://slackhq.github.io/code-of-conduct">Code of Conduct</a></li>
-                <li><a href="https://github.com/slackapi/python-slackclient/blob/main/.github/contributing.md">Contributing</a></li>
+                <li><a href="https://github.com/slackapi/python-slack-sdk/blob/main/.github/contributing.md">Contributing</a></li>
                 <li><a href="https://docs.google.com/a/slack-corp.com/forms/d/e/1FAIpQLSfzjVoCM7ohBnjWf7eDYQxzti1EPpinsIJQA5RAUBwJKRUQHg/viewform">Contributor License Agreement</a></li>
         </ul>
 
@@ -195,9 +196,9 @@
 <p>Access the Slack Platform from your Python app. Python Slack SDK lets you build on the Slack Web APIs pythonically.</p>
 <p>Python Slack SDK is proudly maintained with 💖 by the Slack Developer Tools team</p>
 <ul class="simple">
-<li><p><a class="reference external" href="https://github.com/SlackAPI/python-slackclient/blob/main/LICENSE">License</a></p></li>
+<li><p><a class="reference external" href="https://github.com/SlackAPI/python-slack-sdk/blob/main/LICENSE">License</a></p></li>
 <li><p><a class="reference external" href="https://slackhq.github.io/code-of-conduct">Code of Conduct</a></p></li>
-<li><p><a class="reference external" href="https://github.com/slackapi/python-slackclient/blob/main/.github/contributing.md">Contributing</a></p></li>
+<li><p><a class="reference external" href="https://github.com/slackapi/python-slack-sdk/blob/main/.github/contributing.md">Contributing</a></p></li>
 <li><p><a class="reference external" href="https://docs.google.com/a/slack-corp.com/forms/d/e/1FAIpQLSfzjVoCM7ohBnjWf7eDYQxzti1EPpinsIJQA5RAUBwJKRUQHg/viewform">Contributor License Agreement</a></p></li>
 </ul>
 </div>
@@ -229,4 +230,4 @@
         </script>
         <script async src="https://www.google-analytics.com/analytics.js"></script>
     </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/docs/_static/basic.css b/docs/assets/basic.css
similarity index 100%
rename from docs/_static/basic.css
rename to docs/assets/basic.css
diff --git a/docs/_static/classic.css b/docs/assets/classic.css
similarity index 100%
rename from docs/_static/classic.css
rename to docs/assets/classic.css
diff --git a/docs/_static/default.css b/docs/assets/default.css
similarity index 100%
rename from docs/_static/default.css
rename to docs/assets/default.css
diff --git a/docs/_static/docs.css b/docs/assets/docs.css
similarity index 100%
rename from docs/_static/docs.css
rename to docs/assets/docs.css
diff --git a/docs/_static/doctools.js b/docs/assets/doctools.js
similarity index 100%
rename from docs/_static/doctools.js
rename to docs/assets/doctools.js
diff --git a/docs/_static/documentation_options.js b/docs/assets/documentation_options.js
similarity index 100%
rename from docs/_static/documentation_options.js
rename to docs/assets/documentation_options.js
diff --git a/docs/_static/file.png b/docs/assets/file.png
similarity index 100%
rename from docs/_static/file.png
rename to docs/assets/file.png
diff --git a/docs/_static/jquery-3.5.1.js b/docs/assets/jquery-3.5.1.js
similarity index 100%
rename from docs/_static/jquery-3.5.1.js
rename to docs/assets/jquery-3.5.1.js
diff --git a/docs/_static/jquery.js b/docs/assets/jquery.js
similarity index 100%
rename from docs/_static/jquery.js
rename to docs/assets/jquery.js
diff --git a/docs/_static/language_data.js b/docs/assets/language_data.js
similarity index 100%
rename from docs/_static/language_data.js
rename to docs/assets/language_data.js
diff --git a/docs/_static/minus.png b/docs/assets/minus.png
similarity index 100%
rename from docs/_static/minus.png
rename to docs/assets/minus.png
diff --git a/docs/_static/plus.png b/docs/assets/plus.png
similarity index 100%
rename from docs/_static/plus.png
rename to docs/assets/plus.png
diff --git a/docs/_static/pygments.css b/docs/assets/pygments.css
similarity index 100%
rename from docs/_static/pygments.css
rename to docs/assets/pygments.css
diff --git a/docs/_static/searchtools.js b/docs/assets/searchtools.js
similarity index 100%
rename from docs/_static/searchtools.js
rename to docs/assets/searchtools.js
diff --git a/docs/_static/sidebar.js b/docs/assets/sidebar.js
similarity index 100%
rename from docs/_static/sidebar.js
rename to docs/assets/sidebar.js
diff --git a/docs/_static/underscore-1.3.1.js b/docs/assets/underscore-1.3.1.js
similarity index 100%
rename from docs/_static/underscore-1.3.1.js
rename to docs/assets/underscore-1.3.1.js
diff --git a/docs/_static/underscore.js b/docs/assets/underscore.js
similarity index 100%
rename from docs/_static/underscore.js
rename to docs/assets/underscore.js
diff --git a/docs/faq.html b/docs/faq.html
index 56cf7e0..180b0cb 100644
--- a/docs/faq.html
+++ b/docs/faq.html
@@ -38,17 +38,17 @@
         />
         <link
             rel="stylesheet"
-            href="./_static/default.css"
+            href="./assets/default.css"
             type="text/css"
         />
         <link
             rel="stylesheet"
-            href="./_static/pygments.css"
+            href="./assets/pygments.css"
             type="text/css"
         />
         <link
             rel="stylesheet"
-            href="./_static/docs.css"
+            href="./assets/docs.css"
             type="text/css"
         />
         <link
@@ -99,7 +99,7 @@
             </span>
             <div class="header_nav">
                 <a
-                    href="https://github.com/SlackAPI/python-slackclient"
+                    href="https://github.com/SlackAPI/python-slack-sdk"
                     class="btn header_btn float_right"
                     data-qa="go_to_slack"
                     >Go to GitHub</a
@@ -117,6 +117,7 @@
 <li class="toctree-l1"><a class="reference internal" href="index.html">Python Slack SDK</a></li>
 <li class="toctree-l1"><a class="reference internal" href="v3-migration/index.html">Migration Guide</a><ul>
 <li class="toctree-l2"><a class="reference internal" href="v3-migration/index.html#from-slackclient-2-x">From slackclient 2.x</a></li>
+<li class="toctree-l2"><a class="reference internal" href="v3-migration/index.html#from-slackclient-1-x">From slackclient 1.x</a></li>
 </ul>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="installation/index.html">Installation</a><ul>
@@ -170,9 +171,9 @@
 <div id="footer">
 
         <ul id="footer_nav">
-                <li><a href="https://github.com/SlackAPI/python-slackclient/blob/main/LICENSE">License</a></li>
+                <li><a href="https://github.com/SlackAPI/python-slack-sdk/blob/main/LICENSE">License</a></li>
                 <li><a href="https://slackhq.github.io/code-of-conduct">Code of Conduct</a></li>
-                <li><a href="https://github.com/slackapi/python-slackclient/blob/main/.github/contributing.md">Contributing</a></li>
+                <li><a href="https://github.com/slackapi/python-slack-sdk/blob/main/.github/contributing.md">Contributing</a></li>
                 <li><a href="https://docs.google.com/a/slack-corp.com/forms/d/e/1FAIpQLSfzjVoCM7ohBnjWf7eDYQxzti1EPpinsIJQA5RAUBwJKRUQHg/viewform">Contributor License Agreement</a></li>
         </ul>
 
@@ -219,15 +220,15 @@ pip install <span class="s2">&quot;slack_sdk&gt;=3.0&quot;</span>
 </div>
 <div class="section" id="bug-report">
 <h2>Bug Report<a class="headerlink" href="#bug-report" title="Permalink to this headline">¶</a></h2>
-<p>That’s great! Thank you. Let us know on the <a class="reference external" href="http://github.com/SlackAPI/python-slackclient/issues">Issue Tracker</a>. If you’re feeling particularly ambitious, why not submit a <a class="reference external" href="http://github.com/SlackAPI/python-slackclient/pulls">pull request</a> with a bug fix?</p>
+<p>That’s great! Thank you. Let us know on the <a class="reference external" href="http://github.com/SlackAPI/python-slack-sdk/issues">Issue Tracker</a>. If you’re feeling particularly ambitious, why not submit a <a class="reference external" href="http://github.com/SlackAPI/python-slack-sdk/pulls">pull request</a> with a bug fix?</p>
 </div>
 <div class="section" id="feature-requests">
 <h2>Feature Requests<a class="headerlink" href="#feature-requests" title="Permalink to this headline">¶</a></h2>
-<p>There’s always something more that could be added! You can let us know in the <a class="reference external" href="http://github.com/SlackAPI/python-slackclient/issues">Issue Tracker</a> to start a discussion around the proposed feature, that’s a good start. If you’re feeling particularly ambitious, why not write the feature yourself, and submit a <a class="reference external" href="http://github.com/SlackAPI/python-slackclient/pulls">pull request</a>! We love feedback and we love help and we don’t bite. Much.</p>
+<p>There’s always something more that could be added! You can let us know in the <a class="reference external" href="http://github.com/SlackAPI/python-slack-sdk/issues">Issue Tracker</a> to start a discussion around the proposed feature, that’s a good start. If you’re feeling particularly ambitious, why not write the feature yourself, and submit a <a class="reference external" href="http://github.com/SlackAPI/python-slack-sdk/pulls">pull request</a>! We love feedback and we love help and we don’t bite. Much.</p>
 </div>
 <div class="section" id="contributions">
 <h2>Contributions<a class="headerlink" href="#contributions" title="Permalink to this headline">¶</a></h2>
-<p>What an excellent question. First of all, please have a look at our general <a class="reference external" href="https://github.com/slackapi/python-slackclient/blob/main/.github/contributing.md">contributing guidelines</a>.</p>
+<p>What an excellent question. First of all, please have a look at our general <a class="reference external" href="https://github.com/slackapi/python-slack-sdk/blob/main/.github/contributing.md">contributing guidelines</a>.</p>
 <p>All done? Great! While we’re super excited to incorporate your new feature, there are a couple of things we want to make sure you’ve given thought to.</p>
 <ul class="simple">
 <li><p>Please write unit tests for your new code. But don’t <strong>just</strong> aim to increase the test coverage, rather, we expect you to have written <strong>thoughtful</strong> tests that ensure your new feature will continue to work as expected, and to help future contributors to ensure they don’t break it!</p></li>
@@ -272,4 +273,4 @@ pip install <span class="s2">&quot;slack_sdk&gt;=3.0&quot;</span>
         </script>
         <script async src="https://www.google-analytics.com/analytics.js"></script>
     </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/docs/genindex.html b/docs/genindex.html
index a45b287..1bb8b7b 100644
--- a/docs/genindex.html
+++ b/docs/genindex.html
@@ -38,17 +38,17 @@
         />
         <link
             rel="stylesheet"
-            href="./_static/default.css"
+            href="./assets/default.css"
             type="text/css"
         />
         <link
             rel="stylesheet"
-            href="./_static/pygments.css"
+            href="./assets/pygments.css"
             type="text/css"
         />
         <link
             rel="stylesheet"
-            href="./_static/docs.css"
+            href="./assets/docs.css"
             type="text/css"
         />
         <link
@@ -99,7 +99,7 @@
             </span>
             <div class="header_nav">
                 <a
-                    href="https://github.com/SlackAPI/python-slackclient"
+                    href="https://github.com/SlackAPI/python-slack-sdk"
                     class="btn header_btn float_right"
                     data-qa="go_to_slack"
                     >Go to GitHub</a
@@ -117,6 +117,7 @@
 <li class="toctree-l1"><a class="reference internal" href="index.html">Python Slack SDK</a></li>
 <li class="toctree-l1"><a class="reference internal" href="v3-migration/index.html">Migration Guide</a><ul>
 <li class="toctree-l2"><a class="reference internal" href="v3-migration/index.html#from-slackclient-2-x">From slackclient 2.x</a></li>
+<li class="toctree-l2"><a class="reference internal" href="v3-migration/index.html#from-slackclient-1-x">From slackclient 1.x</a></li>
 </ul>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="installation/index.html">Installation</a><ul>
@@ -170,9 +171,9 @@
 <div id="footer">
 
         <ul id="footer_nav">
-                <li><a href="https://github.com/SlackAPI/python-slackclient/blob/main/LICENSE">License</a></li>
+                <li><a href="https://github.com/SlackAPI/python-slack-sdk/blob/main/LICENSE">License</a></li>
                 <li><a href="https://slackhq.github.io/code-of-conduct">Code of Conduct</a></li>
-                <li><a href="https://github.com/slackapi/python-slackclient/blob/main/.github/contributing.md">Contributing</a></li>
+                <li><a href="https://github.com/slackapi/python-slack-sdk/blob/main/.github/contributing.md">Contributing</a></li>
                 <li><a href="https://docs.google.com/a/slack-corp.com/forms/d/e/1FAIpQLSfzjVoCM7ohBnjWf7eDYQxzti1EPpinsIJQA5RAUBwJKRUQHg/viewform">Contributor License Agreement</a></li>
         </ul>
 
@@ -221,4 +222,4 @@
         </script>
         <script async src="https://www.google-analytics.com/analytics.js"></script>
     </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/docs/index.html b/docs/index.html
index e5b0421..1a58fbf 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -38,17 +38,17 @@
         />
         <link
             rel="stylesheet"
-            href="./_static/default.css"
+            href="./assets/default.css"
             type="text/css"
         />
         <link
             rel="stylesheet"
-            href="./_static/pygments.css"
+            href="./assets/pygments.css"
             type="text/css"
         />
         <link
             rel="stylesheet"
-            href="./_static/docs.css"
+            href="./assets/docs.css"
             type="text/css"
         />
         <link
@@ -99,7 +99,7 @@
             </span>
             <div class="header_nav">
                 <a
-                    href="https://github.com/SlackAPI/python-slackclient"
+                    href="https://github.com/SlackAPI/python-slack-sdk"
                     class="btn header_btn float_right"
                     data-qa="go_to_slack"
                     >Go to GitHub</a
@@ -117,6 +117,7 @@
 <li class="toctree-l1 current"><a class="current reference internal" href="#">Python Slack SDK</a></li>
 <li class="toctree-l1"><a class="reference internal" href="v3-migration/index.html">Migration Guide</a><ul>
 <li class="toctree-l2"><a class="reference internal" href="v3-migration/index.html#from-slackclient-2-x">From slackclient 2.x</a></li>
+<li class="toctree-l2"><a class="reference internal" href="v3-migration/index.html#from-slackclient-1-x">From slackclient 1.x</a></li>
 </ul>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="installation/index.html">Installation</a><ul>
@@ -170,9 +171,9 @@
 <div id="footer">
 
         <ul id="footer_nav">
-                <li><a href="https://github.com/SlackAPI/python-slackclient/blob/main/LICENSE">License</a></li>
+                <li><a href="https://github.com/SlackAPI/python-slack-sdk/blob/main/LICENSE">License</a></li>
                 <li><a href="https://slackhq.github.io/code-of-conduct">Code of Conduct</a></li>
-                <li><a href="https://github.com/slackapi/python-slackclient/blob/main/.github/contributing.md">Contributing</a></li>
+                <li><a href="https://github.com/slackapi/python-slack-sdk/blob/main/.github/contributing.md">Contributing</a></li>
                 <li><a href="https://docs.google.com/a/slack-corp.com/forms/d/e/1FAIpQLSfzjVoCM7ohBnjWf7eDYQxzti1EPpinsIJQA5RAUBwJKRUQHg/viewform">Contributor License Agreement</a></li>
         </ul>
 
@@ -239,14 +240,14 @@
 </pre></div>
 </div>
 <p>Of course, you can always pull the source code directly into your project:</p>
-<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>git clone https://github.com/slackapi/python-slackclient.git
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>git clone https://github.com/slackapi/python-slack-sdk.git
 </pre></div>
 </div>
 <p>And then, save a few lines of code as <code class="docutils literal notranslate"><span class="pre">./test.py</span></code>.</p>
 <div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="c1"># test.py</span>
 <span class="kn">import</span> <span class="nn">sys</span>
 <span class="c1"># Load the local source directly</span>
-<span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="s2">&quot;./python-slackclient&quot;</span><span class="p">)</span>
+<span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="s2">&quot;./python-slack-sdk&quot;</span><span class="p">)</span>
 <span class="c1"># Enable debug logging</span>
 <span class="kn">import</span> <span class="nn">logging</span>
 <span class="n">logging</span><span class="o">.</span><span class="n">basicConfig</span><span class="p">(</span><span class="n">level</span><span class="o">=</span><span class="n">logging</span><span class="o">.</span><span class="n">DEBUG</span><span class="p">)</span>
@@ -266,7 +267,7 @@
 <h2>Getting Help<a class="headerlink" href="#getting-help" title="Permalink to this headline">¶</a></h2>
 <p>If you get stuck, we’re here to help. The following are the best ways to get assistance working through your issue:</p>
 <ul class="simple">
-<li><p><a class="reference external" href="https://github.com/slackapi/python-slackclient/issues">GitHub Issue Tracker</a> for questions, feature requests, bug reports and general discussion related to this package.</p></li>
+<li><p><a class="reference external" href="https://github.com/slackapi/python-slack-sdk/issues">GitHub Issue Tracker</a> for questions, feature requests, bug reports and general discussion related to this package.</p></li>
 <li><p>Visit the <a class="reference external" href="http://slackcommunity.com">Slack Developer Community</a> for getting help using Python Slack SDK or just generally bond with your fellow Slack developers.</p></li>
 </ul>
 </div>
@@ -298,4 +299,4 @@
         </script>
         <script async src="https://www.google-analytics.com/analytics.js"></script>
     </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/docs/installation/index.html b/docs/installation/index.html
index 891af60..7e76e25 100644
--- a/docs/installation/index.html
+++ b/docs/installation/index.html
@@ -38,17 +38,17 @@
         />
         <link
             rel="stylesheet"
-            href=".././_static/default.css"
+            href=".././assets/default.css"
             type="text/css"
         />
         <link
             rel="stylesheet"
-            href=".././_static/pygments.css"
+            href=".././assets/pygments.css"
             type="text/css"
         />
         <link
             rel="stylesheet"
-            href=".././_static/docs.css"
+            href=".././assets/docs.css"
             type="text/css"
         />
         <link
@@ -99,7 +99,7 @@
             </span>
             <div class="header_nav">
                 <a
-                    href="https://github.com/SlackAPI/python-slackclient"
+                    href="https://github.com/SlackAPI/python-slack-sdk"
                     class="btn header_btn float_right"
                     data-qa="go_to_slack"
                     >Go to GitHub</a
@@ -117,6 +117,7 @@
 <li class="toctree-l1"><a class="reference internal" href="../index.html">Python Slack SDK</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../v3-migration/index.html">Migration Guide</a><ul>
 <li class="toctree-l2"><a class="reference internal" href="../v3-migration/index.html#from-slackclient-2-x">From slackclient 2.x</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../v3-migration/index.html#from-slackclient-1-x">From slackclient 1.x</a></li>
 </ul>
 </li>
 <li class="toctree-l1 current"><a class="current reference internal" href="#">Installation</a><ul>
@@ -170,9 +171,9 @@
 <div id="footer">
 
         <ul id="footer_nav">
-                <li><a href="https://github.com/SlackAPI/python-slackclient/blob/main/LICENSE">License</a></li>
+                <li><a href="https://github.com/SlackAPI/python-slack-sdk/blob/main/LICENSE">License</a></li>
                 <li><a href="https://slackhq.github.io/code-of-conduct">Code of Conduct</a></li>
-                <li><a href="https://github.com/slackapi/python-slackclient/blob/main/.github/contributing.md">Contributing</a></li>
+                <li><a href="https://github.com/slackapi/python-slack-sdk/blob/main/.github/contributing.md">Contributing</a></li>
                 <li><a href="https://docs.google.com/a/slack-corp.com/forms/d/e/1FAIpQLSfzjVoCM7ohBnjWf7eDYQxzti1EPpinsIJQA5RAUBwJKRUQHg/viewform">Contributor License Agreement</a></li>
         </ul>
 
@@ -325,4 +326,4 @@ your workspace for changes to take effect.</p>
         </script>
         <script async src="https://www.google-analytics.com/analytics.js"></script>
     </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/docs/metadata.html b/docs/metadata.html
index cc983a3..763476d 100644
--- a/docs/metadata.html
+++ b/docs/metadata.html
@@ -38,17 +38,17 @@
         />
         <link
             rel="stylesheet"
-            href="./_static/default.css"
+            href="./assets/default.css"
             type="text/css"
         />
         <link
             rel="stylesheet"
-            href="./_static/pygments.css"
+            href="./assets/pygments.css"
             type="text/css"
         />
         <link
             rel="stylesheet"
-            href="./_static/docs.css"
+            href="./assets/docs.css"
             type="text/css"
         />
         <link
@@ -99,7 +99,7 @@
             </span>
             <div class="header_nav">
                 <a
-                    href="https://github.com/SlackAPI/python-slackclient"
+                    href="https://github.com/SlackAPI/python-slack-sdk"
                     class="btn header_btn float_right"
                     data-qa="go_to_slack"
                     >Go to GitHub</a
@@ -117,6 +117,7 @@
 <li class="toctree-l1"><a class="reference internal" href="index.html">Python Slack SDK</a></li>
 <li class="toctree-l1"><a class="reference internal" href="v3-migration/index.html">Migration Guide</a><ul>
 <li class="toctree-l2"><a class="reference internal" href="v3-migration/index.html#from-slackclient-2-x">From slackclient 2.x</a></li>
+<li class="toctree-l2"><a class="reference internal" href="v3-migration/index.html#from-slackclient-1-x">From slackclient 1.x</a></li>
 </ul>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="installation/index.html">Installation</a><ul>
@@ -170,9 +171,9 @@
 <div id="footer">
 
         <ul id="footer_nav">
-                <li><a href="https://github.com/SlackAPI/python-slackclient/blob/main/LICENSE">License</a></li>
+                <li><a href="https://github.com/SlackAPI/python-slack-sdk/blob/main/LICENSE">License</a></li>
                 <li><a href="https://slackhq.github.io/code-of-conduct">Code of Conduct</a></li>
-                <li><a href="https://github.com/slackapi/python-slackclient/blob/main/.github/contributing.md">Contributing</a></li>
+                <li><a href="https://github.com/slackapi/python-slack-sdk/blob/main/.github/contributing.md">Contributing</a></li>
                 <li><a href="https://docs.google.com/a/slack-corp.com/forms/d/e/1FAIpQLSfzjVoCM7ohBnjWf7eDYQxzti1EPpinsIJQA5RAUBwJKRUQHg/viewform">Contributor License Agreement</a></li>
         </ul>
 
@@ -215,4 +216,4 @@
         </script>
         <script async src="https://www.google-analytics.com/analytics.js"></script>
     </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/docs/oauth/index.html b/docs/oauth/index.html
index 4a12922..0e1fccd 100644
--- a/docs/oauth/index.html
+++ b/docs/oauth/index.html
@@ -38,17 +38,17 @@
         />
         <link
             rel="stylesheet"
-            href=".././_static/default.css"
+            href=".././assets/default.css"
             type="text/css"
         />
         <link
             rel="stylesheet"
-            href=".././_static/pygments.css"
+            href=".././assets/pygments.css"
             type="text/css"
         />
         <link
             rel="stylesheet"
-            href=".././_static/docs.css"
+            href=".././assets/docs.css"
             type="text/css"
         />
         <link
@@ -99,7 +99,7 @@
             </span>
             <div class="header_nav">
                 <a
-                    href="https://github.com/SlackAPI/python-slackclient"
+                    href="https://github.com/SlackAPI/python-slack-sdk"
                     class="btn header_btn float_right"
                     data-qa="go_to_slack"
                     >Go to GitHub</a
@@ -117,6 +117,7 @@
 <li class="toctree-l1"><a class="reference internal" href="../index.html">Python Slack SDK</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../v3-migration/index.html">Migration Guide</a><ul>
 <li class="toctree-l2"><a class="reference internal" href="../v3-migration/index.html#from-slackclient-2-x">From slackclient 2.x</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../v3-migration/index.html#from-slackclient-1-x">From slackclient 1.x</a></li>
 </ul>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="../installation/index.html">Installation</a><ul>
@@ -170,9 +171,9 @@
 <div id="footer">
 
         <ul id="footer_nav">
-                <li><a href="https://github.com/SlackAPI/python-slackclient/blob/main/LICENSE">License</a></li>
+                <li><a href="https://github.com/SlackAPI/python-slack-sdk/blob/main/LICENSE">License</a></li>
                 <li><a href="https://slackhq.github.io/code-of-conduct">Code of Conduct</a></li>
-                <li><a href="https://github.com/slackapi/python-slackclient/blob/main/.github/contributing.md">Contributing</a></li>
+                <li><a href="https://github.com/slackapi/python-slack-sdk/blob/main/.github/contributing.md">Contributing</a></li>
                 <li><a href="https://docs.google.com/a/slack-corp.com/forms/d/e/1FAIpQLSfzjVoCM7ohBnjWf7eDYQxzti1EPpinsIJQA5RAUBwJKRUQHg/viewform">Contributor License Agreement</a></li>
         </ul>
 
@@ -437,4 +438,4 @@
         </script>
         <script async src="https://www.google-analytics.com/analytics.js"></script>
     </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/docs/real_time_messaging.html b/docs/real_time_messaging.html
index 2cc2927..6adc432 100644
--- a/docs/real_time_messaging.html
+++ b/docs/real_time_messaging.html
@@ -38,17 +38,17 @@
         />
         <link
             rel="stylesheet"
-            href="./_static/default.css"
+            href="./assets/default.css"
             type="text/css"
         />
         <link
             rel="stylesheet"
-            href="./_static/pygments.css"
+            href="./assets/pygments.css"
             type="text/css"
         />
         <link
             rel="stylesheet"
-            href="./_static/docs.css"
+            href="./assets/docs.css"
             type="text/css"
         />
         <link
@@ -99,7 +99,7 @@
             </span>
             <div class="header_nav">
                 <a
-                    href="https://github.com/SlackAPI/python-slackclient"
+                    href="https://github.com/SlackAPI/python-slack-sdk"
                     class="btn header_btn float_right"
                     data-qa="go_to_slack"
                     >Go to GitHub</a
@@ -117,6 +117,7 @@
 <li class="toctree-l1"><a class="reference internal" href="index.html">Python Slack SDK</a></li>
 <li class="toctree-l1"><a class="reference internal" href="v3-migration/index.html">Migration Guide</a><ul>
 <li class="toctree-l2"><a class="reference internal" href="v3-migration/index.html#from-slackclient-2-x">From slackclient 2.x</a></li>
+<li class="toctree-l2"><a class="reference internal" href="v3-migration/index.html#from-slackclient-1-x">From slackclient 1.x</a></li>
 </ul>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="installation/index.html">Installation</a><ul>
@@ -170,9 +171,9 @@
 <div id="footer">
 
         <ul id="footer_nav">
-                <li><a href="https://github.com/SlackAPI/python-slackclient/blob/main/LICENSE">License</a></li>
+                <li><a href="https://github.com/SlackAPI/python-slack-sdk/blob/main/LICENSE">License</a></li>
                 <li><a href="https://slackhq.github.io/code-of-conduct">Code of Conduct</a></li>
-                <li><a href="https://github.com/slackapi/python-slackclient/blob/main/.github/contributing.md">Contributing</a></li>
+                <li><a href="https://github.com/slackapi/python-slack-sdk/blob/main/.github/contributing.md">Contributing</a></li>
                 <li><a href="https://docs.google.com/a/slack-corp.com/forms/d/e/1FAIpQLSfzjVoCM7ohBnjWf7eDYQxzti1EPpinsIJQA5RAUBwJKRUQHg/viewform">Contributor License Agreement</a></li>
         </ul>
 
@@ -299,4 +300,4 @@ and it supports most of the event types in the RTM API. If you’d like to use t
         </script>
         <script async src="https://www.google-analytics.com/analytics.js"></script>
     </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/docs/search.html b/docs/search.html
index 6d06f70..296b755 100644
--- a/docs/search.html
+++ b/docs/search.html
@@ -38,17 +38,17 @@
         />
         <link
             rel="stylesheet"
-            href="./_static/default.css"
+            href="./assets/default.css"
             type="text/css"
         />
         <link
             rel="stylesheet"
-            href="./_static/pygments.css"
+            href="./assets/pygments.css"
             type="text/css"
         />
         <link
             rel="stylesheet"
-            href="./_static/docs.css"
+            href="./assets/docs.css"
             type="text/css"
         />
         <link
@@ -99,7 +99,7 @@
             </span>
             <div class="header_nav">
                 <a
-                    href="https://github.com/SlackAPI/python-slackclient"
+                    href="https://github.com/SlackAPI/python-slack-sdk"
                     class="btn header_btn float_right"
                     data-qa="go_to_slack"
                     >Go to GitHub</a
@@ -117,6 +117,7 @@
 <li class="toctree-l1"><a class="reference internal" href="index.html">Python Slack SDK</a></li>
 <li class="toctree-l1"><a class="reference internal" href="v3-migration/index.html">Migration Guide</a><ul>
 <li class="toctree-l2"><a class="reference internal" href="v3-migration/index.html#from-slackclient-2-x">From slackclient 2.x</a></li>
+<li class="toctree-l2"><a class="reference internal" href="v3-migration/index.html#from-slackclient-1-x">From slackclient 1.x</a></li>
 </ul>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="installation/index.html">Installation</a><ul>
@@ -170,9 +171,9 @@
 <div id="footer">
 
         <ul id="footer_nav">
-                <li><a href="https://github.com/SlackAPI/python-slackclient/blob/main/LICENSE">License</a></li>
+                <li><a href="https://github.com/SlackAPI/python-slack-sdk/blob/main/LICENSE">License</a></li>
                 <li><a href="https://slackhq.github.io/code-of-conduct">Code of Conduct</a></li>
-                <li><a href="https://github.com/slackapi/python-slackclient/blob/main/.github/contributing.md">Contributing</a></li>
+                <li><a href="https://github.com/slackapi/python-slack-sdk/blob/main/.github/contributing.md">Contributing</a></li>
                 <li><a href="https://docs.google.com/a/slack-corp.com/forms/d/e/1FAIpQLSfzjVoCM7ohBnjWf7eDYQxzti1EPpinsIJQA5RAUBwJKRUQHg/viewform">Contributor License Agreement</a></li>
         </ul>
 
@@ -235,4 +236,4 @@
         </script>
         <script async src="https://www.google-analytics.com/analytics.js"></script>
     </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/docs/searchindex.js b/docs/searchindex.js
index 123ac49..20a69e7 100644
--- a/docs/searchindex.js
+++ b/docs/searchindex.js
@@ -1,1 +1,1 @@
-Search.setIndex({docnames:["about","faq","index","installation/index","metadata","oauth/index","real_time_messaging","v3-migration/index","web/index","webhook/index"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":1,sphinx:56},filenames:["about.rst","faq.rst","index.rst","installation/index.rst","metadata.rst","oauth/index.rst","real_time_messaging.rst","v3-migration/index.rst","web/index.rst","webhook/index.rst"],objects:{},objnames:{},objtypes:{},terms:{"000002":[6,8],"000003":8,"111":3,"12345":8,"123456":8,"1234567890":8,"1358878749":6,"139":5,"1476745373":8,"1476746830":8,"1920":8,"200":[2,5,8,9],"222":3,"237":8,"300":5,"3000":[3,8],"400":5,"403":[5,8,9],"404":[5,8,9],"429":8,"750319":8,"boolean":8,"break":[1,7],"case":[1,5],"class":[7,8,9],"default":[5,6,8],"export":[1,8],"final":3,"function":[3,6],"import":[1,2,3,5,6,7,8,9],"int":8,"long":[7,8],"new":[1,3,7,8,9],"public":8,"return":[3,5,8,9],"short":[7,8],"super":1,"switch":[1,7],"true":[7,8],"try":[1,2,5,8],"while":[1,6,7,8],Adding:8,And:2,But:1,For:[3,7,8],IDs:[5,8],IMs:8,One:8,That:[1,7,8],The:[2,3,5,6,7,8,9],Then:[1,3],There:[1,7],Use:8,With:5,__main__:[3,8],__name__:[3,5,8,9],abil:[3,6],abl:3,about:[1,3,5,6,8],abov:[5,8],accept:3,access:[0,5,8],access_token:[3,5],accessori:8,acknowledg:9,action:[7,9],action_id:[5,8],activ:1,actual:8,adaptor:6,add:[1,3,5,7,8],add_to_slack:5,added:1,addit:[3,8],address:7,after:[3,5,8],again:5,agre:3,agreement:0,aim:1,aiohttp:[7,8,9],all:[1,3,5,7,8],allow:[6,8],along:[5,6],alreadi:[5,6,8],already_in_channel:8,also:[2,6,7,8,9],alt:5,alt_text:8,alwai:[1,2],ambiti:1,ani:[2,3,5,6,7,9],anoth:8,apart:7,api:[0,2,3,5,6,7,9],api_cal:8,api_method:8,api_respons:[2,8],api_test:[1,2],app:[0,2,3,6,8,9],app_home_open:6,app_id:5,app_ment:5,appear:8,appli:3,applic:[3,8],appropri:1,architectur:6,archiv:8,aren:6,arg:[3,5],argument:8,around:1,arrai:8,articl:8,assert:[8,9],assign:8,assist:2,associ:9,async:[7,8,9],async_cli:[2,8,9],asynchron:[8,9],asyncio:[7,8,9],asyncwebcli:7,asyncwebhookcli:7,attach:8,attribut:[1,8],attributeerror:1,auth:[3,5],auth_test:5,authed_us:5,authent:[2,5,8,9],author:[3,5],authorize_url_gener:5,authorizeurlgener:5,automat:7,avail:[3,8,9],averag:8,avoid:3,await:[7,8,9],awesom:[5,8],axe:8,b00000000:9,back:[5,6],base:6,base_dir:5,basic:[3,6,8],basicconfig:[1,2,8],becom:8,been:[3,8],befor:8,beforehand:[8,9],begin:3,being:[1,8],below:[5,6,8],best:[2,8],between:[7,8],biggest:7,bin:1,bit:8,bite:1,block:[5,8,9],block_id:[5,8],bodi:[5,9],bolt:5,bond:2,bot:[3,5,6,8],bot_id:5,bot_scop:5,bot_token:5,bot_user_id:5,both:1,box:[7,8],broadcast:8,bug:2,build:[0,2,3,5,8],builder:[2,8],built:3,burst:8,button:[3,5,8],c031415926:8,c0xxxxxx:8,c0xxxxxxx:8,c0xxxxxxy:8,c16180339:8,c27182818:8,c3ukjtqac:8,call:[3,5,6,7,9],callback:[5,6,8],callback_id:[5,8],can:[1,2,3,5,6,7,8,9],cancel:8,cannot:8,capabl:2,chang:[3,7,8],changelog:1,channel:[5,6,8,9],channel_id:[5,6,8],channel_nam:8,channel_not_found:8,charact:8,chat:[5,8],chat_delet:8,chat_postephemer:8,chat_postmessag:[6,8],chat_upd:8,check:[3,5,8],choos:5,classic:6,click:[3,5],client:[1,2,3,5,7],client_id:[3,5],client_secret:[3,5],clone:2,close:8,code:[0,1,2,3,5,7,8],code_param:3,collect:8,com:[2,3,5,8,9],combin:8,comma:[5,8],command:[1,5,9],comment:8,commun:[2,6],compat:7,complet:[1,3,5,6],complex:8,compon:2,compos:8,concret:1,conduct:0,configur:[3,6,8],configuration_url:5,confus:7,connect:6,connect_method:6,consider:8,consist:7,construct:2,consum:5,contain:[6,8],content:1,context:8,continu:[1,8],contribut:0,contributor:[0,1],convers:[6,7],conversations_arch:8,conversations_cr:8,conversations_info:8,conversations_join:8,conversations_leav:8,conversations_list:8,conversations_memb:8,conversations_open:8,correspond:[2,3,6],could:1,coupl:1,cours:2,cover:8,coverag:[1,7],creat:[1,6,8],credenti:[3,6],custom:8,dai:1,danni:8,data:[2,3,5,6,8],databas:3,deal:8,debug:[1,2,8],deck:8,dedic:1,def:[3,5,6,8,9],defin:3,delai:8,delet:8,deliv:2,demonstr:[1,5],depend:[3,7,8,9],deprec:[1,7],descend:8,detail:[5,6,8],determin:3,dev:7,develop:[0,2,8],devic:9,differ:8,direct:[3,8],directli:[2,8],discuss:[1,2],displai:8,doc:[1,6,8],document:[3,6,8],doesn:[5,7],domain:[5,8],don:[1,3,5,6,7,8],done:1,door:8,driven:6,due:[5,8],dynam:8,each:[2,8],easi:2,easier:5,edg:5,edit:1,effect:3,either:[6,8],element:[5,8],elif:5,els:[5,8],emoji:8,empti:3,enabl:[2,8],encount:[1,8],encourag:6,end:5,endpoint:[3,5,8],enriquez:9,ensur:1,enterpris:5,enterprise_id:5,entir:3,env:1,environ:[1,3,5,6,8,9],environment:3,ephemer:8,error:[1,5,8],establish:6,even:6,event:[2,5,8,9],everi:3,exampl:[3,6,8],exce:8,excel:1,except:[5,8],exchang:[3,5,8],excit:[1,8],exclud:8,exclude_archiv:8,execut:6,exist:[7,8],expect:[1,7],expir:5,expiration_second:5,explain:5,explicitli:7,extern:8,external_id:8,external_url:8,facilit:3,fail:[5,8],fakelink:9,fallback:[8,9],fals:8,far:8,featur:[2,3,7],feedback:1,feel:[1,8],fellow:2,felt:8,few:[2,7],fewer:8,field:8,file:1,file_com:8,fileinstallationstor:5,fileoauthstatestor:5,files_remote_add:8,files_upload:8,find:[1,7],find_bot:5,first:[1,5,7],fit:2,fix:1,flask:[3,5,8,9],flask_env:8,flow:[2,3,7],focus:8,folder:1,follow:[1,2,5,8],forget:[1,3,8],fork:8,form:[5,8,9],format:[6,8],forward:7,found:3,framework:5,fred:9,from:[0,1,2,3,5,6,8,9],full:[3,5,8],fulli:8,fun:8,futur:1,gain:5,gener:[1,2,3,5,9],german:8,get:[3,5,8,9],get_data:[5,8,9],git:2,github:2,give:[5,6],given:1,global:8,goe:5,good:[1,2],got:8,grace:8,grant:3,great:1,greater:8,grid:5,group:8,guest:8,guidelin:1,had:8,hand:8,handl:[3,5,8,9],handler:5,happen:[2,5],has:[1,3,7,8],hash:8,haunt:8,have:[1,6,7,8,9],header:[5,8,9],height:5,hello:[6,8,9],help:1,here:[2,5,8],higher:2,highli:7,hit:8,hole:8,hook:9,hop:8,hotel:8,how:[3,5,8],howev:8,href:[3,5],http:[2,3,5,6,7,8,9],hub:8,hurri:8,hyphen:8,imag:8,image_url:8,img:5,implement:5,importantli:1,includ:[1,3,5,8,9],include_local:8,include_num_memb:8,incom:[2,5],incoming_webhook:5,incoming_webhook_channel_id:5,incoming_webhook_configuration_url:5,incoming_webhook_url:5,inconveni:7,incorpor:1,increas:1,independ:2,indic:[5,8],industri:3,info:[5,7,8],inform:[3,6,8],initi:3,input:[5,8],insert:2,insid:[1,6,8],instal:[8,9],installation_stor:5,installationstor:5,installed_enterpris:5,installed_team:5,instanti:6,instead:[6,7,8,9],integr:8,intend:3,interact:8,interest:8,interfac:8,intern:[7,8,9],introduc:7,invalid:[5,8,9],invalid_auth:8,invit:8,invoc:[5,9],is_priv:8,is_valid:[5,9],is_valid_request:8,issu:[2,5,6],item:[1,8],its:[1,2,5,6,9],itself:8,join:8,jpeg:8,json:[3,5,8],just:[1,2,3,8,9],keep:[3,6],kei:[3,8],keyword:8,kind:8,kit:[8,9],know:[1,3],label:[5,8],larger:6,later:3,layout:8,learn:6,least:3,leav:8,left:8,legacywebcli:7,let:[0,1,3,5,8],letter:8,level:[1,2,8],librari:[7,8,9],licens:0,like:[6,8],limit:2,line:2,linear:8,link:[3,6],list:[1,3,6,8],listen:2,liter:8,live:7,load:[2,5,8],local:[2,8],localhost:[3,8],log:[1,2,8],longer:[7,8],look:[1,5,8],love:1,mai:[1,5,8],maintain:0,make:[1,7,8],make_respons:[5,8,9],mani:[1,8],manual:7,mean:7,member:8,messag:[2,9],metadata:8,method:[2,3,5,9],might:8,modal:5,model:[2,6],modul:[1,7],more:[1,3,6,7,8],most:[5,6,7,8],mpim:8,mrkdwn:[8,9],much:[1,5],multi:8,multipl:3,must:[3,6,8],myapp:3,name:[7,8],natur:7,nearli:8,necessari:5,need:[1,2,3,5,6,7,8],newer:[6,7],newest:8,none:5,note:[1,5,6,8],notif:8,now:5,number:8,oauth:[2,3,7,8],oauth_callback:5,oauth_redirect:3,oauth_respons:5,oauth_scop:3,oauth_start:5,oauth_v2_access:[3,5],oauthstatestor:5,object:8,occur:6,off:8,offer:2,okai:5,old:1,onc:3,one:[1,3,7,8],onli:[7,8],onto:8,open:[5,8],option:[6,7,8,9],order:3,origin:8,other:[3,7,8],our:[1,3,6,8],out:[3,7,8],output:1,over:[2,8],overlook:8,own:[5,8],packag:[1,2,7],page:[3,6],param:[3,5,8],paramet:[3,5,8],parent:8,part:2,parti:8,particularli:1,pass:[3,6,8],password:3,path:2,pattern:5,payload:[3,5,6,8,9],pdf:8,peopl:8,per:8,period:8,permiss:[3,6],persist:[3,5],person:8,pexel:8,photo:8,pick:2,pip:[1,2,8,9],place:8,plain:6,plain_text:[5,8],plain_text_input:[5,8],platform:[0,2,5,6],pleas:[1,3,5,7],png:[5,8],possibl:9,post:[5,6,8,9],post_instal:3,post_messag:8,postephemer:8,postmessag:8,potenti:3,power:2,practic:8,pre:3,pre_instal:3,prefer:6,prepar:5,preview:8,preview_imag:8,previou:8,primari:8,print:[3,5,8],privat:8,private_channel:8,private_metadata:8,process:5,program:[1,8,9],project:[1,2,7],properli:7,properti:8,propos:1,protocol:3,prototyp:8,proudli:0,provid:[3,5,6,7,8],public_channel:8,publish:3,pull:[1,2],purpos:8,push:[6,8],pypi:[1,2,7],python3:8,python:[1,3,5,6,7,8],queri:[2,3,5],question:[1,2],quickli:8,rais:8,random:[5,8],randomli:3,ratelimit:8,rather:[1,6],reaction:8,reactions_add:8,reactions_remov:8,read:[3,5,6],reason:7,rebuild:1,receiv:6,recommend:[1,2,3,6,7],redirect:[3,5],redirect_uri:5,refer:[5,8],reflect:8,refus:3,regular:8,reinstal:[1,3],relat:2,releas:8,releg:8,reli:[7,8,9],remot:8,remov:[1,7,8],renam:7,repl:[1,2],replac:7,repli:[8,9],reply_broadcast:8,report:2,request:[2,3,5,8,9],requir:[3,7,8,9],res:1,resolv:7,respond:8,respons:[3,5,6,8,9],response_url:2,restructuredtext:1,result:8,resum:8,retri:8,retriev:[3,5,8],review:[3,8],richer:9,right:5,room:8,round:8,rout:[3,5,8,9],rowdi:8,rst:1,rtm:[2,7],rtm_client:6,rtmclient:6,run:[1,2,3,8,9],run_async:7,run_on:6,runtim:[1,3],safe:3,sai:[1,6,7,8],said:[1,7,8,9],same:[5,8],sampl:1,save:[2,3,5,8],say_hello:6,scope:[3,5,6],script:1,sdk:[5,7],seamlessli:2,search:5,second:8,secondari:7,secret:3,section:[1,3,5,8,9],sed:7,see:[3,5,6,8],send:[2,6,8,9],send_message_via_webhook:9,send_slack_messag:8,separ:[5,8],server:[2,5],servic:9,set:[1,2,3,6,8],setup:[2,3],sever:2,share:[3,5,8],shortcut:8,should:8,show:8,side:5,signatur:[2,5,8,9],signature_verifi:[5,8,9],signatureverifi:[5,8,9],signing_secret:[5,9],silent:8,similar:7,simpl:[3,7,8],simplest:[8,9],simpli:[6,7,8],sinc:7,singl:[3,8],site:8,slack:[1,3,5,6,7,8,9],slack_api_token:8,slack_app:[5,8,9],slack_bot_token:[1,3,6,8],slack_client_id:[3,5],slack_client_secret:[3,5],slack_scop:3,slack_sdk:[1,2,3,5,6,7,8,9],slack_signing_secret:[5,8,9],slack_token:[6,8],slackapi:2,slackapierror:[5,8],slackclient:2,slash:[5,9],sleep:8,slightli:8,slow:6,small:2,snippet:5,social:8,solut:5,some:[6,7,8],someth:[1,5,7],sometim:8,sorri:7,sourc:[1,2,3,7],special:8,specif:7,specifi:[5,8],sphinx:1,src:[1,5],srcset:5,stack:5,standard:[3,7,8,9],star:8,start:[1,3,5,6,7,8],state:[3,5,8],state_stor:5,statu:8,status_cod:9,step:[1,5,7],still:[1,7],storag:8,store:[3,5,8],str:[8,9],straight:7,string:[3,5,8],stuck:[2,8],submiss:[5,8],submit:[1,5,8],submitted_data:[5,8],subsequ:8,succeed:3,success:3,suffici:5,suppli:8,support:[2,6,7],sure:[1,8],surfac:8,synchron:7,sys:2,t00000000:9,tada:8,take:[3,5,8],team:[0,3,5,6,8],team_id:5,technic:7,tell:8,term:7,test:[1,2,8],text:[5,6,8,9],than:8,thank:[1,5],thei:[1,2,8],them:[3,8],therefor:8,thi:[1,2,3,5,6,7,8,9],thing:[1,8],think:1,those:[2,6,7,8],though:8,thought:1,thread:8,thread_t:[6,8],through:[2,5],thumbsup:8,time:[3,7,8],timelin:8,timestamp:[5,8,9],titl:[5,8],toemployeeprofil:9,togeth:[2,8],token:[1,6,8],too:[2,5,8,9],tool:0,torrenc:8,total:1,tracker:[1,2],treat:3,trigger_id:[5,8],two:1,txt:7,type:[5,6,8,9],u023becgf:6,u0xxxxxxx:8,u987654321:8,underscor:8,unifi:8,uninstal:[1,5],unit:1,unlik:7,unreli:6,unsupport:5,until:8,updat:[1,8],upgrad:6,upload:8,url:[5,6,8,9],usag:3,use:[1,2,3,5,6,7,8,9],used:[2,5,8],useful:8,user:[1,3,5,6,8,9],user_id:[5,8],user_scop:5,user_token:5,usernam:6,userwarn:7,uses:[6,8],using:[1,2,5,6,7,8,9],valid:[3,5,8],valida:5,valu:[3,5,8],variabl:[1,3],venv:1,veri:8,verif:2,verifi:[1,2,3,5,9],via:[3,9],view:[5,8],view_id:8,view_submiss:[5,8],views_open:[5,8],views_upd:8,virtual:1,virtualenv:1,visibl:8,visit:2,vote:8,w123456789:8,wai:[2,5,7,8,9],wait:8,want:[1,8],warn:7,watch:6,web:[0,2,5,6,7],web_client:6,webclient:[1,2,3,5,7,8],webhook:[2,7],webhookcli:9,webpag:5,webserv:3,websocket:[2,6],well:[5,8],what:[1,2,5],when:[2,5,6,8],where:[3,5],which:[3,5,6,8],whole:8,why:1,width:5,window:1,wish:[3,8],without:7,won:[7,8],work:[1,2,3,7,8,9],workspac:[5,8],world:8,would:3,wrapper:8,write:[1,3,5],written:1,wrong:5,xarg:7,xoxb:[1,3,8],xxxxx:3,xxxxxxxxxxxxxxxxxxxxxxxx:9,yield:3,you:[0,1,2,3,5,6,7,8,9],your:[0,1,2,3,5,6,7,8],your_app:7,yourself:1},titles:["About","FAQ","Python Slack SDK","Installation","&lt;no title&gt;","OAuth Modules","RTM Client","Migration Guide","Web Client","Webhook Client"],titleterms:{about:0,access:3,ani:8,api:8,app:5,asyncwebcli:8,asyncwebhookcli:9,bug:1,call:8,client:[6,8,9],contribut:1,convers:8,document:1,event:6,faq:1,featur:1,file:8,flow:5,from:7,get:2,guid:7,help:2,incom:9,instal:[1,2,3,5],issu:1,limit:8,lookup:5,messag:[6,8],method:8,migrat:7,modal:8,modul:5,oauth:5,python:[0,2],rate:8,real:6,report:1,request:1,response_url:9,rtm:6,sdk:[0,2],slack:[0,2],slackclient:7,time:6,token:[3,5],web:8,webhook:9,workspac:3}})
\ No newline at end of file
+Search.setIndex({docnames:["about","faq","index","installation/index","metadata","oauth/index","real_time_messaging","v3-migration/index","web/index","webhook/index"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":1,sphinx:56},filenames:["about.rst","faq.rst","index.rst","installation/index.rst","metadata.rst","oauth/index.rst","real_time_messaging.rst","v3-migration/index.rst","web/index.rst","webhook/index.rst"],objects:{},objnames:{},objtypes:{},terms:{"000002":[6,8],"000003":8,"111":3,"12345":8,"123456":8,"1234567890":8,"1358878749":6,"139":5,"1476745373":8,"1476746830":8,"1920":8,"200":[2,5,8,9],"222":3,"237":8,"300":5,"3000":[3,8],"400":5,"403":[5,8,9],"404":[5,8,9],"429":8,"750319":8,"boolean":8,"break":[1,7],"case":[1,5],"class":[7,8,9],"default":[5,6,8],"export":[1,8],"final":3,"function":[3,6],"import":[1,2,3,5,6,7,8,9],"int":8,"long":[7,8],"new":[1,3,7,8,9],"public":8,"return":[3,5,8,9],"short":[7,8],"super":1,"switch":[1,7],"true":[7,8],"try":[1,2,5,8],"while":[1,6,7,8],Adding:8,And:2,But:1,For:[3,7,8],IDs:[5,8],IMs:8,One:8,That:[1,7,8],The:[2,3,5,6,7,8,9],Then:[1,3],There:[1,7],Use:8,With:5,__main__:[3,8],__name__:[3,5,8,9],abil:[3,6],abl:3,about:[1,3,5,6,8],abov:[5,8],accept:3,access:[0,5,8],access_token:[3,5],accessori:8,acknowledg:9,action:[7,9],action_id:[5,8],activ:1,actual:8,adaptor:6,add:[1,3,5,7,8],add_to_slack:5,added:1,addit:[3,8],address:7,after:[3,5,8],again:5,agre:3,agreement:0,aim:1,aiohttp:[7,8,9],all:[1,3,5,7,8],allow:[6,8],along:[5,6],alreadi:[5,6,8],already_in_channel:8,also:[2,6,7,8,9],alt:5,alt_text:8,alwai:[1,2],ambiti:1,ani:[2,3,5,6,7,9],anoth:8,apart:7,api:[0,2,3,5,6,7,9],api_cal:8,api_method:8,api_respons:[2,8],api_test:[1,2],app:[0,2,3,6,8,9],app_home_open:6,app_id:5,app_ment:5,appear:8,appli:3,applic:[3,8],appropri:1,architectur:6,archiv:8,aren:6,arg:[3,5],argument:8,around:1,arrai:8,articl:8,assert:[8,9],assign:8,assist:2,associ:9,async:[7,8,9],async_cli:[2,8,9],asynchron:[8,9],asyncio:[7,8,9],asyncwebcli:7,asyncwebhookcli:7,attach:8,attribut:[1,8],attributeerror:1,auth:[3,5],auth_test:5,authed_us:5,authent:[2,5,8,9],author:[3,5],authorize_url_gener:5,authorizeurlgener:5,automat:7,avail:[3,8,9],averag:8,avoid:3,await:[7,8,9],awesom:[5,8],axe:8,b00000000:9,back:[5,6],base:6,base_dir:5,basic:[3,6,8],basicconfig:[1,2,8],becom:8,been:[3,8],befor:[7,8],beforehand:[8,9],begin:3,being:[1,8],below:[5,6,8],best:[2,8],between:[7,8],biggest:7,bin:1,bit:8,bite:1,block:[5,8,9],block_id:[5,8],bodi:[5,9],bolt:5,bond:2,bot:[3,5,6,8],bot_id:5,bot_scop:5,bot_token:5,bot_user_id:5,both:1,box:[7,8],broadcast:8,bug:2,build:[0,2,3,5,8],builder:[2,8],built:3,burst:8,button:[3,5,8],c031415926:8,c0xxxxxx:8,c0xxxxxxx:8,c0xxxxxxy:8,c16180339:8,c27182818:8,c3ukjtqac:8,call:[3,5,6,7,9],callback:[5,6,8],callback_id:[5,8],can:[1,2,3,5,6,7,8,9],cancel:8,cannot:8,capabl:2,chang:[3,7,8],changelog:1,channel:[5,6,8,9],channel_id:[5,6,8],channel_nam:8,channel_not_found:8,charact:8,chat:[5,8],chat_delet:8,chat_postephemer:8,chat_postmessag:[6,8],chat_upd:8,check:[3,5,8],choos:5,classic:6,click:[3,5],client:[1,2,3,5,7],client_id:[3,5],client_secret:[3,5],clone:2,close:8,code:[0,1,2,3,5,7,8],code_param:3,collect:8,com:[2,3,5,8,9],combin:8,comma:[5,8],command:[1,5,9],comment:8,commun:[2,6],compat:7,complet:[1,3,5,6],complex:8,compon:2,compos:8,concret:1,conduct:0,configur:[3,6,8],configuration_url:5,confus:7,connect:6,connect_method:6,consider:8,consist:7,construct:2,consum:5,contain:[6,8],content:1,context:8,continu:[1,8],contribut:0,contributor:[0,1],convers:[6,7],conversations_arch:8,conversations_cr:8,conversations_info:8,conversations_join:8,conversations_leav:8,conversations_list:8,conversations_memb:8,conversations_open:8,correspond:[2,3,6],could:1,coupl:1,cours:2,cover:8,coverag:[1,7],creat:[1,6,8],credenti:[3,6],custom:8,dai:1,danni:8,data:[2,3,5,6,8],databas:3,deal:8,debug:[1,2,8],deck:8,dedic:1,def:[3,5,6,8,9],defin:3,delai:8,delet:8,deliv:2,demonstr:[1,5],depend:[3,7,8,9],deprec:[1,7],descend:8,detail:[5,6,8],determin:3,dev:7,develop:[0,2,8],devic:9,differ:8,direct:[3,8],directli:[2,8],discuss:[1,2],displai:8,doc:[1,6,8],document:[3,6,8],doesn:[5,7],domain:[5,8],don:[1,3,5,6,7,8],done:1,door:8,driven:6,due:[5,8],dynam:8,each:[2,8],easi:2,easier:5,edg:5,edit:1,effect:3,either:[6,8],element:[5,8],elif:5,els:[5,8],emoji:8,empti:3,enabl:[2,8],encount:[1,8],encourag:6,end:5,endpoint:[3,5,8],enriquez:9,ensur:1,enterpris:5,enterprise_id:5,entir:3,env:1,environ:[1,3,5,6,8,9],environment:3,ephemer:8,error:[1,5,8],establish:6,even:6,event:[2,5,8,9],everi:3,exampl:[3,6,8],exce:8,excel:1,except:[5,8],exchang:[3,5,8],excit:[1,8],exclud:8,exclude_archiv:8,execut:6,exist:[7,8],expect:[1,7],expir:5,expiration_second:5,explain:5,explicitli:7,extern:8,external_id:8,external_url:8,facilit:3,fail:[5,8],fakelink:9,fallback:[8,9],fals:8,far:8,featur:[2,3,7],feedback:1,feel:[1,8],fellow:2,felt:8,few:[2,7],fewer:8,field:8,file:1,file_com:8,fileinstallationstor:5,fileoauthstatestor:5,files_remote_add:8,files_upload:8,find:[1,7],find_bot:5,first:[1,5,7],fit:2,fix:1,flask:[3,5,8,9],flask_env:8,flow:[2,3,7],focus:8,folder:1,follow:[1,2,5,8],forget:[1,3,8],fork:8,form:[5,8,9],format:[6,8],forward:7,found:3,framework:5,fred:9,from:[0,1,2,3,5,6,8,9],full:[3,5,8],fulli:8,fun:8,futur:1,gain:5,gener:[1,2,3,5,9],german:8,get:[3,5,8,9],get_data:[5,8,9],git:2,github:2,give:[5,6],given:1,global:8,goe:5,good:[1,2],got:8,grace:8,grant:3,great:1,greater:8,grid:5,group:8,guest:8,guidelin:1,had:8,hand:8,handl:[3,5,8,9],handler:5,happen:[2,5],has:[1,3,7,8],hash:8,haunt:8,have:[1,6,7,8,9],header:[5,8,9],height:5,hello:[6,8,9],help:1,here:[2,5,7,8],higher:2,highli:7,hit:8,hole:8,hook:9,hop:8,hotel:8,how:[3,5,8],howev:[7,8],href:[3,5],http:[2,3,5,6,7,8,9],hub:8,hurri:8,hyphen:8,imag:8,image_url:8,img:5,implement:5,importantli:1,includ:[1,3,5,8,9],include_local:8,include_num_memb:8,incom:[2,5],incoming_webhook:5,incoming_webhook_channel_id:5,incoming_webhook_configuration_url:5,incoming_webhook_url:5,inconveni:7,incorpor:1,increas:1,independ:2,indic:[5,8],industri:3,info:[5,7,8],inform:[3,6,8],initi:3,input:[5,8],insert:2,insid:[1,6,8],instal:[8,9],installation_stor:5,installationstor:5,installed_enterpris:5,installed_team:5,instanti:6,instead:[6,7,8,9],integr:8,intend:3,interact:8,interest:8,interfac:8,intern:[7,8,9],introduc:7,invalid:[5,8,9],invalid_auth:8,invit:8,invoc:[5,9],is_priv:8,is_valid:[5,9],is_valid_request:8,issu:[2,5,6],item:[1,8],its:[1,2,5,6,9],itself:8,join:8,jpeg:8,json:[3,5,8],just:[1,2,3,7,8,9],keep:[3,6],kei:[3,8],keyword:8,kind:8,kit:[8,9],know:[1,3],label:[5,8],larger:6,later:3,layout:8,learn:6,least:3,leav:8,left:8,legacywebcli:7,let:[0,1,3,5,8],letter:8,level:[1,2,8],librari:[7,8,9],licens:0,like:[6,7,8],limit:2,line:2,linear:8,link:[3,6],list:[1,3,6,8],listen:2,liter:8,live:7,load:[2,5,8],local:[2,8],localhost:[3,8],log:[1,2,8],longer:[7,8],look:[1,5,8],love:1,mai:[1,5,8],maintain:0,mainten:7,make:[1,7,8],make_respons:[5,8,9],mani:[1,8],manual:7,mean:7,member:8,messag:[2,9],metadata:8,method:[2,3,5,9],might:8,modal:5,mode:7,model:[2,6],modul:[1,7],more:[1,3,6,7,8],most:[5,6,7,8],mpim:8,mrkdwn:[8,9],much:[1,5],multi:8,multipl:3,must:[3,6,8],myapp:3,name:[7,8],natur:7,nearli:8,necessari:5,need:[1,2,3,5,6,7,8],newer:[6,7],newest:8,none:5,note:[1,5,6,8],notif:8,now:[5,7],number:8,oauth:[2,3,7,8],oauth_callback:5,oauth_redirect:3,oauth_respons:5,oauth_scop:3,oauth_start:5,oauth_v2_access:[3,5],oauthstatestor:5,object:8,occur:6,off:8,offer:2,okai:5,old:1,onc:3,one:[1,3,7,8],onli:[7,8],onto:8,open:[5,8],option:[6,7,8,9],order:3,origin:8,other:[3,7,8],our:[1,3,6,8],out:[3,7,8],output:1,over:[2,8],overlook:8,own:[5,8],packag:[1,2,7],page:[3,6],param:[3,5,8],paramet:[3,5,8],parent:8,part:2,parti:8,particularli:1,pass:[3,6,8],password:3,path:2,pattern:5,payload:[3,5,6,8,9],pdf:8,peopl:8,per:8,period:8,permiss:[3,6],persist:[3,5],person:8,pexel:8,photo:8,pick:2,pip:[1,2,8,9],place:8,plain:6,plain_text:[5,8],plain_text_input:[5,8],platform:[0,2,5,6],pleas:[1,3,5,7],png:[5,8],possibl:9,post:[5,6,8,9],post_instal:3,post_messag:8,postephemer:8,postmessag:8,potenti:3,power:2,practic:8,pre:3,pre_instal:3,prefer:6,prepar:5,preview:8,preview_imag:8,previou:8,primari:8,print:[3,5,8],privat:8,private_channel:8,private_metadata:8,process:5,program:[1,8,9],project:[1,2,7],properli:7,properti:8,propos:1,protocol:3,prototyp:8,proudli:0,provid:[3,5,6,7,8],public_channel:8,publish:3,pull:[1,2],purpos:8,push:[6,8],pypi:[1,2,7],python3:8,python:[1,3,5,6,7,8],queri:[2,3,5],question:[1,2],quickli:8,rais:8,random:[5,8],randomli:3,ratelimit:8,rather:[1,6],reaction:8,reactions_add:8,reactions_remov:8,read:[3,5,6],reason:7,rebuild:1,receiv:6,recommend:[1,2,3,6,7],redirect:[3,5],redirect_uri:5,refer:[5,7,8],reflect:8,refus:3,regular:8,reinstal:[1,3],relat:2,releas:8,releg:8,reli:[7,8,9],remot:8,remov:[1,7,8],renam:7,repl:[1,2],replac:7,repli:[8,9],reply_broadcast:8,report:2,request:[2,3,5,8,9],requir:[3,7,8,9],res:1,resolv:7,respond:8,respons:[3,5,6,8,9],response_url:2,restructuredtext:1,result:8,resum:8,retri:8,retriev:[3,5,8],review:[3,8],richer:9,right:5,room:8,round:8,rout:[3,5,8,9],rowdi:8,rst:1,rtm:[2,7],rtm_client:6,rtmclient:6,run:[1,2,3,8,9],run_async:7,run_on:6,runtim:[1,3],safe:3,sai:[1,6,7,8],said:[1,7,8,9],same:[5,8],sampl:1,save:[2,3,5,8],say_hello:6,scope:[3,5,6],script:1,sdk:[5,7],seamlessli:2,search:5,second:8,secondari:7,secret:3,section:[1,3,5,8,9],sed:7,see:[3,5,6,8],send:[2,6,8,9],send_message_via_webhook:9,send_slack_messag:8,separ:[5,8],server:[2,5],servic:9,set:[1,2,3,6,8],setup:[2,3],sever:2,share:[3,5,8],shortcut:8,should:8,show:8,side:5,signatur:[2,5,8,9],signature_verifi:[5,8,9],signatureverifi:[5,8,9],signing_secret:[5,9],silent:8,similar:7,simpl:[3,7,8],simplest:[8,9],simpli:[6,7,8],sinc:7,singl:[3,8],site:8,slack:[1,3,5,6,7,8,9],slack_api_token:8,slack_app:[5,8,9],slack_bot_token:[1,3,6,8],slack_client_id:[3,5],slack_client_secret:[3,5],slack_scop:3,slack_sdk:[1,2,3,5,6,7,8,9],slack_signing_secret:[5,8,9],slack_token:[6,8],slackapi:2,slackapierror:[5,8],slackclient:[],slash:[5,9],sleep:8,slightli:8,slow:6,small:2,snippet:5,social:8,solut:5,some:[6,7,8],someth:[1,5,7],sometim:8,sorri:7,sourc:[1,2,3,7],special:8,specif:7,specifi:[5,8],sphinx:1,src:[1,5],srcset:5,stack:5,standard:[3,7,8,9],star:8,start:[1,3,5,6,7,8],state:[3,5,8],state_stor:5,statu:8,status_cod:9,step:[1,5,7],still:[1,7],storag:8,store:[3,5,8],str:[8,9],straight:7,string:[3,5,8],stuck:[2,8],submiss:[5,8],submit:[1,5,8],submitted_data:[5,8],subsequ:8,succeed:3,success:3,successor:7,suffici:5,suppli:8,support:[2,6,7],sure:[1,8],surfac:8,synchron:7,sys:2,t00000000:9,tada:8,take:[3,5,8],team:[0,3,5,6,8],team_id:5,technic:7,tell:8,term:7,test:[1,2,8],text:[5,6,8,9],than:8,thank:[1,5],thei:[1,2,8],them:[3,8],therefor:8,thi:[1,2,3,5,6,7,8,9],thing:[1,8],think:1,those:[2,6,7,8],though:8,thought:1,thread:8,thread_t:[6,8],through:[2,5],thumbsup:8,time:[3,7,8],timelin:8,timestamp:[5,8,9],titl:[5,8],toemployeeprofil:9,togeth:[2,8],token:[1,6,8],too:[2,5,8,9],tool:0,torrenc:8,total:1,tracker:[1,2],treat:3,trigger_id:[5,8],two:1,txt:7,type:[5,6,8,9],u023becgf:6,u0xxxxxxx:8,u987654321:8,underscor:8,unifi:8,uninstal:[1,5],unit:1,unlik:7,unreli:6,unsupport:5,until:8,updat:[1,8],upgrad:6,upload:8,url:[5,6,8,9],usag:3,use:[1,2,3,5,6,7,8,9],used:[2,5,8],useful:8,user:[1,3,5,6,8,9],user_id:[5,8],user_scop:5,user_token:5,usernam:6,userwarn:7,uses:[6,8],using:[1,2,5,6,7,8,9],valid:[3,5,8],valida:5,valu:[3,5,8],variabl:[1,3],venv:1,veri:8,verif:2,verifi:[1,2,3,5,9],via:[3,9],view:[5,8],view_id:8,view_submiss:[5,8],views_open:[5,8],views_upd:8,virtual:1,virtualenv:1,visibl:8,visit:2,vote:8,w123456789:8,wai:[2,5,7,8,9],wait:8,want:[1,8],warn:7,watch:6,web:[0,2,5,6,7],web_client:6,webclient:[1,2,3,5,7,8],webhook:[2,7],webhookcli:9,webpag:5,webserv:3,websit:7,websocket:[2,6],well:[5,8],what:[1,2,5],when:[2,5,6,8],where:[3,5],which:[3,5,6,8],whole:8,why:1,width:5,window:1,wish:[3,8],without:7,won:[7,8],work:[1,2,3,7,8,9],workspac:[5,8],world:8,would:3,wrapper:8,write:[1,3,5],written:1,wrong:5,xarg:7,xoxb:[1,3,8],xxxxx:3,xxxxxxxxxxxxxxxxxxxxxxxx:9,yield:3,you:[0,1,2,3,5,6,7,8,9],your:[0,1,2,3,5,6,7,8],your_app:7,yourself:1},titles:["About","FAQ","Python Slack SDK","Installation","&lt;no title&gt;","OAuth Modules","RTM Client","Migration Guide","Web Client","Webhook Client"],titleterms:{about:0,access:3,ani:8,api:8,app:5,asyncwebcli:8,asyncwebhookcli:9,bug:1,call:8,client:[6,8,9],contribut:1,convers:8,document:1,event:6,faq:1,featur:1,file:8,flow:5,from:7,get:2,guid:7,help:2,incom:9,instal:[1,2,3,5],issu:1,limit:8,lookup:5,messag:[6,8],method:8,migrat:7,modal:8,modul:5,oauth:5,python:[0,2],rate:8,real:6,report:1,request:1,response_url:9,rtm:6,sdk:[0,2],slack:[0,2],slackclient:7,time:6,token:[3,5],web:8,webhook:9,workspac:3}})
\ No newline at end of file
diff --git a/docs/v3-migration/index.html b/docs/v3-migration/index.html
index 18041e8..05a20ae 100644
--- a/docs/v3-migration/index.html
+++ b/docs/v3-migration/index.html
@@ -38,17 +38,17 @@
         />
         <link
             rel="stylesheet"
-            href=".././_static/default.css"
+            href=".././assets/default.css"
             type="text/css"
         />
         <link
             rel="stylesheet"
-            href=".././_static/pygments.css"
+            href=".././assets/pygments.css"
             type="text/css"
         />
         <link
             rel="stylesheet"
-            href=".././_static/docs.css"
+            href=".././assets/docs.css"
             type="text/css"
         />
         <link
@@ -99,7 +99,7 @@
             </span>
             <div class="header_nav">
                 <a
-                    href="https://github.com/SlackAPI/python-slackclient"
+                    href="https://github.com/SlackAPI/python-slack-sdk"
                     class="btn header_btn float_right"
                     data-qa="go_to_slack"
                     >Go to GitHub</a
@@ -117,6 +117,7 @@
 <li class="toctree-l1"><a class="reference internal" href="../index.html">Python Slack SDK</a></li>
 <li class="toctree-l1 current"><a class="current reference internal" href="#">Migration Guide</a><ul>
 <li class="toctree-l2"><a class="reference internal" href="#from-slackclient-2-x">From slackclient 2.x</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#from-slackclient-1-x">From slackclient 1.x</a></li>
 </ul>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="../installation/index.html">Installation</a><ul>
@@ -170,9 +171,9 @@
 <div id="footer">
 
         <ul id="footer_nav">
-                <li><a href="https://github.com/SlackAPI/python-slackclient/blob/main/LICENSE">License</a></li>
+                <li><a href="https://github.com/SlackAPI/python-slack-sdk/blob/main/LICENSE">License</a></li>
                 <li><a href="https://slackhq.github.io/code-of-conduct">Code of Conduct</a></li>
-                <li><a href="https://github.com/slackapi/python-slackclient/blob/main/.github/contributing.md">Contributing</a></li>
+                <li><a href="https://github.com/slackapi/python-slack-sdk/blob/main/.github/contributing.md">Contributing</a></li>
                 <li><a href="https://docs.google.com/a/slack-corp.com/forms/d/e/1FAIpQLSfzjVoCM7ohBnjWf7eDYQxzti1EPpinsIJQA5RAUBwJKRUQHg/viewform">Contributor License Agreement</a></li>
         </ul>
 
@@ -190,6 +191,7 @@
                     <div class="card">
   <div class="section" id="migration-guide">
 <h1>Migration Guide<a class="headerlink" href="#migration-guide" title="Permalink to this headline">¶</a></h1>
+<p>The v2 website is live <a class="reference external" href="https://slack.dev/python-slackclient/">here</a> just like before. However, the <strong>slackclient</strong> project is in maintenance mode now and this <strong>slack_sdk</strong> project is the successor.</p>
 <div class="section" id="from-slackclient-2-x">
 <h2>From slackclient 2.x<a class="headerlink" href="#from-slackclient-2-x" title="Permalink to this headline">¶</a></h2>
 <p>There are a few changes introduced in v3.0:</p>
@@ -220,6 +222,10 @@
 <p>The new <code class="docutils literal notranslate"><span class="pre">slack_sdk.web.WebClient</span></code> doesn’t rely on <code class="docutils literal notranslate"><span class="pre">aiohttp</span></code> internally at all. The class provides only the synchronous way to call Web APIs. If you need a v2 compatible one, you can use <code class="docutils literal notranslate"><span class="pre">LegacyWebClient</span></code>. Apart from the name, there is no breaking change in the class.</p>
 <p>If you’re using <code class="docutils literal notranslate"><span class="pre">run_async=True</span></code> option, we highly recommend switching to <code class="docutils literal notranslate"><span class="pre">AsyncWebClient</span></code>. <code class="docutils literal notranslate"><span class="pre">AsyncWebClient</span></code> is a straight-forward async HTTP client. You can expect the class properly works in the nature of <code class="docutils literal notranslate"><span class="pre">async/await</span></code> provided by the standard <code class="docutils literal notranslate"><span class="pre">asyncio</span></code> library.</p>
 </div>
+<div class="section" id="from-slackclient-1-x">
+<h2>From slackclient 1.x<a class="headerlink" href="#from-slackclient-1-x" title="Permalink to this headline">¶</a></h2>
+<p>Refer to <a class="reference external" href="https://github.com/slackapi/python-slack-sdk/wiki/Migrating-to-2.x">the migration guide</a>.</p>
+</div>
 </div>
 
 
@@ -248,4 +254,4 @@
         </script>
         <script async src="https://www.google-analytics.com/analytics.js"></script>
     </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/docs/web/index.html b/docs/web/index.html
index 103f366..8438a24 100644
--- a/docs/web/index.html
+++ b/docs/web/index.html
@@ -38,17 +38,17 @@
         />
         <link
             rel="stylesheet"
-            href=".././_static/default.css"
+            href=".././assets/default.css"
             type="text/css"
         />
         <link
             rel="stylesheet"
-            href=".././_static/pygments.css"
+            href=".././assets/pygments.css"
             type="text/css"
         />
         <link
             rel="stylesheet"
-            href=".././_static/docs.css"
+            href=".././assets/docs.css"
             type="text/css"
         />
         <link
@@ -99,7 +99,7 @@
             </span>
             <div class="header_nav">
                 <a
-                    href="https://github.com/SlackAPI/python-slackclient"
+                    href="https://github.com/SlackAPI/python-slack-sdk"
                     class="btn header_btn float_right"
                     data-qa="go_to_slack"
                     >Go to GitHub</a
@@ -117,6 +117,7 @@
 <li class="toctree-l1"><a class="reference internal" href="../index.html">Python Slack SDK</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../v3-migration/index.html">Migration Guide</a><ul>
 <li class="toctree-l2"><a class="reference internal" href="../v3-migration/index.html#from-slackclient-2-x">From slackclient 2.x</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../v3-migration/index.html#from-slackclient-1-x">From slackclient 1.x</a></li>
 </ul>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="../installation/index.html">Installation</a><ul>
@@ -170,9 +171,9 @@
 <div id="footer">
 
         <ul id="footer_nav">
-                <li><a href="https://github.com/SlackAPI/python-slackclient/blob/main/LICENSE">License</a></li>
+                <li><a href="https://github.com/SlackAPI/python-slack-sdk/blob/main/LICENSE">License</a></li>
                 <li><a href="https://slackhq.github.io/code-of-conduct">Code of Conduct</a></li>
-                <li><a href="https://github.com/slackapi/python-slackclient/blob/main/.github/contributing.md">Contributing</a></li>
+                <li><a href="https://github.com/slackapi/python-slack-sdk/blob/main/.github/contributing.md">Contributing</a></li>
                 <li><a href="https://docs.google.com/a/slack-corp.com/forms/d/e/1FAIpQLSfzjVoCM7ohBnjWf7eDYQxzti1EPpinsIJQA5RAUBwJKRUQHg/viewform">Contributor License Agreement</a></li>
         </ul>
 
@@ -708,4 +709,4 @@ deletion of threaded replies works the same as regular messages.</p>
         </script>
         <script async src="https://www.google-analytics.com/analytics.js"></script>
     </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/docs/webhook/index.html b/docs/webhook/index.html
index e003432..9e39151 100644
--- a/docs/webhook/index.html
+++ b/docs/webhook/index.html
@@ -38,17 +38,17 @@
         />
         <link
             rel="stylesheet"
-            href=".././_static/default.css"
+            href=".././assets/default.css"
             type="text/css"
         />
         <link
             rel="stylesheet"
-            href=".././_static/pygments.css"
+            href=".././assets/pygments.css"
             type="text/css"
         />
         <link
             rel="stylesheet"
-            href=".././_static/docs.css"
+            href=".././assets/docs.css"
             type="text/css"
         />
         <link
@@ -99,7 +99,7 @@
             </span>
             <div class="header_nav">
                 <a
-                    href="https://github.com/SlackAPI/python-slackclient"
+                    href="https://github.com/SlackAPI/python-slack-sdk"
                     class="btn header_btn float_right"
                     data-qa="go_to_slack"
                     >Go to GitHub</a
@@ -117,6 +117,7 @@
 <li class="toctree-l1"><a class="reference internal" href="../index.html">Python Slack SDK</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../v3-migration/index.html">Migration Guide</a><ul>
 <li class="toctree-l2"><a class="reference internal" href="../v3-migration/index.html#from-slackclient-2-x">From slackclient 2.x</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../v3-migration/index.html#from-slackclient-1-x">From slackclient 1.x</a></li>
 </ul>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="../installation/index.html">Installation</a><ul>
@@ -170,9 +171,9 @@
 <div id="footer">
 
         <ul id="footer_nav">
-                <li><a href="https://github.com/SlackAPI/python-slackclient/blob/main/LICENSE">License</a></li>
+                <li><a href="https://github.com/SlackAPI/python-slack-sdk/blob/main/LICENSE">License</a></li>
                 <li><a href="https://slackhq.github.io/code-of-conduct">Code of Conduct</a></li>
-                <li><a href="https://github.com/slackapi/python-slackclient/blob/main/.github/contributing.md">Contributing</a></li>
+                <li><a href="https://github.com/slackapi/python-slack-sdk/blob/main/.github/contributing.md">Contributing</a></li>
                 <li><a href="https://docs.google.com/a/slack-corp.com/forms/d/e/1FAIpQLSfzjVoCM7ohBnjWf7eDYQxzti1EPpinsIJQA5RAUBwJKRUQHg/viewform">Contributor License Agreement</a></li>
         </ul>
 
@@ -310,4 +311,4 @@
         </script>
         <script async src="https://www.google-analytics.com/analytics.js"></script>
     </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/slack_sdk/oauth/installation_store/async_cacheable_installation_store.py b/slack_sdk/oauth/installation_store/async_cacheable_installation_store.py
new file mode 100644
index 0000000..c0c889e
--- /dev/null
+++ b/slack_sdk/oauth/installation_store/async_cacheable_installation_store.py
@@ -0,0 +1,34 @@
+from logging import Logger
+from typing import Optional, Dict
+
+from slack_sdk.oauth.installation_store import Bot, Installation
+from slack_sdk.oauth.installation_store.async_installation_store import AsyncInstallationStore
+
+
+class AsyncCacheableInstallationStore(AsyncInstallationStore):
+    underlying: AsyncInstallationStore
+    cached_bots: Dict[str, Bot]
+
+    def __init__(self, installation_store: AsyncInstallationStore):
+        """A simple memory cache wrapper for any installation stores.
+
+        :param installation_store: the installation store to wrap
+        """
+        self.underlying = installation_store
+        self.cached_bots = {}
+
+    @property
+    def logger(self) -> Logger:
+        return self.underlying.logger
+
+    async def async_save(self, installation: Installation):
+        return await self.underlying.async_save(installation)
+
+    async def async_find_bot(self, *, enterprise_id: Optional[str], team_id: Optional[str]) -> Optional[Bot]:
+        key = f"{enterprise_id}-{team_id}"
+        if key in self.cached_bots:
+            return self.cached_bots[key]
+        bot = await self.underlying.async_find_bot(enterprise_id=enterprise_id, team_id=team_id)
+        if bot:
+            self.cached_bots[key] = bot
+        return bot
diff --git a/slack_sdk/oauth/installation_store/cacheable_installation_store.py b/slack_sdk/oauth/installation_store/cacheable_installation_store.py
new file mode 100644
index 0000000..069062d
--- /dev/null
+++ b/slack_sdk/oauth/installation_store/cacheable_installation_store.py
@@ -0,0 +1,36 @@
+from logging import Logger
+from typing import Optional, Dict
+
+from slack_sdk.oauth import InstallationStore
+from slack_sdk.oauth.installation_store import Bot, Installation
+
+
+class CacheableInstallationStore(InstallationStore):
+    underlying: InstallationStore
+    cached_bots: Dict[str, Bot]
+
+    def __init__(self, installation_store: InstallationStore):
+        """A simple memory cache wrapper for any installation stores.
+
+        :param installation_store: the installation store to wrap
+        """
+        self.underlying = installation_store
+        self.cached_bots = {}
+
+    @property
+    def logger(self) -> Logger:
+        return self.underlying.logger
+
+    def save(self, installation: Installation):
+        return self.underlying.save(installation)
+
+    def find_bot(
+        self, *, enterprise_id: Optional[str], team_id: Optional[str]
+    ) -> Optional[Bot]:
+        key = f"{enterprise_id}-{team_id}"
+        if key in self.cached_bots:
+            return self.cached_bots[key]
+        bot = self.underlying.find_bot(enterprise_id=enterprise_id, team_id=team_id)
+        if bot:
+            self.cached_bots[key] = bot
+        return bot
diff --git a/slack_sdk/version.py b/slack_sdk/version.py
index 3996ce8..451cd1f 100644
--- a/slack_sdk/version.py
+++ b/slack_sdk/version.py
@@ -1,1 +1,1 @@
-__version__ = "3.0.0b1"
+__version__ = "3.0.0rc1"


Test patch:
diff --git a/tests/slack_sdk/oauth/installation_store/test_simple_cache.py b/tests/slack_sdk/oauth/installation_store/test_simple_cache.py
new file mode 100644
index 0000000..c57c84a
--- /dev/null
+++ b/tests/slack_sdk/oauth/installation_store/test_simple_cache.py
@@ -0,0 +1,39 @@
+import os
+import unittest
+
+from slack_sdk.oauth.installation_store import Installation
+from slack_sdk.oauth.installation_store.cacheable_installation_store import CacheableInstallationStore
+from slack_sdk.oauth.installation_store.sqlite3 import SQLite3InstallationStore
+
+
+class TestCacheable(unittest.TestCase):
+
+    def test_save_and_find(self):
+        sqlite3_store = SQLite3InstallationStore(
+            database="logs/cacheable.db",
+            client_id="111.222"
+        )
+        sqlite3_store.init()
+        store = CacheableInstallationStore(sqlite3_store)
+
+        installation = Installation(
+            app_id="A111",
+            enterprise_id="E111",
+            team_id="T111",
+            user_id="U111",
+            bot_id="B111",
+            bot_token="xoxb-111",
+            bot_scopes=["chat:write"],
+            bot_user_id="U222"
+        )
+        store.save(installation)
+
+        bot = store.find_bot(enterprise_id="E111", team_id="T111")
+        self.assertIsNotNone(bot)
+
+        os.remove("logs/cacheable.db")
+
+        bot = sqlite3_store.find_bot(enterprise_id="E111", team_id="T111")
+        self.assertIsNone(bot)
+        bot = store.find_bot(enterprise_id="E111", team_id="T111")
+        self.assertIsNotNone(bot)
diff --git a/tests/slack_sdk_async/oauth/__init__.py b/tests/slack_sdk_async/oauth/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/tests/slack_sdk_async/oauth/installation_store/__init__.py b/tests/slack_sdk_async/oauth/installation_store/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/tests/slack_sdk_async/oauth/installation_store/test_simple_cache.py b/tests/slack_sdk_async/oauth/installation_store/test_simple_cache.py
new file mode 100644
index 0000000..b92b3d9
--- /dev/null
+++ b/tests/slack_sdk_async/oauth/installation_store/test_simple_cache.py
@@ -0,0 +1,41 @@
+import os
+import unittest
+
+from slack_sdk.oauth.installation_store import Installation
+from slack_sdk.oauth.installation_store.async_cacheable_installation_store import AsyncCacheableInstallationStore
+from slack_sdk.oauth.installation_store.sqlite3 import SQLite3InstallationStore
+from tests.helpers import async_test
+
+
+class TestCacheable(unittest.TestCase):
+
+    @async_test
+    async def test_save_and_find(self):
+        sqlite3_store = SQLite3InstallationStore(
+            database="logs/cacheable.db",
+            client_id="111.222"
+        )
+        sqlite3_store.init()
+        store = AsyncCacheableInstallationStore(sqlite3_store)
+
+        installation = Installation(
+            app_id="A111",
+            enterprise_id="E111",
+            team_id="T111",
+            user_id="U111",
+            bot_id="B111",
+            bot_token="xoxb-111",
+            bot_scopes=["chat:write"],
+            bot_user_id="U222"
+        )
+        await store.async_save(installation)
+
+        bot = await store.async_find_bot(enterprise_id="E111", team_id="T111")
+        self.assertIsNotNone(bot)
+
+        os.remove("logs/cacheable.db")
+
+        bot = await sqlite3_store.async_find_bot(enterprise_id="E111", team_id="T111")
+        self.assertIsNone(bot)
+        bot = await store.async_find_bot(enterprise_id="E111", team_id="T111")
+        self.assertIsNotNone(bot)