Skip to content

a high performance, highly customizable, elegantly designed event system based on asyncio

Notifications You must be signed in to change notification settings

GraiaProject/BroadcastControl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

0adb9f4 · Jan 10, 2024
Jul 15, 2023
Jul 4, 2022
Jul 29, 2023
Jan 10, 2024
Aug 4, 2023
Oct 30, 2023
Jul 29, 2023
Aug 5, 2023
Jan 10, 2024
Apr 8, 2022
Jul 29, 2023

Repository files navigation

Broadcast Control for Graia Framework

这是什么?

一个高性能,高可扩展性,设计简洁,基于 asyncio 的事件系统,为 Graia Framework 设计。

安装

从 PyPI 安装

pip install graia-broadcast
# 或者使用 poetry
poetry add graia-broadcast

Example

from graia.broadcast import Dispatchable, BaseDispatcher, Broadcast
from graia.broadcast.interfaces.dispatcher import DispatcherInterface

class ExampleEvent(Dispatchable):
    class Dispatcher(BaseDispatcher):
        def catch(interface: "DispatcherInterface"):
            if interface.annotation is str:
                return "ok, i'm."

broadcast = Broadcast()

@broadcast.receiver("ExampleEvent") # or just receiver(ExampleEvent)
async def event_listener(maybe_you_are_str: str):
    print(maybe_you_are_str) # <<< ok, i'm

async def main():
    broadcast.postEvent(ExampleEvent()) # sync call is allowed.
    await asyncio.sleep(0.1) # to solve event task.

loop.run_until_complete(main())

开源协议

本实现以 MIT 为开源协议。

About

a high performance, highly customizable, elegantly designed event system based on asyncio

Resources

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages