AstrBot 4.5.1__py3-none-any.whl → 4.5.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- astrbot/api/__init__.py +10 -11
- astrbot/api/event/__init__.py +5 -6
- astrbot/api/event/filter/__init__.py +37 -36
- astrbot/api/platform/__init__.py +7 -8
- astrbot/api/provider/__init__.py +7 -7
- astrbot/api/star/__init__.py +3 -4
- astrbot/api/util/__init__.py +2 -2
- astrbot/cli/__main__.py +5 -5
- astrbot/cli/commands/__init__.py +3 -3
- astrbot/cli/commands/cmd_conf.py +19 -16
- astrbot/cli/commands/cmd_init.py +3 -2
- astrbot/cli/commands/cmd_plug.py +8 -10
- astrbot/cli/commands/cmd_run.py +5 -6
- astrbot/cli/utils/__init__.py +6 -6
- astrbot/cli/utils/basic.py +14 -14
- astrbot/cli/utils/plugin.py +24 -15
- astrbot/cli/utils/version_comparator.py +10 -12
- astrbot/core/__init__.py +8 -6
- astrbot/core/agent/agent.py +3 -2
- astrbot/core/agent/handoff.py +6 -2
- astrbot/core/agent/hooks.py +9 -6
- astrbot/core/agent/mcp_client.py +50 -15
- astrbot/core/agent/message.py +168 -0
- astrbot/core/agent/response.py +2 -1
- astrbot/core/agent/run_context.py +2 -3
- astrbot/core/agent/runners/base.py +10 -13
- astrbot/core/agent/runners/tool_loop_agent_runner.py +52 -51
- astrbot/core/agent/tool.py +60 -41
- astrbot/core/agent/tool_executor.py +9 -3
- astrbot/core/astr_agent_context.py +3 -1
- astrbot/core/astrbot_config_mgr.py +29 -9
- astrbot/core/config/__init__.py +2 -2
- astrbot/core/config/astrbot_config.py +28 -26
- astrbot/core/config/default.py +4 -6
- astrbot/core/conversation_mgr.py +105 -36
- astrbot/core/core_lifecycle.py +68 -54
- astrbot/core/db/__init__.py +33 -18
- astrbot/core/db/migration/helper.py +12 -10
- astrbot/core/db/migration/migra_3_to_4.py +53 -34
- astrbot/core/db/migration/migra_45_to_46.py +1 -1
- astrbot/core/db/migration/shared_preferences_v3.py +2 -1
- astrbot/core/db/migration/sqlite_v3.py +26 -23
- astrbot/core/db/po.py +27 -18
- astrbot/core/db/sqlite.py +74 -45
- astrbot/core/db/vec_db/base.py +10 -14
- astrbot/core/db/vec_db/faiss_impl/document_storage.py +90 -77
- astrbot/core/db/vec_db/faiss_impl/embedding_storage.py +9 -3
- astrbot/core/db/vec_db/faiss_impl/vec_db.py +36 -31
- astrbot/core/event_bus.py +8 -6
- astrbot/core/file_token_service.py +6 -5
- astrbot/core/initial_loader.py +7 -5
- astrbot/core/knowledge_base/chunking/__init__.py +1 -3
- astrbot/core/knowledge_base/chunking/base.py +1 -0
- astrbot/core/knowledge_base/chunking/fixed_size.py +2 -0
- astrbot/core/knowledge_base/chunking/recursive.py +16 -10
- astrbot/core/knowledge_base/kb_db_sqlite.py +50 -48
- astrbot/core/knowledge_base/kb_helper.py +30 -17
- astrbot/core/knowledge_base/kb_mgr.py +6 -7
- astrbot/core/knowledge_base/models.py +10 -4
- astrbot/core/knowledge_base/parsers/__init__.py +3 -5
- astrbot/core/knowledge_base/parsers/base.py +1 -0
- astrbot/core/knowledge_base/parsers/markitdown_parser.py +2 -1
- astrbot/core/knowledge_base/parsers/pdf_parser.py +2 -1
- astrbot/core/knowledge_base/parsers/text_parser.py +1 -0
- astrbot/core/knowledge_base/parsers/util.py +1 -1
- astrbot/core/knowledge_base/retrieval/__init__.py +6 -8
- astrbot/core/knowledge_base/retrieval/manager.py +17 -14
- astrbot/core/knowledge_base/retrieval/rank_fusion.py +7 -3
- astrbot/core/knowledge_base/retrieval/sparse_retriever.py +11 -5
- astrbot/core/log.py +21 -13
- astrbot/core/message/components.py +123 -217
- astrbot/core/message/message_event_result.py +24 -24
- astrbot/core/persona_mgr.py +20 -11
- astrbot/core/pipeline/__init__.py +7 -7
- astrbot/core/pipeline/content_safety_check/stage.py +13 -9
- astrbot/core/pipeline/content_safety_check/strategies/__init__.py +1 -2
- astrbot/core/pipeline/content_safety_check/strategies/baidu_aip.py +12 -13
- astrbot/core/pipeline/content_safety_check/strategies/keywords.py +1 -0
- astrbot/core/pipeline/content_safety_check/strategies/strategy.py +6 -6
- astrbot/core/pipeline/context.py +4 -1
- astrbot/core/pipeline/context_utils.py +77 -7
- astrbot/core/pipeline/preprocess_stage/stage.py +12 -9
- astrbot/core/pipeline/process_stage/method/llm_request.py +125 -72
- astrbot/core/pipeline/process_stage/method/star_request.py +19 -17
- astrbot/core/pipeline/process_stage/stage.py +13 -10
- astrbot/core/pipeline/process_stage/utils.py +6 -5
- astrbot/core/pipeline/rate_limit_check/stage.py +37 -36
- astrbot/core/pipeline/respond/stage.py +23 -20
- astrbot/core/pipeline/result_decorate/stage.py +31 -23
- astrbot/core/pipeline/scheduler.py +12 -8
- astrbot/core/pipeline/session_status_check/stage.py +12 -8
- astrbot/core/pipeline/stage.py +10 -4
- astrbot/core/pipeline/waking_check/stage.py +24 -18
- astrbot/core/pipeline/whitelist_check/stage.py +10 -7
- astrbot/core/platform/__init__.py +6 -6
- astrbot/core/platform/astr_message_event.py +76 -110
- astrbot/core/platform/astrbot_message.py +11 -13
- astrbot/core/platform/manager.py +16 -15
- astrbot/core/platform/message_session.py +5 -3
- astrbot/core/platform/platform.py +16 -24
- astrbot/core/platform/platform_metadata.py +4 -4
- astrbot/core/platform/register.py +8 -8
- astrbot/core/platform/sources/aiocqhttp/aiocqhttp_message_event.py +23 -15
- astrbot/core/platform/sources/aiocqhttp/aiocqhttp_platform_adapter.py +51 -33
- astrbot/core/platform/sources/dingtalk/dingtalk_adapter.py +42 -27
- astrbot/core/platform/sources/dingtalk/dingtalk_event.py +7 -3
- astrbot/core/platform/sources/discord/client.py +9 -6
- astrbot/core/platform/sources/discord/components.py +18 -14
- astrbot/core/platform/sources/discord/discord_platform_adapter.py +45 -30
- astrbot/core/platform/sources/discord/discord_platform_event.py +38 -30
- astrbot/core/platform/sources/lark/lark_adapter.py +23 -17
- astrbot/core/platform/sources/lark/lark_event.py +21 -14
- astrbot/core/platform/sources/misskey/misskey_adapter.py +107 -67
- astrbot/core/platform/sources/misskey/misskey_api.py +153 -129
- astrbot/core/platform/sources/misskey/misskey_event.py +20 -15
- astrbot/core/platform/sources/misskey/misskey_utils.py +74 -62
- astrbot/core/platform/sources/qqofficial/qqofficial_message_event.py +63 -44
- astrbot/core/platform/sources/qqofficial/qqofficial_platform_adapter.py +41 -26
- astrbot/core/platform/sources/qqofficial_webhook/qo_webhook_adapter.py +36 -17
- astrbot/core/platform/sources/qqofficial_webhook/qo_webhook_event.py +3 -1
- astrbot/core/platform/sources/qqofficial_webhook/qo_webhook_server.py +12 -7
- astrbot/core/platform/sources/satori/satori_adapter.py +56 -38
- astrbot/core/platform/sources/satori/satori_event.py +34 -25
- astrbot/core/platform/sources/slack/client.py +11 -9
- astrbot/core/platform/sources/slack/slack_adapter.py +52 -36
- astrbot/core/platform/sources/slack/slack_event.py +34 -24
- astrbot/core/platform/sources/telegram/tg_adapter.py +38 -18
- astrbot/core/platform/sources/telegram/tg_event.py +32 -18
- astrbot/core/platform/sources/webchat/webchat_adapter.py +27 -17
- astrbot/core/platform/sources/webchat/webchat_event.py +14 -10
- astrbot/core/platform/sources/wechatpadpro/wechatpadpro_adapter.py +115 -120
- astrbot/core/platform/sources/wechatpadpro/wechatpadpro_message_event.py +9 -8
- astrbot/core/platform/sources/wechatpadpro/xml_data_parser.py +15 -16
- astrbot/core/platform/sources/wecom/wecom_adapter.py +35 -18
- astrbot/core/platform/sources/wecom/wecom_event.py +55 -48
- astrbot/core/platform/sources/wecom/wecom_kf.py +34 -44
- astrbot/core/platform/sources/wecom/wecom_kf_message.py +26 -10
- astrbot/core/platform/sources/wecom_ai_bot/WXBizJsonMsgCrypt.py +18 -10
- astrbot/core/platform/sources/wecom_ai_bot/__init__.py +3 -5
- astrbot/core/platform/sources/wecom_ai_bot/ierror.py +0 -1
- astrbot/core/platform/sources/wecom_ai_bot/wecomai_adapter.py +61 -37
- astrbot/core/platform/sources/wecom_ai_bot/wecomai_api.py +67 -28
- astrbot/core/platform/sources/wecom_ai_bot/wecomai_event.py +8 -9
- astrbot/core/platform/sources/wecom_ai_bot/wecomai_queue_mgr.py +18 -9
- astrbot/core/platform/sources/wecom_ai_bot/wecomai_server.py +14 -12
- astrbot/core/platform/sources/wecom_ai_bot/wecomai_utils.py +22 -12
- astrbot/core/platform/sources/weixin_official_account/weixin_offacc_adapter.py +40 -26
- astrbot/core/platform/sources/weixin_official_account/weixin_offacc_event.py +47 -45
- astrbot/core/platform_message_history_mgr.py +5 -3
- astrbot/core/provider/__init__.py +2 -3
- astrbot/core/provider/entites.py +8 -8
- astrbot/core/provider/entities.py +61 -75
- astrbot/core/provider/func_tool_manager.py +59 -55
- astrbot/core/provider/manager.py +32 -22
- astrbot/core/provider/provider.py +72 -46
- astrbot/core/provider/register.py +7 -7
- astrbot/core/provider/sources/anthropic_source.py +48 -30
- astrbot/core/provider/sources/azure_tts_source.py +17 -13
- astrbot/core/provider/sources/coze_api_client.py +27 -17
- astrbot/core/provider/sources/coze_source.py +104 -87
- astrbot/core/provider/sources/dashscope_source.py +18 -11
- astrbot/core/provider/sources/dashscope_tts.py +36 -23
- astrbot/core/provider/sources/dify_source.py +25 -20
- astrbot/core/provider/sources/edge_tts_source.py +21 -17
- astrbot/core/provider/sources/fishaudio_tts_api_source.py +22 -14
- astrbot/core/provider/sources/gemini_embedding_source.py +12 -13
- astrbot/core/provider/sources/gemini_source.py +72 -58
- astrbot/core/provider/sources/gemini_tts_source.py +8 -6
- astrbot/core/provider/sources/gsv_selfhosted_source.py +17 -14
- astrbot/core/provider/sources/gsvi_tts_source.py +11 -7
- astrbot/core/provider/sources/minimax_tts_api_source.py +50 -40
- astrbot/core/provider/sources/openai_embedding_source.py +6 -8
- astrbot/core/provider/sources/openai_source.py +77 -69
- astrbot/core/provider/sources/openai_tts_api_source.py +14 -6
- astrbot/core/provider/sources/sensevoice_selfhosted_source.py +13 -11
- astrbot/core/provider/sources/vllm_rerank_source.py +10 -4
- astrbot/core/provider/sources/volcengine_tts.py +38 -31
- astrbot/core/provider/sources/whisper_api_source.py +14 -12
- astrbot/core/provider/sources/whisper_selfhosted_source.py +15 -11
- astrbot/core/provider/sources/xinference_rerank_source.py +16 -8
- astrbot/core/provider/sources/xinference_stt_provider.py +35 -25
- astrbot/core/star/__init__.py +16 -11
- astrbot/core/star/config.py +10 -15
- astrbot/core/star/context.py +97 -75
- astrbot/core/star/filter/__init__.py +4 -3
- astrbot/core/star/filter/command.py +30 -28
- astrbot/core/star/filter/command_group.py +27 -24
- astrbot/core/star/filter/custom_filter.py +6 -5
- astrbot/core/star/filter/event_message_type.py +4 -2
- astrbot/core/star/filter/permission.py +4 -2
- astrbot/core/star/filter/platform_adapter_type.py +4 -2
- astrbot/core/star/filter/regex.py +4 -2
- astrbot/core/star/register/__init__.py +19 -19
- astrbot/core/star/register/star.py +6 -2
- astrbot/core/star/register/star_handler.py +96 -73
- astrbot/core/star/session_llm_manager.py +48 -14
- astrbot/core/star/session_plugin_manager.py +29 -15
- astrbot/core/star/star.py +1 -2
- astrbot/core/star/star_handler.py +13 -8
- astrbot/core/star/star_manager.py +151 -59
- astrbot/core/star/star_tools.py +44 -37
- astrbot/core/star/updator.py +10 -10
- astrbot/core/umop_config_router.py +10 -4
- astrbot/core/updator.py +13 -5
- astrbot/core/utils/astrbot_path.py +3 -5
- astrbot/core/utils/dify_api_client.py +33 -15
- astrbot/core/utils/io.py +66 -42
- astrbot/core/utils/log_pipe.py +1 -1
- astrbot/core/utils/metrics.py +7 -7
- astrbot/core/utils/path_util.py +15 -16
- astrbot/core/utils/pip_installer.py +5 -5
- astrbot/core/utils/session_waiter.py +19 -20
- astrbot/core/utils/shared_preferences.py +45 -20
- astrbot/core/utils/t2i/__init__.py +4 -1
- astrbot/core/utils/t2i/network_strategy.py +35 -26
- astrbot/core/utils/t2i/renderer.py +11 -5
- astrbot/core/utils/t2i/template_manager.py +14 -15
- astrbot/core/utils/tencent_record_helper.py +19 -13
- astrbot/core/utils/version_comparator.py +10 -13
- astrbot/core/zip_updator.py +43 -40
- astrbot/dashboard/routes/__init__.py +18 -18
- astrbot/dashboard/routes/auth.py +10 -8
- astrbot/dashboard/routes/chat.py +30 -21
- astrbot/dashboard/routes/config.py +92 -75
- astrbot/dashboard/routes/conversation.py +46 -39
- astrbot/dashboard/routes/file.py +4 -2
- astrbot/dashboard/routes/knowledge_base.py +47 -40
- astrbot/dashboard/routes/log.py +9 -4
- astrbot/dashboard/routes/persona.py +19 -16
- astrbot/dashboard/routes/plugin.py +69 -55
- astrbot/dashboard/routes/route.py +3 -1
- astrbot/dashboard/routes/session_management.py +130 -116
- astrbot/dashboard/routes/stat.py +34 -34
- astrbot/dashboard/routes/t2i.py +15 -12
- astrbot/dashboard/routes/tools.py +47 -52
- astrbot/dashboard/routes/update.py +32 -28
- astrbot/dashboard/server.py +30 -26
- astrbot/dashboard/utils.py +8 -4
- {astrbot-4.5.1.dist-info → astrbot-4.5.2.dist-info}/METADATA +2 -1
- astrbot-4.5.2.dist-info/RECORD +261 -0
- astrbot-4.5.1.dist-info/RECORD +0 -260
- {astrbot-4.5.1.dist-info → astrbot-4.5.2.dist-info}/WHEEL +0 -0
- {astrbot-4.5.1.dist-info → astrbot-4.5.2.dist-info}/entry_points.txt +0 -0
- {astrbot-4.5.1.dist-info → astrbot-4.5.2.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
"""
|
|
2
|
-
会话插件管理器 - 负责管理每个会话的插件启停状态
|
|
3
|
-
"""
|
|
1
|
+
"""会话插件管理器 - 负责管理每个会话的插件启停状态"""
|
|
4
2
|
|
|
5
|
-
from astrbot.core import
|
|
6
|
-
from typing import Dict, List
|
|
3
|
+
from astrbot.core import logger, sp
|
|
7
4
|
from astrbot.core.platform.astr_message_event import AstrMessageEvent
|
|
8
5
|
|
|
9
6
|
|
|
@@ -20,10 +17,14 @@ class SessionPluginManager:
|
|
|
20
17
|
|
|
21
18
|
Returns:
|
|
22
19
|
bool: True表示启用,False表示禁用
|
|
20
|
+
|
|
23
21
|
"""
|
|
24
22
|
# 获取会话插件配置
|
|
25
23
|
session_plugin_config = sp.get(
|
|
26
|
-
"session_plugin_config",
|
|
24
|
+
"session_plugin_config",
|
|
25
|
+
{},
|
|
26
|
+
scope="umo",
|
|
27
|
+
scope_id=session_id,
|
|
27
28
|
)
|
|
28
29
|
session_config = session_plugin_config.get(session_id, {})
|
|
29
30
|
|
|
@@ -43,7 +44,9 @@ class SessionPluginManager:
|
|
|
43
44
|
|
|
44
45
|
@staticmethod
|
|
45
46
|
def set_plugin_status_for_session(
|
|
46
|
-
session_id: str,
|
|
47
|
+
session_id: str,
|
|
48
|
+
plugin_name: str,
|
|
49
|
+
enabled: bool,
|
|
47
50
|
) -> None:
|
|
48
51
|
"""设置插件在指定会话中的启停状态
|
|
49
52
|
|
|
@@ -51,10 +54,14 @@ class SessionPluginManager:
|
|
|
51
54
|
session_id: 会话ID (unified_msg_origin)
|
|
52
55
|
plugin_name: 插件名称
|
|
53
56
|
enabled: True表示启用,False表示禁用
|
|
57
|
+
|
|
54
58
|
"""
|
|
55
59
|
# 获取当前配置
|
|
56
60
|
session_plugin_config = sp.get(
|
|
57
|
-
"session_plugin_config",
|
|
61
|
+
"session_plugin_config",
|
|
62
|
+
{},
|
|
63
|
+
scope="umo",
|
|
64
|
+
scope_id=session_id,
|
|
58
65
|
)
|
|
59
66
|
if session_id not in session_plugin_config:
|
|
60
67
|
session_plugin_config[session_id] = {
|
|
@@ -91,11 +98,11 @@ class SessionPluginManager:
|
|
|
91
98
|
)
|
|
92
99
|
|
|
93
100
|
logger.info(
|
|
94
|
-
f"会话 {session_id} 的插件 {plugin_name} 状态已更新为: {'启用' if enabled else '禁用'}"
|
|
101
|
+
f"会话 {session_id} 的插件 {plugin_name} 状态已更新为: {'启用' if enabled else '禁用'}",
|
|
95
102
|
)
|
|
96
103
|
|
|
97
104
|
@staticmethod
|
|
98
|
-
def get_session_plugin_config(session_id: str) ->
|
|
105
|
+
def get_session_plugin_config(session_id: str) -> dict[str, list[str]]:
|
|
99
106
|
"""获取指定会话的插件配置
|
|
100
107
|
|
|
101
108
|
Args:
|
|
@@ -103,16 +110,21 @@ class SessionPluginManager:
|
|
|
103
110
|
|
|
104
111
|
Returns:
|
|
105
112
|
Dict[str, List[str]]: 包含enabled_plugins和disabled_plugins的字典
|
|
113
|
+
|
|
106
114
|
"""
|
|
107
115
|
session_plugin_config = sp.get(
|
|
108
|
-
"session_plugin_config",
|
|
116
|
+
"session_plugin_config",
|
|
117
|
+
{},
|
|
118
|
+
scope="umo",
|
|
119
|
+
scope_id=session_id,
|
|
109
120
|
)
|
|
110
121
|
return session_plugin_config.get(
|
|
111
|
-
session_id,
|
|
122
|
+
session_id,
|
|
123
|
+
{"enabled_plugins": [], "disabled_plugins": []},
|
|
112
124
|
)
|
|
113
125
|
|
|
114
126
|
@staticmethod
|
|
115
|
-
def filter_handlers_by_session(event: AstrMessageEvent, handlers:
|
|
127
|
+
def filter_handlers_by_session(event: AstrMessageEvent, handlers: list) -> list:
|
|
116
128
|
"""根据会话配置过滤处理器列表
|
|
117
129
|
|
|
118
130
|
Args:
|
|
@@ -121,6 +133,7 @@ class SessionPluginManager:
|
|
|
121
133
|
|
|
122
134
|
Returns:
|
|
123
135
|
List: 过滤后的处理器列表
|
|
136
|
+
|
|
124
137
|
"""
|
|
125
138
|
from astrbot.core.star.star import star_map
|
|
126
139
|
|
|
@@ -145,12 +158,13 @@ class SessionPluginManager:
|
|
|
145
158
|
|
|
146
159
|
# 检查插件是否在当前会话中启用
|
|
147
160
|
if SessionPluginManager.is_plugin_enabled_for_session(
|
|
148
|
-
session_id,
|
|
161
|
+
session_id,
|
|
162
|
+
plugin.name,
|
|
149
163
|
):
|
|
150
164
|
filtered_handlers.append(handler)
|
|
151
165
|
else:
|
|
152
166
|
logger.debug(
|
|
153
|
-
f"插件 {plugin.name} 在会话 {session_id} 中被禁用,跳过处理器 {handler.handler_name}"
|
|
167
|
+
f"插件 {plugin.name} 在会话 {session_id} 中被禁用,跳过处理器 {handler.handler_name}",
|
|
154
168
|
)
|
|
155
169
|
|
|
156
170
|
return filtered_handlers
|
astrbot/core/star/star.py
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
|
+
|
|
2
3
|
import enum
|
|
4
|
+
from collections.abc import Awaitable, Callable
|
|
3
5
|
from dataclasses import dataclass, field
|
|
4
|
-
from typing import
|
|
6
|
+
from typing import Any, Generic, TypeVar
|
|
7
|
+
|
|
5
8
|
from .filter import HandlerFilter
|
|
6
9
|
from .star import star_map
|
|
7
10
|
|
|
@@ -10,8 +13,8 @@ T = TypeVar("T", bound="StarHandlerMetadata")
|
|
|
10
13
|
|
|
11
14
|
class StarHandlerRegistry(Generic[T]):
|
|
12
15
|
def __init__(self):
|
|
13
|
-
self.star_handlers_map:
|
|
14
|
-
self._handlers:
|
|
16
|
+
self.star_handlers_map: dict[str, StarHandlerMetadata] = {}
|
|
17
|
+
self._handlers: list[StarHandlerMetadata] = []
|
|
15
18
|
|
|
16
19
|
def append(self, handler: StarHandlerMetadata):
|
|
17
20
|
"""添加一个 Handler,并保持按优先级有序"""
|
|
@@ -31,7 +34,7 @@ class StarHandlerRegistry(Generic[T]):
|
|
|
31
34
|
event_type: EventType,
|
|
32
35
|
only_activated=True,
|
|
33
36
|
plugins_name: list[str] | None = None,
|
|
34
|
-
) ->
|
|
37
|
+
) -> list[StarHandlerMetadata]:
|
|
35
38
|
handlers = []
|
|
36
39
|
for handler in self._handlers:
|
|
37
40
|
# 过滤事件类型
|
|
@@ -64,8 +67,9 @@ class StarHandlerRegistry(Generic[T]):
|
|
|
64
67
|
return self.star_handlers_map.get(full_name, None)
|
|
65
68
|
|
|
66
69
|
def get_handlers_by_module_name(
|
|
67
|
-
self,
|
|
68
|
-
|
|
70
|
+
self,
|
|
71
|
+
module_name: str,
|
|
72
|
+
) -> list[StarHandlerMetadata]:
|
|
69
73
|
return [
|
|
70
74
|
handler
|
|
71
75
|
for handler in self._handlers
|
|
@@ -126,7 +130,7 @@ class StarHandlerMetadata:
|
|
|
126
130
|
handler: Callable[..., Awaitable[Any]]
|
|
127
131
|
"""Handler 的函数对象,应当是一个异步函数"""
|
|
128
132
|
|
|
129
|
-
event_filters:
|
|
133
|
+
event_filters: list[HandlerFilter]
|
|
130
134
|
"""一个适配器消息事件过滤器,用于描述这个 Handler 能够处理、应该处理的适配器消息事件"""
|
|
131
135
|
|
|
132
136
|
desc: str = ""
|
|
@@ -138,5 +142,6 @@ class StarHandlerMetadata:
|
|
|
138
142
|
def __lt__(self, other: StarHandlerMetadata):
|
|
139
143
|
"""定义小于运算符以支持优先队列"""
|
|
140
144
|
return self.extras_configs.get("priority", 0) < other.extras_configs.get(
|
|
141
|
-
"priority",
|
|
145
|
+
"priority",
|
|
146
|
+
0,
|
|
142
147
|
)
|