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.
Files changed (288) hide show
  1. astrbot/api/__init__.py +16 -4
  2. astrbot/api/all.py +2 -1
  3. astrbot/api/event/__init__.py +5 -6
  4. astrbot/api/event/filter/__init__.py +37 -34
  5. astrbot/api/platform/__init__.py +7 -8
  6. astrbot/api/provider/__init__.py +8 -7
  7. astrbot/api/star/__init__.py +3 -4
  8. astrbot/api/util/__init__.py +2 -2
  9. astrbot/cli/__init__.py +1 -0
  10. astrbot/cli/__main__.py +18 -197
  11. astrbot/cli/commands/__init__.py +6 -0
  12. astrbot/cli/commands/cmd_conf.py +209 -0
  13. astrbot/cli/commands/cmd_init.py +56 -0
  14. astrbot/cli/commands/cmd_plug.py +245 -0
  15. astrbot/cli/commands/cmd_run.py +62 -0
  16. astrbot/cli/utils/__init__.py +18 -0
  17. astrbot/cli/utils/basic.py +76 -0
  18. astrbot/cli/utils/plugin.py +246 -0
  19. astrbot/cli/utils/version_comparator.py +90 -0
  20. astrbot/core/__init__.py +17 -19
  21. astrbot/core/agent/agent.py +14 -0
  22. astrbot/core/agent/handoff.py +38 -0
  23. astrbot/core/agent/hooks.py +30 -0
  24. astrbot/core/agent/mcp_client.py +385 -0
  25. astrbot/core/agent/message.py +175 -0
  26. astrbot/core/agent/response.py +14 -0
  27. astrbot/core/agent/run_context.py +22 -0
  28. astrbot/core/agent/runners/__init__.py +3 -0
  29. astrbot/core/agent/runners/base.py +65 -0
  30. astrbot/core/agent/runners/coze/coze_agent_runner.py +367 -0
  31. astrbot/core/agent/runners/coze/coze_api_client.py +324 -0
  32. astrbot/core/agent/runners/dashscope/dashscope_agent_runner.py +403 -0
  33. astrbot/core/agent/runners/dify/dify_agent_runner.py +336 -0
  34. astrbot/core/agent/runners/dify/dify_api_client.py +195 -0
  35. astrbot/core/agent/runners/tool_loop_agent_runner.py +400 -0
  36. astrbot/core/agent/tool.py +285 -0
  37. astrbot/core/agent/tool_executor.py +17 -0
  38. astrbot/core/astr_agent_context.py +19 -0
  39. astrbot/core/astr_agent_hooks.py +36 -0
  40. astrbot/core/astr_agent_run_util.py +80 -0
  41. astrbot/core/astr_agent_tool_exec.py +246 -0
  42. astrbot/core/astrbot_config_mgr.py +275 -0
  43. astrbot/core/config/__init__.py +2 -2
  44. astrbot/core/config/astrbot_config.py +60 -20
  45. astrbot/core/config/default.py +1972 -453
  46. astrbot/core/config/i18n_utils.py +110 -0
  47. astrbot/core/conversation_mgr.py +285 -75
  48. astrbot/core/core_lifecycle.py +167 -62
  49. astrbot/core/db/__init__.py +305 -102
  50. astrbot/core/db/migration/helper.py +69 -0
  51. astrbot/core/db/migration/migra_3_to_4.py +357 -0
  52. astrbot/core/db/migration/migra_45_to_46.py +44 -0
  53. astrbot/core/db/migration/migra_webchat_session.py +131 -0
  54. astrbot/core/db/migration/shared_preferences_v3.py +48 -0
  55. astrbot/core/db/migration/sqlite_v3.py +497 -0
  56. astrbot/core/db/po.py +259 -55
  57. astrbot/core/db/sqlite.py +773 -528
  58. astrbot/core/db/vec_db/base.py +73 -0
  59. astrbot/core/db/vec_db/faiss_impl/__init__.py +3 -0
  60. astrbot/core/db/vec_db/faiss_impl/document_storage.py +392 -0
  61. astrbot/core/db/vec_db/faiss_impl/embedding_storage.py +93 -0
  62. astrbot/core/db/vec_db/faiss_impl/sqlite_init.sql +17 -0
  63. astrbot/core/db/vec_db/faiss_impl/vec_db.py +204 -0
  64. astrbot/core/event_bus.py +26 -22
  65. astrbot/core/exceptions.py +9 -0
  66. astrbot/core/file_token_service.py +98 -0
  67. astrbot/core/initial_loader.py +19 -10
  68. astrbot/core/knowledge_base/chunking/__init__.py +9 -0
  69. astrbot/core/knowledge_base/chunking/base.py +25 -0
  70. astrbot/core/knowledge_base/chunking/fixed_size.py +59 -0
  71. astrbot/core/knowledge_base/chunking/recursive.py +161 -0
  72. astrbot/core/knowledge_base/kb_db_sqlite.py +301 -0
  73. astrbot/core/knowledge_base/kb_helper.py +642 -0
  74. astrbot/core/knowledge_base/kb_mgr.py +330 -0
  75. astrbot/core/knowledge_base/models.py +120 -0
  76. astrbot/core/knowledge_base/parsers/__init__.py +13 -0
  77. astrbot/core/knowledge_base/parsers/base.py +51 -0
  78. astrbot/core/knowledge_base/parsers/markitdown_parser.py +26 -0
  79. astrbot/core/knowledge_base/parsers/pdf_parser.py +101 -0
  80. astrbot/core/knowledge_base/parsers/text_parser.py +42 -0
  81. astrbot/core/knowledge_base/parsers/url_parser.py +103 -0
  82. astrbot/core/knowledge_base/parsers/util.py +13 -0
  83. astrbot/core/knowledge_base/prompts.py +65 -0
  84. astrbot/core/knowledge_base/retrieval/__init__.py +14 -0
  85. astrbot/core/knowledge_base/retrieval/hit_stopwords.txt +767 -0
  86. astrbot/core/knowledge_base/retrieval/manager.py +276 -0
  87. astrbot/core/knowledge_base/retrieval/rank_fusion.py +142 -0
  88. astrbot/core/knowledge_base/retrieval/sparse_retriever.py +136 -0
  89. astrbot/core/log.py +21 -15
  90. astrbot/core/message/components.py +413 -287
  91. astrbot/core/message/message_event_result.py +35 -24
  92. astrbot/core/persona_mgr.py +192 -0
  93. astrbot/core/pipeline/__init__.py +14 -14
  94. astrbot/core/pipeline/content_safety_check/stage.py +13 -9
  95. astrbot/core/pipeline/content_safety_check/strategies/__init__.py +1 -2
  96. astrbot/core/pipeline/content_safety_check/strategies/baidu_aip.py +13 -14
  97. astrbot/core/pipeline/content_safety_check/strategies/keywords.py +2 -1
  98. astrbot/core/pipeline/content_safety_check/strategies/strategy.py +6 -6
  99. astrbot/core/pipeline/context.py +7 -1
  100. astrbot/core/pipeline/context_utils.py +107 -0
  101. astrbot/core/pipeline/preprocess_stage/stage.py +63 -36
  102. astrbot/core/pipeline/process_stage/method/agent_request.py +48 -0
  103. astrbot/core/pipeline/process_stage/method/agent_sub_stages/internal.py +464 -0
  104. astrbot/core/pipeline/process_stage/method/agent_sub_stages/third_party.py +202 -0
  105. astrbot/core/pipeline/process_stage/method/star_request.py +26 -32
  106. astrbot/core/pipeline/process_stage/stage.py +21 -15
  107. astrbot/core/pipeline/process_stage/utils.py +125 -0
  108. astrbot/core/pipeline/rate_limit_check/stage.py +34 -36
  109. astrbot/core/pipeline/respond/stage.py +142 -101
  110. astrbot/core/pipeline/result_decorate/stage.py +124 -57
  111. astrbot/core/pipeline/scheduler.py +21 -16
  112. astrbot/core/pipeline/session_status_check/stage.py +37 -0
  113. astrbot/core/pipeline/stage.py +11 -76
  114. astrbot/core/pipeline/waking_check/stage.py +69 -33
  115. astrbot/core/pipeline/whitelist_check/stage.py +10 -7
  116. astrbot/core/platform/__init__.py +6 -6
  117. astrbot/core/platform/astr_message_event.py +107 -129
  118. astrbot/core/platform/astrbot_message.py +32 -12
  119. astrbot/core/platform/manager.py +62 -18
  120. astrbot/core/platform/message_session.py +30 -0
  121. astrbot/core/platform/platform.py +16 -24
  122. astrbot/core/platform/platform_metadata.py +9 -4
  123. astrbot/core/platform/register.py +12 -7
  124. astrbot/core/platform/sources/aiocqhttp/aiocqhttp_message_event.py +136 -60
  125. astrbot/core/platform/sources/aiocqhttp/aiocqhttp_platform_adapter.py +126 -46
  126. astrbot/core/platform/sources/dingtalk/dingtalk_adapter.py +63 -31
  127. astrbot/core/platform/sources/dingtalk/dingtalk_event.py +30 -26
  128. astrbot/core/platform/sources/discord/client.py +129 -0
  129. astrbot/core/platform/sources/discord/components.py +139 -0
  130. astrbot/core/platform/sources/discord/discord_platform_adapter.py +473 -0
  131. astrbot/core/platform/sources/discord/discord_platform_event.py +313 -0
  132. astrbot/core/platform/sources/lark/lark_adapter.py +27 -18
  133. astrbot/core/platform/sources/lark/lark_event.py +39 -13
  134. astrbot/core/platform/sources/misskey/misskey_adapter.py +770 -0
  135. astrbot/core/platform/sources/misskey/misskey_api.py +964 -0
  136. astrbot/core/platform/sources/misskey/misskey_event.py +163 -0
  137. astrbot/core/platform/sources/misskey/misskey_utils.py +550 -0
  138. astrbot/core/platform/sources/qqofficial/qqofficial_message_event.py +149 -33
  139. astrbot/core/platform/sources/qqofficial/qqofficial_platform_adapter.py +41 -26
  140. astrbot/core/platform/sources/qqofficial_webhook/qo_webhook_adapter.py +36 -17
  141. astrbot/core/platform/sources/qqofficial_webhook/qo_webhook_event.py +3 -1
  142. astrbot/core/platform/sources/qqofficial_webhook/qo_webhook_server.py +14 -8
  143. astrbot/core/platform/sources/satori/satori_adapter.py +792 -0
  144. astrbot/core/platform/sources/satori/satori_event.py +432 -0
  145. astrbot/core/platform/sources/slack/client.py +164 -0
  146. astrbot/core/platform/sources/slack/slack_adapter.py +416 -0
  147. astrbot/core/platform/sources/slack/slack_event.py +253 -0
  148. astrbot/core/platform/sources/telegram/tg_adapter.py +100 -43
  149. astrbot/core/platform/sources/telegram/tg_event.py +136 -36
  150. astrbot/core/platform/sources/webchat/webchat_adapter.py +72 -22
  151. astrbot/core/platform/sources/webchat/webchat_event.py +46 -22
  152. astrbot/core/platform/sources/webchat/webchat_queue_mgr.py +35 -0
  153. astrbot/core/platform/sources/wechatpadpro/wechatpadpro_adapter.py +926 -0
  154. astrbot/core/platform/sources/wechatpadpro/wechatpadpro_message_event.py +178 -0
  155. astrbot/core/platform/sources/wechatpadpro/xml_data_parser.py +159 -0
  156. astrbot/core/platform/sources/wecom/wecom_adapter.py +169 -27
  157. astrbot/core/platform/sources/wecom/wecom_event.py +162 -77
  158. astrbot/core/platform/sources/wecom/wecom_kf.py +279 -0
  159. astrbot/core/platform/sources/wecom/wecom_kf_message.py +196 -0
  160. astrbot/core/platform/sources/wecom_ai_bot/WXBizJsonMsgCrypt.py +297 -0
  161. astrbot/core/platform/sources/wecom_ai_bot/__init__.py +15 -0
  162. astrbot/core/platform/sources/wecom_ai_bot/ierror.py +19 -0
  163. astrbot/core/platform/sources/wecom_ai_bot/wecomai_adapter.py +472 -0
  164. astrbot/core/platform/sources/wecom_ai_bot/wecomai_api.py +417 -0
  165. astrbot/core/platform/sources/wecom_ai_bot/wecomai_event.py +152 -0
  166. astrbot/core/platform/sources/wecom_ai_bot/wecomai_queue_mgr.py +153 -0
  167. astrbot/core/platform/sources/wecom_ai_bot/wecomai_server.py +168 -0
  168. astrbot/core/platform/sources/wecom_ai_bot/wecomai_utils.py +209 -0
  169. astrbot/core/platform/sources/weixin_official_account/weixin_offacc_adapter.py +306 -0
  170. astrbot/core/platform/sources/weixin_official_account/weixin_offacc_event.py +186 -0
  171. astrbot/core/platform_message_history_mgr.py +49 -0
  172. astrbot/core/provider/__init__.py +2 -3
  173. astrbot/core/provider/entites.py +8 -8
  174. astrbot/core/provider/entities.py +154 -98
  175. astrbot/core/provider/func_tool_manager.py +446 -458
  176. astrbot/core/provider/manager.py +345 -207
  177. astrbot/core/provider/provider.py +188 -73
  178. astrbot/core/provider/register.py +9 -7
  179. astrbot/core/provider/sources/anthropic_source.py +295 -115
  180. astrbot/core/provider/sources/azure_tts_source.py +224 -0
  181. astrbot/core/provider/sources/bailian_rerank_source.py +236 -0
  182. astrbot/core/provider/sources/dashscope_tts.py +138 -14
  183. astrbot/core/provider/sources/edge_tts_source.py +24 -19
  184. astrbot/core/provider/sources/fishaudio_tts_api_source.py +58 -13
  185. astrbot/core/provider/sources/gemini_embedding_source.py +61 -0
  186. astrbot/core/provider/sources/gemini_source.py +310 -132
  187. astrbot/core/provider/sources/gemini_tts_source.py +81 -0
  188. astrbot/core/provider/sources/groq_source.py +15 -0
  189. astrbot/core/provider/sources/gsv_selfhosted_source.py +151 -0
  190. astrbot/core/provider/sources/gsvi_tts_source.py +14 -7
  191. astrbot/core/provider/sources/minimax_tts_api_source.py +159 -0
  192. astrbot/core/provider/sources/openai_embedding_source.py +40 -0
  193. astrbot/core/provider/sources/openai_source.py +241 -145
  194. astrbot/core/provider/sources/openai_tts_api_source.py +18 -7
  195. astrbot/core/provider/sources/sensevoice_selfhosted_source.py +13 -11
  196. astrbot/core/provider/sources/vllm_rerank_source.py +71 -0
  197. astrbot/core/provider/sources/volcengine_tts.py +115 -0
  198. astrbot/core/provider/sources/whisper_api_source.py +18 -13
  199. astrbot/core/provider/sources/whisper_selfhosted_source.py +19 -12
  200. astrbot/core/provider/sources/xinference_rerank_source.py +116 -0
  201. astrbot/core/provider/sources/xinference_stt_provider.py +197 -0
  202. astrbot/core/provider/sources/zhipu_source.py +6 -73
  203. astrbot/core/star/__init__.py +43 -11
  204. astrbot/core/star/config.py +17 -18
  205. astrbot/core/star/context.py +362 -138
  206. astrbot/core/star/filter/__init__.py +4 -3
  207. astrbot/core/star/filter/command.py +111 -35
  208. astrbot/core/star/filter/command_group.py +46 -34
  209. astrbot/core/star/filter/custom_filter.py +6 -5
  210. astrbot/core/star/filter/event_message_type.py +4 -2
  211. astrbot/core/star/filter/permission.py +4 -2
  212. astrbot/core/star/filter/platform_adapter_type.py +45 -12
  213. astrbot/core/star/filter/regex.py +4 -2
  214. astrbot/core/star/register/__init__.py +19 -15
  215. astrbot/core/star/register/star.py +41 -13
  216. astrbot/core/star/register/star_handler.py +236 -86
  217. astrbot/core/star/session_llm_manager.py +280 -0
  218. astrbot/core/star/session_plugin_manager.py +170 -0
  219. astrbot/core/star/star.py +36 -43
  220. astrbot/core/star/star_handler.py +47 -85
  221. astrbot/core/star/star_manager.py +442 -260
  222. astrbot/core/star/star_tools.py +167 -45
  223. astrbot/core/star/updator.py +17 -20
  224. astrbot/core/umop_config_router.py +106 -0
  225. astrbot/core/updator.py +38 -13
  226. astrbot/core/utils/astrbot_path.py +39 -0
  227. astrbot/core/utils/command_parser.py +1 -1
  228. astrbot/core/utils/io.py +119 -60
  229. astrbot/core/utils/log_pipe.py +1 -1
  230. astrbot/core/utils/metrics.py +11 -10
  231. astrbot/core/utils/migra_helper.py +73 -0
  232. astrbot/core/utils/path_util.py +63 -62
  233. astrbot/core/utils/pip_installer.py +37 -15
  234. astrbot/core/utils/session_lock.py +29 -0
  235. astrbot/core/utils/session_waiter.py +19 -20
  236. astrbot/core/utils/shared_preferences.py +174 -34
  237. astrbot/core/utils/t2i/__init__.py +4 -1
  238. astrbot/core/utils/t2i/local_strategy.py +386 -238
  239. astrbot/core/utils/t2i/network_strategy.py +109 -49
  240. astrbot/core/utils/t2i/renderer.py +29 -14
  241. astrbot/core/utils/t2i/template/astrbot_powershell.html +184 -0
  242. astrbot/core/utils/t2i/template_manager.py +111 -0
  243. astrbot/core/utils/tencent_record_helper.py +115 -1
  244. astrbot/core/utils/version_comparator.py +10 -13
  245. astrbot/core/zip_updator.py +112 -65
  246. astrbot/dashboard/routes/__init__.py +20 -13
  247. astrbot/dashboard/routes/auth.py +20 -9
  248. astrbot/dashboard/routes/chat.py +297 -141
  249. astrbot/dashboard/routes/config.py +652 -55
  250. astrbot/dashboard/routes/conversation.py +107 -37
  251. astrbot/dashboard/routes/file.py +26 -0
  252. astrbot/dashboard/routes/knowledge_base.py +1244 -0
  253. astrbot/dashboard/routes/log.py +27 -2
  254. astrbot/dashboard/routes/persona.py +202 -0
  255. astrbot/dashboard/routes/plugin.py +197 -139
  256. astrbot/dashboard/routes/route.py +27 -7
  257. astrbot/dashboard/routes/session_management.py +354 -0
  258. astrbot/dashboard/routes/stat.py +85 -18
  259. astrbot/dashboard/routes/static_file.py +5 -2
  260. astrbot/dashboard/routes/t2i.py +233 -0
  261. astrbot/dashboard/routes/tools.py +184 -120
  262. astrbot/dashboard/routes/update.py +59 -36
  263. astrbot/dashboard/server.py +96 -36
  264. astrbot/dashboard/utils.py +165 -0
  265. astrbot-4.7.0.dist-info/METADATA +294 -0
  266. astrbot-4.7.0.dist-info/RECORD +274 -0
  267. {astrbot-3.5.6.dist-info → astrbot-4.7.0.dist-info}/WHEEL +1 -1
  268. astrbot/core/db/plugin/sqlite_impl.py +0 -112
  269. astrbot/core/db/sqlite_init.sql +0 -50
  270. astrbot/core/pipeline/platform_compatibility/stage.py +0 -56
  271. astrbot/core/pipeline/process_stage/method/llm_request.py +0 -606
  272. astrbot/core/platform/sources/gewechat/client.py +0 -806
  273. astrbot/core/platform/sources/gewechat/downloader.py +0 -55
  274. astrbot/core/platform/sources/gewechat/gewechat_event.py +0 -255
  275. astrbot/core/platform/sources/gewechat/gewechat_platform_adapter.py +0 -103
  276. astrbot/core/platform/sources/gewechat/xml_data_parser.py +0 -110
  277. astrbot/core/provider/sources/dashscope_source.py +0 -203
  278. astrbot/core/provider/sources/dify_source.py +0 -281
  279. astrbot/core/provider/sources/llmtuner_source.py +0 -132
  280. astrbot/core/rag/embedding/openai_source.py +0 -20
  281. astrbot/core/rag/knowledge_db_mgr.py +0 -94
  282. astrbot/core/rag/store/__init__.py +0 -9
  283. astrbot/core/rag/store/chroma_db.py +0 -42
  284. astrbot/core/utils/dify_api_client.py +0 -152
  285. astrbot-3.5.6.dist-info/METADATA +0 -249
  286. astrbot-3.5.6.dist-info/RECORD +0 -158
  287. {astrbot-3.5.6.dist-info → astrbot-4.7.0.dist-info}/entry_points.txt +0 -0
  288. {astrbot-3.5.6.dist-info → astrbot-4.7.0.dist-info}/licenses/LICENSE +0 -0
