A multipurpose bot and web framework
A framework for small Internet communities
royalnet is a Python framework composed of many interconnected services that may be useful to small Internet communities (gaming clans, university groups, etc).
Serfs are services that allow Royalnet to respond to chat commands on multiple chat platforms.
Commands using the Royalnet Serf API share their code between chat platforms: each serf will handle the specifics for their respective platform, preventing potential bugs due to code duplication!
Supported chat platforms
More can easily be added by implementing a new serf!
The Alchemy module allows all Royalnet services to use a PostgreSQL database with a SQLAlchemy interface.
This allows the usage of a shared and easy-to-use ORM: Alchemy handles for you everything, from the creation of new tables to isolating in transactions the calls made from a Serf command to the database.
All Royalnet services can communicate with each other through the Herald Network, a websockets-based system allowing Remote Procedure Calls ("events") between services.
For example, in response to a Telegram message, the Telegram Serf can contact the Discord Serf to ask it to connect to voice chat in Discord.
Connections between different hosts are possible too, even if they currently are unused by the Royalnet Launcher.
The Constellation service is a Starlette-based webserver that can supply dynamic pages ("stars") while being connected to the other parts of Royalnet through the Herald.
The Constellation service also offers utilities for creating REST APIs as Python functions with
dicts as inputs and outputs, leaving (de)serialization, transmission and eventually authentication to Royalnet.
Royalnet can automatically report uncaught errors in all services to a Sentry-compatible server, while logging them in the console in development environments to facilitate debugging.
New Serf commands, Constellation stars, Herald events and Alchemy tables can be added to Royalnet through plugins called "Packs" that can be activated or deactivated on each single instance.
Each pack can access only its individual section in the configuration file, preventing key conflicts (as long as the packs themselves don't share the same name).
New packs can be created starting from this GitHub template.
pip install royalnet
To install a specific module, run:
pip install royalnet[MODULENAME]
To install all
royalnet modules, run:
pip install royalnet[telegram,discord,matrix,alchemy_easy,bard,constellation,sentry,herald,coloredlogs]
A work-in-progress documentation is available here.
Developing for Royalnet
To develop for
royalnet, you need to have Poetry installed on your PC.
After you've installed Poetry, clone the git repo with the command:
git clone https://github.com/Steffo99/royalnet
Then enter the new directory:
And finally install all dependencies and the package:
poetry install -E telegram -E discord -E matrix -E alchemy_easy -E constellation -E sentry -E herald -E coloredlogs
Need help in anything Royalnet-related? Open a issue on GitHub!
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 royalnet-5.11.18-py3-none-any.whl (85.6 kB)||File type Wheel||Python version py3||Upload date||Hashes View|
|Filename, size royalnet-5.11.18.tar.gz (60.5 kB)||File type Source||Python version None||Upload date||Hashes View|
Hashes for royalnet-5.11.18-py3-none-any.whl