diff options
author | Kyomotoi <[email protected]> | 2022-10-13 15:27:36 +0800 |
---|---|---|
committer | Kyomotoi <[email protected]> | 2022-10-13 15:27:36 +0800 |
commit | b9f92e547c663a6d4a853b1c967e6f3cc2dca641 (patch) | |
tree | 7fa2a15ee4c3c0283d685017500cfb9fdb600662 | |
parent | 406c8ac747110b2fb19ef7cf1a58f3804bd93992 (diff) | |
download | ATRI-b9f92e547c663a6d4a853b1c967e6f3cc2dca641.tar.gz ATRI-b9f92e547c663a6d4a853b1c967e6f3cc2dca641.tar.bz2 ATRI-b9f92e547c663a6d4a853b1c967e6f3cc2dca641.zip |
🧱 为长消息提供便携的链构造
-rw-r--r-- | ATRI/message.py | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/ATRI/message.py b/ATRI/message.py new file mode 100644 index 0000000..fb31ef5 --- /dev/null +++ b/ATRI/message.py @@ -0,0 +1,39 @@ +from io import BytesIO +from pathlib import Path +from typing import Optional, Union + +from nonebot.adapters.onebot.v11.message import Message, MessageSegment + + +class MessageBuilder(Message): + def at(self, user_id: Union[int, str]) -> "MessageBuilder": + self.append(MessageSegment.at(user_id)) + return self + + def face(self, id_: int) -> "MessageBuilder": + self.append(MessageSegment.face(id_)) + return self + + def image( + self, + file: Union[str, bytes, BytesIO, Path], + type_: Optional[str] = None, + cache: bool = True, + proxy: bool = True, + timeout: Optional[int] = None, + ) -> "MessageBuilder": + self.append(MessageSegment.image(file, type_, cache, proxy, timeout)) + return self + + def reply(self, id_: int) -> "MessageBuilder": + self.append(MessageSegment.reply(id_)) + return self + + def text(self, text: str) -> "MessageBuilder": + if self[-1].type == "text": + text = "\n" + text + self.append(MessageSegment.text(text)) + return self + + def done(self) -> str: + return str().join(map(str, self)) |