astrbot/api/__init__.py CHANGED
@@ -1,7 +1,19 @@
1
- from astrbot.core.config.astrbot_config import AstrBotConfig
2
1
  from astrbot import logger
3
- from astrbot.core import html_renderer
4
- from astrbot.core import sp
2
+ from astrbot.core import html_renderer, sp
3
+ from astrbot.core.agent.tool import FunctionTool, ToolSet
4
+ from astrbot.core.agent.tool_executor import BaseFunctionToolExecutor
5
+ from astrbot.core.config.astrbot_config import AstrBotConfig
6
+ from astrbot.core.star.register import register_agent as agent
5
7
  from astrbot.core.star.register import register_llm_tool as llm_tool
6
8
 
7
- __all__ = ["AstrBotConfig", "logger", "html_renderer", "llm_tool", "sp"]
9
+ __all__ = [
10
+ "AstrBotConfig",
11
+ "BaseFunctionToolExecutor",
12
+ "FunctionTool",
13
+ "ToolSet",
14
+ "agent",
15
+ "html_renderer",
16
+ "llm_tool",
17
+ "logger",
18
+ "sp",
19
+ ]
astrbot/api/all.py CHANGED
@@ -36,7 +36,8 @@ from astrbot.core.star.config import *
36
36
 
37
37
 
