summaryrefslogtreecommitdiff
path: root/ATRI/plugins/essential/data_source.py
blob: d158c70dd2dfdf22f50048d78010443fe657b918 (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
from typing import Union

from ATRI.utils import MessageChecker
from ATRI.message import MessageSegment


def recall_msg_dealer(message: Union[dict, str]) -> str:
    if isinstance(message, str):
        return message

    cache_list = list()
    for i in message:
        _type = i.get("type")
        _data = i.get("data")
        if _type == "text":
            cache_list.append(_data["text"])
        elif _type == "image":
            url = _data["url"]
            check = MessageChecker(url).check_image_url
            if check:
                cache_list.append(MessageSegment.image(url))
            else:
                cache_list.append(f"[该图片可能包含危险内容, 源url: {url}]")
        elif _type == "face":
            cache_list.append(MessageSegment.face(_data["id"]))
        else:
            cache_list.append(f"[未知类型信息: {_data}]")

    return str().join(map(str, cache_list))