Skip to content

Commit 11eb0b9

Browse files
committed
chore(core.platform): 🚨 修正platform基类和webchat的错误Lint
1 parent 339f904 commit 11eb0b9

File tree

8 files changed

+35
-29
lines changed

8 files changed

+35
-29
lines changed

astrbot/core/platform/astr_message_event.py

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import re
55
import uuid
66
from collections.abc import AsyncGenerator
7-
from typing import Any
7+
from typing import Any, cast
88

99
from astrbot import logger
1010
from astrbot.core.db.po import Conversation
@@ -52,7 +52,7 @@ def __init__(
5252
"""是否是 At 机器人或者带有唤醒词或者是私聊(插件注册的事件监听器会让 is_wake 设为 True, 但是不会让这个属性置为 True)"""
5353
self._extras: dict[str, Any] = {}
5454
self.session = MessageSesion(
55-
platform_name=platform_meta.id,
55+
platform_name=cast(str, platform_meta.id),
5656
message_type=message_obj.type,
5757
session_id=session_id,
5858
)
@@ -152,7 +152,9 @@ def get_sender_id(self) -> str:
152152

153153
def get_sender_name(self) -> str:
154154
"""获取消息发送者的名称。(可能会返回空字符串)"""
155-
return self.message_obj.sender.nickname
155+
if isinstance(self.message_obj.sender.nickname, str):
156+
return self.message_obj.sender.nickname
157+
return ""
156158

157159
def set_extra(self, key, value):
158160
"""设置额外的信息。"""
@@ -269,7 +271,7 @@ def should_call_llm(self, call_llm: bool):
269271
"""
270272
self.call_llm = call_llm
271273

272-
def get_result(self) -> MessageEventResult:
274+
def get_result(self) -> MessageEventResult | None:
273275
"""获取消息事件的结果。"""
274276
return self._result
275277

@@ -319,11 +321,11 @@ def request_llm(
319321
self,
320322
prompt: str,
321323
func_tool_manager=None,
322-
session_id: str = None,
324+
session_id: str = "",
323325
image_urls: list[str] = [],
324326
contexts: list = [],
325327
system_prompt: str = "",
326-
conversation: Conversation = None,
328+
conversation: Conversation | None = None,
327329
) -> ProviderRequest:
328330
"""创建一个 LLM 请求。
329331
@@ -389,7 +391,7 @@ async def react(self, emoji: str):
389391
"""
390392
await self.send(MessageChain([Plain(emoji)]))
391393

392-
async def get_group(self, group_id: str = None, **kwargs) -> Group | None:
394+
async def get_group(self, group_id: str | None = None, **kwargs) -> Group | None:
393395
"""获取一个群聊的数据, 如果不填写 group_id: 如果是私聊消息,返回 None。如果是群聊消息,返回当前群聊的数据。
394396
395397
适配情况:

astrbot/core/platform/astrbot_message.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
@dataclass
1010
class MessageMember:
1111
user_id: str # 发送者id
12-
nickname: str = None
12+
nickname: str | None = None
1313

1414
def __str__(self):
1515
# 使用 f-string 来构建返回的字符串表示形式
@@ -23,15 +23,15 @@ def __str__(self):
2323
class Group:
2424
group_id: str
2525
"""群号"""
26-
group_name: str = None
26+
group_name: str | None = None
2727
"""群名称"""
28-
group_avatar: str = None
28+
group_avatar: str | None = None
2929
"""群头像"""
30-
group_owner: str = None
30+
group_owner: str | None = None
3131
"""群主 id"""
32-
group_admins: list[str] = None
32+
group_admins: list[str] | None = None
3333
"""群管理员 id"""
34-
members: list[MessageMember] = None
34+
members: list[MessageMember] | None = None
3535
"""所有群成员"""
3636

3737
def __str__(self):
@@ -54,7 +54,7 @@ class AstrBotMessage:
5454
self_id: str # 机器人的识别id
5555
session_id: str # 会话id。取决于 unique_session 的设置。
5656
message_id: str # 消息id
57-
group: Group # 群组
57+
group: Group | None # 群组
5858
sender: MessageMember # 发送者
5959
message: list[BaseMessageComponent] # 消息链使用 Nakuru 的消息链格式
6060
message_str: str # 最直观的纯文本消息字符串

astrbot/core/platform/message_session.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ class MessageSession:
1313
"""平台适配器实例的唯一标识符。自 AstrBot v4.0.0 起,该字段实际为 platform_id。"""
1414
message_type: MessageType
1515
session_id: str
16-
platform_id: str = None
16+
platform_id: str | None = None
1717

1818
def __str__(self):
1919
return f"{self.platform_id}:{self.message_type.value}:{self.session_id}"

astrbot/core/platform/platform.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import abc
22
import uuid
33
from asyncio import Queue
4-
from collections.abc import Awaitable
4+
from collections.abc import Coroutine
55
from typing import Any
66

77
from astrbot.core.message.message_event_result import MessageChain
@@ -20,7 +20,7 @@ def __init__(self, event_queue: Queue):
2020
self.client_self_id = uuid.uuid4().hex
2121

2222
@abc.abstractmethod
23-
def run(self) -> Awaitable[Any]:
23+
def run(self) -> Coroutine[Any, Any, None]:
2424
"""得到一个平台的运行实例,需要返回一个协程对象。"""
2525
raise NotImplementedError
2626

@@ -36,7 +36,7 @@ async def send_by_session(
3636
self,
3737
session: MessageSesion,
3838
message_chain: MessageChain,
39-
) -> Awaitable[Any]:
39+
) -> None:
4040
"""通过会话发送消息。该方法旨在让插件能够直接通过**可持久化的会话数据**发送消息,而不需要保存 event 对象。
4141
4242
异步方法。

astrbot/core/platform/platform_metadata.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,12 @@ class PlatformMetadata:
77
"""平台的名称,即平台的类型,如 aiocqhttp, discord, slack"""
88
description: str
99
"""平台的描述"""
10-
id: str = None
10+
id: str | None = None
1111
"""平台的唯一标识符,用于配置中识别特定平台"""
1212

13-
default_config_tmpl: dict = None
13+
default_config_tmpl: dict | None = None
1414
"""平台的默认配置模板"""
15-
adapter_display_name: str = None
15+
adapter_display_name: str | None = None
1616
"""显示在 WebUI 配置页中的平台名称,如空则是 name"""
17-
logo_path: str = None
17+
logo_path: str | None = None
1818
"""平台适配器的 logo 文件路径(相对于插件目录)"""

astrbot/core/platform/register.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@
1111
def register_platform_adapter(
1212
adapter_name: str,
1313
desc: str,
14-
default_config_tmpl: dict = None,
15-
adapter_display_name: str = None,
16-
logo_path: str = None,
14+
default_config_tmpl: dict | None = None,
15+
adapter_display_name: str | None = None,
16+
logo_path: str | None = None,
1717
):
1818
"""用于注册平台适配器的带参装饰器。
1919

