melobot.models¶
事件类型¶
melobot 主要包含四种事件类型:MessageEvent
, RequestEvent
, NoticeEvent
, MetaEvent
。
- class melobot.models.MessageEvent[源代码]¶
基类:
BotEvent
消息事件类型
提示
一般无需手动实例化该类,多数情况会直接使用本类对象,或将本类用作类型注解。
- content: list[MsgSegment]¶
使用消息段对象列表表示的,本事件的所有消息内容
- get_segments(type: str) list[MsgSegment] [源代码]¶
提取指定类型的,消息段对象组成的消息段对象列表
- 参数:
type – 消息段类型(对应 OneBot 标准中每种消息段对象的 type)
- 返回:
消息段对象列表
- get_datas(type: str, data: str, convert: Callable[[Any], Any] | None = None) list[Any] [源代码]¶
提取指定类型的消息段对象中的指定数据
当没有任何对应类型的消息段时,为空列表。如果有对应类型的消息段,但是指定的数据键名不存在, 则在列表中产生
None
值.可以指定 convert 来强制转换类型,不填则不使用类型转换
使用示例如下:
# 假设 event 是 MessageEvent 对象,即象征一个消息事件 datas = event.get_datas('at', 'qq') # datas 将是此事件中,所有 at 消息段的 "qq" 数据值所组成的列表
- 参数:
type – 消息段类型(对应 OneBot 标准中每种消息段对象的 type)
data – 消息段对象 data 中的键名
convert – 类型转换使用的函数
- 返回:
值列表
- class melobot.models.RequestEvent[源代码]¶
基类:
BotEvent
请求事件类型,对应两种可能:加好友请求和加群请求
提示
一般无需手动实例化该类,多数情况会直接使用本类对象,或将本类用作类型注解。
- class melobot.models.NoticeEvent[源代码]¶
基类:
BotEvent
通知事件类型
提示
一般无需手动实例化该类,多数情况会直接使用本类对象,或将本类用作类型注解。
注意
受 onebot 协议实现项目的影响,及对通知事件本身复杂性的考虑,通知事件大多数实例属性, 只会在特定类别的通知事件中存在。各个属性的含义与存在的时机,已在下方的注释说明。
如果你仍不确定某个属性在何时出现,建议直接调试查看存在的属性。例如通过 print(event.__dict__) 或调试器查看。
消息构造¶
在 melobot 中,使用以下函数构造符合 onebot 标准的消息段。不过部分标准中的方法没有被包含,同时部分方法有所改变。
- melobot.models.text_msg(text: str) MsgSegment [源代码]¶
生成普通文本消息
参数详细说明参考 onebot 标准:纯文本
- 参数:
text – 文本内容
- 返回:
onebot 标准中的消息段对象
- melobot.models.face_msg(id: int) MsgSegment [源代码]¶
生成 qq 表情消息
参数详细说明参考 onebot 标准:QQ 表情
- 参数:
id – qq 表情的 ID
- 返回:
onebot 标准中的消息段对象
- melobot.models.record_msg(file: str, magic: Literal[0, 1] = 0, cache: Literal[0, 1] = 1, proxy: Literal[0, 1] = 1, timeout: int | None = None) MsgSegment [源代码]¶
生成语音消息
参数详细说明参考 onebot 标准:语音
- 参数:
file – 语音文件名
magic – 是否使用变声
cache – 是否使用已缓存文件
proxy – 是否通过代理下载文件
timeout – 超时时间,默认不启用
- 返回:
onebot 标准中的消息段对象
- melobot.models.at_msg(qq: int | Literal['all']) MsgSegment [源代码]¶
生成艾特消息
参数详细说明参考 onebot 标准:某人
- 参数:
qq – 艾特的 qq 号,”all” 表示艾特全体成员
- 返回:
onebot 标准中的消息段对象
生成链接分享消息
参数详细说明参考 onebot 标准:链接分享
- 参数:
url – 链接的 url
title – 消息的标题
content – 消息的内容描述(可选)
image – 消息的封面图 url(可选)
- 返回:
onebot 标准中的消息段对象
- melobot.models.music_msg(type: Literal['qq', '163', 'xm'], id: str) MsgSegment [源代码]¶
生成音乐分享消息
参数详细说明参考 onebot 标准:音乐分享
- 参数:
type – 音乐平台的类型(q 音、网易云、虾米)
id – 歌曲 id
- 返回:
onebot 标准中的消息段对象
- melobot.models.custom_music_msg(url: str, audio: str, title: str, content: str | None = None, image: str | None = None) MsgSegment [源代码]¶
生成音乐自定义分享 url
参数详细说明参考 onebot 标准:音乐自定义分享
- 参数:
url – 点击后跳转目标 url
audio – 音乐 url
title – 标题
content – 内容描述(可选)
image – 封面图 url(可选)
- 返回:
onebot 标准中的消息段对象
- melobot.models.image_msg(file: str, type: Literal['flash'] | None = None, cache: Literal[0, 1] = 1, proxy: Literal[0, 1] = 1, timeout: int | None = None) MsgSegment [源代码]¶
生成图片消息
参数详细说明参考 onebot 标准:图片
- 参数:
file – 图片文件名或图片 base64 内容
type – 图片类型
cache – 是否使用已缓存的文件
proxy – 是否通过代理下载文件
timeout – 超时时间,默认不超时
- 返回:
onebot 标准中的消息段对象
- melobot.models.reply_msg(id: int) MsgSegment [源代码]¶
生成回复消息
参数详细说明参考 onebot 标准:回复
- 参数:
id – 消息 id
- 返回:
onebot 标准中的消息段对象
- melobot.models.poke_msg(qq: int) MsgSegment [源代码]¶
生成戳一戳消息
提示
鉴于目前大多数实现 cq 协议的项目都采用了此参数规范,因此在 melobot 中,也采用此规范。虽然这种规范实际上不符合 onebot 标准
- 参数:
qq – 戳的 qq 号
- 返回:
onebot 标准中的消息段对象
- melobot.models.xml_msg(data: str) MsgSegment [源代码]¶
生成 xml 消息
参数详细说明参考 onebot 标准:xml 消息
- 参数:
data – xml 内容
- 返回:
onebot 标准中的消息段对象
- melobot.models.json_msg(data: str) MsgSegment [源代码]¶
生成 json 消息
参数详细说明参考 onebot 标准:json 消息
- 参数:
data – json 内容
- 返回:
onebot 标准中的消息段对象
- melobot.models.custom_msg_node(content: str | MsgSegment | list[MsgSegment], sendName: str, sendId: int, seq: list[MsgSegment] | None = None, useStd: bool = False) MsgNode [源代码]¶
生成一个自定义合并消息转发结点
- 参数:
content – 消息结点内容
sendName – 消息结点标记的发送人名字
sendId – 消息结点标记的发送人 qq 号
seq – 消息 seq 号(一般来说你不需要使用这个)
useStd – 消息段对象构造时是否遵循 onebot 标准,默认为否(使用 go-cq 风格)
- 返回:
onebot 标准中的消息段对象
- melobot.models.refer_msg_node(id: int) MsgNode [源代码]¶
生成一个引用合并消息转发结点
- 参数:
id – 消息 id
- 返回:
onebot 标准中的消息段对象
- melobot.models.forward_msg(forwardId: str) MsgSegment [源代码]¶
生成一条完整的转发消息,以消息段的形式
注意
这与通过结点来构造转发消息是不同的,这里直接构造一个消息段对象,就可以代表整条转发消息。 因为这里使用的是转发 id。
参数详细说明参考 onebot 标准:forward 消息段
- 参数:
forwardId – 转发 id
- 返回:
onebot 标准中的消息段对象
自定义消息内容¶
该方法可构造自定义的消息段对象,实现自定义的消息段。
消息内容处理¶
使用以下函数可以处理消息内容,例如进行消息格式转换或实现特定的处理。
提示
这些函数过于底层,在 melobot 实际使用中并不常用。有所了解即可。
- melobot.models.cq_filter_text(s: str) str [源代码]¶
cq 文本过滤函数
可从 cq 字符串中过滤出纯文本消息部分
- 参数:
s – cq 字符串
- 返回:
纯文本消息部分
- melobot.models.cq_escape(text: str) str [源代码]¶
cq 字符串特殊符号转义
如:将 “&” 转义为 “&”
- 参数:
text – 需要转义的 cq 字符串
- 返回:
转义特殊符号后的 cq 字符串
- melobot.models.cq_anti_escape(text: str) str [源代码]¶
cq 字符串特殊符号逆转义
如:将 “&” 逆转义为 “&”
- 参数:
text – 需要逆转义的 cq 字符串
- 返回:
逆转义特殊符号后的 cq 字符串
- melobot.models.to_segments(s: str) list[MsgSegment] [源代码]¶
将 cq 字符串转换为消息段对象列表
- 参数:
s – cq 字符串
- 返回:
消息段对象列表
- melobot.models.to_cq_str(content: list[MsgSegment]) str [源代码]¶
将消息段对象列表转换为 cq 字符串
- 参数:
content – 消息段对象列表
- 返回:
cq 字符串