Skip to content

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, 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 时,startend 参数将不其作用, 会判断列表的最后一个消息字段是否和 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() 方法。

oldstr 类型时,new 也必须是 str,本方法将仅对 is_text()True 的消息字段进行处理。 当 old 为 MessageSegment 类型时,new 可以是 MessageSegmentNone,本方法将对所有消息字段进行处理, 并替换符合条件的消息字段。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 时,startend 参数将不其作用, 会判断列表的第一个消息字段是否和 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, 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: ItemsView[str, Any]

method keys(self)

返回由 data 字典键组成的一个新视图。

  • Returns

    Type: KeysView[str]

method values(self)

返回由 data 字典值组成的一个新视图。

  • Returns

    Type: ValuesView[Any]

Released under the MIT License.