astrbot/core/platform/sources/webchat/webchat_adapter.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import os
33
import time
44
import uuid
5-
from collections.abc import Awaitable, Callable
5+
from collections.abc import Callable, Coroutine
66
from typing import Any
77

88
from astrbot import logger
@@ -141,7 +141,7 @@ async def convert_message(self, data: tuple) -> AstrBotMessage:
141141
abm.raw_message = data
142142
return abm
143143

144-
def run(self) -> Awaitable[Any]:
144+
def run(self) -> Coroutine[Any, Any, None]:
145145
async def callback(data: tuple):
146146
abm = await self.convert_message(data)
147147
await self.handle_msg(abm)

astrbot/core/platform/sources/webchat/webchat_event.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,9 @@ async def _send(message: MessageChain, session_id: str, streaming: bool = False)
4949
# save image to local
5050
filename = str(uuid.uuid4()) + ".jpg"
5151
path = os.path.join(imgs_dir, filename)
52-
if comp.file and comp.file.startswith("file:///"):
52+
if comp.file is None:
53+
raise ValueError("Image file is None")
54+
elif comp.file.startswith("file:///"):
5355
ph = comp.file[8:]
5456
with open(path, "wb") as f:
5557
with open(ph, "rb") as f2:
@@ -78,7 +80,9 @@ async def _send(message: MessageChain, session_id: str, streaming: bool = False)
7880
# save record to local
7981
filename = str(uuid.uuid4()) + ".wav"
8082
path = os.path.join(imgs_dir, filename)
81-
if comp.file and comp.file.startswith("file:///"):
83+
if comp.file is None:
84+
raise ValueError("Record file is None")
85+
elif comp.file.startswith("file:///"):
8286
ph = comp.file[8:]
8387
with open(path, "wb") as f:
8488
with open(ph, "rb") as f2:

0 commit comments

Comments
 (0)