ErisPulse 2.1.1__tar.gz → 2.1.2__tar.gz

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 (69) hide show
  1. {erispulse-2.1.1 → erispulse-2.1.2}/PKG-INFO +1 -1
  2. {erispulse-2.1.1 → erispulse-2.1.2}/docs/AIDocs/ErisPulse-AdapterDev.md +296 -44
  3. {erispulse-2.1.1 → erispulse-2.1.2}/docs/AIDocs/ErisPulse-Core.md +28 -14
  4. {erispulse-2.1.1 → erispulse-2.1.2}/docs/AIDocs/ErisPulse-Full.md +296 -44
  5. {erispulse-2.1.1 → erispulse-2.1.2}/docs/AIDocs/ErisPulse-ModuleDev.md +63 -33
  6. {erispulse-2.1.1 → erispulse-2.1.2}/docs/CHANGELOG.md +13 -1
  7. erispulse-2.1.2/docs/Development/Adapter.md +415 -0
  8. {erispulse-2.1.1 → erispulse-2.1.2}/docs/api/ErisPulse/Core/adapter.md +16 -2
  9. {erispulse-2.1.1 → erispulse-2.1.2}/docs/api/ErisPulse/Core/env.md +2 -2
  10. {erispulse-2.1.1 → erispulse-2.1.2}/docs/api/ErisPulse/Core/logger.md +2 -2
  11. {erispulse-2.1.1 → erispulse-2.1.2}/docs/api/ErisPulse/Core/mods.md +2 -2
  12. {erispulse-2.1.1 → erispulse-2.1.2}/docs/api/ErisPulse/Core/raiserr.md +2 -2
  13. {erispulse-2.1.1 → erispulse-2.1.2}/docs/api/ErisPulse/Core/server.md +2 -2
  14. {erispulse-2.1.1 → erispulse-2.1.2}/docs/api/ErisPulse/Core/util.md +2 -2
  15. {erispulse-2.1.1 → erispulse-2.1.2}/docs/api/ErisPulse/__init__.md +33 -17
  16. {erispulse-2.1.1 → erispulse-2.1.2}/docs/api/ErisPulse/__main__.md +2 -2
  17. {erispulse-2.1.1 → erispulse-2.1.2}/pyproject.toml +1 -1
  18. {erispulse-2.1.1 → erispulse-2.1.2}/src/ErisPulse/Core/__init__.py +14 -0
  19. {erispulse-2.1.1 → erispulse-2.1.2}/src/ErisPulse/Core/adapter.py +28 -28
  20. {erispulse-2.1.1 → erispulse-2.1.2}/src/ErisPulse/Core/server.py +1 -1
  21. {erispulse-2.1.1 → erispulse-2.1.2}/src/ErisPulse/__init__.py +42 -18
  22. erispulse-2.1.1/docs/Development/Adapter.md +0 -193
  23. {erispulse-2.1.1 → erispulse-2.1.2}/.github/assets/erispulse_logo.png +0 -0
  24. {erispulse-2.1.1 → erispulse-2.1.2}/.github/tools/merge_md.py +0 -0
  25. {erispulse-2.1.1 → erispulse-2.1.2}/.github/tools/update-api-docs.py +0 -0
  26. {erispulse-2.1.1 → erispulse-2.1.2}/.github/workflows/auto-tag-release.yml +0 -0
  27. {erispulse-2.1.1 → erispulse-2.1.2}/.github/workflows/pypi-publish.yml +0 -0
  28. {erispulse-2.1.1 → erispulse-2.1.2}/.gitignore +0 -0
  29. {erispulse-2.1.1 → erispulse-2.1.2}/.python-version +0 -0
  30. {erispulse-2.1.1 → erispulse-2.1.2}/CODE_OF_CONDUCT.md +0 -0
  31. {erispulse-2.1.1 → erispulse-2.1.2}/LICENSE +0 -0
  32. {erispulse-2.1.1 → erispulse-2.1.2}/README.md +0 -0
  33. {erispulse-2.1.1 → erispulse-2.1.2}/devs/test.py +0 -0
  34. {erispulse-2.1.1 → erispulse-2.1.2}/devs/test_adapter.py +0 -0
  35. {erispulse-2.1.1 → erispulse-2.1.2}/devs/test_files/test.docx +0 -0
  36. {erispulse-2.1.1 → erispulse-2.1.2}/devs/test_files/test.jpg +0 -0
  37. {erispulse-2.1.1 → erispulse-2.1.2}/devs/test_files/test.mp4 +0 -0
  38. {erispulse-2.1.1 → erispulse-2.1.2}/docs/AI-Module-Generation.md +0 -0
  39. {erispulse-2.1.1 → erispulse-2.1.2}/docs/AdapterStandards/APIResponse.md +0 -0
  40. {erispulse-2.1.1 → erispulse-2.1.2}/docs/AdapterStandards/EventConversion.md +0 -0
  41. {erispulse-2.1.1 → erispulse-2.1.2}/docs/AdapterStandards/README.md +0 -0
  42. {erispulse-2.1.1 → erispulse-2.1.2}/docs/CLI.md +0 -0
  43. {erispulse-2.1.1 → erispulse-2.1.2}/docs/Development/Module.md +0 -0
  44. {erispulse-2.1.1 → erispulse-2.1.2}/docs/Development/README.md +0 -0
  45. {erispulse-2.1.1 → erispulse-2.1.2}/docs/PlatformFeatures.md +0 -0
  46. {erispulse-2.1.1 → erispulse-2.1.2}/docs/UseCore.md +0 -0
  47. {erispulse-2.1.1 → erispulse-2.1.2}/docs/api/README.md +0 -0
  48. {erispulse-2.1.1 → erispulse-2.1.2}/docs/quick-start.md +0 -0
  49. {erispulse-2.1.1 → erispulse-2.1.2}/examples/example-adapter/LICENSE +0 -0
  50. {erispulse-2.1.1 → erispulse-2.1.2}/examples/example-adapter/MyAdapter/Core.py +0 -0
  51. {erispulse-2.1.1 → erispulse-2.1.2}/examples/example-adapter/MyAdapter/__init__.py +0 -0
  52. {erispulse-2.1.1 → erispulse-2.1.2}/examples/example-adapter/README.md +0 -0
  53. {erispulse-2.1.1 → erispulse-2.1.2}/examples/example-adapter/pyproject.toml +0 -0
  54. {erispulse-2.1.1 → erispulse-2.1.2}/examples/example-module/LICENSE +0 -0
  55. {erispulse-2.1.1 → erispulse-2.1.2}/examples/example-module/MyModule/Core.py +0 -0
  56. {erispulse-2.1.1 → erispulse-2.1.2}/examples/example-module/MyModule/__init__.py +0 -0
  57. {erispulse-2.1.1 → erispulse-2.1.2}/examples/example-module/README.md +0 -0
  58. {erispulse-2.1.1 → erispulse-2.1.2}/examples/example-module/pyproject.toml +0 -0
  59. {erispulse-2.1.1 → erispulse-2.1.2}/scripts/install/install.ps1 +0 -0
  60. {erispulse-2.1.1 → erispulse-2.1.2}/scripts/install/install.sh +0 -0
  61. {erispulse-2.1.1 → erispulse-2.1.2}/src/ErisPulse/Core/env.py +0 -0
  62. {erispulse-2.1.1 → erispulse-2.1.2}/src/ErisPulse/Core/logger.py +0 -0
  63. {erispulse-2.1.1 → erispulse-2.1.2}/src/ErisPulse/Core/mods.py +0 -0
  64. {erispulse-2.1.1 → erispulse-2.1.2}/src/ErisPulse/Core/raiserr.py +0 -0
  65. {erispulse-2.1.1 → erispulse-2.1.2}/src/ErisPulse/Core/shellprint.py +0 -0
  66. {erispulse-2.1.1 → erispulse-2.1.2}/src/ErisPulse/Core/util.py +0 -0
  67. {erispulse-2.1.1 → erispulse-2.1.2}/src/ErisPulse/__main__.py +0 -0
  68. {erispulse-2.1.1 → erispulse-2.1.2}/style_guide/DOCSTRING_SPEC.md +0 -0
  69. {erispulse-2.1.1 → erispulse-2.1.2}/style_guide/README.md +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ErisPulse
