diff options
-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)) |