Skip to content

消息组件全解 (MessageComponent) ​

消息组件是构成消息链的原子构件。它们继承自 MessageComponent,严格遵守 OneBot v11 标准定义,并且具备 Pydantic 数据验证保障。


1. 文本组件 (Text) ​

最基础也是最常用的纯文字内容:

python
from developTools.message.message_components import Text

t = Text(text="今天也是元气满满的一天喵~ ✨")

2. 艾特组件 (At) ​

在群聊中提及指定成员或全体成员:

python
from developTools.message.message_components import At

at_user = At(qq=1840094972) # 艾特指定用户
at_all = At(qq="all")       # 艾特全体成员(需管理员权限)

3. 图片组件 (Image) ​

支持网络直链、本地文件路径或 Base64 编码:

python
from developTools.message.message_components import Image

# 1. 网络 URL(协议端会自动下载并下发)
img_url = Image(file="https://i.example.com/avatar.png")

# 2. 本地绝对路径或相对于项目根目录的相对路径
img_local = Image(file="data/pictures/Mface/[乖巧].gif")

# 3. Base64 编码(无需写盘,常用于内存动态绘图结果)
img_base64 = Image(file="base64://iVBORw0KGgoAAAANSUhEUgAA...")

4. 语音组件 (Record) ​

下发一段语音消息(支持 mp3、wav、silk 格式,或网络直链):

python
from developTools.message.message_components import Record

rec = Record(file="data/voice/tts_output.wav")

5. 回复引用 (Reply) ​

对指定的历史消息建立引用回复小尾巴:

python
from developTools.message.message_components import Reply, Text
from developTools.message.message_chain import MessageChain

# 回复当前收到的群消息
reply_chain = MessageChain([
    Reply(id=event.message_id),
    Text("对这条消息的精准吐槽~")
])
await bot.send(event, reply_chain)

6. 合并转发节点 (Node) ​

生成 QQ 原生聊天记录转发卡片(常用于长列表、战斗战报、消息伪造):

python
from developTools.message.message_components import Node

nodes = [
    Node(uin=10001, name="猫娘Yucca", content="今天天气真好呀~"),
    Node(uin=10002, name="呷玛日巴", content="走,出门带你吃好吃的!")
]
# 发送群合并转发消息
await bot.send_group_forward_msg(group_id=event.group_id, messages=nodes)

7. 戳一戳与表情 (Poke / Face) ​

  • Face(id=21):发送系统原生 QQ 表情(id 为对应表情编号);
  • Poke(qq=123456):在群里主动发送窗口抖动/戳一戳动作。