2021-12-29 00:24:52 +08:00
|
|
|
---
|
|
|
|
sidebar_position: 4
|
|
|
|
description: 定义事件处理流程,完成事件响应
|
|
|
|
|
|
|
|
options:
|
|
|
|
menu:
|
|
|
|
weight: 27
|
|
|
|
category: guide
|
|
|
|
---
|
|
|
|
|
|
|
|
# 定义事件处理流程
|
|
|
|
|
|
|
|
在上一章节中,我们已经定义了事件响应器,在这一章中,我们将会为事件响应器填充处理流程。
|
|
|
|
|
|
|
|
## 添加一个处理依赖
|
|
|
|
|
|
|
|
## 事件处理流程
|
2021-12-31 23:58:59 +08:00
|
|
|
|
|
|
|
## 获取上下文信息
|
|
|
|
|
|
|
|
### Bot
|
|
|
|
|
|
|
|
```python {7-9}
|
|
|
|
from typing import Union
|
|
|
|
|
|
|
|
from nonebot.adapters import Bot
|
|
|
|
from nonebot.adapters.ding import Bot as DingBot
|
|
|
|
from nonebot.adapters.onebot.v11 import Bot as OneBotV11Bot
|
|
|
|
|
|
|
|
async def _(foo: Bot): ...
|
|
|
|
async def _(foo: Union[DingBot, OneBotV11Bot]): ...
|
|
|
|
async def _(bot): ... # 兼容性处理
|
|
|
|
```
|
|
|
|
|
|
|
|
### Event
|
|
|
|
|
|
|
|
```python {6-8}
|
|
|
|
from typing import Union
|
|
|
|
|
|
|
|
from nonebot.adapters import Event
|
|
|
|
from nonebot.adapters.onebot.v11 import PrivateMessageEvent, GroupMessageEvent
|
|
|
|
|
|
|
|
async def _(foo: Event): ...
|
|
|
|
async def _(foo: Union[PrivateMessageEvent, GroupMessageEvent]): ...
|
|
|
|
async def _(event): ... # 兼容性处理
|
|
|
|
```
|
|
|
|
|
|
|
|
### EventType
|
|
|
|
|
|
|
|
```python {3}
|
|
|
|
from nonebot.params import EventType
|
|
|
|
|
|
|
|
async def _(foo: str = EventType()): ...
|
|
|
|
```
|
|
|
|
|
|
|
|
### EventMessage
|
|
|
|
|
|
|
|
```python {4}
|
|
|
|
from nonebot.adapters import Message
|
|
|
|
from nonebot.params import EventMessage
|
|
|
|
|
|
|
|
async def _(foo: str = EventMessage()): ...
|
|
|
|
```
|
|
|
|
|
|
|
|
### EventPlainText
|
|
|
|
|
|
|
|
```python {3}
|
|
|
|
from nonebot.params import EventPlainText
|
|
|
|
|
|
|
|
async def _(foo: str = EventPlainText()): ...
|
|
|
|
```
|
|
|
|
|
|
|
|
### EventToMe
|
|
|
|
|
|
|
|
```python {3}
|
|
|
|
from nonebot.params import EventToMe
|
|
|
|
|
|
|
|
async def _(foo: bool = EventToMe()): ...
|
|
|
|
```
|
|
|
|
|
|
|
|
### State
|
|
|
|
|
|
|
|
```python {4}
|
|
|
|
from nonebot.params import State
|
|
|
|
from nonebot.typing import T_State
|
|
|
|
|
|
|
|
async def _(foo: T_State = State()): ...
|
|
|
|
```
|
|
|
|
|
|
|
|
### Command
|
|
|
|
|
|
|
|
```python {7}
|
|
|
|
from nonebot import on_command
|
|
|
|
from nonebot.params import Command
|
|
|
|
|
|
|
|
matcher = on_command("cmd")
|
|
|
|
|
|
|
|
@matcher.handle()
|
|
|
|
async def _(foo: Tuple[str, ...] = Command()): ...
|
|
|
|
```
|
|
|
|
|
|
|
|
### CommandArg
|
|
|
|
|
|
|
|
```python {8}
|
|
|
|
from nonebot import on_command
|
|
|
|
from nonebot.adapters import Message
|
|
|
|
from nonebot.params import CommandArg
|
|
|
|
|
|
|
|
matcher = on_command("cmd")
|
|
|
|
|
|
|
|
@matcher.handle()
|
|
|
|
async def _(foo: Message = CommandArg()): ...
|
|
|
|
```
|
|
|
|
|
|
|
|
### ShellCommandArgs
|
|
|
|
|
|
|
|
```python {7}
|
|
|
|
from nonebot import on_command
|
|
|
|
from nonebot.params import ShellCommandArgs
|
|
|
|
|
|
|
|
matcher = on_shell_command("cmd", parser)
|
|
|
|
|
|
|
|
@matcher.handle()
|
|
|
|
async def _(foo: Dict[str, Any] = ShellCommandArgs()): ...
|
|
|
|
```
|
|
|
|
|
|
|
|
### ShellCommandArgv
|
|
|
|
|
|
|
|
```python {7}
|
|
|
|
from nonebot import on_command
|
|
|
|
from nonebot.params import ShellCommandArgs
|
|
|
|
|
|
|
|
matcher = on_shell_command("cmd")
|
|
|
|
|
|
|
|
@matcher.handle()
|
|
|
|
async def _(foo: List[str] = ShellCommandArgv()): ...
|
|
|
|
```
|
|
|
|
|
|
|
|
### RegexMatched
|
|
|
|
|
|
|
|
```python {7}
|
|
|
|
from nonebot import on_regex
|
|
|
|
from nonebot.params import RegexMatched
|
|
|
|
|
|
|
|
matcher = on_regex("regex")
|
|
|
|
|
|
|
|
@matcher.handle()
|
|
|
|
async def _(foo: str = RegexMatched()): ...
|
|
|
|
```
|
|
|
|
|
|
|
|
### RegexGroup
|
|
|
|
|
|
|
|
```python {7}
|
|
|
|
from nonebot import on_regex
|
|
|
|
from nonebot.params import RegexGroup
|
|
|
|
|
|
|
|
matcher = on_regex("regex")
|
|
|
|
|
|
|
|
@matcher.handle()
|
|
|
|
async def _(foo: Tuple[Any, ...] = RegexGroup()): ...
|
|
|
|
```
|
|
|
|
|
|
|
|
### RegexDict
|
|
|
|
|
|
|
|
```python {7}
|
|
|
|
from nonebot import on_regex
|
|
|
|
from nonebot.params import RegexDict
|
|
|
|
|
|
|
|
matcher = on_regex("regex")
|
|
|
|
|
|
|
|
@matcher.handle()
|
|
|
|
async def _(foo: Dict[str, Any] = RegexDict()): ...
|
|
|
|
```
|
|
|
|
|
|
|
|
### Matcher
|
|
|
|
|
|
|
|
```python {7}
|
|
|
|
from nonebot import on_message
|
|
|
|
from nonebot.matcher import Matcher
|
|
|
|
|
|
|
|
foo = on_message()
|
|
|
|
|
|
|
|
@foo.handle()
|
|
|
|
async def _(matcher: Matcher): ...
|
|
|
|
```
|
|
|
|
|
|
|
|
### Received
|
|
|
|
|
|
|
|
```python {8}
|
|
|
|
from nonebot import on_message
|
|
|
|
from nonebot.adapters import Event
|
|
|
|
from nonebot.params import Received
|
|
|
|
|
|
|
|
matcher = on_message()
|
|
|
|
|
|
|
|
@matcher.receive("id")
|
|
|
|
async def _(foo: Event = Received("id")): ...
|
|
|
|
```
|
|
|
|
|
|
|
|
### LastReceived
|
|
|
|
|
|
|
|
```python {8}
|
|
|
|
from nonebot import on_message
|
|
|
|
from nonebot.adapters import Event
|
|
|
|
from nonebot.params import LastReceived
|
|
|
|
|
|
|
|
matcher = on_message()
|
|
|
|
|
|
|
|
@matcher.receive("any")
|
|
|
|
async def _(foo: Event = LastReceived()): ...
|
|
|
|
```
|
|
|
|
|
|
|
|
### Arg
|
|
|
|
|
|
|
|
```python {8-9}
|
|
|
|
from nonebot.params import Arg
|
|
|
|
from nonebot import on_message
|
|
|
|
from nonebot.adapters import Message
|
|
|
|
|
|
|
|
matcher = on_message()
|
|
|
|
|
|
|
|
@matcher.got("key")
|
|
|
|
async def _(key: Message = Arg()): ...
|
|
|
|
async def _(foo: Message = Arg("key")): ...
|
|
|
|
```
|
|
|
|
|
|
|
|
### ArgStr
|
|
|
|
|
|
|
|
```python {7-8}
|
|
|
|
from nonebot import on_message
|
|
|
|
from nonebot.params import ArgStr
|
|
|
|
|
|
|
|
matcher = on_message()
|
|
|
|
|
|
|
|
@matcher.got("key")
|
|
|
|
async def _(key: str = ArgStr()): ...
|
|
|
|
async def _(foo: str = ArgStr("key")): ...
|
|
|
|
```
|
|
|
|
|
|
|
|
### ArgPlainText
|
|
|
|
|
|
|
|
```python {7-8}
|
|
|
|
from nonebot import on_message
|
|
|
|
from nonebot.params import ArgPlainText
|
|
|
|
|
|
|
|
matcher = on_message()
|
|
|
|
|
|
|
|
@matcher.got("key")
|
|
|
|
async def _(key: str = ArgPlainText()): ...
|
|
|
|
async def _(foo: str = ArgPlainText("key")): ...
|
|
|
|
```
|
|
|
|
|
|
|
|
### Exception
|
|
|
|
|
|
|
|
```python {4}
|
|
|
|
from nonebot.message import run_postprocessor
|
|
|
|
|
|
|
|
@run_postprocessor
|
|
|
|
async def _(e: Exception): ...
|
|
|
|
```
|
|
|
|
|
|
|
|
### Default
|
|
|
|
|
|
|
|
```python {1}
|
|
|
|
async def _(foo="bar"): ...
|
|
|
|
```
|