跳转至

Hello, World!

Installation🔗

首先, 我们需要安装 graia-broadcast:

pip install graia-broadcast

使用 poetry:

poetry add graia-broadcast

Prepare🔗

在程序中导入主实现类 Broadcast 和前置标准库 asyncio:

import asyncio
from graia.broadcast import Broadcast

获取事件循环, 并实例化 Broadcast:

loop = asyncio.get_event_loop()
broadcast = Broadcast(loop=loop)

由于分发事件的方式是使用 loop.create_task, 所以 Broadcast 需要依附于一个正在运行的 loop 才能使用, 通常你可以通过 loop.run_until_complete 或者 loop.run_forever 方法运行事件循环.

Note

针对 Graia Ariadne 用户: 当你执行 Ariadne.launch_blocking 方法时, 等同于上面的方式.

Create a Event🔗

导入相关基类:

from graia.broadcast.entities.event import Dispatchable
from graia.broadcast.entities.dispatcher import BaseDispatcher

声明一个类,仅需满足以下条件: - 包含一继承了 BaseDispatcher, 名为 Dispatcher 的类声明; - 继承 Dispatchable,尽管这项在最新版中可选,但还是建议,以保证 findEvent 方法可以使用。

class ExampleEvent(Dispatchable):
    class Dispatcher(BaseDispatcher):
        @staticmethod
        async def catch(interface: DispatcherInterface):
            pass

若该类继承了 Dispatchable,你就可以通过 Broadcast.findEvent 方法检查事件声明是否有效:

print(Broadcast.findEvent("ExampleEvent"))
# 传入事件类的名称, 若返回为 None, 则事件声明无效

Ensure a event receiver🔗

通过使用装饰器方法 Broadcast.receiver 声明一个事件的监听:

@broadcast.receiver(ExampleEvent) # 传入字符串 "ExampleEvent" 效果一样
async def event_receiver(event: ExampleEvent):
    print("Hello World!")

你需要也仅需要声明类型注解为 ExampleEvent 就能获取收到的事件的类实例.

这里的 event_receiver, 我们称其为 "监听器(Listener)".

Create and broadcast an event🔗

创建事件就是实例化事件类, 在这里, ExampleEvent 只需要简单的实例化就好, 因为也没什么其他的方法。

event = ExampleEvent()

然后通过 Broadcast.postEvent 方法即可广播事件到监听器:

broadcast.postEvent(event)

通过 asyncio 的相关接口(比如 run 一个 do nothing 的异步函数)运行程序,将打印一个 "Hello World!".
很好,你已经运行起来了一个最小最小的,基于 Broadcast Control 的程序实例,现在我们将正式开始此行。