This repository was archived by the owner on Aug 26, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
消息链方法一览
Tarrailt edited this page Nov 24, 2021
·
4 revisions
请阅读相关代码以获取更好的帮助
该方法用于构造新的消息链, 返回值为新消息链
参数:
# str会自动转为Plain元素
*elements: Union[Iterable[MessageElement], MessageElement, str]
样例:
message_chain = MessageChain.create(
At(12345),
Plain("Hello World!")
)
获取以字符串形式表示的消息链, 且趋于通常你见到的样子.
样例:
>>> message_chain = MessageChain.create(At(12345), Plain("Hello World!"))
>>> message_chain.to_text()
'@12345 Hello World!'
获取可序列化的字符串形式表示的消息链, 会存储所有的信息.
样例:
>>> 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"}]'
将字符串转为消息链, 返回新的消息链
参数:
text: str
样例:
>>> msg = MessageChain.from_text("Hello World!")
>>> msg
MessageChain([Plain(type='Plain', text='Hello World!')])
判断消息链是否只包含单一元素(过滤Source与Quote), 返回布尔值
参数:
# 可使用字符串型的元素名称
element_type: Union[str, Type[MessageElement]]
样例:
>>> msg = MessageChain.from_text('text')
>>> msg.is_instance('Plain')
True
复制消息链接, 返回自身的副本
样例:
>>> 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")])
返回消息链内可能的所有指定元素
参数:
# 可使用字符串型的元素名称
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")]
当消息链内有指定元素时返回第一个匹配的元素, 无则返回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')
当消息链内有指定元素时返回True, 无则返回False
参数:
# 可使用字符串型的元素名称
element_type: Union[str, Type[MessageElement]]
样例:
>>> msg = MessageChain.create("Hello",At(1234),"I'm BOT")
>>> msg.has('Plain')
True
删除消息链中的所有非指定的消息元素类型, 返回处理后的消息链
参数:
# 可使用字符串型的元素名称
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)])
获取消息链中的纯文字部分, 返回保留的字符串
样例:
>>> msg = MessageChain.create("Hello",At(1234),"I'm BOT")
>>> text = msg.only_text()
>>> text
"HelloI'm BOT"
删除消息链中的所有指定的消息元素类型, 返回处理后的消息链
参数:
# 可使用字符串型的元素名称
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")])
移除消息链中的Source、Quote、File元素
替换消息链中的所有指定的消息元素类型为新的消息元素实例, 不改变消息链本身, 返回值为新的消息链
参数:
# 可使用字符串型的元素名称
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")])
替换消息链中可能含有的文本消息中的文本为指定文本, 不改变消息链本身, 返回值为新的消息链
参数:
# 要替换的文本内容
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"
查找指定类型的元素在消息链中的索引, 返回索引值
参数:
# 可使用字符串型的元素名称
element_type: Union[str, Type[MessageElement]]
样例:
>>> msg = MessageChain.create("Hello",At(1234),"I'm BOT")
>>> i = msg.index(At)
>>> i
1
弹出消息链中的指定位置的元素
参数:
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")])