Skip to content

AyakaState

状态结点

如何获取状态结点

from ayaka import AyakaApp

app = AyakaApp("test")
s1 = app.get_state()
s2 = app.get_state("测试")
s3 = app.get_state("test", "ok")

print(s1)
# root.test

print(s2)
# root.test.测试

print(s3)
# root.test.test.ok

如何获取根状态结点

from ayaka import AyakaApp

app = AyakaApp("test")
s0 = app.root_state

print(s0)
# root

注册命令回调、消息回调

状态结点也可以直接注册命令回调、消息回调

事实上,app.on_xxx系列装饰器就是直接对相应的状态结点操作的

from ayaka import AyakaApp

app = AyakaApp("test")
s0 = app.root_state
s1 = app.get_state()


@s0.on_cmd(["test"], app)
async def func():
    await app.start()


@s1.on_cmd(["对吗"], app)
async def func():
    await app.send("对的")
<<< "user" 说:#对吗 <<< "user" 说:#test >>> "Bot" 说:已打开应用 [test] <<< "user" 说:#对吗 >>> "Bot" 说:对的

注册进入回调、退出回调

注意:不要在进入、退出回调函数内,调用app.gotoapp.set_state方法

@s1.on_enter()
async def func():
    pass

@s1.on_exit()
async def func():
    pass

下一步

在这里~ ↘