AstrBot 4.11.1__py3-none-any.whl → 4.11.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/cli/__init__.py CHANGED
@@ -1 +1 @@
1
- __version__ = "4.11.1"
1
+ __version__ = "4.11.2"
@@ -5,7 +5,7 @@ from typing import Any, TypedDict
5
5
 
6
6
  from astrbot.core.utils.astrbot_path import get_astrbot_data_path
7
7
 
8
- VERSION = "4.11.1"
8
+ VERSION = "4.11.2"
9
9
  DB_PATH = os.path.join(get_astrbot_data_path(), "data_v4.db")
10
10
 
11
11
  WEBHOOK_SUPPORTED_PLATFORMS = [
@@ -376,16 +376,6 @@ CONFIG_METADATA_2 = {
376
376
  "satori_heartbeat_interval": 10,
377
377
  "satori_reconnect_delay": 5,
378
378
  },
379
- "WeChatPadPro": {
380
- "id": "wechatpadpro",
381
- "type": "wechatpadpro",
382
- "enable": False,
383
- "admin_key": "stay33",
384
- "host": "这里填写你的局域网IP或者公网服务器IP",
385
- "port": 8059,
386
- "wpp_active_message_poll": False,
387
- "wpp_active_message_poll_interval": 3,
388
- },
389
379
  # "WebChat": {
390
380
  # "id": "webchat",
391
381
  # "type": "webchat",
@@ -361,6 +361,14 @@ class InternalAgentSubStage(Stage):
361
361
  if (enable_streaming := event.get_extra("enable_streaming")) is not None:
362
362
  streaming_response = bool(enable_streaming)
363
363
 
364
+ # 检查消息内容是否有效,避免空消息触发钩子
365
+ has_provider_request = event.get_extra("provider_request") is not None
366
+ has_valid_message = bool(event.message_str and event.message_str.strip())
367
+
368
+ if not has_provider_request and not has_valid_message:
369
+ logger.debug("skip llm request: empty message and no provider_request")
370
+ return
371
+
364
372
  logger.debug("ready to request llm provider")
365
373
 
366
374
  # 通知等待调用 LLM(在获取锁之前)
@@ -522,13 +530,15 @@ class InternalAgentSubStage(Stage):
522
530
  ):
523
531
  yield
524
532
 
525
- await self._save_to_history(
526
- event,
527
- req,
528
- agent_runner.get_final_llm_resp(),
529
- agent_runner.run_context.messages,
530
- agent_runner.stats,
531
- )
533
+ # 检查事件是否被停止,如果被停止则不保存历史记录
534
+ if not event.is_stopped():
535
+ await self._save_to_history(
536
+ event,
537
+ req,
538
+ agent_runner.get_final_llm_resp(),
539
+ agent_runner.run_context.messages,
540
+ agent_runner.stats,
541
+ )
532
542
 
533
543
  # 异步处理 WebChat 特殊情况
534
544
  if event.get_platform_name() == "webchat":
@@ -22,7 +22,6 @@ UNIQUE_SESSION_ID_BUILDERS: dict[str, Callable[[AstrMessageEvent], str | None]]
22
22
  "qq_official_webhook": lambda e: e.get_sender_id(),
23
23
  "lark": lambda e: f"{e.get_sender_id()}%{e.get_group_id()}",
24
24
  "misskey": lambda e: f"{e.get_session_id()}_{e.get_sender_id()}",
25
- "wechatpadpro": lambda e: f"{e.get_group_id()}#{e.get_sender_id()}",
26
25
  }
27
26
 
28
27
 
@@ -70,10 +70,6 @@ class PlatformManager:
70
70
  from .sources.qqofficial_webhook.qo_webhook_adapter import (
71
71
  QQOfficialWebhookPlatformAdapter, # noqa: F401
72
72
  )
73
- case "wechatpadpro":
74
- from .sources.wechatpadpro.wechatpadpro_adapter import (
75
- WeChatPadProAdapter, # noqa: F401
76
- )
77
73
  case "lark":
