mirror of
https://github.com/nonebot/nonebot2.git
synced 2025-07-28 00:31:14 +00:00
✨ Add ding adapter
This commit is contained in:
@ -9,9 +9,11 @@ import abc
|
||||
from functools import reduce, partial
|
||||
from dataclasses import dataclass, field
|
||||
|
||||
from pydantic import BaseModel
|
||||
|
||||
from nonebot.config import Config
|
||||
from nonebot.typing import Driver, Message, WebSocket
|
||||
from nonebot.typing import Any, Dict, Union, Optional, NoReturn, Callable, Iterable, Awaitable
|
||||
from nonebot.typing import Any, Dict, Union, Optional, NoReturn, Callable, Iterable, Awaitable, TypeVar, Generic
|
||||
|
||||
|
||||
class BaseBot(abc.ABC):
|
||||
@ -135,24 +137,27 @@ class BaseBot(abc.ABC):
|
||||
raise NotImplementedError
|
||||
|
||||
|
||||
class BaseEvent(abc.ABC):
|
||||
T = TypeVar("T", dict, BaseModel)
|
||||
|
||||
|
||||
class BaseEvent(abc.ABC, Generic[T]):
|
||||
"""
|
||||
Event 基类。提供上报信息的关键信息,其余信息可从原始上报消息获取。
|
||||
"""
|
||||
|
||||
def __init__(self, raw_event: dict):
|
||||
def __init__(self, raw_event: T):
|
||||
"""
|
||||
:参数:
|
||||
|
||||
* ``raw_event: dict``: 原始上报消息
|
||||
* ``raw_event: T``: 原始上报消息
|
||||
"""
|
||||
self._raw_event = raw_event
|
||||
self._raw_event: T = raw_event
|
||||
|
||||
def __repr__(self) -> str:
|
||||
return f"<Event {self.self_id}: {self.name} {self.time}>"
|
||||
|
||||
@property
|
||||
def raw_event(self) -> dict:
|
||||
def raw_event(self) -> T:
|
||||
"""原始上报消息"""
|
||||
return self._raw_event
|
||||
|
||||
@ -347,17 +352,17 @@ class BaseMessage(list, abc.ABC):
|
||||
"""消息数组"""
|
||||
|
||||
def __init__(self,
|
||||
message: Union[str, dict, list, BaseMessageSegment,
|
||||
message: Union[str, dict, list, BaseModel, BaseMessageSegment,
|
||||
"BaseMessage"] = None,
|
||||
*args,
|
||||
**kwargs):
|
||||
"""
|
||||
:参数:
|
||||
|
||||
* ``message: Union[str, dict, list, MessageSegment, Message]``: 消息内容
|
||||
* ``message: Union[str, dict, list, BaseModel, MessageSegment, Message]``: 消息内容
|
||||
"""
|
||||
super().__init__(*args, **kwargs)
|
||||
if isinstance(message, (str, dict, list)):
|
||||
if isinstance(message, (str, dict, list, BaseModel)):
|
||||
self.extend(self._construct(message))
|
||||
elif isinstance(message, BaseMessage):
|
||||
self.extend(message)
|
||||
@ -448,4 +453,4 @@ class BaseMessage(list, abc.ABC):
|
||||
return f"{x} {y}" if y.type == "text" else x
|
||||
|
||||
plain_text = reduce(_concat, self, "")
|
||||
return plain_text[1:] if plain_text else plain_text
|
||||
return plain_text.strip()
|
||||
|
Reference in New Issue
Block a user