summaryrefslogtreecommitdiff
path: root/ATRI/message.py
blob: 4a548247fec83e1f22832c445a7b21b701b9a30b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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))