AstrBot 3.5.6__py3-none-any.whl → 4.7.0__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 +16 -4
- astrbot/api/all.py +2 -1
- astrbot/api/event/__init__.py +5 -6
- astrbot/api/event/filter/__init__.py +37 -34
- astrbot/api/platform/__init__.py +7 -8
- astrbot/api/provider/__init__.py +8 -7
- astrbot/api/star/__init__.py +3 -4
- astrbot/api/util/__init__.py +2 -2
- astrbot/cli/__init__.py +1 -0
- astrbot/cli/__main__.py +18 -197
- astrbot/cli/commands/__init__.py +6 -0
- astrbot/cli/commands/cmd_conf.py +209 -0
- astrbot/cli/commands/cmd_init.py +56 -0
- astrbot/cli/commands/cmd_plug.py +245 -0
- astrbot/cli/commands/cmd_run.py +62 -0
- astrbot/cli/utils/__init__.py +18 -0
- astrbot/cli/utils/basic.py +76 -0
- astrbot/cli/utils/plugin.py +246 -0
- astrbot/cli/utils/version_comparator.py +90 -0
- astrbot/core/__init__.py +17 -19
- astrbot/core/agent/agent.py +14 -0
- astrbot/core/agent/handoff.py +38 -0
- astrbot/core/agent/hooks.py +30 -0
- astrbot/core/agent/mcp_client.py +385 -0
- astrbot/core/agent/message.py +175 -0
- astrbot/core/agent/response.py +14 -0
- astrbot/core/agent/run_context.py +22 -0
- astrbot/core/agent/runners/__init__.py +3 -0
- astrbot/core/agent/runners/base.py +65 -0
- astrbot/core/agent/runners/coze/coze_agent_runner.py +367 -0
- astrbot/core/agent/runners/coze/coze_api_client.py +324 -0
- astrbot/core/agent/runners/dashscope/dashscope_agent_runner.py +403 -0
- astrbot/core/agent/runners/dify/dify_agent_runner.py +336 -0
- astrbot/core/agent/runners/dify/dify_api_client.py +195 -0
- astrbot/core/agent/runners/tool_loop_agent_runner.py +400 -0
- astrbot/core/agent/tool.py +285 -0
- astrbot/core/agent/tool_executor.py +17 -0
- astrbot/core/astr_agent_context.py +19 -0
- astrbot/core/astr_agent_hooks.py +36 -0
- astrbot/core/astr_agent_run_util.py +80 -0
- astrbot/core/astr_agent_tool_exec.py +246 -0
- astrbot/core/astrbot_config_mgr.py +275 -0
- astrbot/core/config/__init__.py +2 -2
- astrbot/core/config/astrbot_config.py +60 -20
- astrbot/core/config/default.py +1972 -453
- astrbot/core/config/i18n_utils.py +110 -0
- astrbot/core/conversation_mgr.py +285 -75
- astrbot/core/core_lifecycle.py +167 -62
- astrbot/core/db/__init__.py +305 -102
- astrbot/core/db/migration/helper.py +69 -0
- astrbot/core/db/migration/migra_3_to_4.py +357 -0
- astrbot/core/db/migration/migra_45_to_46.py +44 -0
- astrbot/core/db/migration/migra_webchat_session.py +131 -0
- astrbot/core/db/migration/shared_preferences_v3.py +48 -0
- astrbot/core/db/migration/sqlite_v3.py +497 -0
- astrbot/core/db/po.py +259 -55
- astrbot/core/db/sqlite.py +773 -528
- astrbot/core/db/vec_db/base.py +73 -0
- astrbot/core/db/vec_db/faiss_impl/__init__.py +3 -0
- astrbot/core/db/vec_db/faiss_impl/document_storage.py +392 -0
- astrbot/core/db/vec_db/faiss_impl/embedding_storage.py +93 -0
- astrbot/core/db/vec_db/faiss_impl/sqlite_init.sql +17 -0
- astrbot/core/db/vec_db/faiss_impl/vec_db.py +204 -0
- astrbot/core/event_bus.py +26 -22
- astrbot/core/exceptions.py +9 -0
- astrbot/core/file_token_service.py +98 -0
- astrbot/core/initial_loader.py +19 -10
- astrbot/core/knowledge_base/chunking/__init__.py +9 -0
- astrbot/core/knowledge_base/chunking/base.py +25 -0
- astrbot/core/knowledge_base/chunking/fixed_size.py +59 -0
- astrbot/core/knowledge_base/chunking/recursive.py +161 -0
- astrbot/core/knowledge_base/kb_db_sqlite.py +301 -0
- astrbot/core/knowledge_base/kb_helper.py +642 -0
- astrbot/core/knowledge_base/kb_mgr.py +330 -0
- astrbot/core/knowledge_base/models.py +120 -0
- astrbot/core/knowledge_base/parsers/__init__.py +13 -0
- astrbot/core/knowledge_base/parsers/base.py +51 -0
- astrbot/core/knowledge_base/parsers/markitdown_parser.py +26 -0
- astrbot/core/knowledge_base/parsers/pdf_parser.py +101 -0
- astrbot/core/knowledge_base/parsers/text_parser.py +42 -0
- astrbot/core/knowledge_base/parsers/url_parser.py +103 -0
- astrbot/core/knowledge_base/parsers/util.py +13 -0
- astrbot/core/knowledge_base/prompts.py +65 -0
- astrbot/core/knowledge_base/retrieval/__init__.py +14 -0
- astrbot/core/knowledge_base/retrieval/hit_stopwords.txt +767 -0
- astrbot/core/knowledge_base/retrieval/manager.py +276 -0
- astrbot/core/knowledge_base/retrieval/rank_fusion.py +142 -0
- astrbot/core/knowledge_base/retrieval/sparse_retriever.py +136 -0
- astrbot/core/log.py +21 -15
- astrbot/core/message/components.py +413 -287
- astrbot/core/message/message_event_result.py +35 -24
- astrbot/core/persona_mgr.py +192 -0
- astrbot/core/pipeline/__init__.py +14 -14
- 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 +13 -14
- astrbot/core/pipeline/content_safety_check/strategies/keywords.py +2 -1
- astrbot/core/pipeline/content_safety_check/strategies/strategy.py +6 -6
- astrbot/core/pipeline/context.py +7 -1
- astrbot/core/pipeline/context_utils.py +107 -0
- astrbot/core/pipeline/preprocess_stage/stage.py +63 -36
- astrbot/core/pipeline/process_stage/method/agent_request.py +48 -0
- astrbot/core/pipeline/process_stage/method/agent_sub_stages/internal.py +464 -0
- astrbot/core/pipeline/process_stage/method/agent_sub_stages/third_party.py +202 -0
- astrbot/core/pipeline/process_stage/method/star_request.py +26 -32
- astrbot/core/pipeline/process_stage/stage.py +21 -15
- astrbot/core/pipeline/process_stage/utils.py +125 -0
- astrbot/core/pipeline/rate_limit_check/stage.py +34 -36
- astrbot/core/pipeline/respond/stage.py +142 -101
- astrbot/core/pipeline/result_decorate/stage.py +124 -57
- astrbot/core/pipeline/scheduler.py +21 -16
- astrbot/core/pipeline/session_status_check/stage.py +37 -0
- astrbot/core/pipeline/stage.py +11 -76
- astrbot/core/pipeline/waking_check/stage.py +69 -33
- astrbot/core/pipeline/whitelist_check/stage.py +10 -7
- astrbot/core/platform/__init__.py +6 -6
- astrbot/core/platform/astr_message_event.py +107 -129
- astrbot/core/platform/astrbot_message.py +32 -12
- astrbot/core/platform/manager.py +62 -18
- astrbot/core/platform/message_session.py +30 -0
- astrbot/core/platform/platform.py +16 -24
- astrbot/core/platform/platform_metadata.py +9 -4
- astrbot/core/platform/register.py +12 -7
- astrbot/core/platform/sources/aiocqhttp/aiocqhttp_message_event.py +136 -60
- astrbot/core/platform/sources/aiocqhttp/aiocqhttp_platform_adapter.py +126 -46
- astrbot/core/platform/sources/dingtalk/dingtalk_adapter.py +63 -31
- astrbot/core/platform/sources/dingtalk/dingtalk_event.py +30 -26
- astrbot/core/platform/sources/discord/client.py +129 -0
- astrbot/core/platform/sources/discord/components.py +139 -0
- astrbot/core/platform/sources/discord/discord_platform_adapter.py +473 -0
- astrbot/core/platform/sources/discord/discord_platform_event.py +313 -0
- astrbot/core/platform/sources/lark/lark_adapter.py +27 -18
- astrbot/core/platform/sources/lark/lark_event.py +39 -13
- astrbot/core/platform/sources/misskey/misskey_adapter.py +770 -0
- astrbot/core/platform/sources/misskey/misskey_api.py +964 -0
- astrbot/core/platform/sources/misskey/misskey_event.py +163 -0
- astrbot/core/platform/sources/misskey/misskey_utils.py +550 -0
- astrbot/core/platform/sources/qqofficial/qqofficial_message_event.py +149 -33
- 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 +14 -8
- astrbot/core/platform/sources/satori/satori_adapter.py +792 -0
- astrbot/core/platform/sources/satori/satori_event.py +432 -0
- astrbot/core/platform/sources/slack/client.py +164 -0
- astrbot/core/platform/sources/slack/slack_adapter.py +416 -0
- astrbot/core/platform/sources/slack/slack_event.py +253 -0
- astrbot/core/platform/sources/telegram/tg_adapter.py +100 -43
- astrbot/core/platform/sources/telegram/tg_event.py +136 -36
- astrbot/core/platform/sources/webchat/webchat_adapter.py +72 -22
- astrbot/core/platform/sources/webchat/webchat_event.py +46 -22
- astrbot/core/platform/sources/webchat/webchat_queue_mgr.py +35 -0
- astrbot/core/platform/sources/wechatpadpro/wechatpadpro_adapter.py +926 -0
- astrbot/core/platform/sources/wechatpadpro/wechatpadpro_message_event.py +178 -0
- astrbot/core/platform/sources/wechatpadpro/xml_data_parser.py +159 -0
- astrbot/core/platform/sources/wecom/wecom_adapter.py +169 -27
- astrbot/core/platform/sources/wecom/wecom_event.py +162 -77
- astrbot/core/platform/sources/wecom/wecom_kf.py +279 -0
- astrbot/core/platform/sources/wecom/wecom_kf_message.py +196 -0
- astrbot/core/platform/sources/wecom_ai_bot/WXBizJsonMsgCrypt.py +297 -0
- astrbot/core/platform/sources/wecom_ai_bot/__init__.py +15 -0
- astrbot/core/platform/sources/wecom_ai_bot/ierror.py +19 -0
- astrbot/core/platform/sources/wecom_ai_bot/wecomai_adapter.py +472 -0
- astrbot/core/platform/sources/wecom_ai_bot/wecomai_api.py +417 -0
- astrbot/core/platform/sources/wecom_ai_bot/wecomai_event.py +152 -0
- astrbot/core/platform/sources/wecom_ai_bot/wecomai_queue_mgr.py +153 -0
- astrbot/core/platform/sources/wecom_ai_bot/wecomai_server.py +168 -0
- astrbot/core/platform/sources/wecom_ai_bot/wecomai_utils.py +209 -0
- astrbot/core/platform/sources/weixin_official_account/weixin_offacc_adapter.py +306 -0
- astrbot/core/platform/sources/weixin_official_account/weixin_offacc_event.py +186 -0
- astrbot/core/platform_message_history_mgr.py +49 -0
- astrbot/core/provider/__init__.py +2 -3
- astrbot/core/provider/entites.py +8 -8
- astrbot/core/provider/entities.py +154 -98
- astrbot/core/provider/func_tool_manager.py +446 -458
- astrbot/core/provider/manager.py +345 -207
- astrbot/core/provider/provider.py +188 -73
- astrbot/core/provider/register.py +9 -7
- astrbot/core/provider/sources/anthropic_source.py +295 -115
- astrbot/core/provider/sources/azure_tts_source.py +224 -0
- astrbot/core/provider/sources/bailian_rerank_source.py +236 -0
- astrbot/core/provider/sources/dashscope_tts.py +138 -14
- astrbot/core/provider/sources/edge_tts_source.py +24 -19
- astrbot/core/provider/sources/fishaudio_tts_api_source.py +58 -13
- astrbot/core/provider/sources/gemini_embedding_source.py +61 -0
- astrbot/core/provider/sources/gemini_source.py +310 -132
- astrbot/core/provider/sources/gemini_tts_source.py +81 -0
- astrbot/core/provider/sources/groq_source.py +15 -0
- astrbot/core/provider/sources/gsv_selfhosted_source.py +151 -0
- astrbot/core/provider/sources/gsvi_tts_source.py +14 -7
- astrbot/core/provider/sources/minimax_tts_api_source.py +159 -0
- astrbot/core/provider/sources/openai_embedding_source.py +40 -0
- astrbot/core/provider/sources/openai_source.py +241 -145
- astrbot/core/provider/sources/openai_tts_api_source.py +18 -7
- astrbot/core/provider/sources/sensevoice_selfhosted_source.py +13 -11
- astrbot/core/provider/sources/vllm_rerank_source.py +71 -0
- astrbot/core/provider/sources/volcengine_tts.py +115 -0
- astrbot/core/provider/sources/whisper_api_source.py +18 -13
- astrbot/core/provider/sources/whisper_selfhosted_source.py +19 -12
- astrbot/core/provider/sources/xinference_rerank_source.py +116 -0
- astrbot/core/provider/sources/xinference_stt_provider.py +197 -0
- astrbot/core/provider/sources/zhipu_source.py +6 -73
- astrbot/core/star/__init__.py +43 -11
- astrbot/core/star/config.py +17 -18
- astrbot/core/star/context.py +362 -138
- astrbot/core/star/filter/__init__.py +4 -3
- astrbot/core/star/filter/command.py +111 -35
- astrbot/core/star/filter/command_group.py +46 -34
- 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 +45 -12
- astrbot/core/star/filter/regex.py +4 -2
- astrbot/core/star/register/__init__.py +19 -15
- astrbot/core/star/register/star.py +41 -13
- astrbot/core/star/register/star_handler.py +236 -86
- astrbot/core/star/session_llm_manager.py +280 -0
- astrbot/core/star/session_plugin_manager.py +170 -0
- astrbot/core/star/star.py +36 -43
- astrbot/core/star/star_handler.py +47 -85
- astrbot/core/star/star_manager.py +442 -260
- astrbot/core/star/star_tools.py +167 -45
- astrbot/core/star/updator.py +17 -20
- astrbot/core/umop_config_router.py +106 -0
- astrbot/core/updator.py +38 -13
- astrbot/core/utils/astrbot_path.py +39 -0
- astrbot/core/utils/command_parser.py +1 -1
- astrbot/core/utils/io.py +119 -60
- astrbot/core/utils/log_pipe.py +1 -1
- astrbot/core/utils/metrics.py +11 -10
- astrbot/core/utils/migra_helper.py +73 -0
- astrbot/core/utils/path_util.py +63 -62
- astrbot/core/utils/pip_installer.py +37 -15
- astrbot/core/utils/session_lock.py +29 -0
- astrbot/core/utils/session_waiter.py +19 -20
- astrbot/core/utils/shared_preferences.py +174 -34
- astrbot/core/utils/t2i/__init__.py +4 -1
- astrbot/core/utils/t2i/local_strategy.py +386 -238
- astrbot/core/utils/t2i/network_strategy.py +109 -49
- astrbot/core/utils/t2i/renderer.py +29 -14
- astrbot/core/utils/t2i/template/astrbot_powershell.html +184 -0
- astrbot/core/utils/t2i/template_manager.py +111 -0
- astrbot/core/utils/tencent_record_helper.py +115 -1
- astrbot/core/utils/version_comparator.py +10 -13
- astrbot/core/zip_updator.py +112 -65
- astrbot/dashboard/routes/__init__.py +20 -13
- astrbot/dashboard/routes/auth.py +20 -9
- astrbot/dashboard/routes/chat.py +297 -141
- astrbot/dashboard/routes/config.py +652 -55
- astrbot/dashboard/routes/conversation.py +107 -37
- astrbot/dashboard/routes/file.py +26 -0
- astrbot/dashboard/routes/knowledge_base.py +1244 -0
- astrbot/dashboard/routes/log.py +27 -2
- astrbot/dashboard/routes/persona.py +202 -0
- astrbot/dashboard/routes/plugin.py +197 -139
- astrbot/dashboard/routes/route.py +27 -7
- astrbot/dashboard/routes/session_management.py +354 -0
- astrbot/dashboard/routes/stat.py +85 -18
- astrbot/dashboard/routes/static_file.py +5 -2
- astrbot/dashboard/routes/t2i.py +233 -0
- astrbot/dashboard/routes/tools.py +184 -120
- astrbot/dashboard/routes/update.py +59 -36
- astrbot/dashboard/server.py +96 -36
- astrbot/dashboard/utils.py +165 -0
- astrbot-4.7.0.dist-info/METADATA +294 -0
- astrbot-4.7.0.dist-info/RECORD +274 -0
- {astrbot-3.5.6.dist-info → astrbot-4.7.0.dist-info}/WHEEL +1 -1
- astrbot/core/db/plugin/sqlite_impl.py +0 -112
- astrbot/core/db/sqlite_init.sql +0 -50
- astrbot/core/pipeline/platform_compatibility/stage.py +0 -56
- astrbot/core/pipeline/process_stage/method/llm_request.py +0 -606
- astrbot/core/platform/sources/gewechat/client.py +0 -806
- astrbot/core/platform/sources/gewechat/downloader.py +0 -55
- astrbot/core/platform/sources/gewechat/gewechat_event.py +0 -255
- astrbot/core/platform/sources/gewechat/gewechat_platform_adapter.py +0 -103
- astrbot/core/platform/sources/gewechat/xml_data_parser.py +0 -110
- astrbot/core/provider/sources/dashscope_source.py +0 -203
- astrbot/core/provider/sources/dify_source.py +0 -281
- astrbot/core/provider/sources/llmtuner_source.py +0 -132
- astrbot/core/rag/embedding/openai_source.py +0 -20
- astrbot/core/rag/knowledge_db_mgr.py +0 -94
- astrbot/core/rag/store/__init__.py +0 -9
- astrbot/core/rag/store/chroma_db.py +0 -42
- astrbot/core/utils/dify_api_client.py +0 -152
- astrbot-3.5.6.dist-info/METADATA +0 -249
- astrbot-3.5.6.dist-info/RECORD +0 -158
- {astrbot-3.5.6.dist-info → astrbot-4.7.0.dist-info}/entry_points.txt +0 -0
- {astrbot-3.5.6.dist-info → astrbot-4.7.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
import json
|
|
2
|
-
import aiosqlite
|
|
3
|
-
import os
|
|
4
|
-
from typing import Any
|
|
5
|
-
from .plugin_storage import PluginStorage
|
|
6
|
-
|
|
7
|
-
DBPATH = "data/plugin_data/sqlite/plugin_data.db"
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
class SQLitePluginStorage(PluginStorage):
|
|
11
|
-
"""插件数据的 SQLite 存储实现类。
|
|
12
|
-
|
|
13
|
-
该类提供异步方式将插件数据存储到 SQLite 数据库中,支持数据的增删改查操作。
|
|
14
|
-
所有数据以 (plugin, key) 作为复合主键进行索引。
|
|
15
|
-
"""
|
|
16
|
-
|
|
17
|
-
_instance = None # Standalone instance of the class
|
|
18
|
-
_db_conn = None
|
|
19
|
-
db_path = None
|
|
20
|
-
|
|
21
|
-
def __new__(cls):
|
|
22
|
-
"""
|
|
23
|
-
创建或获取 SQLitePluginStorage 的单例实例。
|
|
24
|
-
如果实例已存在,则返回现有实例;否则创建一个新实例。
|
|
25
|
-
数据在 `data/plugin_data/sqlite/plugin_data.db` 下。
|
|
26
|
-
"""
|
|
27
|
-
os.makedirs(os.path.dirname(DBPATH), exist_ok=True)
|
|
28
|
-
if cls._instance is None:
|
|
29
|
-
cls._instance = super(SQLitePluginStorage, cls).__new__(cls)
|
|
30
|
-
cls._instance.db_path = DBPATH
|
|
31
|
-
return cls._instance
|
|
32
|
-
|
|
33
|
-
async def _init_db(self):
|
|
34
|
-
"""初始化数据库连接(只执行一次)"""
|
|
35
|
-
if SQLitePluginStorage._db_conn is None:
|
|
36
|
-
SQLitePluginStorage._db_conn = await aiosqlite.connect(self.db_path)
|
|
37
|
-
await self._setup_db()
|
|
38
|
-
|
|
39
|
-
async def _setup_db(self):
|
|
40
|
-
"""
|
|
41
|
-
异步初始化数据库。
|
|
42
|
-
|
|
43
|
-
创建插件数据表,如果表不存在则创建,表结构包含 plugin、key 和 value 字段,
|
|
44
|
-
其中 plugin 和 key 组合作为主键。
|
|
45
|
-
"""
|
|
46
|
-
await self._db_conn.execute("""
|
|
47
|
-
CREATE TABLE IF NOT EXISTS plugin_data (
|
|
48
|
-
plugin TEXT,
|
|
49
|
-
key TEXT,
|
|
50
|
-
value TEXT,
|
|
51
|
-
PRIMARY KEY (plugin, key)
|
|
52
|
-
)
|
|
53
|
-
""")
|
|
54
|
-
await self._db_conn.commit()
|
|
55
|
-
|
|
56
|
-
async def set(self, plugin: str, key: str, value: Any):
|
|
57
|
-
"""
|
|
58
|
-
异步存储数据。
|
|
59
|
-
|
|
60
|
-
将指定插件的键值对存入数据库,如果键已存在则更新值。
|
|
61
|
-
值会被序列化为 JSON 字符串后存储。
|
|
62
|
-
|
|
63
|
-
Args:
|
|
64
|
-
plugin: 插件标识符
|
|
65
|
-
key: 数据键名
|
|
66
|
-
value: 要存储的数据值(任意类型,将被 JSON 序列化)
|
|
67
|
-
"""
|
|
68
|
-
await self._init_db()
|
|
69
|
-
await self._db_conn.execute(
|
|
70
|
-
"INSERT INTO plugin_data (plugin, key, value) VALUES (?, ?, ?) "
|
|
71
|
-
"ON CONFLICT(plugin, key) DO UPDATE SET value = excluded.value",
|
|
72
|
-
(plugin, key, json.dumps(value)),
|
|
73
|
-
)
|
|
74
|
-
await self._db_conn.commit()
|
|
75
|
-
|
|
76
|
-
async def get(self, plugin: str, key: str) -> Any:
|
|
77
|
-
"""
|
|
78
|
-
异步获取数据。
|
|
79
|
-
|
|
80
|
-
从数据库中获取指定插件和键名对应的值,
|
|
81
|
-
返回的值会从 JSON 字符串反序列化为原始数据类型。
|
|
82
|
-
|
|
83
|
-
Args:
|
|
84
|
-
plugin: 插件标识符
|
|
85
|
-
key: 数据键名
|
|
86
|
-
|
|
87
|
-
Returns:
|
|
88
|
-
Any: 存储的数据值,如果未找到则返回 None
|
|
89
|
-
"""
|
|
90
|
-
await self._init_db()
|
|
91
|
-
async with self._db_conn.execute(
|
|
92
|
-
"SELECT value FROM plugin_data WHERE plugin = ? AND key = ?",
|
|
93
|
-
(plugin, key),
|
|
94
|
-
) as cursor:
|
|
95
|
-
row = await cursor.fetchone()
|
|
96
|
-
return json.loads(row[0]) if row else None
|
|
97
|
-
|
|
98
|
-
async def delete(self, plugin: str, key: str):
|
|
99
|
-
"""
|
|
100
|
-
异步删除数据。
|
|
101
|
-
|
|
102
|
-
从数据库中删除指定插件和键名对应的数据项。
|
|
103
|
-
|
|
104
|
-
Args:
|
|
105
|
-
plugin: 插件标识符
|
|
106
|
-
key: 要删除的数据键名
|
|
107
|
-
"""
|
|
108
|
-
await self._init_db()
|
|
109
|
-
await self._db_conn.execute(
|
|
110
|
-
"DELETE FROM plugin_data WHERE plugin = ? AND key = ?", (plugin, key)
|
|
111
|
-
)
|
|
112
|
-
await self._db_conn.commit()
|
astrbot/core/db/sqlite_init.sql
DELETED
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
CREATE TABLE IF NOT EXISTS platform(
|
|
2
|
-
name VARCHAR(32),
|
|
3
|
-
count INTEGER,
|
|
4
|
-
timestamp INTEGER
|
|
5
|
-
);
|
|
6
|
-
CREATE TABLE IF NOT EXISTS llm(
|
|
7
|
-
name VARCHAR(32),
|
|
8
|
-
count INTEGER,
|
|
9
|
-
timestamp INTEGER
|
|
10
|
-
);
|
|
11
|
-
CREATE TABLE IF NOT EXISTS plugin(
|
|
12
|
-
name VARCHAR(32),
|
|
13
|
-
count INTEGER,
|
|
14
|
-
timestamp INTEGER
|
|
15
|
-
);
|
|
16
|
-
CREATE TABLE IF NOT EXISTS command(
|
|
17
|
-
name VARCHAR(32),
|
|
18
|
-
count INTEGER,
|
|
19
|
-
timestamp INTEGER
|
|
20
|
-
);
|
|
21
|
-
CREATE TABLE IF NOT EXISTS llm_history(
|
|
22
|
-
provider_type VARCHAR(32),
|
|
23
|
-
session_id VARCHAR(32),
|
|
24
|
-
content TEXT
|
|
25
|
-
);
|
|
26
|
-
|
|
27
|
-
-- ATRI
|
|
28
|
-
CREATE TABLE IF NOT EXISTS atri_vision(
|
|
29
|
-
id TEXT,
|
|
30
|
-
url_or_path TEXT,
|
|
31
|
-
caption TEXT,
|
|
32
|
-
is_meme BOOLEAN,
|
|
33
|
-
keywords TEXT,
|
|
34
|
-
platform_name VARCHAR(32),
|
|
35
|
-
session_id VARCHAR(32),
|
|
36
|
-
sender_nickname VARCHAR(32),
|
|
37
|
-
timestamp INTEGER
|
|
38
|
-
);
|
|
39
|
-
|
|
40
|
-
CREATE TABLE IF NOT EXISTS webchat_conversation(
|
|
41
|
-
user_id TEXT, -- 会话 id
|
|
42
|
-
cid TEXT, -- 对话 id
|
|
43
|
-
history TEXT,
|
|
44
|
-
created_at INTEGER,
|
|
45
|
-
updated_at INTEGER,
|
|
46
|
-
title TEXT,
|
|
47
|
-
persona_id TEXT
|
|
48
|
-
);
|
|
49
|
-
|
|
50
|
-
PRAGMA encoding = 'UTF-8';
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
from ..stage import Stage, register_stage
|
|
2
|
-
from ..context import PipelineContext
|
|
3
|
-
from typing import Union, AsyncGenerator
|
|
4
|
-
from astrbot.core.platform.astr_message_event import AstrMessageEvent
|
|
5
|
-
from astrbot.core.star.star import star_map
|
|
6
|
-
from astrbot.core.star.star_handler import StarHandlerMetadata
|
|
7
|
-
from astrbot.core import logger
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
@register_stage
|
|
11
|
-
class PlatformCompatibilityStage(Stage):
|
|
12
|
-
"""检查所有处理器的平台兼容性。
|
|
13
|
-
|
|
14
|
-
这个阶段会检查所有处理器是否在当前平台启用,如果未启用则设置platform_compatible属性为False。
|
|
15
|
-
"""
|
|
16
|
-
|
|
17
|
-
async def initialize(self, ctx: PipelineContext) -> None:
|
|
18
|
-
"""初始化平台兼容性检查阶段
|
|
19
|
-
|
|
20
|
-
Args:
|
|
21
|
-
ctx (PipelineContext): 消息管道上下文对象, 包括配置和插件管理器
|
|
22
|
-
"""
|
|
23
|
-
self.ctx = ctx
|
|
24
|
-
|
|
25
|
-
async def process(
|
|
26
|
-
self, event: AstrMessageEvent
|
|
27
|
-
) -> Union[None, AsyncGenerator[None, None]]:
|
|
28
|
-
# 获取当前平台ID
|
|
29
|
-
platform_id = event.get_platform_id()
|
|
30
|
-
|
|
31
|
-
# 获取已激活的处理器
|
|
32
|
-
activated_handlers = event.get_extra("activated_handlers")
|
|
33
|
-
if activated_handlers is None:
|
|
34
|
-
activated_handlers = []
|
|
35
|
-
|
|
36
|
-
# 标记不兼容的处理器
|
|
37
|
-
for handler in activated_handlers:
|
|
38
|
-
if not isinstance(handler, StarHandlerMetadata):
|
|
39
|
-
continue
|
|
40
|
-
# 检查处理器是否在当前平台启用
|
|
41
|
-
enabled = handler.is_enabled_for_platform(platform_id)
|
|
42
|
-
if not enabled:
|
|
43
|
-
if handler.handler_module_path in star_map:
|
|
44
|
-
plugin_name = star_map[handler.handler_module_path].name
|
|
45
|
-
logger.debug(
|
|
46
|
-
f"[PlatformCompatibilityStage] 插件 {plugin_name} 在平台 {platform_id} 未启用,标记处理器 {handler.handler_name} 为平台不兼容"
|
|
47
|
-
)
|
|
48
|
-
# 设置处理器为平台不兼容状态
|
|
49
|
-
# TODO: 更好的标记方式
|
|
50
|
-
handler.platform_compatible = False
|
|
51
|
-
else:
|
|
52
|
-
# 确保处理器为平台兼容状态
|
|
53
|
-
handler.platform_compatible = True
|
|
54
|
-
|
|
55
|
-
# 更新已激活的处理器列表
|
|
56
|
-
event.set_extra("activated_handlers", activated_handlers)
|