3
- Version: 2.1.1
3
+ Version: 2.1.2
4
4
  Summary: ErisPulse 是一个模块化、可扩展的异步 Python SDK 框架,主要用于构建高效、可维护的机器人应用程序。
5
5
  Author-email: "艾莉丝·格雷拉特(WSu2059)" <wsu2059@qq.com>, runoneall <runoobsteve@gmail.com>
6
6
  License: MIT License
@@ -170,7 +170,8 @@ MyAdapter/
170
170
  ├── LICENSE
171
171
  └── MyAdapter/
172
172
  ├── __init__.py
173
- └── Core.py
173
+ ├── Core.py
174
+ └── Converter.py
174
175
  ```
175
176
 
176
177
  ### 2. `pyproject.toml` 文件
@@ -212,15 +213,26 @@ from .Core import MyAdapter
212
213
  ```python
213
214
  from ErisPulse import sdk
214
215
  from ErisPulse.Core import BaseAdapter
216
+ from ErisPulse.Core import adapter_server
217
+
218
+ # 这里仅你使用 websocket 作为通信协议时需要 | 第一个作为参数的类型是 WebSocket, 第二个是 WebSocketDisconnect,当 ws 连接断开时触发你的捕捉
219
+ # 一般来说你不用在依赖中添加 fastapi, 因为它已经内置在 ErisPulse 中了
220
+ from fastapi import WebSocket, WebSocketDisconnect
215
221
 
