Feature: 存储 matcher 发送 prompt 的结果 (#3155)

This commit is contained in:
Ju4tCode
2024-12-05 20:55:24 +08:00
committed by GitHub
parent ab8dea5a02
commit 32bc2c314a
8 changed files with 271 additions and 22 deletions

View File

@ -1224,6 +1224,37 @@ async def _(foo: Event = LastReceived()): ...
</TabItem>
</Tabs>
### ReceivePromptResult
获取某次 `receive` 发送提示消息的结果。
<Tabs groupId="annotated">
<TabItem value="annotated" label="Use Annotated" default>
```python {6}
from typing import Any, Annotated
from nonebot.params import ReceivePromptResult
@matcher.receive("id", prompt="prompt")
async def _(result: Annotated[Any, ReceivePromptResult("id")]): ...
```
</TabItem>
<TabItem value="no-annotated" label="Without Annotated">
```python {6}
from typing import Any
from nonebot.params import ReceivePromptResult
@matcher.receive("id", prompt="prompt")
async def _(result: Any = ReceivePromptResult("id")): ...
```
</TabItem>
</Tabs>
### Arg
获取某次 `got` 接收的参数。如果 `Arg` 参数留空,则使用函数的参数名作为要获取的参数。
@ -1318,3 +1349,75 @@ async def _(foo: str = ArgPlainText("key")): ...
</TabItem>
</Tabs>
### ArgPromptResult
获取某次 `got` 发送提示消息的结果。如果 `Arg` 参数留空,则使用函数的参数名作为要获取的参数。
<Tabs groupId="annotated">
<TabItem value="annotated" label="Use Annotated" default>
```python {6,7}
from typing import Any, Annotated
from nonebot.params import ArgPromptResult
@matcher.got("key", prompt="prompt")
async def _(result: Annotated[Any, ArgPromptResult()]): ...
async def _(result: Annotated[Any, ArgPromptResult("key")]): ...
```
</TabItem>
<TabItem value="no-annotated" label="Without Annotated">
```python {6,7}
from typing import Any
from nonebot.params import ArgPromptResult
@matcher.got("key", prompt="prompt")
async def _(result: Any = ArgPromptResult()): ...
async def _(result: Any = ArgPromptResult("key")): ...
```
</TabItem>
</Tabs>
### PausePromptResult
获取最近一次 `pause` 发送提示消息的结果。
<Tabs groupId="annotated">
<TabItem value="annotated" label="Use Annotated" default>
```python {6}
from typing import Any, Annotated
from nonebot.params import PausePromptResult
@matcher.handle()
async def _():
await matcher.pause(prompt="prompt")
@matcher.handle()
async def _(result: Annotated[Any, PausePromptResult()]): ...
```
</TabItem>
<TabItem value="no-annotated" label="Without Annotated">
```python {6}
from typing import Any
from nonebot.params import PausePromptResult
@matcher.handle()
async def _():
await matcher.pause(prompt="prompt")
@matcher.handle()
async def _(result: Any = PausePromptResult()): ...
```
</TabItem>
</Tabs>