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.
- {erispulse-2.1.1 → erispulse-2.1.2}/PKG-INFO +1 -1
- {erispulse-2.1.1 → erispulse-2.1.2}/docs/AIDocs/ErisPulse-AdapterDev.md +296 -44
- {erispulse-2.1.1 → erispulse-2.1.2}/docs/AIDocs/ErisPulse-Core.md +28 -14
- {erispulse-2.1.1 → erispulse-2.1.2}/docs/AIDocs/ErisPulse-Full.md +296 -44
- {erispulse-2.1.1 → erispulse-2.1.2}/docs/AIDocs/ErisPulse-ModuleDev.md +63 -33
- {erispulse-2.1.1 → erispulse-2.1.2}/docs/CHANGELOG.md +13 -1
- erispulse-2.1.2/docs/Development/Adapter.md +415 -0
- {erispulse-2.1.1 → erispulse-2.1.2}/docs/api/ErisPulse/Core/adapter.md +16 -2
- {erispulse-2.1.1 → erispulse-2.1.2}/docs/api/ErisPulse/Core/env.md +2 -2
- {erispulse-2.1.1 → erispulse-2.1.2}/docs/api/ErisPulse/Core/logger.md +2 -2
- {erispulse-2.1.1 → erispulse-2.1.2}/docs/api/ErisPulse/Core/mods.md +2 -2
- {erispulse-2.1.1 → erispulse-2.1.2}/docs/api/ErisPulse/Core/raiserr.md +2 -2
- {erispulse-2.1.1 → erispulse-2.1.2}/docs/api/ErisPulse/Core/server.md +2 -2
- {erispulse-2.1.1 → erispulse-2.1.2}/docs/api/ErisPulse/Core/util.md +2 -2
- {erispulse-2.1.1 → erispulse-2.1.2}/docs/api/ErisPulse/__init__.md +33 -17
- {erispulse-2.1.1 → erispulse-2.1.2}/docs/api/ErisPulse/__main__.md +2 -2
- {erispulse-2.1.1 → erispulse-2.1.2}/pyproject.toml +1 -1
- {erispulse-2.1.1 → erispulse-2.1.2}/src/ErisPulse/Core/__init__.py +14 -0
- {erispulse-2.1.1 → erispulse-2.1.2}/src/ErisPulse/Core/adapter.py +28 -28
- {erispulse-2.1.1 → erispulse-2.1.2}/src/ErisPulse/Core/server.py +1 -1
- {erispulse-2.1.1 → erispulse-2.1.2}/src/ErisPulse/__init__.py +42 -18
- erispulse-2.1.1/docs/Development/Adapter.md +0 -193
- {erispulse-2.1.1 → erispulse-2.1.2}/.github/assets/erispulse_logo.png +0 -0
- {erispulse-2.1.1 → erispulse-2.1.2}/.github/tools/merge_md.py +0 -0
- {erispulse-2.1.1 → erispulse-2.1.2}/.github/tools/update-api-docs.py +0 -0
- {erispulse-2.1.1 → erispulse-2.1.2}/.github/workflows/auto-tag-release.yml +0 -0
- {erispulse-2.1.1 → erispulse-2.1.2}/.github/workflows/pypi-publish.yml +0 -0
- {erispulse-2.1.1 → erispulse-2.1.2}/.gitignore +0 -0
- {erispulse-2.1.1 → erispulse-2.1.2}/.python-version +0 -0
- {erispulse-2.1.1 → erispulse-2.1.2}/CODE_OF_CONDUCT.md +0 -0
- {erispulse-2.1.1 → erispulse-2.1.2}/LICENSE +0 -0
- {erispulse-2.1.1 → erispulse-2.1.2}/README.md +0 -0
- {erispulse-2.1.1 → erispulse-2.1.2}/devs/test.py +0 -0
- {erispulse-2.1.1 → erispulse-2.1.2}/devs/test_adapter.py +0 -0
- {erispulse-2.1.1 → erispulse-2.1.2}/devs/test_files/test.docx +0 -0
- {erispulse-2.1.1 → erispulse-2.1.2}/devs/test_files/test.jpg +0 -0
- {erispulse-2.1.1 → erispulse-2.1.2}/devs/test_files/test.mp4 +0 -0
- {erispulse-2.1.1 → erispulse-2.1.2}/docs/AI-Module-Generation.md +0 -0
- {erispulse-2.1.1 → erispulse-2.1.2}/docs/AdapterStandards/APIResponse.md +0 -0
- {erispulse-2.1.1 → erispulse-2.1.2}/docs/AdapterStandards/EventConversion.md +0 -0
- {erispulse-2.1.1 → erispulse-2.1.2}/docs/AdapterStandards/README.md +0 -0
- {erispulse-2.1.1 → erispulse-2.1.2}/docs/CLI.md +0 -0
- {erispulse-2.1.1 → erispulse-2.1.2}/docs/Development/Module.md +0 -0
- {erispulse-2.1.1 → erispulse-2.1.2}/docs/Development/README.md +0 -0
- {erispulse-2.1.1 → erispulse-2.1.2}/docs/PlatformFeatures.md +0 -0
- {erispulse-2.1.1 → erispulse-2.1.2}/docs/UseCore.md +0 -0
- {erispulse-2.1.1 → erispulse-2.1.2}/docs/api/README.md +0 -0
- {erispulse-2.1.1 → erispulse-2.1.2}/docs/quick-start.md +0 -0
- {erispulse-2.1.1 → erispulse-2.1.2}/examples/example-adapter/LICENSE +0 -0
- {erispulse-2.1.1 → erispulse-2.1.2}/examples/example-adapter/MyAdapter/Core.py +0 -0
- {erispulse-2.1.1 → erispulse-2.1.2}/examples/example-adapter/MyAdapter/__init__.py +0 -0
- {erispulse-2.1.1 → erispulse-2.1.2}/examples/example-adapter/README.md +0 -0
- {erispulse-2.1.1 → erispulse-2.1.2}/examples/example-adapter/pyproject.toml +0 -0
- {erispulse-2.1.1 → erispulse-2.1.2}/examples/example-module/LICENSE +0 -0
- {erispulse-2.1.1 → erispulse-2.1.2}/examples/example-module/MyModule/Core.py +0 -0
- {erispulse-2.1.1 → erispulse-2.1.2}/examples/example-module/MyModule/__init__.py +0 -0
- {erispulse-2.1.1 → erispulse-2.1.2}/examples/example-module/README.md +0 -0
- {erispulse-2.1.1 → erispulse-2.1.2}/examples/example-module/pyproject.toml +0 -0
- {erispulse-2.1.1 → erispulse-2.1.2}/scripts/install/install.ps1 +0 -0
- {erispulse-2.1.1 → erispulse-2.1.2}/scripts/install/install.sh +0 -0
- {erispulse-2.1.1 → erispulse-2.1.2}/src/ErisPulse/Core/env.py +0 -0
- {erispulse-2.1.1 → erispulse-2.1.2}/src/ErisPulse/Core/logger.py +0 -0
- {erispulse-2.1.1 → erispulse-2.1.2}/src/ErisPulse/Core/mods.py +0 -0
- {erispulse-2.1.1 → erispulse-2.1.2}/src/ErisPulse/Core/raiserr.py +0 -0
- {erispulse-2.1.1 → erispulse-2.1.2}/src/ErisPulse/Core/shellprint.py +0 -0
- {erispulse-2.1.1 → erispulse-2.1.2}/src/ErisPulse/Core/util.py +0 -0
- {erispulse-2.1.1 → erispulse-2.1.2}/src/ErisPulse/__main__.py +0 -0
- {erispulse-2.1.1 → erispulse-2.1.2}/style_guide/DOCSTRING_SPEC.md +0 -0
- {erispulse-2.1.1 → erispulse-2.1.2}/style_guide/README.md +0 -0
|
@@ -170,7 +170,8 @@ MyAdapter/
|
|
|
170
170
|
├── LICENSE
|
|
171
171
|
└── MyAdapter/
|
|
172
172
|
├── __init__.py
|
|
173
|
-
|
|
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): #
|
|
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
|
-
|
|
237
|
-
|
|
238
|
-
|
|
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
|
|
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
|
|
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
|
-
##### `
|
|
1219
|
+
##### `_initialize_modules`
|
|
973
1220
|
|
|
974
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
1945
|
+
*文档最后更新于 2025-07-17 16:39:14*
|
|
1932
1946
|
|
|
1933
1947
|
<!--- End of API文档 -->
|