Skip to main content

asyncio-based Python wrapper for the Rocket.Chat Realtime API.

Project description

rocketchat-async

asyncio-based Python wrapper for the Rocket.Chat Realtime API.

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
from rocketchat_async import RocketChat


def handle_message(channel_id, sender_id, msg_id, thread_id, msg, qualifier):
    """Simply print the message that arrived."""
    print(msg)


async def subscribe_to_messages(rc, channel):
    """Subscribe to a channel message."""
    await rc.subscribe_to_channel_messages(channel, handle_message)


async def main(address, username, password):
    rc = RocketChat()
    await rc.start(address, username, password)
    # A possible workflow consists of two steps:
    #
    # 1. Set up the desired callbacks...
    for channel_id, channel_type in await rc.get_channels():
        await subscribe_to_messages(rc, channel_id)
    # 2. ...and then simply wait for the registered events.
    await rc.run_forever()


# 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, is_typing)

Send the "typing" event to a 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 six arguments: channel_id, sender_id, msg_id, thread_id, msg_text and msg_qualifier. The qualifier can help to determine if e.g. the message is a system message about the user being removed from the channel.

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rocketchat_async-1.0.0.tar.gz (7.0 kB view details)

Uploaded Source

Built Distribution

rocketchat_async-1.0.0-py3-none-any.whl (8.0 kB view details)

Uploaded Python 3

File details

Details for the file rocketchat_async-1.0.0.tar.gz.

File metadata

  • Download URL: rocketchat_async-1.0.0.tar.gz
  • Upload date:
  • Size: 7.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.3.1 CPython/3.9.2 Linux/5.10.0-20-amd64

File hashes

Hashes for rocketchat_async-1.0.0.tar.gz
Algorithm Hash digest
SHA256 1b9593a5afeb6f68f825cb843821e65b286e579d3999769ca90a927cf6788a9f
MD5 27f4e2e22c54493e9ae6487011f1acd4
BLAKE2b-256 935a3450abbfbe21ba250e1b6846f5d14852442c59a2bbd61ed88ef7217849a2

See more details on using hashes here.

File details

Details for the file rocketchat_async-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: rocketchat_async-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 8.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.3.1 CPython/3.9.2 Linux/5.10.0-20-amd64

File hashes

Hashes for rocketchat_async-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b754a5d499f6e28d3b7c60f7a64b1d279b7d670567ab0e167d2abbebfe756470
MD5 f12c3e57bbee5534dcb2a9879649a2d7
BLAKE2b-256 7997f9bc6ad4e562a19752e52d278e0a2f7ee7a7b1bd4ede3043358f7c922f4d

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page