mirror of
https://github.com/nonebot/nonebot2.git
synced 2025-07-17 03:20:54 +00:00
✨ Feature: 为消息类添加 has
join
include
exclude
方法 (#1895)
This commit is contained in:
@ -120,16 +120,37 @@ Message(
|
||||
|
||||
### 遍历
|
||||
|
||||
`Message` 继承自 `List[MessageSegment]` ,因此可以使用 `for` 循环遍历消息段。
|
||||
消息序列继承自 `List[MessageSegment]` ,因此可以使用 `for` 循环遍历消息段。
|
||||
|
||||
```python
|
||||
for segment in message:
|
||||
...
|
||||
```
|
||||
|
||||
### 索引与切片
|
||||
### 比较
|
||||
|
||||
`Message` 对列表的索引与切片进行了增强,在原有列表 int 索引与切片的基础上,支持 `type` 过滤索引与切片。
|
||||
消息和消息段都可以使用 `==` 或 `!=` 运算符比较是否相同。
|
||||
|
||||
```python
|
||||
MessageSegment.text("text") != MessageSegment.text("foo")
|
||||
|
||||
some_message == Message([MessageSegment.text("text")])
|
||||
```
|
||||
|
||||
### 检查消息段
|
||||
|
||||
我们可以通过 `in` 运算符或消息序列的 `has` 方法来:
|
||||
|
||||
```python
|
||||
# 是否存在消息段
|
||||
MessageSegment.text("text") in message
|
||||
# 是否存在指定类型的消息段
|
||||
"text" in message
|
||||
```
|
||||
|
||||
### 过滤、索引与切片
|
||||
|
||||
消息序列对列表的索引与切片进行了增强,在原有列表 `int` 索引与 `slice` 切片的基础上,支持 `type` 过滤索引与切片。
|
||||
|
||||
```python
|
||||
from nonebot.adapters.console import Message, MessageSegment
|
||||
@ -160,7 +181,14 @@ message["markdown", 0:2] == Message(
|
||||
)
|
||||
```
|
||||
|
||||
同样的,`Message` 对列表的 `index`、`count` 方法也进行了增强,可以用于索引指定类型的消息段。
|
||||
我们也可以通过消息序列的 `include`、`exclude` 方法进行类型过滤。
|
||||
|
||||
```python
|
||||
message.include("text", "markdown")
|
||||
message.exclude("text")
|
||||
```
|
||||
|
||||
同样的,消息序列对列表的 `index`、`count` 方法也进行了增强,可以用于索引指定类型的消息段。
|
||||
|
||||
```python
|
||||
# 指定类型首个消息段索引
|
||||
@ -169,7 +197,7 @@ message.index("markdown") == 1
|
||||
message.count("markdown") == 2
|
||||
```
|
||||
|
||||
此外,`Message` 添加了一个 `get` 方法,可以用于获取指定类型指定个数的消息段。
|
||||
此外,消息序列添加了一个 `get` 方法,可以用于获取指定类型指定个数的消息段。
|
||||
|
||||
```python
|
||||
# 获取指定类型指定个数的消息段
|
||||
@ -214,6 +242,31 @@ msg.append(MessageSegment.text("text"))
|
||||
msg.extend([MessageSegment.text("text")])
|
||||
```
|
||||
|
||||
我们也可以通过消息段或消息序列的 `join` 方法来拼接一串消息:
|
||||
|
||||
```python
|
||||
seg = MessageSegment.text("text")
|
||||
msg = seg.join(
|
||||
[
|
||||
MessageSegment.text("first"),
|
||||
Message(
|
||||
[
|
||||
MessageSegment.text("second"),
|
||||
MessageSegment.text("third"),
|
||||
]
|
||||
)
|
||||
]
|
||||
)
|
||||
msg == Message(
|
||||
[
|
||||
MessageSegment.text("first"),
|
||||
MessageSegment.text("text"),
|
||||
MessageSegment.text("second"),
|
||||
MessageSegment.text("third"),
|
||||
]
|
||||
)
|
||||
```
|
||||
|
||||
### 使用消息模板
|
||||
|
||||
为了提供安全可靠的跨平台模板字符, 我们提供了一个消息模板功能来构建消息序列
|
||||
|
Reference in New Issue
Block a user