mirror of
https://github.com/nonebot/nonebot2.git
synced 2025-07-28 00:31:14 +00:00
add startup shutdown deco
This commit is contained in:
@ -95,11 +95,12 @@ class BaseMessageSegment(abc.ABC):
|
||||
class BaseMessage(list, abc.ABC):
|
||||
|
||||
def __init__(self,
|
||||
message: Union[str, BaseMessageSegment, "BaseMessage"] = None,
|
||||
message: Union[str, dict, list, BaseMessageSegment,
|
||||
"BaseMessage"] = None,
|
||||
*args,
|
||||
**kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
if isinstance(message, str):
|
||||
if isinstance(message, (str, dict, list)):
|
||||
self.extend(self._construct(message))
|
||||
elif isinstance(message, BaseMessage):
|
||||
self.extend(message)
|
||||
@ -111,7 +112,7 @@ class BaseMessage(list, abc.ABC):
|
||||
|
||||
@staticmethod
|
||||
@abc.abstractmethod
|
||||
def _construct(msg: str) -> Iterable[BaseMessageSegment]:
|
||||
def _construct(msg: Union[str, dict, list]) -> Iterable[BaseMessageSegment]:
|
||||
raise NotImplementedError
|
||||
|
||||
def __add__(
|
||||
|
@ -5,12 +5,11 @@ import re
|
||||
|
||||
import httpx
|
||||
|
||||
# from nonebot.event import Event
|
||||
from nonebot.config import Config
|
||||
from nonebot.message import handle_event
|
||||
from nonebot.exception import ApiNotAvailable
|
||||
from nonebot.typing import Tuple, Iterable, Optional, overrides, WebSocket
|
||||
from nonebot.adapters import BaseBot, BaseEvent, BaseMessage, BaseMessageSegment
|
||||
from nonebot.typing import Union, Tuple, Iterable, Optional, overrides, WebSocket
|
||||
|
||||
|
||||
def escape(s: str, *, escape_comma: bool = True) -> str:
|
||||
@ -98,6 +97,10 @@ class Bot(BaseBot):
|
||||
|
||||
class Event(BaseEvent):
|
||||
|
||||
def __init__(self, raw_event: dict):
|
||||
|
||||
super().__init__(raw_event)
|
||||
|
||||
@property
|
||||
@overrides(BaseEvent)
|
||||
def type(self):
|
||||
@ -286,7 +289,14 @@ class Message(BaseMessage):
|
||||
|
||||
@staticmethod
|
||||
@overrides(BaseMessage)
|
||||
def _construct(msg: str) -> Iterable[MessageSegment]:
|
||||
def _construct(msg: Union[str, dict, list]) -> Iterable[MessageSegment]:
|
||||
if isinstance(msg, dict):
|
||||
yield MessageSegment(msg["type"], msg.get("data") or {})
|
||||
return
|
||||
elif isinstance(msg, list):
|
||||
for seg in msg:
|
||||
yield MessageSegment(seg["type"], seg.get("data") or {})
|
||||
return
|
||||
|
||||
def _iter_message() -> Iterable[Tuple[str, str]]:
|
||||
text_begin = 0
|
||||
|
Reference in New Issue
Block a user