AstrBot 4.12.2__py3-none-any.whl → 4.12.4__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 (36) hide show
  1. astrbot/builtin_stars/builtin_commands/commands/__init__.py +0 -2
  2. astrbot/builtin_stars/builtin_commands/commands/persona.py +68 -6
  3. astrbot/builtin_stars/builtin_commands/main.py +0 -26
  4. astrbot/cli/__init__.py +1 -1
  5. astrbot/core/astr_agent_hooks.py +5 -3
  6. astrbot/core/astr_agent_run_util.py +243 -1
  7. astrbot/core/config/default.py +30 -1
  8. astrbot/core/db/__init__.py +91 -1
  9. astrbot/core/db/po.py +42 -0
  10. astrbot/core/db/sqlite.py +230 -0
  11. astrbot/core/persona_mgr.py +154 -2
  12. astrbot/core/pipeline/process_stage/method/agent_sub_stages/internal.py +57 -4
  13. astrbot/core/pipeline/process_stage/utils.py +13 -1
  14. astrbot/core/pipeline/waking_check/stage.py +0 -1
  15. astrbot/core/platform/sources/aiocqhttp/aiocqhttp_platform_adapter.py +32 -14
  16. astrbot/core/platform/sources/dingtalk/dingtalk_adapter.py +61 -2
  17. astrbot/core/platform/sources/dingtalk/dingtalk_event.py +57 -11
  18. astrbot/core/platform/sources/webchat/webchat_adapter.py +1 -0
  19. astrbot/core/platform/sources/webchat/webchat_event.py +24 -0
  20. astrbot/core/provider/manager.py +7 -0
  21. astrbot/core/provider/provider.py +54 -0
  22. astrbot/core/provider/sources/gemini_embedding_source.py +1 -1
  23. astrbot/core/provider/sources/genie_tts.py +128 -0
  24. astrbot/core/provider/sources/openai_embedding_source.py +1 -1
  25. astrbot/core/star/context.py +9 -8
  26. astrbot/core/star/register/star_handler.py +2 -4
  27. astrbot/core/star/star_handler.py +2 -1
  28. astrbot/dashboard/routes/live_chat.py +423 -0
  29. astrbot/dashboard/routes/persona.py +258 -1
  30. astrbot/dashboard/server.py +2 -0
  31. {astrbot-4.12.2.dist-info → astrbot-4.12.4.dist-info}/METADATA +1 -1
  32. {astrbot-4.12.2.dist-info → astrbot-4.12.4.dist-info}/RECORD +35 -34
  33. astrbot/builtin_stars/builtin_commands/commands/tool.py +0 -31
  34. {astrbot-4.12.2.dist-info → astrbot-4.12.4.dist-info}/WHEEL +0 -0
  35. {astrbot-4.12.2.dist-info → astrbot-4.12.4.dist-info}/entry_points.txt +0 -0
  36. {astrbot-4.12.2.dist-info → astrbot-4.12.4.dist-info}/licenses/LICENSE +0 -0
@@ -23,6 +23,15 @@ class PersonaRoute(Route):
23
23
  "/persona/create": ("POST", self.create_persona),
24
24
  "/persona/update": ("POST", self.update_persona),
25
25
  "/persona/delete": ("POST", self.delete_persona),
26
+ "/persona/move": ("POST", self.move_persona),
27
+ "/persona/reorder": ("POST", self.reorder_items),
28
+ # Folder routes
29
+ "/persona/folder/list": ("GET", self.list_folders),
30
+ "/persona/folder/tree": ("GET", self.get_folder_tree),
31
+ "/persona/folder/detail": ("POST", self.get_folder_detail),
32
+ "/persona/folder/create": ("POST", self.create_folder),
33
+ "/persona/folder/update": ("POST", self.update_folder),
34
+ "/persona/folder/delete": ("POST", self.delete_folder),
26
35
  }
27
36
  self.db_helper = db_helper
28
37
  self.persona_mgr = core_lifecycle.persona_mgr
@@ -31,7 +40,14 @@ class PersonaRoute(Route):
31
40
  async def list_personas(self):
32
41
  """获取所有人格列表"""
33
42
  try:
