# 协处理器(Subroutine)

有时候, 类似 HTTP 的以请求换回复的模型满足不了你, 但是 Applicationrun 方法运行之前, 你无法对机器人做任何操作, 而你需要让机器人主动的发送消息...

这时, 你就需要使用 协处理器(Subroutine) 策略了.

# 什么是 协处理器(Subroutine)?

通俗的说, 就是 Mirai 实例在开始运行事件的监听的同时启动的协程, 而在那之前, 一些准备工作早已完工, 例如 sessionKey 的获取和激活.

有时候, 我们需要让机器人主动的去发送一些消息, 或者是定时的让机器人更新数据...
这些都可以使用协处理器策略解决.

# 使用方式

你需要做的仅仅是将 Mirai.subroutine 作为装饰器装饰一个异步函数:

from mirai import Mirai

app = Mirai(......)

@app.subroutine
async def subroutine1(app: Mirai):
    print("subroutine1 started")

if __name__ == "__main__":
    app.run()
1
2
3
4
5
6
7
8
9
10

TIP

呃, 可能有些误会, 我们不会一次又一次的调用被包装的异步函数, 所以上面的实例只会输出一次, 所以如果你需要这个函数不停的运行, 只能使用类似 while True 这种方案.

此外, exception_handler 对此方案有效(version > 0.2.7).