ayaka.on

注册回调[旧API]

 1'''注册回调[旧API]'''
 2from typing import TYPE_CHECKING
 3from .state import root_state, AyakaTimer
 4
 5if TYPE_CHECKING:
 6    from .ayaka import AyakaApp
 7
 8
 9class AyakaOn:
10    def __init__(self, app: "AyakaApp") -> None:
11        self.app = app
12
13    def state(self, *states: str):
14        '''注册有状态回调'''
15        if "*" in str(states):
16            def decorator(func):
17                func = self.app.on_deep_all("all")(func)
18                func = self.app.on_state()(func)
19                return func
20            return decorator
21        return self.app.on_state(*states)
22
23    def idle(self, super=False):
24        '''注册无状态回调'''
25        if super:
26            def decorator(func):
27                func = self.app.on_state(root_state)(func)
28                func = self.app.on_deep_all("all")(func)
29                return func
30            return decorator
31        return self.app.on_state(root_state)
32
33    def command(self, *cmds: str):
34        return self.app.on_cmd(*cmds)
35
36    def text(self):
37        return self.app.on_no_block()
38
39    def everyday(self, h: int, m: int, s: int):
40        '''每日定时触发'''
41        return self.interval(86400, h, m, s)
42
43    def interval(self, gap: int, h=-1, m=-1, s=-1, show=True):
44        '''在指定的时间点后循环触发'''
45        return self.on_timer(gap, h, m, s, show)
46
47    def on_timer(self, gap: int, h: int, m: int, s: int, show=True):
48        '''在指定的时间点后循环触发'''
49        def decorator(func):
50            t = AyakaTimer(self.app.name, gap, h, m, s, func, show)
51            self.app.timers.append(t)
52            return func
53        return decorator
class AyakaOn:
10class AyakaOn:
11    def __init__(self, app: "AyakaApp") -> None:
12        self.app = app
13
14    def state(self, *states: str):
15        '''注册有状态回调'''
16        if "*" in str(states):
17            def decorator(func):
18                func = self.app.on_deep_all("all")(func)
19                func = self.app.on_state()(func)
20                return func
21            return decorator
22        return self.app.on_state(*states)
23
24    def idle(self, super=False):
25        '''注册无状态回调'''
26        if super:
27            def decorator(func):
28                func = self.app.on_state(root_state)(func)
29                func = self.app.on_deep_all("all")(func)
30                return func
31            return decorator
32        return self.app.on_state(root_state)
33
34    def command(self, *cmds: str):
35        return self.app.on_cmd(*cmds)
36
37    def text(self):
38        return self.app.on_no_block()
39
40    def everyday(self, h: int, m: int, s: int):
41        '''每日定时触发'''
42        return self.interval(86400, h, m, s)
43
44    def interval(self, gap: int, h=-1, m=-1, s=-1, show=True):
45        '''在指定的时间点后循环触发'''
46        return self.on_timer(gap, h, m, s, show)
47
48    def on_timer(self, gap: int, h: int, m: int, s: int, show=True):
49        '''在指定的时间点后循环触发'''
50        def decorator(func):
51            t = AyakaTimer(self.app.name, gap, h, m, s, func, show)
52            self.app.timers.append(t)
53            return func
54        return decorator
AyakaOn(app: ayaka.ayaka.AyakaApp)
11    def __init__(self, app: "AyakaApp") -> None:
12        self.app = app
def state(self, *states: str):
14    def state(self, *states: str):
15        '''注册有状态回调'''
16        if "*" in str(states):
17            def decorator(func):
18                func = self.app.on_deep_all("all")(func)
19                func = self.app.on_state()(func)
20                return func
21            return decorator
22        return self.app.on_state(*states)

注册有状态回调

def idle(self, super=False):
24    def idle(self, super=False):
25        '''注册无状态回调'''
26        if super:
27            def decorator(func):
28                func = self.app.on_state(root_state)(func)
29                func = self.app.on_deep_all("all")(func)
30                return func
31            return decorator
32        return self.app.on_state(root_state)

注册无状态回调

def command(self, *cmds: str):
34    def command(self, *cmds: str):
35        return self.app.on_cmd(*cmds)
def text(self):
37    def text(self):
38        return self.app.on_no_block()
def everyday(self, h: int, m: int, s: int):
40    def everyday(self, h: int, m: int, s: int):
41        '''每日定时触发'''
42        return self.interval(86400, h, m, s)

每日定时触发

def interval(self, gap: int, h=-1, m=-1, s=-1, show=True):
44    def interval(self, gap: int, h=-1, m=-1, s=-1, show=True):
45        '''在指定的时间点后循环触发'''
46        return self.on_timer(gap, h, m, s, show)

在指定的时间点后循环触发

def on_timer(self, gap: int, h: int, m: int, s: int, show=True):
48    def on_timer(self, gap: int, h: int, m: int, s: int, show=True):
49        '''在指定的时间点后循环触发'''
50        def decorator(func):
51            t = AyakaTimer(self.app.name, gap, h, m, s, func, show)
52            self.app.timers.append(t)
53            return func
54        return decorator

在指定的时间点后循环触发