34
- personas = await self.persona_mgr.get_all_personas()
43
+ # 支持按文件夹筛选
44
+ folder_id = request.args.get("folder_id")
45
+ if folder_id is not None:
46
+ personas = await self.persona_mgr.get_personas_by_folder(
47
+ folder_id if folder_id else None
48
+ )
49
+ else:
50
+ personas = await self.persona_mgr.get_all_personas()
35
51
  return (
36
52
  Response()
37
53
  .ok(
@@ -41,6 +57,8 @@ class PersonaRoute(Route):
41
57
  "system_prompt": persona.system_prompt,
42
58
  "begin_dialogs": persona.begin_dialogs or [],
43
59
  "tools": persona.tools,
60
+ "folder_id": persona.folder_id,
61
+ "sort_order": persona.sort_order,
44
62
  "created_at": persona.created_at.isoformat()
45
63
  if persona.created_at
46
64
  else None,
@@ -78,6 +96,8 @@ class PersonaRoute(Route):
78
96
  "system_prompt": persona.system_prompt,
79
97
  "begin_dialogs": persona.begin_dialogs or [],
80
98
  "tools": persona.tools,
99
+ "folder_id": persona.folder_id,
100
+ "sort_order": persona.sort_order,
81
101
  "created_at": persona.created_at.isoformat()
82
102
  if persona.created_at
83
103
  else None,
@@ -100,6 +120,8 @@ class PersonaRoute(Route):
100
120
  system_prompt = data.get("system_prompt", "").strip()
101
121
  begin_dialogs = data.get("begin_dialogs", [])
102
122
  tools = data.get("tools")
123
+ folder_id = data.get("folder_id") # None 表示根目录
124
+ sort_order = data.get("sort_order", 0)
103
125
 
104
126
  if not persona_id:
105
127
  return Response().error("人格ID不能为空").__dict__
@@ -120,6 +142,8 @@ class PersonaRoute(Route):
120
142
  system_prompt=system_prompt,
121
143
  begin_dialogs=begin_dialogs if begin_dialogs else None,
122
144
  tools=tools if tools else None,
145
+ folder_id=folder_id,
146
+ sort_order=sort_order,
123
147
  )
124
148
 
125
149
  return (
@@ -132,6 +156,8 @@ class PersonaRoute(Route):
132
156
  "system_prompt": persona.system_prompt,
133
157
  "begin_dialogs": persona.begin_dialogs or [],
134
158
  "tools": persona.tools or [],
159
+ "folder_id": persona.folder_id,
160
+ "sort_order": persona.sort_order,
135
161
  "created_at": persona.created_at.isoformat()
136
162
  if persona.created_at
137
163
  else None,
@@ -200,3 +226,234 @@ class PersonaRoute(Route):
200
226
  except Exception as e:
201
227
  logger.error(f"删除人格失败: {e!s}\n{traceback.format_exc()}")
202
228
  return Response().error(f"删除人格失败: {e!s}").__dict__
229
+
230
+ async def move_persona(self):
231
+ """移动人格到指定文件夹"""
232
+ try:
233
+ data = await request.get_json()
234
+ persona_id = data.get("persona_id")
235
+ folder_id = data.get("folder_id") # None 表示移动到根目录
236
+
237
+ if not persona_id:
238
+ return Response().error("缺少必要参数: persona_id").__dict__
239
+
240
+ await self.persona_mgr.move_persona_to_folder(persona_id, folder_id)
241
+
242
+ return Response().ok({"message": "人格移动成功"}).__dict__
243
+ except ValueError as e:
244
+ return Response().error(str(e)).__dict__
245
+ except Exception as e:
246
+ logger.error(f"移动人格失败: {e!s}\n{traceback.format_exc()}")
247
+ return Response().error(f"移动人格失败: {e!s}").__dict__
248
+
249
+ # ====
250
+ # Folder Routes
251
+ # ====
252
+
253
+ async def list_folders(self):
254
+ """获取文件夹列表"""
255
+ try:
256
+ parent_id = request.args.get("parent_id")
257
+ # 空字符串视为 None(根目录)
258
+ if parent_id == "":
259
+ parent_id = None
260
+ folders = await self.persona_mgr.get_folders(parent_id)
261
+ return (
262
+ Response()
263
+ .ok(
264
+ [
265
+ {
266
+ "folder_id": folder.folder_id,
267
+ "name": folder.name,
268
+ "parent_id": folder.parent_id,
269
+ "description": folder.description,
270
+ "sort_order": folder.sort_order,
271
+ "created_at": folder.created_at.isoformat()
272
+ if folder.created_at
273
+ else None,
274
+ "updated_at": folder.updated_at.isoformat()
275
+ if folder.updated_at
276
+ else None,
277
+ }
278
+ for folder in folders
279
+ ],
280
+ )
281
+ .__dict__
282
+ )
283
+ except Exception as e:
284
+ logger.error(f"获取文件夹列表失败: {e!s}\n{traceback.format_exc()}")
285
+ return Response().error(f"获取文件夹列表失败: {e!s}").__dict__
286
+
287
+ async def get_folder_tree(self):
288
+ """获取文件夹树形结构"""
289
+ try:
290
+ tree = await self.persona_mgr.get_folder_tree()
291
+ return Response().ok(tree).__dict__
292
+ except Exception as e:
293
+ logger.error(f"获取文件夹树失败: {e!s}\n{traceback.format_exc()}")
294
+ return Response().error(f"获取文件夹树失败: {e!s}").__dict__
295
+
296
+ async def get_folder_detail(self):
297
+ """获取指定文件夹的详细信息"""
298
+ try:
299
+ data = await request.get_json()
300
+ folder_id = data.get("folder_id")
301
+
302
+ if not folder_id:
303
+ return Response().error("缺少必要参数: folder_id").__dict__
304
+
305
+ folder = await self.persona_mgr.get_folder(folder_id)
306
+ if not folder:
307
+ return Response().error("文件夹不存在").__dict__
308
+
309
+ return (
310
+ Response()
311
+ .ok(
312
+ {
313
+ "folder_id": folder.folder_id,
314
+ "name": folder.name,
315
+ "parent_id": folder.parent_id,
316
+ "description": folder.description,
317
+ "sort_order": folder.sort_order,
318
+ "created_at": folder.created_at.isoformat()
319
+ if folder.created_at
320
+ else None,
321
+ "updated_at": folder.updated_at.isoformat()
322
+ if folder.updated_at
323
+ else None,
324
+ },
325
+ )
326
+ .__dict__
327
+ )
328
+ except Exception as e:
329
+ logger.error(f"获取文件夹详情失败: {e!s}\n{traceback.format_exc()}")
330
+ return Response().error(f"获取文件夹详情失败: {e!s}").__dict__
331
+
332
+ async def create_folder(self):
333
+ """创建文件夹"""
334
+ try:
335
+ data = await request.get_json()
336
+ name = data.get("name", "").strip()
337
+ parent_id = data.get("parent_id")
338
+ description = data.get("description")
339
+ sort_order = data.get("sort_order", 0)
340
+
341
+ if not name:
342
+ return Response().error("文件夹名称不能为空").__dict__
343
+
344
+ folder = await self.persona_mgr.create_folder(
345
+ name=name,
346
+ parent_id=parent_id,
347
+ description=description,
348
+ sort_order=sort_order,
349
+ )
350
+
351
+ return (
352
+ Response()
353
+ .ok(
354
+ {
355
+ "message": "文件夹创建成功",
356
+ "folder": {
357
+ "folder_id": folder.folder_id,
358
+ "name": folder.name,
359
+ "parent_id": folder.parent_id,
360
+ "description": folder.description,
361
+ "sort_order": folder.sort_order,
362
+ "created_at": folder.created_at.isoformat()
363
+ if folder.created_at
364
+ else None,
365
+ "updated_at": folder.updated_at.isoformat()
366
+ if folder.updated_at
367
+ else None,
368
+ },
369
+ },
370
+ )
371
+ .__dict__
372
+ )
373
+ except Exception as e:
374
+ logger.error(f"创建文件夹失败: {e!s}\n{traceback.format_exc()}")
375
+ return Response().error(f"创建文件夹失败: {e!s}").__dict__
376
+
377
+ async def update_folder(self):
378
+ """更新文件夹信息"""
379
+ try:
380
+ data = await request.get_json()
381
+ folder_id = data.get("folder_id")
382
+ name = data.get("name")
383
+ parent_id = data.get("parent_id")
384
+ description = data.get("description")
385
+ sort_order = data.get("sort_order")
386
+
387
+ if not folder_id:
388
+ return Response().error("缺少必要参数: folder_id").__dict__
389
+
390
+ await self.persona_mgr.update_folder(
391
+ folder_id=folder_id,
392
+ name=name,
393
+ parent_id=parent_id,
394
+ description=description,
395
+ sort_order=sort_order,
396
+ )
397
+
398
+ return Response().ok({"message": "文件夹更新成功"}).__dict__
399
+ except Exception as e:
400
+ logger.error(f"更新文件夹失败: {e!s}\n{traceback.format_exc()}")
401
+ return Response().error(f"更新文件夹失败: {e!s}").__dict__
402
+
403
+ async def delete_folder(self):
404
+ """删除文件夹"""
405
+ try:
406
+ data = await request.get_json()
407
+ folder_id = data.get("folder_id")
408
+
409
+ if not folder_id:
410
+ return Response().error("缺少必要参数: folder_id").__dict__
411
+
412
+ await self.persona_mgr.delete_folder(folder_id)
413
+
414
+ return Response().ok({"message": "文件夹删除成功"}).__dict__
415
+ except Exception as e:
416
+ logger.error(f"删除文件夹失败: {e!s}\n{traceback.format_exc()}")
417
+ return Response().error(f"删除文件夹失败: {e!s}").__dict__
418
+
419
+ async def reorder_items(self):
420
+ """批量更新排序顺序
421
+
422
+ 请求体格式:
423
+ {
424
+ "items": [
425
+ {"id": "persona_id_1", "type": "persona", "sort_order": 0},
426
+ {"id": "persona_id_2", "type": "persona", "sort_order": 1},
427
+ {"id": "folder_id_1", "type": "folder", "sort_order": 0},
428
+ ...
429
+ ]
430
+ }
431
+ """
432
+ try:
433
+ data = await request.get_json()
434
+ items = data.get("items", [])
435
+
436
+ if not items:
437
+ return Response().error("items 不能为空").__dict__
438
+
439
+ # 验证每个 item 的格式
440
+ for item in items:
441
+ if not all(k in item for k in ("id", "type", "sort_order")):
442
+ return (
443
+ Response()
444
+ .error("每个 item 必须包含 id, type, sort_order 字段")
445
+ .__dict__
446
+ )
447
+ if item["type"] not in ("persona", "folder"):
448
+ return (
449
+ Response()
450
+ .error("type 字段必须是 'persona' 或 'folder'")
451
+ .__dict__
452
+ )
453
+
454
+ await self.persona_mgr.batch_update_sort_order(items)
455
+
456
+ return Response().ok({"message": "排序更新成功"}).__dict__
457
+ except Exception as e:
458
+ logger.error(f"更新排序失败: {e!s}\n{traceback.format_exc()}")
459
+ return Response().error(f"更新排序失败: {e!s}").__dict__
@@ -20,6 +20,7 @@ from astrbot.core.utils.io import get_local_ip_addresses
20
20
 
21
21
  from .routes import *
22
22
  from .routes.backup import BackupRoute
23
+ from .routes.live_chat import LiveChatRoute
23
24
  from .routes.platform import PlatformRoute
24
25
  from .routes.route import Response, RouteContext
25
26
  from .routes.session_management import SessionManagementRoute
@@ -88,6 +89,7 @@ class AstrBotDashboard:
88
89
  self.kb_route = KnowledgeBaseRoute(self.context, core_lifecycle)
89
90
  self.platform_route = PlatformRoute(self.context, core_lifecycle)
90
91
  self.backup_route = BackupRoute(self.context, db, core_lifecycle)
92
+ self.live_chat_route = LiveChatRoute(self.context, db, core_lifecycle)
91
93
 
92
94
  self.app.add_url_rule(
93
95
  "/api/plug/<path:subpath>",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: AstrBot
3
- Version: 4.12.2
3
+ Version: 4.12.4
4
4
  Summary: Easy-to-use multi-platform LLM chatbot and development framework
5
5
  License-File: LICENSE
6
6
  Keywords: Astrbot,Astrbot Module,Astrbot Plugin
@@ -12,21 +12,20 @@ astrbot/builtin_stars/astrbot/long_term_memory.py,sha256=Gra7dqiqXLBH_u4M6TZmu49
12
12
  astrbot/builtin_stars/astrbot/main.py,sha256=KmiWqfQ1E7VR0Grf4jnO8d5_8tJJINbmFceAQ0FPeMU,4864
13
13
  astrbot/builtin_stars/astrbot/metadata.yaml,sha256=GCPK0piMKr4C6Bb0kaBJYhiqPDoMEAYJJp2MV5pXs4k,197
14
14
  astrbot/builtin_stars/astrbot/process_llm_request.py,sha256=qgzJDMCJB4l58-fPx-5k8HcN9mU9vMDV2JkHAPrCgIE,10248
15
- astrbot/builtin_stars/builtin_commands/main.py,sha256=bXZeslvWnwCt_lcoef6Bhiq4QsuuUEijFlBH1SO7-eU,8476
15
+ astrbot/builtin_stars/builtin_commands/main.py,sha256=T8bNer22YgFkKZbLn9Zl-5Y1SIbKpQe_HvDJpUiyte4,7613
16
16
  astrbot/builtin_stars/builtin_commands/metadata.yaml,sha256=x0URUKI3S14RRXQ-ewgJy4dYXMKxZcEo2pSKeApGleg,152
17
- astrbot/builtin_stars/builtin_commands/commands/__init__.py,sha256=hnIQIH-k2VTTk2CAKezFsOcxvjRRPt6U3a3s6Db9w1w,756
17
+ astrbot/builtin_stars/builtin_commands/commands/__init__.py,sha256=jHIh8Dg5EX5FcyWCEey-z84-iPVSBEamIYwhR75c4Rk,705
18
18
  astrbot/builtin_stars/builtin_commands/commands/admin.py,sha256=MTUfXURpdCiGKPG6bZ68lc9WttyPNXuy-DJCQVkT92M,3339
19
19
  astrbot/builtin_stars/builtin_commands/commands/alter_cmd.py,sha256=JL62Es7gCymcRd0SKcPcufFt3fUhaoB4T0WpHbv8PCA,6876
20
20
  astrbot/builtin_stars/builtin_commands/commands/conversation.py,sha256=igJTY9BntCSlSvcWLr37aCPX_5qiN7AyhjcKZZgTq54,13861
21
21
  astrbot/builtin_stars/builtin_commands/commands/help.py,sha256=rEBRwxqvoO11Mr6erOn2reuBOUVrq_f8YF92TmnxZSI,3008
22
22
  astrbot/builtin_stars/builtin_commands/commands/llm.py,sha256=i3gqhfDolpj_KhSSq6LoRM9sbV4fqdZUdv3tXYcJBDs,712
23
- astrbot/builtin_stars/builtin_commands/commands/persona.py,sha256=34uy4ZmE310aiNgHzJ8UNOBZWfZe4fxVnf2YA2KwDBI,5405
23
+ astrbot/builtin_stars/builtin_commands/commands/persona.py,sha256=AiI-p0p6ssciuDnrT2j7GpFXBTEARoXya5sVx6-t06E,7577
24
24
  astrbot/builtin_stars/builtin_commands/commands/plugin.py,sha256=d0X-W8pGISmW3WN_ZIbLZMnPq7uE5klcGXUjRE8zNno,5498
25
25
  astrbot/builtin_stars/builtin_commands/commands/provider.py,sha256=_aaeeFIypLF2ODmapGSfhLHSO5-O5PJgbBhfb3bVRl4,13434
26
26
  astrbot/builtin_stars/builtin_commands/commands/setunset.py,sha256=MXSostn5tzq5SerKKYeqZ0a-bADq1UW6xhgNkefoawU,1363
27
27
  astrbot/builtin_stars/builtin_commands/commands/sid.py,sha256=mQIk2f6zFjO7ukZf-6ZSFMLhuMCafCuRjFBTieO8kj4,1390
28
28
  astrbot/builtin_stars/builtin_commands/commands/t2i.py,sha256=cfE8Z75EQEFvpxA2k1hLNWHQk5OUAHQMMn9_m5mMB2k,775
29
- astrbot/builtin_stars/builtin_commands/commands/tool.py,sha256=lGJZOprJ2DhsBfp6XRRJILGr_FZCpf4maQSgL9PQ5mk,1140
30
29
  astrbot/builtin_stars/builtin_commands/commands/tts.py,sha256=k6GJEEV6YkCAhIEosv85w65_R7NSAu4TfJ3ViCMHc0c,1304
31
30
  astrbot/builtin_stars/builtin_commands/commands/utils/rst_scene.py,sha256=dOL-hjTceG-vrxatB9Cv3xLDFfRlTO_ifWb9Pc7Za7k,781
32
31
  astrbot/builtin_stars/reminder/main.py,sha256=hiOS-gQ8Ky_AF7ghdj0yReokt6YWV76707V3ILYoT_A,10584
@@ -38,7 +37,7 @@ astrbot/builtin_stars/web_searcher/metadata.yaml,sha256=aHAKtP8UZJaddzIN2eFfglTO
38
37
  astrbot/builtin_stars/web_searcher/engines/__init__.py,sha256=Gcp7k6m3w2Pb-hNCe3QIiYa9smQFcEzmb7jcfg2evuw,4300
39
38
  astrbot/builtin_stars/web_searcher/engines/bing.py,sha256=pn3DPR-5SO2D_RtBIU3l9Ph7PTUB-FCZAMCYuk6kd6Q,1035
40
39
  astrbot/builtin_stars/web_searcher/engines/sogo.py,sha256=YA7pA5-335r7UgKpyUPAeGGZQbYEwDBO8bm08Ro8Xg0,1701
41
- astrbot/cli/__init__.py,sha256=ZaKQqt8t3pg_oyKeDTrMwS3Db5zofE4zQpVPaA937v4,23
40
+ astrbot/cli/__init__.py,sha256=Aj1FgKj2dZfII4N9gUFqwsAT4s3MoYTSbFD8C-yVnS0,23
42
41
  astrbot/cli/__main__.py,sha256=QobgMyFoLNTgI_OYddhGOZ9ZvQeBVjjz79mA2cC2OEU,1758
43
42
  astrbot/cli/commands/__init__.py,sha256=eAgppZQIqFO1ylQJFABeYrzQ0oZqPWjtE80aKIPB3ks,149
44
43
  astrbot/cli/commands/cmd_conf.py,sha256=6-YLicBt_zjWTzaVLUJ1VQLQPbDEPYACB9IVnN8Zvng,6330
@@ -51,8 +50,8 @@ astrbot/cli/utils/plugin.py,sha256=FdLVcDHH5dBpoBhLC6iWriUomp_5ONGlWNJnOG4ZOnM,8
51
50
  astrbot/cli/utils/version_comparator.py,sha256=NVUmshfb5LU4a-S453rI7opqo0QtIHvlT1KUD3pdoVM,3462
52
51
  astrbot/core/__init__.py,sha256=zsaF9IeON4NaHk_Ktr0eB7xQEFC5tUZ4UJCesC3-KHM,1220
53
52
  astrbot/core/astr_agent_context.py,sha256=bJnAm_CGzkhMnC99GA_j0Xwmi-OYoBPmgGanuS36DF4,637
54
- astrbot/core/astr_agent_hooks.py,sha256=-bvcAtPFkWcOE__Hnzr7-X_IOxaWk4my0FLDzisfQQQ,2916
55
- astrbot/core/astr_agent_run_util.py,sha256=D_K2MOhAp0O8tQpAkrciiUhjbgDOo7zewMrXpzjdgsM,5534
53
+ astrbot/core/astr_agent_hooks.py,sha256=FTCQqhl-N8b163nxoPeoyfqhSGCG0bcAmnF1dAHMOm8,3020
54
+ astrbot/core/astr_agent_run_util.py,sha256=kPlWu2nLXfJzZddbtuoca0iZph9VRTJgdC9cLQf5UCQ,13592
56
55
  astrbot/core/astr_agent_tool_exec.py,sha256=DpGqVhQzSwL2EN6wfBJrlcwH7b1jLkX5b_1eI5xqUB8,10258
57
56
  astrbot/core/astrbot_config_mgr.py,sha256=SUvusfo8Qk89eNpEmduWcXuczJ9g5TBH-VOV69ax28g,8950
58
57
  astrbot/core/conversation_mgr.py,sha256=iELU-454tCOFRVs0DwJLZvx59mUSD55TYLlCVTEccyQ,15968
@@ -62,7 +61,7 @@ astrbot/core/exceptions.py,sha256=GVCUgAjpvUHLL59MkJalFrSp_HbtliChu7XII_Px2WM,21
62
61
  astrbot/core/file_token_service.py,sha256=8X0Qyo-NPGhtxy6IcRsJg7Z2tx_ULPf_7OKvw-KBk6o,3317
63
62
  astrbot/core/initial_loader.py,sha256=q798G8wEti7-p3UC0y1GB3MOK-kO6z1Nt826iO5nJVA,1802
64
63
  astrbot/core/log.py,sha256=PfybPaZAL_eab7r9nPIa_1nCXdhMMa3iqHg1Ogh3r1c,9116
65
- astrbot/core/persona_mgr.py,sha256=g6Xzhrvlvk9YRrcPNEpevHiCa6GVfut9NoKX7PRNmXM,7434
64
+ astrbot/core/persona_mgr.py,sha256=-4kkkvODID3h2haTdalq8DUbIJWek1wF66TE1E2WGcs,12518
66
65
  astrbot/core/platform_message_history_mgr.py,sha256=0frxrq6Bt18OXbt24uRnQl039wpi2gK5L9ONLtBuMsM,1580
67
66
  astrbot/core/umop_config_router.py,sha256=K1Ya1Ke5iTZgrxgRp7VEiREAI2BcSGYeM3Os_05dUkE,3733
68
67
  astrbot/core/updator.py,sha256=-F9elTgp4UwCdGEPwUwA0SAMQpouvAruktH4uh6nTwY,4666
@@ -95,11 +94,11 @@ astrbot/core/backup/exporter.py,sha256=tULFmXhYqRhJtAwePFkxXMSKqct1MSMyISv9LrfKw
95
94
  astrbot/core/backup/importer.py,sha256=efGW5-5ZAfvN1mg4rcc5OrcFTLfyj7L9T0Yd7SBUlNo,28618
96
95
  astrbot/core/config/__init__.py,sha256=vZjtpC7vr-IvBgSUtbS04C0wpulmCG5tPmcEP1WYE_4,172
97
96
  astrbot/core/config/astrbot_config.py,sha256=5r2VhCNO4VuGCqct12g10-TcvAKyXV40-suk5vRMGns,6436
98
- astrbot/core/config/default.py,sha256=jYUjQ4PAcytPSKII7ngcuVu24H7m1fgnSSWZkddeRyA,157051
97
+ astrbot/core/config/default.py,sha256=qzpVhL9rGYk31MfjVs70HD-P9mHPVQ-O8GYSOTXVr3Y,158516
99
98
  astrbot/core/config/i18n_utils.py,sha256=HJn_0XeeVS9ryCBelYfnc0nEn10LlX702fcSSFrF1J8,3879
100
- astrbot/core/db/__init__.py,sha256=EQor28zGVxAECY30i9NDoeuPOo9inimpF5JV3E0N1BE,15608
101
- astrbot/core/db/po.py,sha256=7V8xZTDOojrhd4ULtREmraFZtW976mg7iHbfbVKgKEI,14287
102
- astrbot/core/db/sqlite.py,sha256=FW28EHCGCJR-5kzzC5nfe3SBSlKemPkpb_ca4A9dJq0,48974
99
+ astrbot/core/db/__init__.py,sha256=VCNY44O9nWoPT4Tiqu2m9VEyi0vIem4NtLfQGxPgzwI,18340
100
+ astrbot/core/db/po.py,sha256=V2aekOguzPe9oOjNPLTj_C0_KD9h5BY3mNpn3PSyWpk,15640
101
+ astrbot/core/db/sqlite.py,sha256=BxOjxgxAKn8G26BZvnwq3OpXmtTJhJrnwxbULUGjR4U,57885
103
102
  astrbot/core/db/migration/helper.py,sha256=Kogq0FLJdvWTDuAVWLT1PlTGGJcWkDMWO37KM-G8lTk,2087
104
103
  astrbot/core/db/migration/migra_3_to_4.py,sha256=AZkywKcS2aKo81k04uD2qxHsPqKWRfVz9smEnHDxWqE,15343
105
104
  astrbot/core/db/migration/migra_45_to_46.py,sha256=wQk8NUiCNgmpSczO9U-OW6mMRHPWtJDlKuTCOGF8-WY,1560
@@ -148,16 +147,16 @@ astrbot/core/pipeline/content_safety_check/strategies/keywords.py,sha256=N3bR19D
148
147
  astrbot/core/pipeline/content_safety_check/strategies/strategy.py,sha256=XM2c-6apssEtAllMAI6BUXaEN_t2XINHcCoAudeKNwc,1206
149
148
  astrbot/core/pipeline/preprocess_stage/stage.py,sha256=BFaON3u4MrQUXp0ZXETU5MIvN_w0p0KJDNc9D7Y3qsY,4202
150
149
  astrbot/core/pipeline/process_stage/stage.py,sha256=tOg6HYGVU1GoY921YBYVO1MTM7a55M0N8uB9tOoTomg,2406
151
- astrbot/core/pipeline/process_stage/utils.py,sha256=TAmo2qSeQKGeLxVOZ4ph94q5c2zpjAPi4hGKLuA7nYY,7987
150
+ astrbot/core/pipeline/process_stage/utils.py,sha256=V9ObKNwbCyaZFdVgySasgcrzzADIIDo-t05JAx-7I2Q,8483
152
151
  astrbot/core/pipeline/process_stage/method/agent_request.py,sha256=vHC2Z73Fe96iW4j6ZbNvWQkfXD49pVWy6XKoG-20CS8,2049
153
152
  astrbot/core/pipeline/process_stage/method/star_request.py,sha256=C-PTq_Wpq4QMS2ecfRDCcDSX3rYyldfsAN-jAaEEb-w,2430
154
- astrbot/core/pipeline/process_stage/method/agent_sub_stages/internal.py,sha256=VhQ1e85m_b_8fCsmdy6wwU8T1KArSvqANDhnFVaHAwM,30920
153
+ astrbot/core/pipeline/process_stage/method/agent_sub_stages/internal.py,sha256=rE7Dbpjf4FdTbHVNbReBssETdc72IO9VrhJ56mFE25g,33229
155
154
  astrbot/core/pipeline/process_stage/method/agent_sub_stages/third_party.py,sha256=LNBRItSpZn0MLP4fyHQ_3gUJ8lnmCwuPlqnZDVFLI6Q,7332
156
155
  astrbot/core/pipeline/rate_limit_check/stage.py,sha256=9EVJ0zYtxATFsj7ADyWDYcSGBRqmrMiKWp1kkD9LONI,3962
157
156
  astrbot/core/pipeline/respond/stage.py,sha256=RIYGXTG-XvBhgRqaHyJYWlsZjskS9pgV-2jm5o956ho,11042
158
157
  astrbot/core/pipeline/result_decorate/stage.py,sha256=FRB9gc3-I412rIal5I2WX7XnF3Hw2x04RS2_iNZ_Ljs,17492
159
158
  astrbot/core/pipeline/session_status_check/stage.py,sha256=448eWo72O-JZCXMGBLznJeQ9NrjBRIHkGKTc_wW_dtY,1297
160
- astrbot/core/pipeline/waking_check/stage.py,sha256=umd9eAp3E5gALRbfl2S-BtcQcMQfUfadfp4jXVxwix4,9844
159
+ astrbot/core/pipeline/waking_check/stage.py,sha256=eDxbk_nWEhiwrARJ8DFoH8qf1mi_OdeOutWq3xLA41c,9787
161
160
  astrbot/core/pipeline/whitelist_check/stage.py,sha256=x6o4oswIvVtHFRbuKuLFoyFEgx-gSo3IMGYvopu8d9A,2411
162
161
  astrbot/core/platform/__init__.py,sha256=5Hhb2mIb8mS2RWfxILIMuV03XiyfqEbn4pAjvi8ntl0,361
163
162
  astrbot/core/platform/astr_message_event.py,sha256=gyTq5eBYXt7eU3S3di0EYlCbUcv40XzbxEL3-kD1-Z8,15450
@@ -169,9 +168,9 @@ astrbot/core/platform/platform.py,sha256=U2jq248bfPaAcIa8PUO5aiPyAOGIN1lz6LVnqQO
169
168
  astrbot/core/platform/platform_metadata.py,sha256=PCqNk-H-V7BtiQXbbyHd84s43BBIZNhUQ9X-SVKP3uM,693
170
169
  astrbot/core/platform/register.py,sha256=ptIPhVvbzODuWwXr8J0jJSzSPfv3rr7F67gXqvIpvvk,1985
171
170
  astrbot/core/platform/sources/aiocqhttp/aiocqhttp_message_event.py,sha256=ycNdNPKUnBJ3hJuDn_S8GM_W7XFbhumpotM8yqcOrqg,8146
172
- astrbot/core/platform/sources/aiocqhttp/aiocqhttp_platform_adapter.py,sha256=eoOgIvmwK1pMED6B3D_0dcIQlrvpUDdtOpDYBeo627U,17906
173
- astrbot/core/platform/sources/dingtalk/dingtalk_adapter.py,sha256=3Ce6BIyPKjRvSqUgkHJxz4g-diKerPirA1JaJujxDAg,9381
174
- astrbot/core/platform/sources/dingtalk/dingtalk_event.py,sha256=TxKRBlEjYY2YFmHZfLbLSH5YR0ghj2SgTIlDEAiPwF4,3513
171
+ astrbot/core/platform/sources/aiocqhttp/aiocqhttp_platform_adapter.py,sha256=J9Nrv2VNxP12Ybg9LRZbvEnbw9JxZtCME8QxTj6XdbE,18612
172
+ astrbot/core/platform/sources/dingtalk/dingtalk_adapter.py,sha256=36oOlr6AcqcqlebcRdSNhllPXb9QyZcKdJI3go5Mw6c,11463
173
+ astrbot/core/platform/sources/dingtalk/dingtalk_event.py,sha256=k6tIeP_2UEjGyg4sV4woEwkpWBWP0BOqyqvtDZf6Hnc,5479
175
174
  astrbot/core/platform/sources/discord/client.py,sha256=YGrUSopQKDRFfzjCdcBQm-EcNWonBwAgXzW678G0e_c,5181
176
175
  astrbot/core/platform/sources/discord/components.py,sha256=qKcGssKA3vBLHpad0g96KMD722Ng5jYKgpQBGQFOPX8,3971
177
176
  astrbot/core/platform/sources/discord/discord_platform_adapter.py,sha256=URIWopmG6sqQRhZjMYOUip4qzWSVcf9yxee_B7tz7Qg,19618
@@ -195,8 +194,8 @@ astrbot/core/platform/sources/slack/slack_adapter.py,sha256=4hzYi3SiA97LWCjTZmqf
195
194
  astrbot/core/platform/sources/slack/slack_event.py,sha256=Vb4IHuTsRi22PxxjUZ6TKfDg0DpiYBMxAeV8mhMPBTE,8984
196
195
  astrbot/core/platform/sources/telegram/tg_adapter.py,sha256=8JeTRh1il9dLR1vOgKM84iwNUxS8GxQ7XGrFuZVkXFk,16169
197
196
  astrbot/core/platform/sources/telegram/tg_event.py,sha256=urZ7qMLXcygx1TQxVC04bVS1Z1_1Yls-5qJqOFHrROA,11782
198
- astrbot/core/platform/sources/webchat/webchat_adapter.py,sha256=zXD0FAdHau8Gg48yOykWroaDz_SC7tri4UhOcunB2Zc,8933
199
- astrbot/core/platform/sources/webchat/webchat_event.py,sha256=F-2kmKBwPisjU9gvWrh8gPmKVQ3zEXVPzjAFZMUtBm8,6211
197
+ astrbot/core/platform/sources/webchat/webchat_adapter.py,sha256=4uM-JhbGWMXAUYLgq2HnpX39sO7tv6j5K4ihrKFHbxM,9008
198
+ astrbot/core/platform/sources/webchat/webchat_event.py,sha256=-X-j9r9-kwr2NjFBUa5Qmo0Po-_Oo8jrVjtk5V8lXP8,7033
200
199
  astrbot/core/platform/sources/webchat/webchat_queue_mgr.py,sha256=2P0hQRNn7tMs9O6MLQ1GkJSSKz7R5Q8k_0JxEltSKLM,1364
201
200
  astrbot/core/platform/sources/wecom/wecom_adapter.py,sha256=n0SlqDKoJuH0sPu0rXcvPzXD346l7Vw8lix8mAuPUVI,15608
202
201
  astrbot/core/platform/sources/wecom/wecom_event.py,sha256=sCIM1fAfMrEIVeUZzx3sfu77412dcxbgOUt5rI3LEvk,9145
@@ -217,8 +216,8 @@ astrbot/core/provider/__init__.py,sha256=0NVyKtTapnrUy0lkXVYWyM5KetwtDwXmTwBzqLG
217
216
  astrbot/core/provider/entites.py,sha256=0eYiQ-xttqFTb3WZR2b1oemdZy3d5sevELvj9FixJtE,388
218
217
  astrbot/core/provider/entities.py,sha256=1Az26czWgrnJn2zCi0_WfC3MRyAYrN_cxcYemFZqhxs,15604
219
218
  astrbot/core/provider/func_tool_manager.py,sha256=2pBKHAuj-6rITOipHmH8hrs8D4N2bAUx5TcJfUVYtsk,21241
220
- astrbot/core/provider/manager.py,sha256=ggq49AUdp6xcoWhwazOrcF2e_DzhKCAe9UOHVHrZcCI,30000
221
- astrbot/core/provider/provider.py,sha256=Ixm7IfoIQ-Nlnc12VrzYDEqB630MUrAl2oXwFewO5Gc,12181
219
+ astrbot/core/provider/manager.py,sha256=G5hMk41Z819Y442Gtpap_ilaXsc1YK8HzyzDfC5Aeao,30248
220
+ astrbot/core/provider/provider.py,sha256=p4l4qSTPimtkH0tba4D5k97bhVNczE9SNHw4bnos5SI,14336
222
221
  astrbot/core/provider/register.py,sha256=0WMYrT9vbRjeq-72HD0oRT45kJmeKA96UgSItpTJbX8,1904
223
222
  astrbot/core/provider/sources/anthropic_source.py,sha256=F3pFJvUrLdqhzNFHU7N9zPT8PdIxXVCgH-RcNaR1y0U,25123
224
223
  astrbot/core/provider/sources/azure_tts_source.py,sha256=m6zbwJGSddyTlhdD80CxWtWWUISmTSx8CboUbYCUKdM,10086
@@ -226,14 +225,15 @@ astrbot/core/provider/sources/bailian_rerank_source.py,sha256=fsfVqzYMaZHrsPDdJl
226
225
  astrbot/core/provider/sources/dashscope_tts.py,sha256=-qBMwbIt_QSmWCT_uPAxrXSYuEbYJZ3WzjE_FhMhxgg,5629
227
226
  astrbot/core/provider/sources/edge_tts_source.py,sha256=dsf6YtSGzCJvas3BqBwHSn8vlMgQ_vgD9NEwngqDlEo,4690
228
227
  astrbot/core/provider/sources/fishaudio_tts_api_source.py,sha256=w3TUrNpJ9preNd4jeyCcjjjXZpaAo8TesSFIDxtLqyA,5917
229
- astrbot/core/provider/sources/gemini_embedding_source.py,sha256=bj4iXnMyONTyUBmBFeezPcBpjtfX_UBjMrbwMFyCis8,2607
228
+ astrbot/core/provider/sources/gemini_embedding_source.py,sha256=OoLMY-5-QXgLbj8KCnJ04SIHgTckvygxp5tkCopocKY,2612
230
229
  astrbot/core/provider/sources/gemini_source.py,sha256=puj7RsH7ZXQ-XyElc4ZYRDXFw4JwxkPDk1pVDtXQPBg,37350
231
230
  astrbot/core/provider/sources/gemini_tts_source.py,sha256=6LJIT2aTjoZaMszjYRzDu38prsO9G5Xg7SzJmQb2TzE,2880
231
+ astrbot/core/provider/sources/genie_tts.py,sha256=RCKj0sMt1fUquvBzxXdR2Isa0hJ5s4gKWuYoc8ZlA4Q,4253
232
232
  astrbot/core/provider/sources/groq_source.py,sha256=NqmiQn37mrMsaTyGX25eNzMpIgkCifY-5TJO8DFzHaA,456
233
233
  astrbot/core/provider/sources/gsv_selfhosted_source.py,sha256=RYQgwCc67N7RWPaODN4sSLJZn6o5gpgk_jF_KaRnD0M,5942
234
234
  astrbot/core/provider/sources/gsvi_tts_source.py,sha256=nGGctfkzrAeTofAvB2b_VNTYHW44SzyO12B-mBWb1rY,2011
235
235
  astrbot/core/provider/sources/minimax_tts_api_source.py,sha256=IA_q9o7CyrCNl4p0KBMIpHFoSrZcvVdgazdrXVxSpPI,6027
236
- astrbot/core/provider/sources/openai_embedding_source.py,sha256=TMUU7J-uo3KrERr1ZKTjoNK9byEm-IU0UZK5YHM3WpM,1614
236
+ astrbot/core/provider/sources/openai_embedding_source.py,sha256=fUuLXNdJEb-2yFVn2yL0oHXXhvmFaqQiMZ2RmZNopuc,1619
237
237
  astrbot/core/provider/sources/openai_source.py,sha256=z6xV8uMvbuKhYzVvz4AAdhG2L-gXq9-dmiXWrX4BowM,26803
238
238
  astrbot/core/provider/sources/openai_tts_api_source.py,sha256=DVviGQdBpCk6lW3LjnJHzwZr9wGkXRDNwfoQ3FYFVcs,1667
239
239
  astrbot/core/provider/sources/sensevoice_selfhosted_source.py,sha256=99I6OfSUDJDgXCKK__QNk8EaCbX3TElGIbjBY6VJkWg,3900
@@ -261,11 +261,11 @@ astrbot/core/star/README.md,sha256=LXxqxp3xv_oejO8ocBPOrbmLe0WB4feu43fYDNddHTQ,1
261
261
  astrbot/core/star/__init__.py,sha256=iTlnjfEGJGy--78PhG7F1cKj9VwJVcDNFtGomX8hRO0,2229
262
262
  astrbot/core/star/command_management.py,sha256=V6LT_xNGCEQ6f6vMh0H8vSolsPx0bIPcFQnbN7QyGOY,18100
263
263
  astrbot/core/star/config.py,sha256=FgrBz_fUrBU0-9BxD8enX-xGNGVbFxst3UT10sboYNA,3531
264
- astrbot/core/star/context.py,sha256=ieBndiGechkUa3c829HWtgjRTKJkHyOqrPb9T5ZivjY,24514
264
+ astrbot/core/star/context.py,sha256=6THd6T3MsHyGukX7UJf4iJg4jWzC8eQmuvp1JyO7sXg,24650
265
265
  astrbot/core/star/session_llm_manager.py,sha256=6y5rxQQ5RpuzOcw-4DAOeUBEep7nKIfBc6kTGTUkJX8,5707
266
266
  astrbot/core/star/session_plugin_manager.py,sha256=2mGUhwWHsAOC1F575d7GwcVdoc3Brv-w-pbISJSmP38,3144
267
267
  astrbot/core/star/star.py,sha256=Wkf81teNZ27JE_JrENuP0SrpFc2uFYRxHQsWo8R9-No,1826
268
- astrbot/core/star/star_handler.py,sha256=KWgmQerc0NeuU5ZM9YOp6ZuMI9Z5QgSdPhs3gmhsUww,7786
268
+ astrbot/core/star/star_handler.py,sha256=GvJ-QHGCQ1nBos6YWBO9WEQzmaIA6qWg9O3bqob3bTA,7839
269
269
  astrbot/core/star/star_manager.py,sha256=YP8bEy5zecAzTWtj2Oz1hZwX3CFLq4yJu-7tWJ9Nl4I,43686
270
270
  astrbot/core/star/star_tools.py,sha256=4q8emjyTbyIsVXHmzT88kX9uK28rIhlHc0re40Xm6m0,10847
271
271
  astrbot/core/star/updator.py,sha256=4pl42Ks_yjJ3kydx3BwOqocAczhhFBrRnxhBKh4_0Eo,3106
@@ -279,7 +279,7 @@ astrbot/core/star/filter/platform_adapter_type.py,sha256=yTJDeYRY_nH-LhRkkMUb6n6
279
279
  astrbot/core/star/filter/regex.py,sha256=GHB5YvBMLFbOOiFVUnEHaqHTER7sU1pAVrAcXdwBtkQ,545
280
280
  astrbot/core/star/register/__init__.py,sha256=U1LfqaZ5NbLj6lLuABLQHjpzh-x1qonR43oJMFn9rrc,1204
281
281
  astrbot/core/star/register/star.py,sha256=Eto7nD_HFuCNt-VJnXUXKv2D7a5TQ6qkhzLJ_itXo_8,1920
282
- astrbot/core/star/register/star_handler.py,sha256=GeqU34bEMOGNO9xpj8k3TQG8pGYI55FXe9048YlBjUo,20090
282
+ astrbot/core/star/register/star_handler.py,sha256=sVHWtLvuACdJY-EpyHx650FTurm29zbcKxKOXUVl2Iw,20059
283
283
  astrbot/core/utils/astrbot_path.py,sha256=RhuIbIH9sWJQxJYbVkxwD0xBK4lG-ZSQGKg35mLdTpk,2526
284
284
  astrbot/core/utils/command_parser.py,sha256=Cwd4zzyKEoC-er0a-9WZ5n2g4F8eH9p6BHxD96gjaVM,617
285
285
  astrbot/core/utils/file_extract.py,sha256=I9jgcaPYK74-BwuI18oUpoupnPYINeP3QFD3kFodqBA,697
@@ -304,7 +304,7 @@ astrbot/core/utils/t2i/renderer.py,sha256=3IH-eLxOCIpEPHjXA1GF-ylGGyKz4GlMIbkjfv
304
304
  astrbot/core/utils/t2i/template_manager.py,sha256=Pfht7PZCdVteF93lja1LZQcUFNeCOKLs6EFx9XMeYKQ,4520
305
305
  astrbot/core/utils/t2i/template/astrbot_powershell.html,sha256=UcjetoIJG3pJRUHMDOor3Nhj7FFmVXXpkySkpXXztO4,4943
306
306
  astrbot/core/utils/t2i/template/base.html,sha256=fQvq4I4lrlH2s_jwAzj62lWeC4g87xXsYJMJ0XunCPA,6619
307
- astrbot/dashboard/server.py,sha256=i-iHEK1HGuOEjpClARqAgrIjyRM4Z4oOxZfivEk6Yao,10098
307
+ astrbot/dashboard/server.py,sha256=eBKcTpN9qrzBlhREmhVe7X-lGvvuJXDWJfQenqQLuGE,10221
308
308
  astrbot/dashboard/utils.py,sha256=KrAv0lnPaVR0bx8yevT1CLGbSNsJizlfkKkPEtVVANI,5355
309
309
  astrbot/dashboard/routes/__init__.py,sha256=8cDzg025ESDCzqWk0ng3bwuC-lvDcbMudRWq4yH0HUA,1018
310
310
  astrbot/dashboard/routes/auth.py,sha256=rYkvt3MpCY9BhWjG0DUoX3YaBkJT1Id7M2pKqTmXbvo,2946
@@ -316,8 +316,9 @@ astrbot/dashboard/routes/config.py,sha256=fAXfPhmR8_mlMTpA8ZIB5Gi9AHW5eMOgwvPR2C
316
316
  astrbot/dashboard/routes/conversation.py,sha256=TWGY7BJ9QfmbxurAieBrbMmCi4_Ua2klxsAUlSRXbng,14302
317
317
  astrbot/dashboard/routes/file.py,sha256=gULvXP9PnVOQlyv_PCEzZQE5ptnGQEjFPvwOLxdVgb4,708
318
318
  astrbot/dashboard/routes/knowledge_base.py,sha256=GZ_iDYV2uXXzvGMF-4VJ8hZxLdHIWSSfg_3wlWwsizA,46081
319
+ astrbot/dashboard/routes/live_chat.py,sha256=3a1QdH0vz51xfd1e4VYKpYj19pw6ml69GlG4DYXbFIc,16029
319
320
  astrbot/dashboard/routes/log.py,sha256=YyRG6rrxxCAdbJP4dJyywP1CH_GwXrKCBr5XU_eo230,3335
320
- astrbot/dashboard/routes/persona.py,sha256=MEcNHMxJmyvZ3ZhytI5IP7L3FSlMr1JDvdd5efN9Q-M,7833
321
+ astrbot/dashboard/routes/persona.py,sha256=jmPolsvSNc6m_XME0pht_WpEtv7hlO7MRtllBY7zrSg,18229
321
322
  astrbot/dashboard/routes/platform.py,sha256=JfQzzmWSnahKjke3lBUeXo7Auzz_nTB0mUv0fIf_Nag,3392
322
323
  astrbot/dashboard/routes/plugin.py,sha256=qQvAtIY_33gF6F_D_iyQDbvrgO8t0IV_Gt6Qy_lcLlA,27475
323
324
  astrbot/dashboard/routes/route.py,sha256=vhNIWFhic1eVHRx7ej8OUmmcNDA3FPaRPdXO_-SS4K4,1572
@@ -327,8 +328,8 @@ astrbot/dashboard/routes/static_file.py,sha256=7KnNcOb1BVqSTft114LhGsDkfg69X2jHE
327
328
  astrbot/dashboard/routes/t2i.py,sha256=F6smxdL99MF7cRw3hqS6-2GErw8Zhsv0V0mfBUeEk-c,8931
328
329
  astrbot/dashboard/routes/tools.py,sha256=mMwVFw_VOlpqy_WZg1A-ddGtYa5L5QLWYawl37PT0-c,15354
329
330
  astrbot/dashboard/routes/update.py,sha256=qXiqQ_dbqRVftOzGgCQrvK8-qopVK6zKhhVVJ9SK26U,6648
330
- astrbot-4.12.2.dist-info/METADATA,sha256=fnF0o4RWH2Cc7bPkBdufUKXG1SxRW99ZZDeOp_pBBH0,12183
331
- astrbot-4.12.2.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
332
- astrbot-4.12.2.dist-info/entry_points.txt,sha256=OEF09YmhBWYuViXrvTLLpstF4ccmNwDL8r7nnFD0pfI,53
333
- astrbot-4.12.2.dist-info/licenses/LICENSE,sha256=zPfQj5Mq8-gThIiBcxETr7t8gND9bZWOjTGQAr80TQI,34500
334
- astrbot-4.12.2.dist-info/RECORD,,
331
+ astrbot-4.12.4.dist-info/METADATA,sha256=F3LyvMIkm2z5QQBS3q68kY_8XpDcO9g6aeSauCDQdNc,12183
332
+ astrbot-4.12.4.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
333
+ astrbot-4.12.4.dist-info/entry_points.txt,sha256=OEF09YmhBWYuViXrvTLLpstF4ccmNwDL8r7nnFD0pfI,53
334
+ astrbot-4.12.4.dist-info/licenses/LICENSE,sha256=zPfQj5Mq8-gThIiBcxETr7t8gND9bZWOjTGQAr80TQI,34500
335
+ astrbot-4.12.4.dist-info/RECORD,,
@@ -1,31 +0,0 @@
1
- from astrbot.api import star
2
- from astrbot.api.event import AstrMessageEvent, MessageEventResult
3
-
4
-
5
- class ToolCommands:
6
- def __init__(self, context: star.Context):
7
- self.context = context
8
-
9
- async def tool_ls(self, event: AstrMessageEvent):
10
- """查看函数工具列表"""
11
- event.set_result(
12
- MessageEventResult().message("tool 指令在 AstrBot v4.0.0 已经被移除。"),
13
- )
14
-
15
- async def tool_on(self, event: AstrMessageEvent, tool_name: str = ""):
16
- """启用一个函数工具"""
17
- event.set_result(
18
- MessageEventResult().message("tool 指令在 AstrBot v4.0.0 已经被移除。"),
19
- )
20
-
21
- async def tool_off(self, event: AstrMessageEvent, tool_name: str = ""):
22
- """停用一个函数工具"""
23
- event.set_result(
24
- MessageEventResult().message("tool 指令在 AstrBot v4.0.0 已经被移除。"),
25
- )
26
-
27
- async def tool_all_off(self, event: AstrMessageEvent):
28
- """停用所有函数工具"""
29
- event.set_result(
30
- MessageEventResult().message("tool 指令在 AstrBot v4.0.0 已经被移除。"),
31
- )