216
222
  class MyAdapter(BaseAdapter):
217
- def __init__(self): # 适配器有显式的导入sdk对象, 所以不需导入sdk对象
223
+ def __init__(self, sdk): # 这里是不强制传入sdk的,你可以选择不传入
218
224
  self.sdk = sdk
219
225
  self.env = self.sdk.env
220
226
  self.logger = self.sdk.logger
221
227
 
222
228
  self.logger.info("MyModule 初始化完成")
223
229
  self.config = self._get_config()
230
+ self.converter = self._setup_converter() # 获取转换器实例
231
+ self.convert = self.converter.convert
232
+
233
+ def _setup_converter(self):
234
+ from .Converter import MyPlatformConverter
235
+ return MyPlatformConverter()
224
236
 
225
237
  def _get_config(self):
226
238
  # 加载配置方法,你需要在这里进行必要的配置加载逻辑
@@ -232,29 +244,36 @@ class MyAdapter(BaseAdapter):
232
244
  self.env.setConfig("MyAdapter", default_config)
233
245
  return default_config
234
246
  return config
247
+
235
248
  class Send(BaseAdapter.Send): # 继承BaseAdapter内置的Send类
236
- # 底层SendDSL中提供了To方法,用户调用的时候类会被定义 `self._target_type` 和 `self._target_id`/`self._target_to` 三个属性
237
- # 当你只需要一个接受的To时,例如 mail 的To只是一个邮箱,那么你可以使用 `self.To(email)`,这时只会有 `self._target_id`/`self._target_to` 两个属性被定义
238
- # 或者说你不需要用户的To,那么用户也可以直接使用 Send.Func(text) 的方式直接调用这里的方法
249
+ """
250
+ Send消息发送DSL,支持三种调用方式(继承的Send类包含了To方法,它会在用户调用时自动设置以下属性):
251
+ 1. 指定类型和ID: To(type,id).Func() -> 设置_target_type和_target_id/_target_to
252
+ 示例: Send.To("group",123).Text("hi")
253
+ 2. 仅指定ID: To(id).Func() -> 只设置_target_id/_target_to
254
+ 示例: Send.To("user@mail.com").Text("hi")
255
+ 3. 直接调用: Func() -> 不设置目标属性
256
+ 示例: Send.Text("broadcast")
257
+ """
239
258
 
240
- # 可以重写Text方法提供平台特定实现
241
259
  def Text(self, text: str):
260
+ """发送文本消息(可重写实现)"""
242
261
  return asyncio.create_task(
243
262
  self._adapter.call_api(
244
263
  endpoint="/send",
245
264
  content=text,
246
- recvId=self._target_id,
247
- recvType=self._target_type
265
+ recvId=self._target_id, # 来自To()设置的属性
266
+ recvType=self._target_type # 来自To(type,id)设置的属性
248
267
  )
249
268
  )
250
269
 
251
- # 添加新的消息类型
252
270
  def Image(self, file: bytes):
271
+ """发送图片消息"""
253
272
  return asyncio.create_task(
254
273
  self._adapter.call_api(
255
274
  endpoint="/send_image",
256
275
  file=file,
257
- recvId=self._target_id,
276
+ recvId=self._target_id, # 自动使用To()设置的属性
258
277
  recvType=self._target_type
259
278
  )
260
279
  )
@@ -326,6 +345,209 @@ sdk.adapter.MyPlatform.Send.To("user", "U1001").Text("你好")
326
345
 
327
346
  ---
328
347
 
