A simple, intuitive and fast Slack API client for the Slack Web API
Project description
SlackTime
Background
- This library is a wrapper around the Slack WebAPI (https://api.slack.com/methods)
- This library uses the beautiful requests library (https://github.com/psf/requests) and the methods return
requests.Response
objects - This library is a homage to the great (and now archived) Slacker (https://github.com/os/slacker)
- This library is a response to the official Slack client (https://github.com/slackapi/python-slackclient). I'm so petty I couldn't stand the the camel/snake-case hybrid:
client.chat_postMessage
- This library was made mostly by a script that scraped the Slack API method page and automagically generated the code
- This library was touched up by a human and some tests and docs generated, but I am fully aware there could be bugs
Aim
This library aims to be:
- Simple
- Intuitive
- Fast
Install
- This library uses f-strings and therefore is 3.6+
- Simply install using pip
pip install slack_time
Learn by example
Getting a client:
from slack_time import get_slack_time
slack_time = get_slack_time()
get_slack_time
will grab theSLACK_API_TOKEN
environment variable- Environment variable grabbed can be changed:
slack_time = get_slack_time('SLACK_TOKEN')
Making a client:
from slack_time import SlackTime
slack_time = SlackTime('xoxo-hello-world')
- Or with other config:
from slack_time import SlackTime
import requests
token = "xoxo-gossip-girl"
session = requests.Session()
proxies = {"http": "10.10.10.10:80", "https": "10.11.12.13:8080"}
timeout = 60
slack_time = SlackTime(token, session=session, proxies=proxies, timeout=timeout)
Using the client:
from slack_time import get_slack_time
slack_time = get_slack_time()
slack.chat.post_message("general", "Hey team, I love this knock off Slacker library!")
Inspecting a response:
>>> resp = slack_time.api.test(foo='bar')
>>> resp
<Response [200]>
>>> resp.json()
{
'ok': True,
'args': {
'token': 'xoxp-your-token',
'foo': 'bar'
}
}
Errors:
- When an 'error' is returned in the response it will be raised as an exception
- The exception will subclassed from
SlackError
>>> slack_time.api.test(error='hello')
Traceback (most recent call last):
...
slack_time.api.hello: You tried to perform a request to https://slack.com/api/api.test.
The server returned a 'hello' response. Find out more at: https://api.slack.com/methods/api.test#errors
>>> from slack_time import SlackError
>>> try:
... slack_time.api.test(error='hello')
... except SlackError:
... pass
How it works
- In the web API docs (https://api.slack.com/methods) the methods are listed as endpoints e.g. admin.apps.requests.list
- The url for admin.apps.requests.list would be https://slack.com/api/admin.apps.requests.list
- The client method would be
slack_time.admin.apps.requests.list(*args, **kwargs)
- The method translation would be from camelCase to snake_case
Some examples:
- admin.conversations.convertToPrivate -> slack_time.admin.conversations.convert_to_private
- admin.conversations.ekm.listOriginalConnectedChannelInfo -> admin.conversations.ekm.list_original_connected_channel_info
- files.revokePublicURL -> files.revoke_public_url
- etc
Examples
from slack_time import get_slack_time
slack = get_slack_time()
slack.files.upload('hello_world.txt')
with open('hello_world.txt') as f:
slack.files.upload(f)
Docs
Please use the slack docs https://api.slack.com/methods
Contributing
- I imagine there are bugs
- Please feel free to submit a PR, you will need to install pre-commit (https://pre-commit.com/)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
slack_time-0.1.5.tar.gz
(47.5 kB
view details)
File details
Details for the file slack_time-0.1.5.tar.gz
.
File metadata
- Download URL: slack_time-0.1.5.tar.gz
- Upload date:
- Size: 47.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.50.0 CPython/3.6.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | dee849801745d0ff27b62e57c5af7d49d96bbd040a7be22a930710db155dbb9a |
|
MD5 | 2d4e8269adfe28f2f245bccc2def2fb6 |
|
BLAKE2b-256 | 785863746768f602157c4076f5a5ae4fc61f21c454fbbd5583f07d9e7aceb267 |