asyncio-based Python wrapper for the Rocket.Chat Realtime API.
Project description
rocketchat-async
asyncio-based Python wrapper for the Rocket.Chat Realtime API.
Supported Rocket.Chat versions: 6.x. (The library might also work or partially work with other versions.)
When should you use this library?
Use this library if you:
- want to integrate with Rocket.Chat from Python
- are using asyncio to drive your code
- want to use Rocket.Chat's efficient websockets-based Realtime API
Installation
pip install rocketchat-async
Example usage
import asyncio
import random
from rocketchat_async import RocketChat
def handle_message(channel_id, sender_id, msg_id, thread_id, msg, qualifier,
unread, repeated):
"""Simply print the message that arrived."""
print(msg)
async def main(address, username, password):
while True:
try:
rc = RocketChat()
await rc.start(address, username, password)
# Alternatively, use rc.resume for token-based authentication:
# await rc.resume(address, username, token)
# A possible workflow consists of two steps:
#
# 1. Set up the desired callbacks...
for channel_id, channel_type in await rc.get_channels():
await rc.subscribe_to_channel_messages(channel_id,
handle_message)
# 2. ...and then simply wait for the registered events.
await rc.run_forever()
except (RocketChat.ConnectionClosed,
RocketChat.ConnectCallFailed) as e:
print(f'Connection failed: {e}. Waiting a few seconds...')
await asyncio.sleep(random.uniform(4, 8))
print('Reconnecting...')
# Side note: Don't forget to use the wss:// scheme when TLS is used.
asyncio.run(main('ws://localhost:3000/websocket', 'username', 'password'))
API Overview
Brief overview of the currently implemented methods.
As of now, Rocket.Chat's API is only covered partially (based on my original needs). I am open to both feature requests as well as pull requests.
Methods
RocketChat.get_channels()
Get a list of channels the logged-in user is currently member of.
RocketChat.send_message(text, channel_id, thread_id=None)
Send a text message to a channel.
RocketChat.send_reaction(orig_msg_id, emoji)
Send a reaction to a specific message.
RocketChat.send_typing_event(channel_id, thread_id=None)
Send the "typing" event to a channel or to a specified thread within that channel.
RocketChat.subscribe_to_channel_messages(channel_id, callback)
Subscribe to all messages in the given channel. Returns the subscription ID.
The provided callback should accept eight arguments: channel_id
,
sender_id
, msg_id
, thread_id
, msg_text
, msg_qualifier
and repeated
. The qualifier can help to determine if e.g. the
message is a system message about the user being removed from
the channel. The repeated
flag assists in distinguishing
whether the message has been received again as a result of
thread replies, or if it is a new message post.
RocketChat.subscribe_to_channel_changes(callback)
Subscribe to all changes in channels. Returns the subscription ID.
The provided callback should accept two arguments: channel_id
and channel_qualifier
. The qualifier helps to determine e.g.
if it's a direct message or a normal room.
RocketChat.unsubscribe(subscription_id)
Cancel a subscription.
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
Built Distribution
File details
Details for the file rocketchat_async-4.1.0.tar.gz
.
File metadata
- Download URL: rocketchat_async-4.1.0.tar.gz
- Upload date:
- Size: 8.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.3.1 CPython/3.9.2 Linux/5.10.0-27-amd64
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6d782afcc6b51b593c0595f5ae782b387aada7b1c58d27f257cb5e0b9dbc2bb7 |
|
MD5 | c9e369d690da90d2d8a84f1a55259fe1 |
|
BLAKE2b-256 | 3d5caabed3546d8e31dc0baca9db03fc2ca519eaf30844de8b2fbf21e5ca6f40 |
File details
Details for the file rocketchat_async-4.1.0-py3-none-any.whl
.
File metadata
- Download URL: rocketchat_async-4.1.0-py3-none-any.whl
- Upload date:
- Size: 8.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.3.1 CPython/3.9.2 Linux/5.10.0-27-amd64
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | dd13445a224a6847e739213f06a27c0d56f856e0d0c379f1638c64a39e555001 |
|
MD5 | 4967399141471c61c255a2d4d31ece9c |
|
BLAKE2b-256 | eddb64f4ad41ce95ee368be3372789c7bf16d86d4fef32155ed33a81f5768bb5 |