348
+ ## 5. 事件转换与路由注册
349
+
350
+ 适配器需要处理平台原生事件并转换为OneBot12标准格式,同时需要向底层框架注册路由。以下是两种典型实现方式:
351
+
352
+ ### 5.1 WebSocket 方式实现
353
+
354
+ ```python
355
+ async def _ws_handler(self, websocket: WebSocket):
356
+ """WebSocket连接处理器"""
357
+ self.connection = websocket
358
+ self.logger.info("客户端已连接")
359
+
360
+ try:
361
+ while True:
362
+ data = await websocket.receive_text()
363
+ try:
364
+ event = json.loads(data)
365
+ # 提交原生事件到适配器
366
+ # 原生事件需要通过指定平台来获取 比如 sdk.adapter.MyPlatform.on("事件类型")
367
+ self.emit(data.get("event_type"), data)
368
+
369
+ # 转换为OneBot12标准事件
370
+ onebot_event = self.convert(event)
371
+ if onebot_event:
372
+ # 提交标准事件到框架 | 这里直接通过 sdk.adaoter.on("事件类型") 便可以获取到事件,但是需要判断字段里面的platform字段来区分适配器
373
+ await self.sdk.adapter.emit(onebot_event)
374
+ except json.JSONDecodeError:
375
+ self.logger.error(f"JSON解析失败: {data}")
376
+ except WebSocketDisconnect:
377
+ self.logger.info("客户端断开连接")
378
+ finally:
379
+ self.connection = None
380
+
381
+ async def start(self):
382
+ """注册WebSocket路由"""
383
+ adapter_server.register_websocket(
384
+ adapter_name="myplatform", # 适配器名称
385
+ path="/ws", # 路由路径
386
+ handler=self._ws_handler, # 处理器
387
+ auth_handler=self._auth_handler # 认证处理器(可选)
388
+ )
389
+ ```
390
+
391
+ ### 5.2 WebHook 方式实现
392
+
393
+ ```python
394
+ async def _webhook_handler(self, request: Request):
395
+ """WebHook请求处理器"""
396
+ try:
397
+ data = await request.json()
398
+
399
+ # 提交原生事件到适配器
400
+ # 原生事件需要通过指定平台来获取 比如 sdk.adapter.MyPlatform.on("事件类型")
401
+ self.emit(data.get("event_type"), data)
402
+
403
+ # 转换为OneBot12标准事件
404
+ onebot_event = self.convert(data)=
405
+ if onebot_event:
406
+ # 提交标准事件到框架 | 这里直接通过 sdk.adaoter.on("事件类型") 便可以获取到事件,但是需要判断字段里面的platform字段来区分适配器
407
+ await self.sdk.adapter.emit(onebot_event)
408
+ return JSONResponse({"status": "ok"})
409
+ except Exception as e:
410
+ self.logger.error(f"处理WebHook失败: {str(e)}")
411
+ return JSONResponse({"status": "failed"}, status_code=400)
412
+
413
+ async def start(self):
414
+ """注册WebHook路由"""
415
+ adapter_server.register_webhook(
416
+ adapter_name="myplatform", # 适配器名称
417
+ path="/webhook", # 路由路径
418
+ handler=self._webhook_handler, # 处理器
419
+ methods=["POST"] # 支持的HTTP方法
420
+ )
421
+ ```
422
+
423
+ ### 5.3 事件转换器实现
424
+
425
+ 适配器应提供标准的事件转换器,将平台原生事件转换为OneBot12格式(具体实现请参考[事件转换标准文档](docs/AdapterStandards/EventConversion.md):
426
+
427
+ ```python
428
+ class MyPlatformConverter:
429
+ def convert(self, raw_event: Dict) -> Optional[Dict]:
430
+ """将平台原生事件转换为OneBot12标准格式"""
431
+ if not isinstance(raw_event, dict):
432
+ return None
433
+
434
+ # 基础事件结构
435
+ onebot_event = {
436
+ "id": str(raw_event.get("event_id", uuid.uuid4())),
437
+ "time": int(time.time()),
438
+ "type": "", # message/notice/request/meta_event
439
+ "detail_type": "",
440
+ "platform": "myplatform",
441
+ "self": {
442
+ "platform": "myplatform",
443
+ "user_id": str(raw_event.get("bot_id", ""))
444
+ },
445
+ "myplatform_raw": raw_event # 保留原始数据
446
+ }
447
+
448
+ # 根据事件类型分发处理
449
+ event_type = raw_event.get("type")
450
+ if event_type == "message":
451
+ return self._handle_message(raw_event, onebot_event)
452
+ elif event_type == "notice":
453
+ return self._handle_notice(raw_event, onebot_event)
454
+
455
+ return None
456
+ ```
457
+
458
+ ## 6. API响应标准
459
+
460
+ 适配器的`call_api`方法必须返回符合以下标准的响应结构:
461
+
462
+ ### 6.1 成功响应格式
463
+
464
+ ```python
465
+ {
466
+ "status": "ok", # 必须
467
+ "retcode": 0, # 必须,0表示成功
468
+ "data": { # 必须,成功时返回的数据
469
+ "message_id": "123456", # 消息ID(如果有)
470
+ "time": 1632847927.599013 # 时间戳(如果有)
471
+ },
472
+ "message": "", # 必须,成功时为空字符串
473
+ "message_id": "123456", # 可选,消息ID
474
+ "echo": "1234", # 可选,当请求中包含echo时返回
475
+ "myplatform_raw": {...} # 可选,原始响应数据
476
+ }
477
+ ```
478
+
479
+ ### 6.2 失败响应格式
480
+
481
+ ```python
482
+ {
483
+ "status": "failed", # 必须
484
+ "retcode": 10003, # 必须,非0错误码
485
+ "data": None, # 必须,失败时为null
486
+ "message": "缺少必要参数", # 必须,错误描述
487
+ "message_id": "", # 可选,失败时为空字符串
488
+ "echo": "1234", # 可选,当请求中包含echo时返回
489
+ "myplatform_raw": {...} # 可选,原始响应数据
490
+ }
491
+ ```
492
+
493
+ ### 6.3 实现示例
494
+
495
+ ```python
496
+ async def call_api(self, endpoint: str, **params):
497
+ try:
498
+ # 调用平台API
499
+ raw_response = await self._platform_api_call(endpoint, **params)
500
+
501
+ # 标准化响应
502
+ standardized = {
503
+ "status": "ok" if raw_response["success"] else "failed",
504
+ "retcode": 0 if raw_response["success"] else raw_response.get("code", 10001),
505
+ "data": raw_response.get("data"),
506
+ "message": raw_response.get("message", ""),
507
+ "message_id": raw_response.get("data", {}).get("message_id", ""),
508
+ "myplatform_raw": raw_response
509
+ }
510
+
511
+ if "echo" in params:
512
+ standardized["echo"] = params["echo"]
513
+
514
+ return standardized
515
+
516
+ except Exception as e:
517
+ return {
518
+ "status": "failed",
519
+ "retcode": 34000, # 平台错误代码段
520
+ "data": None,
521
+ "message": str(e),
522
+ "message_id": ""
523
+ }
524
+ ```
525
+
526
+ ## 7. 错误代码规范
527
+
528
+ 适配器应遵循以下错误代码范围:
529
+
530
+ | 代码范围 | 类型 | 说明 |
531
+ |---------|------|------|
532
+ | 0 | 成功 | 必须为0 |
533
+ | 1xxxx | 请求错误 | 无效参数、不支持的操作等 |
534
+ | 2xxxx | 处理器错误 | 适配器内部处理错误 |
535
+ | 3xxxx | 执行错误 | 平台API调用错误 |
536
+ | 34xxx | 平台错误 | 平台返回的错误 |
537
+
538
+ 建议在适配器中定义常量:
539
+
540
+ ```python
541
+ class ErrorCode:
542
+ SUCCESS = 0
543
+ INVALID_PARAMS = 10003
544
+ UNSUPPORTED_ACTION = 10002
545
+ INTERNAL_ERROR = 20001
546
+ PLATFORM_ERROR = 34000
547
+ ```
548
+
549
+ ---
550
+
329
551
  ## 开发建议
330
552
 
331
553
  ### 1. 使用异步编程模型
@@ -350,7 +572,7 @@ sdk.adapter.MyPlatform.Send.To("user", "U1001").Text("你好")
350
572
 
351
573
  ---
352
574
 
353
- *文档最后更新于 2025-07-17 08:10:26*
575
+ *文档最后更新于 2025-07-17 12:44:51*
354
576
 
355
577
  <!--- End of Adapter.md -->
356
578
 
@@ -690,7 +912,7 @@ def generate_message_id(platform: str, raw_id: str) -> str:
690
912
 
691
913
  # 📦 `ErisPulse.__init__` 模块
692
914
 
693
- *自动生成于 2025-07-16 15:34:26*
915
+ *自动生成于 2025-07-17 16:39:14*
694
916
 
695
917
  ---
696
918
 
@@ -835,6 +1057,31 @@ SDK初始化入口
835
1057
 
836
1058
  ---
837
1059
 
1060
+ ##### `__str__`
1061
+
1062
+ 转换为字符串时触发初始化
1063
+
1064
+ :return: str 模块字符串表示
1065
+
1066
+ ---
1067
+
1068
+ ##### `__copy__`
1069
+
1070
+ 浅拷贝时返回自身,保持懒加载特性
1071
+
1072
+ :return: self
1073
+
1074
+ ---
1075
+
1076
+ ##### `__deepcopy__`
1077
+
1078
+ 深拷贝时返回自身,保持懒加载特性
1079
+
1080
+ :param memo: memo
1081
+ :return: self
1082
+
1083
+ ---
1084
+
838
1085
  ### `AdapterLoader`
839
1086
 
840
1087
  适配器加载器
@@ -969,13 +1216,17 @@ SDK初始化入口
969
1216
 
970
1217
  ---
971
1218
 
972
- ##### `_pre_register_modules`
1219
+ ##### `_initialize_modules`
973
1220
 
974
- 预记录所有模块信息到SDK属性中
1221
+ ⚠️ **内部方法**:
1222
+
1223
+ 初始化模块
975
1224
 
976
1225
  :param modules: List[str] 模块名称列表
977
1226
  :param module_objs: Dict[str, Any] 模块对象字典
978
1227
 
1228
+ :return: bool 模块初始化是否成功
1229
+
979
1230
  ---
980
1231
 
981
1232
  ##### `_register_adapters`
@@ -991,27 +1242,14 @@ SDK初始化入口
991
1242
 
992
1243
  ---
993
1244
 
994
- ##### `_initialize_modules`
995
-
996
- ⚠️ **内部方法**:
997
-
998
- 初始化模块
999
-
1000
- :param modules: List[str] 模块名称列表
1001
- :param module_objs: Dict[str, Any] 模块对象字典
1002
-
1003
- :return: bool 模块初始化是否成功
1004
-
1005
- ---
1006
-
1007
1245
 
1008
- *文档最后更新于 2025-07-16 15:34:26*
1246
+ *文档最后更新于 2025-07-17 16:39:14*
1009
1247
 
1010
1248
  ## ErisPulse\__main__.md
1011
1249
 
1012
1250
  # 📦 `ErisPulse.__main__` 模块
1013
1251
 
1014
- *自动生成于 2025-07-16 15:34:26*
1252
+ *自动生成于 2025-07-17 16:39:14*
1015
1253
 
1016
1254
  ---
1017
1255
 
@@ -1200,13 +1438,13 @@ PyPI包管理器
1200
1438
  ---
1201
1439
 
1202
1440
 
1203
- *文档最后更新于 2025-07-16 15:34:26*
1441
+ *文档最后更新于 2025-07-17 16:39:14*
1204
1442
 
1205
1443
  ## ErisPulse\Core\adapter.md
1206
1444
 
1207
1445
  # 📦 `ErisPulse.Core.adapter` 模块
1208
1446
 
1209
- *自动生成于 2025-07-16 15:34:26*
1447
+ *自动生成于 2025-07-17 16:39:14*
1210
1448
 
1211
1449
  ---
1212
1450
 
@@ -1248,6 +1486,7 @@ ErisPulse 适配器系统
1248
1486
  :param adapter: 所属适配器实例
1249
1487
  :param target_type: 目标类型(可选)
1250
1488
  :param target_id: 目标ID(可选)
1489
+ :param _account_id: 发送账号(可选)
1251
1490
 
1252
1491
  ---
1253
1492
 
@@ -1265,6 +1504,19 @@ ErisPulse 适配器系统
1265
1504
 
1266
1505
  ---
1267
1506
 
1507
+ ##### `Using`
1508
+
1509
+ 设置发送账号
1510
+
1511
+ :param _account_id: 发送账号
1512
+ :return: SendDSL实例
1513
+
1514
+ :example:
1515
+ >>> adapter.Send.Using("bot1").To("123").Text("Hello")
1516
+ >>> adapter.Send.To("123").Using("bot1").Text("Hello") # 支持乱序
1517
+
1518
+ ---
1519
+
1268
1520
  ### `BaseAdapter`
1269
1521
 
1270
1522
  适配器基类
@@ -1537,13 +1789,13 @@ OneBot12协议事件监听装饰器
1537
1789
  ---
1538
1790
 
1539
1791
 
1540
- *文档最后更新于 2025-07-16 15:34:26*
1792
+ *文档最后更新于 2025-07-17 16:39:14*
1541
1793
 
1542
1794
  ## ErisPulse\Core\env.md
1543
1795
 
1544
1796
  # 📦 `ErisPulse.Core.env` 模块
1545
1797
 
1546
- *自动生成于 2025-07-16 15:34:26*
1798
+ *自动生成于 2025-07-17 16:39:14*
1547
1799
 
1548
1800
  ---
1549
1801
 
@@ -1829,13 +2081,13 @@ ErisPulse 环境配置模块
1829
2081
  ---
1830
2082
 
1831
2083
 
1832
- *文档最后更新于 2025-07-16 15:34:26*
2084
+ *文档最后更新于 2025-07-17 16:39:14*
1833
2085
 
1834
2086
  ## ErisPulse\Core\logger.md
1835
2087
 
1836
2088
  # 📦 `ErisPulse.Core.logger` 模块
1837
2089
 
1838
- *自动生成于 2025-07-16 15:34:26*
2090
+ *自动生成于 2025-07-17 16:39:14*
1839
2091
 
1840
2092
  ---
1841
2093
 
@@ -1917,13 +2169,13 @@ ErisPulse 日志系统
1917
2169
  ---
1918
2170
 
1919
2171
 
1920
- *文档最后更新于 2025-07-16 15:34:26*
2172
+ *文档最后更新于 2025-07-17 16:39:14*
1921
2173
 
1922
2174
  ## ErisPulse\Core\mods.md
1923
2175
 
1924
2176
  # 📦 `ErisPulse.Core.mods` 模块
1925
2177
 
1926
- *自动生成于 2025-07-16 15:34:26*
2178
+ *自动生成于 2025-07-17 16:39:14*
1927
2179
 
1928
2180
  ---
1929
2181
 
@@ -2106,13 +2358,13 @@ ErisPulse 模块管理器
2106
2358
  ---
2107
2359
 
2108
2360
 
2109
- *文档最后更新于 2025-07-16 15:34:26*
2361
+ *文档最后更新于 2025-07-17 16:39:14*
2110
2362
 
2111
2363
  ## ErisPulse\Core\raiserr.md
2112
2364
 
2113
2365
  # 📦 `ErisPulse.Core.raiserr` 模块
2114
2366
 
2115
- *自动生成于 2025-07-16 15:34:26*
2367
+ *自动生成于 2025-07-17 16:39:14*
2116
2368
 
2117
2369
  ---
2118
2370
 
@@ -2216,13 +2468,13 @@ ErisPulse 错误管理系统
2216
2468
  ---
2217
2469
 
2218
2470
 
2219
- *文档最后更新于 2025-07-16 15:34:26*
2471
+ *文档最后更新于 2025-07-17 16:39:14*
2220
2472
 
2221
2473
  ## ErisPulse\Core\server.md
2222
2474
 
2223
2475
  # 📦 `ErisPulse.Core.server` 模块
2224
2476
 
2225
- *自动生成于 2025-07-16 15:34:26*
2477
+ *自动生成于 2025-07-17 16:39:14*
2226
2478
 
2227
2479
  ---
2228
2480
 
@@ -2343,13 +2595,13 @@ ErisPulse Adapter Server
2343
2595
  ---
2344
2596
 
2345
2597
 
2346
- *文档最后更新于 2025-07-16 15:34:26*
2598
+ *文档最后更新于 2025-07-17 16:39:14*
2347
2599
 
2348
2600
  ## ErisPulse\Core\util.md
2349
2601
 
2350
2602
  # 📦 `ErisPulse.Core.util` 模块
2351
2603
 
2352
- *自动生成于 2025-07-16 15:34:26*
2604
+ *自动生成于 2025-07-17 16:39:14*
2353
2605
 
2354
2606
  ---
2355
2607
 
@@ -2443,6 +2695,6 @@ ErisPulse 工具函数集合
2443
2695
  ---
2444
2696
 
2445
2697
 
2446
- *文档最后更新于 2025-07-16 15:34:26*
2698
+ *文档最后更新于 2025-07-17 16:39:14*
2447
2699
 
2448
2700
  <!--- End of API文档 -->
@@ -691,7 +691,7 @@ ErisPulse 项目:
691
691
 
692
692
  # 📦 `ErisPulse.Core.adapter` 模块
693
693
 
694
- *自动生成于 2025-07-16 15:34:26*
694
+ *自动生成于 2025-07-17 16:39:14*
695
695
 
696
696
  ---
697
697
 
@@ -733,6 +733,7 @@ ErisPulse 适配器系统
733
733
  :param adapter: 所属适配器实例
734
734
  :param target_type: 目标类型(可选)
735
735
  :param target_id: 目标ID(可选)
736
+ :param _account_id: 发送账号(可选)
736
737
 
737
738
  ---
738
739
 
@@ -750,6 +751,19 @@ ErisPulse 适配器系统
750
751
 
751
752
  ---
752
753
 
754
+ ##### `Using`
755
+
756
+ 设置发送账号
757
+
758
+ :param _account_id: 发送账号
759
+ :return: SendDSL实例
760
+
761
+ :example:
762
+ >>> adapter.Send.Using("bot1").To("123").Text("Hello")
763
+ >>> adapter.Send.To("123").Using("bot1").Text("Hello") # 支持乱序
764
+
765
+ ---
766
+
753
767
  ### `BaseAdapter`
754
768
 
755
769
  适配器基类
@@ -1022,13 +1036,13 @@ OneBot12协议事件监听装饰器
1022
1036
  ---
1023
1037
 
1024
1038
 
1025
- *文档最后更新于 2025-07-16 15:34:26*
1039
+ *文档最后更新于 2025-07-17 16:39:14*
1026
1040
 
1027
1041
  ## env.md
1028
1042
 
1029
1043
  # 📦 `ErisPulse.Core.env` 模块
1030
1044
 
1031
- *自动生成于 2025-07-16 15:34:26*
1045
+ *自动生成于 2025-07-17 16:39:14*
1032
1046
 
1033
1047
  ---
1034
1048
 
@@ -1314,13 +1328,13 @@ ErisPulse 环境配置模块
1314
1328
  ---
1315
1329
 
1316
1330
 
1317
- *文档最后更新于 2025-07-16 15:34:26*
1331
+ *文档最后更新于 2025-07-17 16:39:14*
1318
1332
 
1319
1333
  ## logger.md
1320
1334
 
1321
1335
  # 📦 `ErisPulse.Core.logger` 模块
1322
1336
 
1323
- *自动生成于 2025-07-16 15:34:26*
1337
+ *自动生成于 2025-07-17 16:39:14*
1324
1338
 
1325
1339
  ---
1326
1340
 
@@ -1402,13 +1416,13 @@ ErisPulse 日志系统
1402
1416
  ---
1403
1417
 
1404
1418
 
1405
- *文档最后更新于 2025-07-16 15:34:26*
1419
+ *文档最后更新于 2025-07-17 16:39:14*
1406
1420
 
1407
1421
  ## mods.md
1408
1422
 
1409
1423
  # 📦 `ErisPulse.Core.mods` 模块
1410
1424
 
1411
- *自动生成于 2025-07-16 15:34:26*
1425
+ *自动生成于 2025-07-17 16:39:14*
1412
1426
 
1413
1427
  ---
1414
1428
 
@@ -1591,13 +1605,13 @@ ErisPulse 模块管理器
1591
1605
  ---
1592
1606
 
1593
1607
 
1594
- *文档最后更新于 2025-07-16 15:34:26*
1608
+ *文档最后更新于 2025-07-17 16:39:14*
1595
1609
 
1596
1610
  ## raiserr.md
1597
1611
 
1598
1612
  # 📦 `ErisPulse.Core.raiserr` 模块
1599
1613
 
1600
- *自动生成于 2025-07-16 15:34:26*
1614
+ *自动生成于 2025-07-17 16:39:14*
1601
1615
 
1602
1616
  ---
1603
1617
 
@@ -1701,13 +1715,13 @@ ErisPulse 错误管理系统
1701
1715
  ---
1702
1716
 
1703
1717
 
1704
- *文档最后更新于 2025-07-16 15:34:26*
1718
+ *文档最后更新于 2025-07-17 16:39:14*
1705
1719
 
1706
1720
  ## server.md
1707
1721
 
1708
1722
  # 📦 `ErisPulse.Core.server` 模块
1709
1723
 
1710
- *自动生成于 2025-07-16 15:34:26*
1724
+ *自动生成于 2025-07-17 16:39:14*
1711
1725
 
1712
1726
  ---
1713
1727
 
@@ -1828,13 +1842,13 @@ ErisPulse Adapter Server
1828
1842
  ---
1829
1843
 
1830
1844
 
1831
- *文档最后更新于 2025-07-16 15:34:26*
1845
+ *文档最后更新于 2025-07-17 16:39:14*
1832
1846
 
1833
1847
  ## util.md
1834
1848
 
1835
1849
  # 📦 `ErisPulse.Core.util` 模块
1836
1850
 
1837
- *自动生成于 2025-07-16 15:34:26*
1851
+ *自动生成于 2025-07-17 16:39:14*
1838
1852
 
1839
1853
  ---
1840
1854
 
@@ -1928,6 +1942,6 @@ ErisPulse 工具函数集合
1928
1942
  ---
1929
1943
 
1930
1944
 
1931
- *文档最后更新于 2025-07-16 15:34:26*
1945
+ *文档最后更新于 2025-07-17 16:39:14*
1932
1946
 
1933
1947
  <!--- End of API文档 -->