消息链方法一览 - RF-Tar-Railt/Cesloi GitHub Wiki

请阅读相关代码以获取更好的帮助

create

该方法用于构造新的消息链, 返回值为新消息链

参数:

# str会自动转为Plain元素
*elements: Union[Iterable[MessageElement], MessageElement, str]

样例:

message_chain = MessageChain.create(
    At(12345),
    Plain("Hello World!")
)

to_text

获取以字符串形式表示的消息链, 且趋于通常你见到的样子.

样例:

>>> message_chain = MessageChain.create(At(12345), Plain("Hello World!"))
>>> message_chain.to_text()
'@12345 Hello World!'

to_serialization

获取可序列化的字符串形式表示的消息链, 会存储所有的信息.

样例:

>>> msg = MessageChain.create("你好,",At(123456),",我是BOT",Image(url="https://www.baidu.com"))
>>> msg.to_serialization()
'__root__: 你好,[mirai:At:{"target": 123456}],我是BOT[mirai:Image:{"url": "https://www.baidu.com"}]'

from_text

将字符串转为消息链, 返回新的消息链

参数:

text: str

样例:

>>> msg = MessageChain.from_text("Hello World!")
>>> msg
MessageChain([Plain(type='Plain', text='Hello World!')])

is_instance

判断消息链是否只包含单一元素(过滤Source与Quote), 返回布尔值

参数:

# 可使用字符串型的元素名称
element_type: Union[str, Type[MessageElement]]

样例:

>>> msg = MessageChain.from_text('text')
>>> msg.is_instance('Plain')
True

copy_self

复制消息链接, 返回自身的副本

样例:

>>> msg = MessageChain.create("Hello",At(1234),"I'm BOT")
>>> new_msg = msg.copy_self()
>>> new_msg
MessageChain([Plain(type='Plain', text='Hello'), At(type='At', target=1234, display=None), Plain(type='Plain', text="I'm BOT")])

findall

返回消息链内可能的所有指定元素

参数:

# 可使用字符串型的元素名称
element_type: Union[str, Type[MessageElement]]

样例:

>>> msg = MessageChain.create("Hello",At(1234),"I'm BOT")
>>> msg.findall('Plain')
[Plain(type='Plain', text='Hello'), Plain(type='Plain', text="I'm BOT")]

find

当消息链内有指定元素时返回第一个匹配的元素, 无则返回False

参数:

# 可使用字符串型的元素名称
element_type: Union[str, Type[MessageElement]]
# 可选择返回第几个
index: int = 0

样例:

>>> msg = MessageChain.create("Hello",At(1234),"I'm BOT")
>>> msg.find('Plain')
Plain(type='Plain', text='Hello')

has

当消息链内有指定元素时返回True, 无则返回False

参数:

# 可使用字符串型的元素名称
element_type: Union[str, Type[MessageElement]]

样例:

>>> msg = MessageChain.create("Hello",At(1234),"I'm BOT")
>>> msg.has('Plain')
True

only_save

删除消息链中的所有非指定的消息元素类型, 返回处理后的消息链

参数:

# 可使用字符串型的元素名称
element_type: Union[str, Type[MessageElement]]

样例:

>>> msg = MessageChain.create("Hello",At(1234),"I'm BOT")
>>> msg.only_save('At')
MessageChain([At(type='At', target=1234, display=None)])
>>> msg
MessageChain([At(type='At', target=1234, display=None)])

only_text

获取消息链中的纯文字部分, 返回保留的字符串

样例:

>>> msg = MessageChain.create("Hello",At(1234),"I'm BOT")
>>> text = msg.only_text()
>>> text
"HelloI'm BOT"

remove

删除消息链中的所有指定的消息元素类型, 返回处理后的消息链

参数:

# 可使用字符串型的元素名称
element_type: Union[str, Type[MessageElement]]
# 删除次数,默认全部删除
counts: int = None

样例:

>>> msg = MessageChain.create("Hello",At(1234),"I'm BOT")
>>> msg = msg.remove("Plain", 1)
>>> msg
MessageChain([At(type='At', target=1234, display=None), Plain(type='Plain', text="I'm BOT")])

to_sendable

移除消息链中的Source、Quote、File元素

replace

替换消息链中的所有指定的消息元素类型为新的消息元素实例, 不改变消息链本身, 返回值为新的消息链

参数:

# 可使用字符串型的元素名称
element_type: Union[str, Type[MessageElement]]
# 必须为一元素实例
new_element: MessageElement
# 替换次数,默认全部替换
counts: int = None

样例:

>>> msg = MessageChain.create("Hello",At(1234),"I'm BOT")
>>> new_msg = msg.replace("Plain", At(456), 1)
>>> new_msg
MessageChain([At(type='At', target=456, display=None), At(type='At', target=1234, display=None), Plain(type='Plain', text="I'm BOT")])
>>> msg
MessageChain([Plain(type='Plain', text='Hello'), At(type='At', target=1234, display=None), Plain(type='Plain', text="I'm BOT")])

replace_text

替换消息链中可能含有的文本消息中的文本为指定文本, 不改变消息链本身, 返回值为新的消息链

参数:

# 要替换的文本内容
old_text: str
# 新的文本内容
new_text: str
# 替换的次数,不填写时默认为替换全部符合的元素
counts: int = -1

样例:

>>> msg = MessageChain.create("Hello",At(1234),"I'm BOT")
>>> new_msg = msg.replace_text("BOT","bot")
>>> new_msg.to_text()
"Hello@1234I'm bot"
>>> msg.to_text()
"Hello@1234I'm BOT"

index

查找指定类型的元素在消息链中的索引, 返回索引值

参数:

# 可使用字符串型的元素名称
element_type: Union[str, Type[MessageElement]]

样例:

>>> msg = MessageChain.create("Hello",At(1234),"I'm BOT")
>>> i = msg.index(At)
>>> i
1

pop

弹出消息链中的指定位置的元素

参数:

index: int

样例:

>>> msg = MessageChain.create("Hello",At(1234),"I'm BOT")
>>> at = msg.pop(1)
>>> at
At(type='At', target=1234, display=None)
>>> msg
MessageChain([Plain(type='Plain', text='Hello'), Plain(type='Plain', text="I'm BOT")])

insert

append

extend

startswith

endswith