[Original RFC](#384) [v2 PR](#394)
New Features 1. Client Decomposition: We’ve split the client into two.
- WebClient: A HTTP client focused on Slack's Web API.
- RTMClient: A websocket client focused on Slack's RTM API.
- RTMClient: Completely redesigned, this client allows you to link your application's callbacks to corresponding Slack events.
- WebClient: The WebClient now provides built-in methods for Slack's Web API. These methods act as helpers enabling you to focus less on how the request is constructed. Here are a few things that this provides:
- Basic information about each method through the docstring.
- Easy File Uploads: You can now pass in the location of a file and the library will handle opening and retrieving the file object to be transmitted.
- Token type validation: This gives you better error messaging when you're attempting to consume an api method that your token doesn't have access to.
- Constructs requests using Slack's preferred HTTP methods and content-types.
Breaking Changes: 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)
Thank you! This release would not have been possible without the support of our community. Thank you to everyone who’s contributed to this release.
- Lock websocket-client version to < 0.55.0: temp fix for #385
## New Features - Adds support for short lived tokens and automatic token refresh #347 (Thanks @roach!)
## Other - update RTM rate limiting comment and error message #308 (Thanks @benoitlavigne!) - Use logging instead of traceback #309 (Thanks @harlowja!) - Remove Python 3.3 from test environments #346 (Thanks @roach!) - Enforced linting when using VSCode. #347 (Thanks @roach!)
- Added rate limit handling for rtm connections (thanks @jayalane!)
- You can now tell the RTM client to automatically reconnect by passing auto_reconnect=True
- Fixed another API param encoding bug. It encodes things properly now.
- Fixed an encoding issue which was encoding some Web API params incorrectly (sorry)
- Adds HTTP response headers to api_call responses to expose things like rate limit info
- Moves token into auth header rather than request params
- Aadds new SlackClientError and ResponseParseError types to describe errors - thanks @aoberoi!
- Fix Build Error (#245) - thanks @stasfilin!
- include email as user property (#173) - thanks @acaire!
- Add http reply into slack login and slack connection error (#216) - thanks @harlowja!
- Removed unused exception class (#233)
- Fix rtm_send_message bug (#225) - thanks @kt5356!
- Allow use of custom parameters on rtm_connect() (#210) - thanks @kamushadenes!
- Fix link to rtm.connect docs (#223) - @sampart!
- Fixed rtm_send_message ID bug introduced in 1.0.8
- Added rtm.connect support
- Fixes an issue where connecting over RTM to large teams may result in “Websocket URL expired” errors
- A load of packaging improvements
- Added proxy support (thanks @timfeirg!)
- Tidied up docs (thanks @schlueter!)
- Added tox settings for Python 3 testing (thanks @cclauss!)
- Allow RTM Channel.send_message to reply to a thread
- Index users by ID instead of Name (non-breaking change)
- Added timeout to api calls.
- Fixed a typo about token access in auth.rst, thanks @kelvintaywl!
- Added Message Threads to the docs
- fixed the ability to search for a user by ID
- fixed an issue causing RTM connections to fail for large teams
- removed unused ping counter
- fixed contributor guidelines links
- updated documentation
- Fix bug preventing API calls requiring a file ID
- Removes files from api_calls before JSON encoding, so the request is properly formatted
- fix for __eq__ comparison in channels using '#' in channel name
- added copyright info to the LICENSE file
- the
api_call
function now returns a decoded JSON object, rather than a JSON encoded string- some
api_call
calls now call actions on the parent server object: -im.open
-mpim.open
,groups.create
,groups.createChild
-channels.create
, channels.join`
- Moves to use semver for versioning
- Adds support for private groups and MPDMs
- Switches to use requests instead of urllib
- Gets Travis CI integration working
- Fixes some formatting issues so the code will work for python 2.6
- Cleans up some unused imports, some PEP-8 fixes and a couple bad default args fixes
- Fixes the server so that it doesn't add duplicate users or channels to its internal lists, https://github.com/slackapi/python-slackclient/commit/0cb4bcd6e887b428e27e8059b6278b86ee661aaa
- README updates: - Updates the URLs pointing to Slack docs for configuring authentication, https://github.com/slackapi/python-slackclient/commit/7d01515cebc80918a29100b0e4793790eb83e7b9 - s/channnels/channels, https://github.com/slackapi/python-slackclient/commit/d45285d2f1025899dcd65e259624ee73771f94bb
- Adds users to the local cache when they join the team, https://github.com/slackapi/python-slackclient/commit/f7bb8889580cc34471ba1ddc05afc34d1a5efa23
- Fixes urllib py 2/3 compatibility, https://github.com/slackapi/python-slackclient/commit/1046cc2375a85a22e94573e2aad954ba7287c886