Skip to content

Commit 008ea1f

Browse files
committed
chore(core.platform): 🚨 修正platform基类和webchat的错误Lint
1 parent eed622f commit 008ea1f

File tree

8 files changed

+38
-29
lines changed

8 files changed

+38
-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 hashlib
55
import uuid
66

7-
from typing import Any
7+
from typing import Any, cast
88

99
from collections.abc import AsyncGenerator
1010

@@ -53,7 +53,7 @@ def __init__(
5353
"""是否是 At 机器人或者带有唤醒词或者是私聊(插件注册的事件监听器会让 is_wake 设为 True, 但是不会让这个属性置为 True)"""
5454
self._extras: dict[str, Any] = {}
5555
self.session = MessageSesion(
56-
platform_name=platform_meta.id,
56+
platform_name=cast(str, platform_meta.id),
5757
message_type=message_obj.type,
5858
session_id=session_id,
5959
)
@@ -169,7 +169,9 @@ def get_sender_name(self) -> str:
169169
"""
170170
获取消息发送者的名称。(可能会返回空字符串)
171171
"""
172-
return self.message_obj.sender.nickname
172+
if isinstance(self.message_obj.sender.nickname, str):
173+
return self.message_obj.sender.nickname
174+
return ""
173175

174176
def set_extra(self, key, value):
175177
"""
@@ -300,7 +302,7 @@ def should_call_llm(self, call_llm: bool):
300302
"""
301303
self.call_llm = call_llm
302304

303-
def get_result(self) -> MessageEventResult:
305+
def get_result(self) -> MessageEventResult | None:
304306
"""
305307
获取消息事件的结果。
306308
"""
@@ -360,11 +362,11 @@ def request_llm(
360362
self,
361363
prompt: str,
362364
func_tool_manager=None,
363-
session_id: str = None,
365+
session_id: str = "",
364366
image_urls: list[str] = [],
365367
contexts: list = [],
366368
system_prompt: str = "",
367-
conversation: Conversation = None,
369+
conversation: Conversation | None = None,
368370
) -> ProviderRequest:
369371
"""
370372
创建一个 LLM 请求。
@@ -429,7 +431,7 @@ async def react(self, emoji: str):
429431
"""
430432
await self.send(MessageChain([Plain(emoji)]))
431433

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

astrbot/core/platform/astrbot_message.py

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

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

3535
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
@@ -11,7 +11,7 @@ class MessageSession:
1111
"""平台适配器实例的唯一标识符。自 AstrBot v4.0.0 起,该字段实际为 platform_id。"""
1212
message_type: MessageType
1313
session_id: str
14-
platform_id: str = None
14+
platform_id: str | None = None
1515

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

astrbot/core/platform/platform.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22
import uuid
33
from typing import Any
44

5-
from collections.abc import Awaitable
5+
from collections.abc import Coroutine
6+
67
from asyncio import Queue
78
from .platform_metadata import PlatformMetadata
89
from .astr_message_event import AstrMessageEvent
@@ -19,7 +20,7 @@ def __init__(self, event_queue: Queue):
1920
self.client_self_id = uuid.uuid4().hex
2021

2122
@abc.abstractmethod
22-
def run(self) -> Awaitable[Any]:
23+
def run(self) -> Coroutine[Any, Any, None]:
2324
"""
2425
得到一个平台的运行实例,需要返回一个协程对象。
2526
"""
@@ -40,7 +41,7 @@ def meta(self) -> PlatformMetadata:
4041

4142
async def send_by_session(
4243
self, session: MessageSesion, message_chain: MessageChain
43-
) -> Awaitable[Any]:
44+
) -> None:
4445
"""
4546
通过会话发送消息。该方法旨在让插件能够直接通过**可持久化的会话数据**发送消息,而不需要保存 event 对象。
4647

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
@@ -10,9 +10,9 @@
1010
def register_platform_adapter(
1111
adapter_name: str,
1212
desc: str,
13-
default_config_tmpl: dict = None,
14-
adapter_display_name: str = None,
15-
logo_path: str = None,
13+
default_config_tmpl: dict | None = None,
14+
adapter_display_name: str | None = None,
15+
logo_path: str | None = None,
1616
):
1717
"""用于注册平台适配器的带参装饰器。
1818

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@
44
import os
55
from typing import Any
66

7-
from collections.abc import Awaitable, Callable
7+
from collections.abc import Coroutine
8+
9+
from collections.abc import Callable
810
from astrbot.core.platform import (
911
Platform,
1012
AstrBotMessage,
@@ -133,7 +135,7 @@ async def convert_message(self, data: tuple) -> AstrBotMessage:
133135
abm.raw_message = data
134136
return abm
135137

136-
def run(self) -> Awaitable[Any]:
138+
def run(self) -> Coroutine[Any, Any, None]:
137139
async def callback(data: tuple):
138140
abm = await self.convert_message(data)
139141
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
@@ -47,7 +47,9 @@ async def _send(message: MessageChain, session_id: str, streaming: bool = False)
4747
# save image to local
4848
filename = str(uuid.uuid4()) + ".jpg"
4949
path = os.path.join(imgs_dir, filename)
50-
if comp.file and comp.file.startswith("file:///"):
50+
if comp.file is None:
51+
raise ValueError("Image file is None")
52+
elif comp.file.startswith("file:///"):
5153
ph = comp.file[8:]
5254
with open(path, "wb") as f:
5355
with open(ph, "rb") as f2:
@@ -76,7 +78,9 @@ async def _send(message: MessageChain, session_id: str, streaming: bool = False)
7678
# save record to local
7779
filename = str(uuid.uuid4()) + ".wav"
7880
path = os.path.join(imgs_dir, filename)
79-
if comp.file and comp.file.startswith("file:///"):
81+
if comp.file is None:
82+
raise ValueError("Record file is None")
83+
elif comp.file.startswith("file:///"):
8084
ph = comp.file[8:]
8185
with open(path, "wb") as f:
8286
with open(ph, "rb") as f2:

0 commit comments

Comments
 (0)