diff --git a/packages/nonebot-adapter-cqhttp/nonebot/adapters/cqhttp/message.py b/packages/nonebot-adapter-cqhttp/nonebot/adapters/cqhttp/message.py index 19803cf3..37db4e88 100644 --- a/packages/nonebot-adapter-cqhttp/nonebot/adapters/cqhttp/message.py +++ b/packages/nonebot-adapter-cqhttp/nonebot/adapters/cqhttp/message.py @@ -2,12 +2,12 @@ import re from io import BytesIO from pathlib import Path from base64 import b64encode -from typing import Type, Union, Tuple, Mapping, Iterable, Optional +from typing import Any, Type, Tuple, Union, Mapping, Iterable, Optional, cast from nonebot.typing import overrides -from nonebot.adapters import Message as BaseMessage, MessageSegment as BaseMessageSegment - -from .utils import log, escape, unescape, _b2s +from .utils import log, _b2s, escape, unescape +from nonebot.adapters import Message as BaseMessage +from nonebot.adapters import MessageSegment as BaseMessageSegment class MessageSegment(BaseMessageSegment["Message"]): @@ -258,6 +258,7 @@ class Message(BaseMessage[MessageSegment]): msg: Union[str, Mapping, Iterable[Mapping]]) -> Iterable[MessageSegment]: if isinstance(msg, Mapping): + msg = cast(Mapping[str, Any], msg) yield MessageSegment(msg["type"], msg.get("data") or {}) return elif isinstance(msg, Iterable) and not isinstance(msg, str): diff --git a/packages/nonebot-adapter-ding/nonebot/adapters/ding/message.py b/packages/nonebot-adapter-ding/nonebot/adapters/ding/message.py index 42012f9e..98d13f7d 100644 --- a/packages/nonebot-adapter-ding/nonebot/adapters/ding/message.py +++ b/packages/nonebot-adapter-ding/nonebot/adapters/ding/message.py @@ -1,8 +1,9 @@ from copy import copy -from typing import Any, Dict, Type, Union, Mapping, Iterable +from typing import Any, Dict, Type, Union, Mapping, Iterable, cast from nonebot.typing import overrides -from nonebot.adapters import Message as BaseMessage, MessageSegment as BaseMessageSegment +from nonebot.adapters import Message as BaseMessage +from nonebot.adapters import MessageSegment as BaseMessageSegment class MessageSegment(BaseMessageSegment["Message"]): @@ -173,6 +174,7 @@ class Message(BaseMessage[MessageSegment]): msg: Union[str, Mapping, Iterable[Mapping]]) -> Iterable[MessageSegment]: if isinstance(msg, Mapping): + msg = cast(Mapping[str, Any], msg) yield MessageSegment(msg["type"], msg.get("data") or {}) elif isinstance(msg, str): yield MessageSegment.text(msg) diff --git a/packages/nonebot-adapter-feishu/nonebot/adapters/feishu/bot.py b/packages/nonebot-adapter-feishu/nonebot/adapters/feishu/bot.py index f5a60cc8..c3ab6cc8 100644 --- a/packages/nonebot-adapter-feishu/nonebot/adapters/feishu/bot.py +++ b/packages/nonebot-adapter-feishu/nonebot/adapters/feishu/bot.py @@ -1,21 +1,20 @@ import re import json from typing import (TYPE_CHECKING, Any, Dict, Tuple, Union, Iterable, Optional, - AsyncIterable) + AsyncIterable, cast) import httpx from aiocache import Cache, cached from aiocache.serializers import PickleSerializer from nonebot.log import logger +from .utils import AESCipher, log from nonebot.typing import overrides from nonebot.utils import escape_tag from nonebot.message import handle_event +from .config import Config as FeishuConfig from nonebot.adapters import Bot as BaseBot from nonebot.drivers import Driver, HTTPRequest, HTTPResponse - -from .utils import AESCipher, log -from .config import Config as FeishuConfig from .message import Message, MessageSegment, MessageSerializer from .exception import ActionFailed, NetworkError, ApiNotAvailable from .event import (Event, MessageEvent, GroupMessageEvent, PrivateMessageEvent, @@ -124,6 +123,7 @@ def _handle_api_result( - ``ActionFailed``: API 调用失败 """ if isinstance(result, dict): + result = cast(Dict[str, Any], result) if result.get("code") != 0: raise ActionFailed(**result) return result.get("data") diff --git a/packages/nonebot-adapter-feishu/nonebot/adapters/feishu/message.py b/packages/nonebot-adapter-feishu/nonebot/adapters/feishu/message.py index 03f5a858..d9a7e2a1 100644 --- a/packages/nonebot-adapter-feishu/nonebot/adapters/feishu/message.py +++ b/packages/nonebot-adapter-feishu/nonebot/adapters/feishu/message.py @@ -1,12 +1,12 @@ -import itertools import json +import itertools from dataclasses import dataclass -from typing import (Any, Dict, Iterable, List, Mapping, Optional, Tuple, Type, - Union) +from typing import (Any, Dict, List, Type, Tuple, Union, Mapping, Iterable, + Optional, cast) +from nonebot.typing import overrides from nonebot.adapters import Message as BaseMessage from nonebot.adapters import MessageSegment as BaseMessageSegment -from nonebot.typing import overrides class MessageSegment(BaseMessageSegment["Message"]): @@ -150,6 +150,7 @@ class Message(BaseMessage[MessageSegment]): msg: Union[str, Mapping, Iterable[Mapping]]) -> Iterable[MessageSegment]: if isinstance(msg, Mapping): + msg = cast(Mapping[str, Any], msg) yield MessageSegment(msg["type"], msg.get("data") or {}) return elif isinstance(msg, str):