1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
from infini.core import Core
from infini.generator import TextGenerator
from infini.handler import Handler
from infini.input import Input
from infini.interceptor import Interceptor
from infini.output import Output
from infini.router import Contains, Startswith
def test_core():
command_input = Input(".add 1 2")
intercepted_input = Input("这个人叫简律纯.")
valid_input = Input("这个叫苏向夜.")
command_and_valid_input = Input(".echo 苏向夜打爆了简某人的狗头")
def intercept_jianlvchun(_: Input) -> Input | Output:
return Output("text", "block.jianlvchun", block=True) # TODO 拦截器阻塞标识
interceptor = Interceptor()
interceptor.interceptors = [
{
"priority": 1,
"router": Contains("简律纯"),
"handler": intercept_jianlvchun,
}
]
def add(input: Input) -> Output:
result = str(sum(list(map(int, input.get_plain_text().lstrip(".add").split()))))
return Output(
"text", "test.add", status=0, block=False, variables={"result": result}
)
def cmd(_: Input) -> Output:
return Output("text", "test.cmd", status=0, block=False)
handler = Handler()
handler.handlers = [
{
"priority": 2,
"router": Startswith(".add"),
"handler": add,
},
{
"priority": 1,
"router": Startswith("."),
"handler": cmd,
},
]
generator = TextGenerator()
generator.events = {
"test.cmd": "cmd",
"test.add": "{{ result }}",
"block.jianlvchun": "检测到违禁词",
}
core = Core()
core.handler = handler
core.interceptor = interceptor
core.pre_interceptor = interceptor
core.generator = generator
outputs = set()
for output in core.input(command_input):
outputs.add(output)
assert outputs == {"cmd", "3"}
count = 0
for _ in core.input(valid_input):
count += 1
assert count == 0
for output in core.input(intercepted_input):
assert output == "检测到违禁词"
outputs = set()
for output in core.input(command_and_valid_input):
outputs.add(output)
assert outputs == {"cmd"}
|