2024-12-01 12:31:11 +08:00
|
|
|
from collections.abc import Iterable, Mapping
|
|
|
|
from typing import Optional, Union
|
2023-08-26 11:03:24 +08:00
|
|
|
from typing_extensions import override
|
2021-12-12 18:19:08 +08:00
|
|
|
|
2024-12-01 12:31:11 +08:00
|
|
|
from pydantic import create_model
|
2021-12-12 18:19:08 +08:00
|
|
|
|
2024-12-01 12:31:11 +08:00
|
|
|
from nonebot.adapters import Adapter, Bot, Event, Message, MessageSegment
|
2021-12-16 23:22:25 +08:00
|
|
|
|
|
|
|
|
2022-02-10 13:15:59 +08:00
|
|
|
def escape_text(s: str, *, escape_comma: bool = True) -> str:
|
|
|
|
s = s.replace("&", "&").replace("[", "[").replace("]", "]")
|
|
|
|
if escape_comma:
|
|
|
|
s = s.replace(",", ",")
|
|
|
|
return s
|
|
|
|
|
|
|
|
|
2023-08-26 11:03:24 +08:00
|
|
|
class FakeAdapter(Adapter):
|
|
|
|
@classmethod
|
|
|
|
@override
|
|
|
|
def get_name(cls) -> str:
|
|
|
|
return "fake"
|
|
|
|
|
|
|
|
@override
|
|
|
|
async def _call_api(self, bot: Bot, api: str, **data):
|
|
|
|
raise NotImplementedError
|
|
|
|
|
|
|
|
|
2023-06-19 17:48:59 +08:00
|
|
|
class FakeMessageSegment(MessageSegment["FakeMessage"]):
|
|
|
|
@classmethod
|
2023-08-26 11:03:24 +08:00
|
|
|
@override
|
2023-06-19 17:48:59 +08:00
|
|
|
def get_message_class(cls):
|
|
|
|
return FakeMessage
|
2021-12-20 00:28:02 +08:00
|
|
|
|
2023-08-26 11:03:24 +08:00
|
|
|
@override
|
2023-06-19 17:48:59 +08:00
|
|
|
def __str__(self) -> str:
|
|
|
|
return self.data["text"] if self.type == "text" else f"[fake:{self.type}]"
|
2021-12-20 00:28:02 +08:00
|
|
|
|
2023-06-19 17:48:59 +08:00
|
|
|
@classmethod
|
|
|
|
def text(cls, |