38
38
  # provider
39
- from astrbot.core.provider import Provider, Personality, ProviderMetaData
39
+ from astrbot.core.provider import Provider, ProviderMetaData
40
+ from astrbot.core.db.po import Personality
40
41
 
41
42
  # platform
42
43
  from astrbot.core.platform import (
@@ -1,18 +1,17 @@
1
1
  from astrbot.core.message.message_event_result import (
2
- MessageEventResult,
3
- MessageChain,
4
2
  CommandResult,
5
3
  EventResultType,
4
+ MessageChain,
5
+ MessageEventResult,
6
6
  ResultContentType,
7
7
  )
8
-
9
8
  from astrbot.core.platform import AstrMessageEvent
10
9
 
11
10
  __all__ = [
12
- "MessageEventResult",
13
- "MessageChain",
11
+ "AstrMessageEvent",
14
12
  "CommandResult",
15
13
  "EventResultType",
16
- "AstrMessageEvent",
14
+ "MessageChain",
15
+ "MessageEventResult",
17
16
  "ResultContentType",
18
17
  ]
@@ -1,49 +1,52 @@
1
- from astrbot.core.star.register import (
2
- register_command as command,
3
- register_command_group as command_group,
4
- register_event_message_type as event_message_type,
5
- register_regex as regex,
6
- register_platform_adapter_type as platform_adapter_type,
7
- register_permission_type as permission_type,
8
- register_custom_filter as custom_filter,
9
- register_on_astrbot_loaded as on_astrbot_loaded,
10
- register_on_llm_request as on_llm_request,
11
- register_on_llm_response as on_llm_response,
12
- register_llm_tool as llm_tool,
13
- register_on_decorating_result as on_decorating_result,
14
- register_after_message_sent as after_message_sent,
15
- )
16
-
1
+ from astrbot.core.star.filter.custom_filter import CustomFilter
17
2
  from astrbot.core.star.filter.event_message_type import (
18
- EventMessageTypeFilter,
19
3
  EventMessageType,
4
+ EventMessageTypeFilter,
20
5
  )
6
+ from astrbot.core.star.filter.permission import PermissionType, PermissionTypeFilter
21
7
  from astrbot.core.star.filter.platform_adapter_type import (
22
- PlatformAdapterTypeFilter,
23
8
  PlatformAdapterType,
9
+ PlatformAdapterTypeFilter,
24
10
  )
25
- from astrbot.core.star.filter.permission import PermissionTypeFilter, PermissionType
26
- from astrbot.core.star.filter.custom_filter import CustomFilter
11
+ from astrbot.core.star.register import register_after_message_sent as after_message_sent
12
+ from astrbot.core.star.register import register_command as command
13
+ from astrbot.core.star.register import register_command_group as command_group
14
+ from astrbot.core.star.register import register_custom_filter as custom_filter
15
+ from astrbot.core.star.register import register_event_message_type as event_message_type
16
+ from astrbot.core.star.register import register_llm_tool as llm_tool
17
+ from astrbot.core.star.register import register_on_astrbot_loaded as on_astrbot_loaded
18
+ from astrbot.core.star.register import (
19
+ register_on_decorating_result as on_decorating_result,
20
+ )
21
+ from astrbot.core.star.register import register_on_llm_request as on_llm_request
22
+ from astrbot.core.star.register import register_on_llm_response as on_llm_response
23
+ from astrbot.core.star.register import register_on_platform_loaded as on_platform_loaded
24
+ from astrbot.core.star.register import register_permission_type as permission_type
25
+ from astrbot.core.star.register import (
26
+ register_platform_adapter_type as platform_adapter_type,
27
+ )
28
+ from astrbot.core.star.register import register_regex as regex
27
29
 
28
30
  __all__ = [
29
- "command",
30
- "command_group",
31
- "event_message_type",
32
- "regex",
33
- "platform_adapter_type",
34
- "permission_type",
35
- "EventMessageTypeFilter",
31
+ "CustomFilter",
36
32
  "EventMessageType",
37
- "PlatformAdapterTypeFilter",
38
- "PlatformAdapterType",
33
+ "EventMessageTypeFilter",
34
+ "PermissionType",
39
35
  "PermissionTypeFilter",
40
- "CustomFilter",
36
+ "PlatformAdapterType",
37
+ "PlatformAdapterTypeFilter",
38
+ "after_message_sent",
39
+ "command",
40
+ "command_group",
41
41
  "custom_filter",
42
- "PermissionType",
43
- "on_astrbot_loaded",
44
- "on_llm_request",
42
+ "event_message_type",
45
43
  "llm_tool",
44
+ "on_astrbot_loaded",
46
45
  "on_decorating_result",
47
- "after_message_sent",
46
+ "on_llm_request",
48
47
  "on_llm_response",
48
+ "on_platform_loaded",
49
+ "permission_type",
50
+ "platform_adapter_type",
51
+ "regex",
49
52
  ]
@@ -1,23 +1,22 @@
1
+ from astrbot.core.message.components import *
1
2
  from astrbot.core.platform import (
2
- AstrMessageEvent,
3
- Platform,
4
3
  AstrBotMessage,
4
+ AstrMessageEvent,
5
+ Group,
5
6
  MessageMember,
6
7
  MessageType,
8
+ Platform,
7
9
  PlatformMetadata,
8
- Group,
9
10
  )
10
-
11
11
  from astrbot.core.platform.register import register_platform_adapter
12
- from astrbot.core.message.components import *
13
12
 
14
13
  __all__ = [
15
- "AstrMessageEvent",
16
- "Platform",
17
14
  "AstrBotMessage",
15
+ "AstrMessageEvent",
16
+ "Group",
18
17
  "MessageMember",
19
18
  "MessageType",
19
+ "Platform",
20
20
  "PlatformMetadata",
21
21
  "register_platform_adapter",
22
- "Group",
23
22
  ]
@@ -1,17 +1,18 @@
1
- from astrbot.core.provider import Provider, STTProvider, Personality
1
+ from astrbot.core.db.po import Personality
2
+ from astrbot.core.provider import Provider, STTProvider
2
3
  from astrbot.core.provider.entities import (
4
+ LLMResponse,
5
+ ProviderMetaData,
3
6
  ProviderRequest,
4
7
  ProviderType,
5
- ProviderMetaData,
6
- LLMResponse,
7
8
  )
8
9
 
9
10
  __all__ = [
10
- "Provider",
11
- "STTProvider",
11
+ "LLMResponse",
12
12
  "Personality",
13
+ "Provider",
14
+ "ProviderMetaData",
13
15
  "ProviderRequest",
14
16
  "ProviderType",
15
- "ProviderMetaData",
16
- "LLMResponse",
17
+ "STTProvider",
17
18
  ]
@@ -1,8 +1,7 @@
1
+ from astrbot.core.star import Context, Star, StarTools
2
+ from astrbot.core.star.config import *
1
3
  from astrbot.core.star.register import (
2
4
  register_star as register, # 注册插件(Star)
3
5
  )
4
6
 
5
- from astrbot.core.star import Context, Star, StarTools
6
- from astrbot.core.star.config import *
7
-
8
- __all__ = ["register", "Context", "Star", "StarTools"]
7
+ __all__ = ["Context", "Star", "StarTools", "register"]
@@ -1,7 +1,7 @@
1
1
  from astrbot.core.utils.session_waiter import (
2
- SessionWaiter,
3
2
  SessionController,
3
+ SessionWaiter,
4
4
  session_waiter,
5
5
  )
6
6
 
7
- __all__ = ["SessionWaiter", "SessionController", "session_waiter"]
7
+ __all__ = ["SessionController", "SessionWaiter", "session_waiter"]
@@ -0,0 +1 @@
1
+ __version__ = "3.5.23"
astrbot/cli/__main__.py CHANGED
@@ -1,11 +1,11 @@
1
- import asyncio
2
- import os
3
- import shutil
1
+ """AstrBot CLI入口"""
2
+
4
3
  import sys
4
+
5
5
  import click
6
- from pathlib import Path
7
- from astrbot.core.config.default import VERSION
8
6
 
7
+ from . import __version__
8
+ from .commands import conf, init, plug, run
9
9
 
10
10
  logo_tmpl = r"""
11
11
  ___ _______.___________..______ .______ ______ .___________.
@@ -14,210 +14,25 @@ logo_tmpl = r"""
14
14
  / /_\ \ \ \ | | | / | _ < | | | | | |
15
15
  / _____ \ .----) | | | | |\ \----.| |_) | | `--' | | |
16
16
  /__/ \__\ |_______/ |__| | _| `._____||______/ \______/ |__|
