Welcome to pyryver!
A reverse engineered and very functional API for building things that mess with Ryver(tm).
Features
asyncioready API.Support for using the as-of-yet undocumented realtime WebSockets interface.
Easy to understand design for chatting in chats, messing with messages, managing users and handling notifications.
Only depends on
aiohttp!
Example Usage
1import pyryver
2import asyncio
3
4async def main():
5 # Connect to ryver
6 async with pyryver.Ryver("my_organization", "my_username", "my_password") as ryver:
7 # Load all chats
8 await ryver.load_chats()
9
10 # get a user by username
11 my_friend = ryver.get_user(username="tylertian123")
12 me = ryver.get_user(username="my_username")
13 # send a message to a chat (in this case a DM)
14 await my_friend.send_message("hello there")
15
16 # connect to the websockets interface
17 async with ryver.get_live_session(auto_reconnect=True) as session:
18 @session.on_chat
19 async def on_message(msg: pyryver.WSChatMessageData):
20 print(msg.text) # print out the message's text
21 # Reply to the message
22 # Make sure to check that the message isn't from the bot itself
23 if msg.from_jid != me.get_jid() and msg.text == "hello":
24 # Send a message to the same chat
25 # This could be either a user (for a private message) or a forum/team
26 chat = ryver.get_chat(jid=msg.to_jid)
27 await chat.send_message("hi")
28
29 # run until session.terminate() is called
30 await session.run_forever()
31
32asyncio.get_event_loop().run_until_complete(main())
Table Of Contents
- Introduction
- API Reference
- Session
RyverRyver.get_live_session()Ryver.get_chat()Ryver.get_user()Ryver.get_forum()Ryver.get_team()Ryver.get_groupchat()Ryver.get_object()Ryver.get_info()Ryver.get_notifs()Ryver.mark_all_notifs_read()Ryver.mark_all_notifs_seen()Ryver.upload_file()Ryver.create_link()Ryver.invite_user()Ryver.create_forum()Ryver.create_team()Ryver.load_chats()Ryver.load_missing_chats()Ryver.load_users()Ryver.load_forums()Ryver.load_teams()Ryver.close()
- Live Session
RyverWSRyverWS.on_chat()RyverWS.on_chat_deleted()RyverWS.on_chat_updated()RyverWS.on_presence_changed()RyverWS.on_user_typing()RyverWS.on_connection_loss()RyverWS.on_reconnect()RyverWS.EVENT_REACTION_ADDEDRyverWS.EVENT_REACTION_REMOVEDRyverWS.EVENT_TOPIC_CHANGEDRyverWS.EVENT_TASK_CHANGEDRyverWS.EVENT_ENTITY_CHANGEDRyverWS.EVENT_ALLRyverWS.on_event()RyverWS.MSG_TYPE_CHATRyverWS.MSG_TYPE_CHAT_UPDATEDRyverWS.MSG_TYPE_CHAT_DELETEDRyverWS.MSG_TYPE_PRESENCE_CHANGEDRyverWS.MSG_TYPE_USER_TYPINGRyverWS.MSG_TYPE_EVENTRyverWS.MSG_TYPE_ALLRyverWS.on_msg_type()RyverWS.send_chat()RyverWS.typing()RyverWS.send_typing()RyverWS.send_clear_typing()RyverWS.PRESENCE_AVAILABLERyverWS.PRESENCE_AWAYRyverWS.PRESENCE_DO_NOT_DISTURBRyverWS.PRESENCE_OFFLINERyverWS.send_presence_change()RyverWS.is_connected()RyverWS.set_auto_reconnect()RyverWS.run_forever()RyverWS.terminate()RyverWS.start()RyverWS.close()
RyverWSTypingWSConnectionErrorClosedErrorConnectionLossError- Callback Task Data Types
- Ryver Entities
ObjectObject.get_ryver()Object.get_id()Object.get_entity_type()Object.get_raw_data()Object.get_api_url()Object.get_create_date()Object.get_modify_date()Object.get_app_link()Object.get_creator()Object.get_deferred_field()Object.get_create_user()Object.get_modify_user()Object.get_type()Object.is_instantiable()Object.get_by_id()
- Chats
- Users
- Group Chat Members
- Messages (Including Topics)
- Tasks
- Files
- Notifications
- Creators
- Utilities
- Session