A Python 3 asynchronous library committed to communicating with LOL server through the LCU API in a simple and flexible way .
Project description
moonblade
A Python 3 asynchronous library committed to communicating with LOL server through the LCU API in a simple and flexible way.
Setup
pip install moonblade
Usage
moonblade consists of MoonBlade
, Router
, and Node
.
MoonBlade
MoonBlade
is a connector to connect to LOL server.
At the beginning, it is necessary to import the class.
from moonblade import MoonBlade
To communicating with LOL server, you need to start MoonBlade first.
mb = MoonBlade()
mb.start()
Similarly, when stopping the use of MoonBlade, it is necessary to stop MoonBlade.
mb.stop()
MoonBlade is alse support context managers.
async with MoonBlade() as mb:
...
while True:
await asyncio.sleep(1)
Router
Router
is used to distribute events received from the LOL server.
Before use, it is also necessary to import the class.
from moonblade import Router
register
To receive events, we need to register asynchronous handlers. The handler should be able to accept a dict param.
async def example(data: dict):
pass
router = Router()
router.register(route = "/moonblade/start", event_type = "All", handler = example)
Note that Router is a singleton class that points to the same Router no matter how many times it is instantiated.
Router can also be used without instantiation.
Router.register(route = "/moonblade/start", event_type = "All", handler = example)
Router can also be use as a decorator to register route.
@Router.register(route = "/moonblade/start", event_type = "All")
async def example(data: dict):
pass
In fact, I recommend using this way. It should be noted that when registering route with a decorator, the handler param should be None
.
We can also register asynchronous methods, which will be introduced later.
event_type
Including Create
, Update
, Delete
and All
. Default to All
and case-insensitive.
fake
An asynchronous method to fake an event from the server.
await Router.fake(None, 'Update', '/moonblade/start')
Node
Router can register asynchronous methods. In this situation, the class witch the method in should be a subclass of Node
.
class C(Node):
def __init__(self) -> None:
...
super().__init__()
@Router.register('/moonblade/start')
async def example(self, data: dict):
pass
Also, we can add for key in self.__dir__(): getattr(self, key)
to the end of the __init__
method to achieve the same effect.
class C:
def __init__(self) -> None:
for key in self.__dir__():
getattr(self, key)
@Router.register('/moonblade/start')
async def example(self, data: dict):
pass
Application
For more detailed usage instructions, reference the library Diana
witch is based on moonblade.
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
File details
Details for the file moonblade-1.0.4.tar.gz
.
File metadata
- Download URL: moonblade-1.0.4.tar.gz
- Upload date:
- Size: 7.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.10.11
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 271a906f505d06496966ac9f67fcd75233bdfad9788513b6fa26beb7f797f848 |
|
MD5 | d77de5712fb5ea123ecaf194e5fbb8db |
|
BLAKE2b-256 | f8f96ddbc9946e6d2cc76fcc510c06f72a0e6246a53073e4fa674b4f47174b19 |