17
-
18
17
  """
19
18
 
20
19
 
21
- # utils
22
- def _get_astrbot_root(path: str | None) -> Path:
23
- """获取astrbot根目录"""
24
- match path:
25
- case None:
26
- match ASTRBOT_ROOT := os.getenv("ASTRBOT_ROOT"):
27
- case None:
28
- astrbot_root = Path.cwd() / "data"
29
- case _:
30
- astrbot_root = Path(ASTRBOT_ROOT).resolve()
31
- case str():
32
- astrbot_root = Path(path).resolve()
33
-
34
- dot_astrbot = astrbot_root / ".astrbot"
35
- if not dot_astrbot.exists():
36
- if click.confirm(
37
- f"运行前必须先执行初始化!请检查当前目录是否正确,回车以继续: {astrbot_root}",
38
- default=True,
39
- abort=True,
40
- ):
41
- dot_astrbot.touch()
42
- astrbot_root.mkdir(parents=True, exist_ok=True)
43
- click.echo(f"Created {dot_astrbot}")
44
-
45
- return astrbot_root
46
-
47
-
48
- # 通过类型来验证先后,必须先获取 Path 对象才能对该目录进行检查
49
- def _check_astrbot_root(astrbot_root: Path) -> None:
50
- """验证"""
51
- dot_astrbot = astrbot_root / ".astrbot"
52
- if not astrbot_root.exists():
53
- click.echo(f"AstrBot root directory does not exist: {astrbot_root}")
54
- click.echo("Please run 'astrbot init' to create the directory.")
55
- sys.exit(1)
56
- else:
57
- click.echo(f"AstrBot root directory exists: {astrbot_root}")
58
- if not dot_astrbot.exists():
59
- click.echo(
60
- "如果你确认这是 Astrbot root directory, 你需要在当前目录下创建一个 .astrbot 文件标记该目录为 AstrBot 的数据目录。"
61
- )
62
- if click.confirm(
63
- f"请检查当前目录是否正确,确认正确请回车: {astrbot_root}",
64
- default=True,
65
- abort=True,
66
- ):
67
- dot_astrbot.touch()
68
- click.echo(f"Created {dot_astrbot}")
69
- else:
70
- click.echo(f"Welcome back! AstrBot root directory: {astrbot_root}")
71
-
72
-
73
- async def _check_dashboard(astrbot_root: Path) -> None:
74
- """检查是否安装了dashboard"""
75
- try:
76
- from ..core.utils.io import get_dashboard_version, download_dashboard
77
- except ImportError:
78
- from astrbot.core.utils.io import get_dashboard_version, download_dashboard
79
-
80
- try:
81
- # 添加 create=True 参数以确保在初始化时不会抛出异常
82
- dashboard_version = await get_dashboard_version()
83
- match dashboard_version:
84
- case None:
85
- click.echo("未安装管理面板")
86
- if click.confirm(
87
- "是否安装管理面板?",
88
- default=True,
89
- abort=True,
90
- ):
91
- click.echo("正在安装管理面板...")
92
- # 确保使用 create=True 参数
93
- await download_dashboard(
94
- path="data/dashboard.zip", extract_path=str(astrbot_root)
95
- )
96
- click.echo("管理面板安装完成")
97
-
98
- case str():
99
- if dashboard_version == f"v{VERSION}":
100
- click.echo("无需更新")
101
- else:
102
- try:
103
- version = dashboard_version.split("v")[1]
104
- click.echo(f"管理面板版本: {version}")
105
- # 确保使用 create=True 参数
106
- await download_dashboard(
107
- path="data/dashboard.zip", extract_path=str(astrbot_root)
108
- )
109
- except Exception as e:
110
- click.echo(f"下载管理面板失败: {e}")
111
- return
112
- except FileNotFoundError:
113
- click.echo("初始化管理面板目录...")
114
- # 初始化模式下,下载到指定位置
115
- try:
116
- await download_dashboard(
117
- path=str(astrbot_root / "dashboard.zip"), extract_path=str(astrbot_root)
118
- )
119
- click.echo("管理面板初始化完成")
120
- except Exception as e:
121
- click.echo(f"下载管理面板失败: {e}")
122
- return
123
-
124
-
125
- @click.group(name="astrbot")
20
+ @click.group()
21
+ @click.version_option(__version__, prog_name="AstrBot")
126
22
  def cli() -> None:
127
23
  """The AstrBot CLI"""
128
24
  click.echo(logo_tmpl)
129
25
  click.echo("Welcome to AstrBot CLI!")
130
- click.echo(f"AstrBot version: {VERSION}")
131
-
132
-
133
- # region init
134
- @cli.command()
135
- @click.option("--path", "-p", help="AstrBot 数据目录")
136
- @click.option("--force", "-f", is_flag=True, help="强制初始化")
137
- def init(path: str | None, force: bool) -> None:
138
- """Initialize AstrBot"""
139
- click.echo("Initializing AstrBot...")
140
- astrbot_root = _get_astrbot_root(path)
141
- if force:
142
- if click.confirm(
143
- "强制初始化会删除当前目录下的所有文件,是否继续?",
144
- default=False,
145
- abort=True,
146
- ):
147
- click.echo("正在删除当前目录下的所有文件...")
148
- shutil.rmtree(astrbot_root, ignore_errors=True)
26
+ click.echo(f"AstrBot CLI version: {__version__}")
149
27
 
150
- _check_astrbot_root(astrbot_root)
151
28
 
152
- click.echo(f"AstrBot root directory: {astrbot_root}")
153
-
154
- if not astrbot_root.exists():
155
- # 创建目录
156
- astrbot_root.mkdir(parents=True, exist_ok=True)
157
- click.echo(f"Created directory: {astrbot_root}")
158
- else:
159
- click.echo(f"Directory already exists: {astrbot_root}")
160
-
161
- config_path: Path = astrbot_root / "config"
162
- plugins_path: Path = astrbot_root / "plugins"
163
- temp_path: Path = astrbot_root / "temp"
164
- config_path.mkdir(parents=True, exist_ok=True)
165
- plugins_path.mkdir(parents=True, exist_ok=True)
166
- temp_path.mkdir(parents=True, exist_ok=True)
167
-
168
- click.echo(f"Created directories: {config_path}, {plugins_path}, {temp_path}")
169
-
170
- # 检查是否安装了dashboard
171
- asyncio.run(_check_dashboard(astrbot_root))
172
-
173
-
174
- # region run
175
- @cli.command()
176
- @click.option("--path", "-p", help="AstrBot 数据目录")
177
- def run(path: str | None = None) -> None:
178
- """Run AstrBot"""
179
- # 解析为绝对路径
180
- try:
181
- from ..core.log import LogBroker
182
- from ..core import db_helper
183
- from ..core.initial_loader import InitialLoader
184
- except ImportError:
185
- from astrbot.core.log import LogBroker
186
- from astrbot.core import db_helper
187
- from astrbot.core.initial_loader import InitialLoader
188
-
189
- astrbot_root = _get_astrbot_root(path)
190
-
191
- _check_astrbot_root(astrbot_root)
192
-
193
- asyncio.run(_check_dashboard(astrbot_root))
194
-
195
- log_broker = LogBroker()
196
- db = db_helper
197
-
198
- core_lifecycle = InitialLoader(db, log_broker)
199
- try:
200
- asyncio.run(core_lifecycle.start())
201
- except KeyboardInterrupt:
202
- click.echo("接收到退出信号,正在关闭 AstrBot...")
203
- except Exception as e:
204
- click.echo(f"运行时出现错误: {e}")
205
-
206
-
207
- # region Basic
208
- @cli.command(name="version")
209
- def version() -> None:
210
- """Show the version of AstrBot"""
211
- click.echo(f"AstrBot version: {VERSION}")
212
-
213
-
214
- @cli.command()
29
+ @click.command()
215
30
  @click.argument("command_name", required=False, type=str)
216
31
  def help(command_name: str | None) -> None:
217
- """Show help information for commands
32
+ """显示命令的帮助信息
218
33
 
219
- If COMMAND_NAME is provided, show detailed help for that command.
220
- Otherwise, show general help information.
34
+ 如果提供了 COMMAND_NAME,则显示该命令的详细帮助信息。
35
+ 否则,显示通用帮助信息。
221
36
  """
222
37
  ctx = click.get_current_context()
223
38
  if command_name:
@@ -234,5 +49,11 @@ def help(command_name: str | None) -> None:
234
49
  click.echo(cli.get_help(ctx))
235
50
 
236
51
 
52
+ cli.add_command(init)
53
+ cli.add_command(run)
54
+ cli.add_command(help)
55
+ cli.add_command(plug)
56
+ cli.add_command(conf)
57
+
237
58
  if __name__ == "__main__":
238
59
  cli()
@@ -0,0 +1,6 @@
1
+ from .cmd_conf import conf
2
+ from .cmd_init import init
3
+ from .cmd_plug import plug
4
+ from .cmd_run import run
5
+
6
+ __all__ = ["conf", "init", "plug", "run"]