iamai.message
iamai 消息。
实现了常用的基本消息 Message 和消息字段 MessageSegment 模型供适配器使用。 适配器开发者可以根据需要实现此模块中消息类的子类或定义与此不同的消息类型,但建议若可行的话应尽量使用此模块中消息类的子类。
class Message(self, message = None)
Bases: list, typing.Generic
消息。
本类是 List 的子类,并重写了 __init__() 方法, 可以直接处理 str, Mapping, Iterable[Mapping], MessageSegment, Message。 其中 str 的支持需要适配器开发者重写 _str_to_message_segment() 方法实现。 本类重写了 + 和 += 运算符,可以直接和 Message, MessageSegment 等类型的对象执行取和运算。 若开发者实现了 MessageSegment 的子类则需要重写 _message_segment_class() 方法, 并在 MessageSegment 的子类中重写 _message_class() 方法。
Arguments
message (Union[Self, ~T_MessageSegment, str, Mapping[str, Any], Iterable[Union[~T_MessageSegment, str, Mapping[str, Any]]], NoneType]) - 可以被转化为消息的数据。
*args - 其他参数。
method copy(self)
返回自身的浅复制。
Returns
Type: Self
自身的浅复制。
method deepcopy(self)
返回自身的深复制。
Returns
Type: Self
自身的深复制。
method endswith(self, suffix, start = None, end = None)
实现类似字符串的 endswith() 方法。
当 suffix 类型是 str 时,会将自身转换为 str 类型,再调用 str 类型的 endswith() 方法。 当 suffix 类型是 MessageSegment 时,start 和 end 参数将不其作用, 会判断列表的最后一个消息字段是否和 suffix 相等。
Arguments
suffix (Union[str, ~T_MessageSegment]) - 后缀。
start (Optional[SupportsIndex]) - 开始检查位置。
end (Optional[SupportsIndex]) - 停止检查位置。
Returns
Type: bool
检查结果。
method get_plain_text(self)
获取消息中的纯文本部分。
Returns
Type: str
消息中的纯文本部分。
method is_text(self)
是否是纯文本消息。
Returns
Type: bool
method replace(self, old, new, count = -1)
实现类似字符串的 replace() 方法。
当 old 为 str 类型时,new 也必须是 str,本方法将仅对 is_text() 为 True 的消息字段进行处理。 当 old 为 MessageSegment 类型时,new 可以是 MessageSegment 或 None,本方法将对所有消息字段进行处理, 并替换符合条件的消息字段。None 表示删除匹配到的消息字段。
Arguments
old (Union[str, ~T_MessageSegment]) - 被匹配的字符串或消息字段。
new (Union[str, ~T_MessageSegment, NoneType]) - 被替换为的字符串或消息字段。
count (int) - 替换的次数。
Returns
Type: Self
替换后的消息对象。
method startswith(self, prefix, start = None, end = None)
实现类似字符串的 startswith() 方法。
当 prefix 类型是 str 时,会将自身转换为 str 类型,再调用 str 类型的 startswith() 方法。 当 prefix 类型是 MessageSegment 时,start 和 end 参数将不其作用, 会判断列表的第一个消息字段是否和 prefix 相等。
Arguments
prefix (Union[str, ~T_MessageSegment]) - 前缀。
start (Optional[SupportsIndex]) - 开始检查位置。
end (Optional[SupportsIndex]) - 停止检查位置。
Returns
Type: bool
检查结果。
class MessageSegment(self, type, data = <factory>)
Bases: collections.abc.Mapping, typing.Generic
消息字段。
本类实现了所有映射类型的方法,这些方法全部是对 data 属性的操作。 本类重写了 + 和 += 运算符,可以直接和 Message, MessageSegment 等类型的对象执行取和运算,返回 Message 对象。 若开发者实现了 Message 和 MessageSegment 的子类则需要重写 _message_class() 方法。
Arguments
type (str)
data (Dict[str, Any])
Attributes
type (str) - 消息字段类型。
data (Dict[str, Any]) - 消息字段内容。
method as_dict(self)
将当前对象解析为 dict 对象,开发者可重写本方法以适配特殊的解析方式。
Returns
Type: Dict[str, Any]
dict对象。
method copy(self)
返回自身的浅复制。
Returns
Type: Self
自身的浅复制。
method deepcopy(self)
返回自身的深复制。
Returns
Type: Self
自身的深复制。
method get(self, key, default = None)
如果 key 存在于 data 字典中则返回 key 的值,否则返回 default。
Arguments
key (str)
default (Any)
method is_text(self)
是否是纯文本消息字段。
Returns
Type: bool
是否是纯文本消息字段。
method items(self)
返回由 data 字典项 ((键, 值) 对) 组成的一个新视图。
method keys(self)
返回由 data 字典键组成的一个新视图。
method values(self)
返回由 data 字典值组成的一个新视图。
iamai