alicebot.message
AliceBot 消息。
实现了常用的基本消息 Message
和消息字段 MessageSegment
模型供适配器使用。 适配器开发者可以根据需要实现此模块中消息类的子类或定义与此不同的消息类型,但建议若可行的话应尽量使用此模块中消息类的子类。
abstract class Message
Bases: abc.ABC
, list
, typing.Generic
消息。
本类是 List
的子类,并重写了 __init__()
方法, 可以直接处理 str
, Mapping
, MessageSegment
, List[MessageSegment]
。 本类重载了 +
和 +=
运算符,可以直接和 Message
, MessageSegment
等类型的对象执行取和运算。 适配器开发者需要继承本类并重写 get_segment_class()
方法。
method __init__(self, *messages)
初始化。
Arguments
- *messages (Union[list[~MessageSegmentT], ~MessageSegmentT, str, collections.abc.Mapping[str, Any]]) - 可以被转化为消息的数据。
Returns
Type: None
method copy(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, ~MessageSegmentT]) - 后缀。
start (Optional[SupportsIndex]) - 开始检查位置。
end (Optional[SupportsIndex]) - 停止检查位置。
Returns
Type: bool
检查结果。
method get_plain_text(self)
获取消息中的纯文本部分。
Returns
Type: str
消息中的纯文本部分。
method get_segment_class()
获取消息字段类。
Returns
Type: type[~MessageSegmentT]
消息字段类。
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, ~MessageSegmentT]) - 被匹配的字符串或消息字段。
new (Union[str, ~MessageSegmentT, 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, ~MessageSegmentT]) - 前缀。
start (Optional[SupportsIndex]) - 开始检查位置。
end (Optional[SupportsIndex]) - 停止检查位置。
Returns
Type: bool
检查结果。
abstract class MessageSegment
Bases: abc.ABC
, pydantic.main.BaseModel
, collections.abc.Mapping
, typing.Generic
消息字段。
本类实现了所有 Mapping
类型的方法,这些方法全部是对 data
属性的操作。 本类重写了 +
和 +=
运算符,可以直接和 Message
, MessageSegment
等类型的对象执行取和运算,返回 Message
对象。 适配器开发者需要继承本类并重写 get_message_class()
方法。
Attributes
type (str) - 消息字段类型。
data (dict[str, typing.Any]) - 消息字段内容。
method from_mapping(msg)
用于将 Mapping
转换为消息字段。
如有需要,子类可重写此方法以更改对 Mapping
的默认行为。
Returns
Type: Self
由 Mapping 转换的消息字段。
method from_str(msg)
用于将 str
转换为消息字段,子类应重写此方法。
Returns
Type: Self
由
str
转换的消息字段。
method get(self, key, default = None)
如果 key
存在于 data
字典中则返回 key
的值,否则返回 default
。
Arguments
key (str)
default (Any)
Returns
Type: Any
method get_message_class()
获取消息类。
Returns
Type: Type[~MessageT]
消息类。
method is_text(self)
是否是纯文本消息字段。
Returns
Type: bool
是否是纯文本消息字段。
method items(self)
返回由 data
字典项 ((键, 值)
对) 组成的一个新视图。
Returns
Type: collections.abc.ItemsView[str, typing.Any]
method keys(self)
返回由 data
字典键组成的一个新视图。
Returns
Type: collections.abc.KeysView[str]
method values(self)
返回由 data
字典值组成的一个新视图。
Returns
Type: collections.abc.ValuesView[typing.Any]