An unofficial async Python library for Ryver.
pyryver is an unofficial async Python library for Ryver.
It provides a simple and sane way of automating tasks on Ryver and building bots, without the need to set up Hubot or Botkit.
pyryver is still in major version 0, so breaking changes may be introduced any time. Please check changelogs carefully.
However, we will attempt to make it as backwards-compatible as possible (excluding version 0.1.0).
v0.4 is now out of beta! Minor breaking changes were introduced since 0.3.2! See the Release Description for the changelog.
Special thanks to @mincrmatt12!
pyryver requires Python >= 3.6 and the
pyryver has near complete support for every common Ryver action.
This includes things like sending messages, uploading files, managing topics & tasks, creating forums/teams, etc.
pyryver currently does not support editing user and organization settings.
Forum/team settings, however, are supported.
For a complete list of everything the API contains, head over to the docs. If there's something missing from the API that you'd like to see, create an issue and we'll get to it ASAP.
Documentation and Examples
Documentation and examples can be found on Read the Docs.
If you want to see an example of
pyryver being used in a real project, check out LaTeX Bot.
Here's an example demonstrating how to send a message (v0.4.0 API):
import pyryver import asyncio async def main(): # Connect to ryver async with pyryver.Ryver("my_organization", "my_username", "my_password") as ryver: # Load all chats await ryver.load_chats() # Find users and forums/teams friend = ryver.get_user(username="my_friend") forum_or_team = ryver.get_groupchat(name="My Forum or Team") # Send a message await friend.send_message("Hello, friend!") await forum_or_team.send_message("Hello, forum or team!") asyncio.get_event_loop().run_until_complete(main())
Here's an example demonstrating how to get your bot to respond in real-time (v0.4.0 API):
import pyryver import asyncio async def main(): # Connect to ryver async with pyryver.Ryver("my_organization", "my_username", "my_password") as ryver: # Load all chats await ryver.load_chats() # Get the bot's user me = ryver.get_user(username="my_username") # Connect to the websocket interface # Enable auto-reconnects async with ryver.get_live_session(auto_reconnect=True) as session: @session.on_chat async def on_message(msg: pyryver.WSChatMessageData): print(msg.text) # print out the message's text # Reply to the message # Make sure to check that the message isn't from the bot itself if msg.from_jid != me.get_jid() and msg.text == "hello": # Send a message to the same chat # This could be either a user (for a private message) or a forum/team chat = ryver.get_chat(jid=msg.to_jid) await chat.send_message("hi") # run until session.terminate() is called await session.run_forever() asyncio.get_event_loop().run_until_complete(main())
Release history Release notifications | RSS feed
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
|Filename, size||File type||Python version||Upload date||Hashes|
|Filename, size pyryver-0.4.0-py3-none-any.whl (45.5 kB)||File type Wheel||Python version py3||Upload date||Hashes View|
|Filename, size pyryver-0.4.0.tar.gz (43.2 kB)||File type Source||Python version None||Upload date||Hashes View|