78
74
  from .sources.lark.lark_adapter import (
79
75
  LarkPlatformAdapter, # noqa: F401
@@ -12,7 +12,6 @@ class PlatformAdapterType(enum.Flag):
12
12
  TELEGRAM = enum.auto()
13
13
  WECOM = enum.auto()
14
14
  LARK = enum.auto()
15
- WECHATPADPRO = enum.auto()
16
15
  DINGTALK = enum.auto()
17
16
  DISCORD = enum.auto()
18
17
  SLACK = enum.auto()
@@ -27,7 +26,6 @@ class PlatformAdapterType(enum.Flag):
27
26
  | TELEGRAM
28
27
  | WECOM
29
28
  | LARK
30
- | WECHATPADPRO
31
29
  | DINGTALK
32
30
  | DISCORD
33
31
  | SLACK
@@ -49,7 +47,6 @@ ADAPTER_NAME_2_TYPE = {
49
47
  "discord": PlatformAdapterType.DISCORD,
50
48
  "slack": PlatformAdapterType.SLACK,
51
49
  "kook": PlatformAdapterType.KOOK,
52
- "wechatpadpro": PlatformAdapterType.WECHATPADPRO,
53
50
  "vocechat": PlatformAdapterType.VOCECHAT,
54
51
  "weixin_official_account": PlatformAdapterType.WEIXIN_OFFICIAL_ACCOUNT,
55
52
  "satori": PlatformAdapterType.SATORI,
@@ -22,6 +22,7 @@ from astrbot.core.utils.astrbot_path import (
22
22
  get_astrbot_plugin_path,
23
23
  )
24
24
  from astrbot.core.utils.io import remove_dir
25
+ from astrbot.core.utils.metrics import Metric
25
26
 
26
27
  from . import StarMetadata
27
28
  from .command_management import sync_command_configs
@@ -656,6 +657,14 @@ class PluginManager:
656
657
  如果找不到插件元数据则返回 None。
657
658
 
658
659
  """
660
+ # this metric is for displaying plugins installation count in webui
661
+ asyncio.create_task(
662
+ Metric.upload(
663
+ et="install_star",
664
+ repo=repo_url,
665
+ ),
666
+ )
667
+
659
668
  async with self._pm_lock:
660
669
  plugin_path = await self.updator.install(repo_url, proxy)
661
670
  # reload the plugin
@@ -1025,4 +1034,12 @@ class PluginManager:
1025
1034
  "name": plugin.name,
1026
1035
  }
1027
1036
 
1037
+ if plugin.repo:
1038
+ asyncio.create_task(
1039
+ Metric.upload(
1040
+ et="install_star_f", # install star
1041
+ repo=plugin.repo,
1042
+ ),
1043
+ )
1044
+
1028
1045
  return plugin_info
@@ -55,6 +55,7 @@ class PluginRoute(Route):
55
55
  "/plugin/on": ("POST", self.on_plugin),
56
56
  "/plugin/reload": ("POST", self.reload_plugins),
57
57
  "/plugin/readme": ("GET", self.get_plugin_readme),
58
+ "/plugin/changelog": ("GET", self.get_plugin_changelog),
58
59
  "/plugin/source/get": ("GET", self.get_custom_source),
59
60
  "/plugin/source/save": ("POST", self.save_custom_source),
60
61
  }
@@ -615,6 +616,55 @@ class PluginRoute(Route):
615
616
  logger.error(f"/api/plugin/readme: {traceback.format_exc()}")
616
617
  return Response().error(f"读取README文件失败: {e!s}").__dict__
617
618
 
619
+ async def get_plugin_changelog(self):
620
+ """获取插件更新日志
621
+
622
+ 读取插件目录下的 CHANGELOG.md 文件内容。
623
+ """
624
+ plugin_name = request.args.get("name")
625
+ logger.debug(f"正在获取插件 {plugin_name} 的更新日志")
626
+
627
+ if not plugin_name:
628
+ return Response().error("插件名称不能为空").__dict__
629
+
630
+ # 查找插件
631
+ plugin_obj = None
632
+ for plugin in self.plugin_manager.context.get_all_stars():
633
+ if plugin.name == plugin_name:
634
+ plugin_obj = plugin
635
+ break
636
+
637
+ if not plugin_obj:
638
+ return Response().error(f"插件 {plugin_name} 不存在").__dict__
639
+
640
+ if not plugin_obj.root_dir_name:
641
+ return Response().error(f"插件 {plugin_name} 目录不存在").__dict__
642
+
643
+ plugin_dir = os.path.join(
644
+ self.plugin_manager.plugin_store_path,
645
+ plugin_obj.root_dir_name,
646
+ )
647
+
648
+ # 尝试多种可能的文件名
649
+ changelog_names = ["CHANGELOG.md", "changelog.md", "CHANGELOG", "changelog"]
650
+ for name in changelog_names:
651
+ changelog_path = os.path.join(plugin_dir, name)
652
+ if os.path.isfile(changelog_path):
653
+ try:
654
+ with open(changelog_path, encoding="utf-8") as f:
655
+ changelog_content = f.read()
656
+ return (
657
+ Response()
658
+ .ok({"content": changelog_content}, "成功获取更新日志")
659
+ .__dict__
660
+ )
661
+ except Exception as e:
662
+ logger.error(f"/api/plugin/changelog: {traceback.format_exc()}")
663
+ return Response().error(f"读取更新日志失败: {e!s}").__dict__
664
+
665
+ # 没有找到 changelog 文件,返回 ok 但 content 为 null
666
+ return Response().ok({"content": None}, "该插件没有更新日志文件").__dict__
667
+
618
668
  async def get_custom_source(self):
619
669
  """获取自定义插件源"""
620
670
  sources = await sp.global_get("custom_plugin_sources", [])
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: AstrBot
3
- Version: 4.11.1
3
+ Version: 4.11.2
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
@@ -42,7 +42,7 @@ astrbot/builtin_stars/web_searcher/metadata.yaml,sha256=aHAKtP8UZJaddzIN2eFfglTO
42
42
  astrbot/builtin_stars/web_searcher/engines/__init__.py,sha256=yQtZwF4E19yVcyRIOLP9KEgnADXjeQd-AmCtVZtvjBs,4269
43
43
  astrbot/builtin_stars/web_searcher/engines/bing.py,sha256=pn3DPR-5SO2D_RtBIU3l9Ph7PTUB-FCZAMCYuk6kd6Q,1035
44
44
  astrbot/builtin_stars/web_searcher/engines/sogo.py,sha256=YA7pA5-335r7UgKpyUPAeGGZQbYEwDBO8bm08Ro8Xg0,1701
45
- astrbot/cli/__init__.py,sha256=_EwhfgM8xlD0mtHRHwvF_Tlmaou00A5O6TR_2j5BtWc,23
45
+ astrbot/cli/__init__.py,sha256=2YtqKtRXkp-wLiVLCbn9b5tR51TYgqryYYIlxsTxF-U,23
46
46
  astrbot/cli/__main__.py,sha256=QobgMyFoLNTgI_OYddhGOZ9ZvQeBVjjz79mA2cC2OEU,1758
47
47
  astrbot/cli/commands/__init__.py,sha256=eAgppZQIqFO1ylQJFABeYrzQ0oZqPWjtE80aKIPB3ks,149
48
48
  astrbot/cli/commands/cmd_conf.py,sha256=6-YLicBt_zjWTzaVLUJ1VQLQPbDEPYACB9IVnN8Zvng,6330
@@ -99,7 +99,7 @@ astrbot/core/backup/exporter.py,sha256=tULFmXhYqRhJtAwePFkxXMSKqct1MSMyISv9LrfKw
99
99
  astrbot/core/backup/importer.py,sha256=efGW5-5ZAfvN1mg4rcc5OrcFTLfyj7L9T0Yd7SBUlNo,28618
100
100
  astrbot/core/config/__init__.py,sha256=vZjtpC7vr-IvBgSUtbS04C0wpulmCG5tPmcEP1WYE_4,172
101
101
  astrbot/core/config/astrbot_config.py,sha256=5r2VhCNO4VuGCqct12g10-TcvAKyXV40-suk5vRMGns,6436
102
- astrbot/core/config/default.py,sha256=kKRV6qy758Jo1Zii15d857QZaIAVWutogvjmEHM5Tcc,153478
102
+ astrbot/core/config/default.py,sha256=ZdqZ5zCok9AciuGWiwgohsvMEqsVCrERgc0wpGTXDB0,152988
103
103
  astrbot/core/config/i18n_utils.py,sha256=HJn_0XeeVS9ryCBelYfnc0nEn10LlX702fcSSFrF1J8,3879
104
104
  astrbot/core/db/__init__.py,sha256=fSL1KjluzLt0Qi3XhUuw2qtLrFHSJrInWNECJhb1pUA,13440
105
105
  astrbot/core/db/po.py,sha256=wvqf1s0ECGRfBCOfbBxSd4UOaSLLpXxZrkMPU7vli1w,12232
@@ -155,18 +155,18 @@ astrbot/core/pipeline/process_stage/stage.py,sha256=tOg6HYGVU1GoY921YBYVO1MTM7a5
155
155
  astrbot/core/pipeline/process_stage/utils.py,sha256=q4V5G0PZD5b5mPh1lM-6w79LKGpp7RR7-PqYFhWpopM,4061
156
156
  astrbot/core/pipeline/process_stage/method/agent_request.py,sha256=vHC2Z73Fe96iW4j6ZbNvWQkfXD49pVWy6XKoG-20CS8,2049
157
157
  astrbot/core/pipeline/process_stage/method/star_request.py,sha256=C-PTq_Wpq4QMS2ecfRDCcDSX3rYyldfsAN-jAaEEb-w,2430
158
- astrbot/core/pipeline/process_stage/method/agent_sub_stages/internal.py,sha256=GxLwgDuhbdnhHtY6hDzcF033ZdV-0EJwZmjSJdEJSZE,23095
158
+ astrbot/core/pipeline/process_stage/method/agent_sub_stages/internal.py,sha256=K2iH-vUTlkkpsko7zUwMPBYJDClgdqrruaS2CttPKLM,23678
159
159
  astrbot/core/pipeline/process_stage/method/agent_sub_stages/third_party.py,sha256=LNBRItSpZn0MLP4fyHQ_3gUJ8lnmCwuPlqnZDVFLI6Q,7332
160
160
  astrbot/core/pipeline/rate_limit_check/stage.py,sha256=9EVJ0zYtxATFsj7ADyWDYcSGBRqmrMiKWp1kkD9LONI,3962
161
161
  astrbot/core/pipeline/respond/stage.py,sha256=RIYGXTG-XvBhgRqaHyJYWlsZjskS9pgV-2jm5o956ho,11042
162
162
  astrbot/core/pipeline/result_decorate/stage.py,sha256=FRB9gc3-I412rIal5I2WX7XnF3Hw2x04RS2_iNZ_Ljs,17492
163
163
  astrbot/core/pipeline/session_status_check/stage.py,sha256=448eWo72O-JZCXMGBLznJeQ9NrjBRIHkGKTc_wW_dtY,1297
164
- astrbot/core/pipeline/waking_check/stage.py,sha256=dcD__Nt-rZKHmJ6Anarzz6Tzw0X0Id4PhxTe_vdNhAk,9917
164
+ astrbot/core/pipeline/waking_check/stage.py,sha256=umd9eAp3E5gALRbfl2S-BtcQcMQfUfadfp4jXVxwix4,9844
165
165
  astrbot/core/pipeline/whitelist_check/stage.py,sha256=x6o4oswIvVtHFRbuKuLFoyFEgx-gSo3IMGYvopu8d9A,2411
166
166
  astrbot/core/platform/__init__.py,sha256=5Hhb2mIb8mS2RWfxILIMuV03XiyfqEbn4pAjvi8ntl0,361
167
167
  astrbot/core/platform/astr_message_event.py,sha256=At8sT8cBrlPSZoozNsw9Bn31dpMjBXGxkwyZMERRtOQ,14746
168
168
  astrbot/core/platform/astrbot_message.py,sha256=kdoiyZoCaH3iVua4pvKw7HHlfVpVB4bI36UeqYX1o38,2670
169
- astrbot/core/platform/manager.py,sha256=s8hcV_DjUej9g8KuyV0IJHiN5Gl69GfTHNnG16CKwbw,10499
169
+ astrbot/core/platform/manager.py,sha256=_YzJPaAjhLUpc09yRLQh-ZHI-73PjLpOrQB0cdNXT7g,10304
170
170
  astrbot/core/platform/message_session.py,sha256=AGI-fAyish5VYfIQf0dg2J3HZbiYPzpPMdAwBODzc1M,1089
171
171
  astrbot/core/platform/message_type.py,sha256=uGn5KN8B_7b9F5nFTpvLAXRlXx2VFHP3JmJjN8cC7fg,261
172
172
  astrbot/core/platform/platform.py,sha256=U2jq248bfPaAcIa8PUO5aiPyAOGIN1lz6LVnqQOPFik,5114
@@ -202,9 +202,6 @@ astrbot/core/platform/sources/telegram/tg_event.py,sha256=urZ7qMLXcygx1TQxVC04bV
202
202
  astrbot/core/platform/sources/webchat/webchat_adapter.py,sha256=3KGvJTowv4HnXXveAkZ7RfjFxpKbpD4r3x5fwf9XGuw,8672
203
203
  astrbot/core/platform/sources/webchat/webchat_event.py,sha256=ZQ6KABOxYIlRsAFzDcVDBI_c7WJkJNK-Iuwuw-yPMJQ,5690
204
204
  astrbot/core/platform/sources/webchat/webchat_queue_mgr.py,sha256=2P0hQRNn7tMs9O6MLQ1GkJSSKz7R5Q8k_0JxEltSKLM,1364
205
- astrbot/core/platform/sources/wechatpadpro/wechatpadpro_adapter.py,sha256=jy5xrKPwqtlVOnGh8n83NUEs6SJGAm0t12JdtE6_-Os,41308
206
- astrbot/core/platform/sources/wechatpadpro/wechatpadpro_message_event.py,sha256=pdvKtziixnvNrrk3fhJtUZrfX33LY0X9bV5GPmn4ITA,6574
207
- astrbot/core/platform/sources/wechatpadpro/xml_data_parser.py,sha256=n1PZRcNjGN_w1-z2CXcIMZL7oSTprteQpPbJ992Lsu4,6306
208
205
  astrbot/core/platform/sources/wecom/wecom_adapter.py,sha256=n0SlqDKoJuH0sPu0rXcvPzXD346l7Vw8lix8mAuPUVI,15608
209
206
  astrbot/core/platform/sources/wecom/wecom_event.py,sha256=sCIM1fAfMrEIVeUZzx3sfu77412dcxbgOUt5rI3LEvk,9145
210
207
  astrbot/core/platform/sources/wecom/wecom_kf.py,sha256=eenwV2hmH0j70OfYFsnAw9vukwHYmfF-YTzCym-6JE0,10820
@@ -261,7 +258,7 @@ astrbot/core/star/session_llm_manager.py,sha256=6y5rxQQ5RpuzOcw-4DAOeUBEep7nKIfB
261
258
  astrbot/core/star/session_plugin_manager.py,sha256=2mGUhwWHsAOC1F575d7GwcVdoc3Brv-w-pbISJSmP38,3144
262
259
  astrbot/core/star/star.py,sha256=Wkf81teNZ27JE_JrENuP0SrpFc2uFYRxHQsWo8R9-No,1826
263
260
  astrbot/core/star/star_handler.py,sha256=7eF8-_gIlUFzS0KuJmCd37JrFX1hfYO8QINEYIj5NPE,7715
264
- astrbot/core/star/star_manager.py,sha256=o7RWyJ69om2ynB29wPLR1AmY0spsvcaIRKSOejwimt0,43171
261
+ astrbot/core/star/star_manager.py,sha256=YP8bEy5zecAzTWtj2Oz1hZwX3CFLq4yJu-7tWJ9Nl4I,43686
265
262
  astrbot/core/star/star_tools.py,sha256=4q8emjyTbyIsVXHmzT88kX9uK28rIhlHc0re40Xm6m0,10847
266
263
  astrbot/core/star/updator.py,sha256=4pl42Ks_yjJ3kydx3BwOqocAczhhFBrRnxhBKh4_0Eo,3106
267
264
  astrbot/core/star/filter/__init__.py,sha256=bC6eHXh0CjzHmn-LTvsanWReoGIPhhMnBSrMLh97hZQ,470
@@ -270,7 +267,7 @@ astrbot/core/star/filter/command_group.py,sha256=JC_cMkOe-DCBDwqNGPDi_hDb0V8t_l4
270
267
  astrbot/core/star/filter/custom_filter.py,sha256=vyMqtRoiLx3CtTHLqhqamKZSeSkoj2GnW4YMQ1ihbC8,2241
271
268
  astrbot/core/star/filter/event_message_type.py,sha256=DMQy1463oTcwZbIZwbr4uxH7wIVkzsQ6bSe4aRrYn2M,1164
272
269
  astrbot/core/star/filter/permission.py,sha256=BYO9kd0coAJ4ayy0YOvTb4b35mavBSCKqR4mjm47jjQ,917
273
- astrbot/core/star/filter/platform_adapter_type.py,sha256=90h4g9xB1IfC8ws53M-pjePia2B0G1tCSct_xrpje9E,2208
270
+ astrbot/core/star/filter/platform_adapter_type.py,sha256=yTJDeYRY_nH-LhRkkMUb6n6W1toiyP_WUJo-maJq8xM,2100
274
271
  astrbot/core/star/filter/regex.py,sha256=GHB5YvBMLFbOOiFVUnEHaqHTER7sU1pAVrAcXdwBtkQ,545
275
272
  astrbot/core/star/register/__init__.py,sha256=5Y7Beo12vNcxC1etHYASeBKLIVkfHYgk8EuBc8vO4tg,1068
276
273
  astrbot/core/star/register/star.py,sha256=Eto7nD_HFuCNt-VJnXUXKv2D7a5TQ6qkhzLJ_itXo_8,1920
@@ -313,7 +310,7 @@ astrbot/dashboard/routes/knowledge_base.py,sha256=GZ_iDYV2uXXzvGMF-4VJ8hZxLdHIWS
313
310
  astrbot/dashboard/routes/log.py,sha256=YyRG6rrxxCAdbJP4dJyywP1CH_GwXrKCBr5XU_eo230,3335
314
311
  astrbot/dashboard/routes/persona.py,sha256=MEcNHMxJmyvZ3ZhytI5IP7L3FSlMr1JDvdd5efN9Q-M,7833
315
312
  astrbot/dashboard/routes/platform.py,sha256=JfQzzmWSnahKjke3lBUeXo7Auzz_nTB0mUv0fIf_Nag,3392
316
- astrbot/dashboard/routes/plugin.py,sha256=CvTUNOaBBjgk7q58bJ4El7BxkUopzPEdqxFnE2LC2UY,25436
313
+ astrbot/dashboard/routes/plugin.py,sha256=qQvAtIY_33gF6F_D_iyQDbvrgO8t0IV_Gt6Qy_lcLlA,27475
317
314
  astrbot/dashboard/routes/route.py,sha256=vhNIWFhic1eVHRx7ej8OUmmcNDA3FPaRPdXO_-SS4K4,1572
318
315
  astrbot/dashboard/routes/session_management.py,sha256=3h-zlkiAN4MQQLETGORNoWDtnGCSbqxnK2mTu6jMeCY,14998
319
316
  astrbot/dashboard/routes/stat.py,sha256=8t1VjuSjk1IomUpOS9EFLIqh5484TSIZX5VYGVTbNyc,11028
@@ -321,8 +318,8 @@ astrbot/dashboard/routes/static_file.py,sha256=7KnNcOb1BVqSTft114LhGsDkfg69X2jHE
321
318
  astrbot/dashboard/routes/t2i.py,sha256=F6smxdL99MF7cRw3hqS6-2GErw8Zhsv0V0mfBUeEk-c,8931
322
319
  astrbot/dashboard/routes/tools.py,sha256=mMwVFw_VOlpqy_WZg1A-ddGtYa5L5QLWYawl37PT0-c,15354
323
320
  astrbot/dashboard/routes/update.py,sha256=qXiqQ_dbqRVftOzGgCQrvK8-qopVK6zKhhVVJ9SK26U,6648
324
- astrbot-4.11.1.dist-info/METADATA,sha256=HKhcKaMmQD42rMBGPfOJRGZkEHKAiHUJ012u_7AbN_Y,12023
325
- astrbot-4.11.1.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
326
- astrbot-4.11.1.dist-info/entry_points.txt,sha256=OEF09YmhBWYuViXrvTLLpstF4ccmNwDL8r7nnFD0pfI,53
327
- astrbot-4.11.1.dist-info/licenses/LICENSE,sha256=zPfQj5Mq8-gThIiBcxETr7t8gND9bZWOjTGQAr80TQI,34500
328
- astrbot-4.11.1.dist-info/RECORD,,
321
+ astrbot-4.11.2.dist-info/METADATA,sha256=O5T2UAPGpkzRlVVUlD85OxEvm841fVSMrHzt45QZO08,12023
322
+ astrbot-4.11.2.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
323
+ astrbot-4.11.2.dist-info/entry_points.txt,sha256=OEF09YmhBWYuViXrvTLLpstF4ccmNwDL8r7nnFD0pfI,53
324
+ astrbot-4.11.2.dist-info/licenses/LICENSE,sha256=zPfQj5Mq8-gThIiBcxETr7t8gND9bZWOjTGQAr80TQI,34500
325
+ astrbot-4.11.2.dist-info/RECORD,,