ErisPulse-OneBot11Adapter 4.3.0__tar.gz → 4.4.0__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_onebot11adapter-4.3.0 → erispulse_onebot11adapter-4.4.0}/ErisPulse_OneBot11Adapter.egg-info/PKG-INFO +1 -1
- {erispulse_onebot11adapter-4.3.0 → erispulse_onebot11adapter-4.4.0}/OneBotAdapter/Converter.py +2 -0
- {erispulse_onebot11adapter-4.3.0 → erispulse_onebot11adapter-4.4.0}/OneBotAdapter/Core.py +46 -1
- {erispulse_onebot11adapter-4.3.0 → erispulse_onebot11adapter-4.4.0}/PKG-INFO +1 -1
- {erispulse_onebot11adapter-4.3.0 → erispulse_onebot11adapter-4.4.0}/pyproject.toml +1 -1
- {erispulse_onebot11adapter-4.3.0 → erispulse_onebot11adapter-4.4.0}/ErisPulse_OneBot11Adapter.egg-info/SOURCES.txt +0 -0
- {erispulse_onebot11adapter-4.3.0 → erispulse_onebot11adapter-4.4.0}/ErisPulse_OneBot11Adapter.egg-info/dependency_links.txt +0 -0
- {erispulse_onebot11adapter-4.3.0 → erispulse_onebot11adapter-4.4.0}/ErisPulse_OneBot11Adapter.egg-info/entry_points.txt +0 -0
- {erispulse_onebot11adapter-4.3.0 → erispulse_onebot11adapter-4.4.0}/ErisPulse_OneBot11Adapter.egg-info/requires.txt +0 -0
- {erispulse_onebot11adapter-4.3.0 → erispulse_onebot11adapter-4.4.0}/ErisPulse_OneBot11Adapter.egg-info/top_level.txt +0 -0
- {erispulse_onebot11adapter-4.3.0 → erispulse_onebot11adapter-4.4.0}/LICENSE +0 -0
- {erispulse_onebot11adapter-4.3.0 → erispulse_onebot11adapter-4.4.0}/OneBotAdapter/__init__.py +0 -0
- {erispulse_onebot11adapter-4.3.0 → erispulse_onebot11adapter-4.4.0}/OneBotAdapter/i18n.py +0 -0
- {erispulse_onebot11adapter-4.3.0 → erispulse_onebot11adapter-4.4.0}/README.md +0 -0
- {erispulse_onebot11adapter-4.3.0 → erispulse_onebot11adapter-4.4.0}/setup.cfg +0 -0
- {erispulse_onebot11adapter-4.3.0 → erispulse_onebot11adapter-4.4.0}/test/test.py +0 -0
{erispulse_onebot11adapter-4.3.0 → erispulse_onebot11adapter-4.4.0}/OneBotAdapter/Converter.py
RENAMED
|
@@ -396,6 +396,8 @@ class OneBot11Converter(BaseConverter):
|
|
|
396
396
|
parts.append(f"[表情:{seg['data'].get('id', '')}]")
|
|
397
397
|
elif seg["type"] == "reply":
|
|
398
398
|
parts.append("[回复]")
|
|
399
|
+
elif seg["type"] == "onebot11_forward":
|
|
400
|
+
parts.append("[合并转发消息]")
|
|
399
401
|
elif seg["type"].startswith("onebot11_"):
|
|
400
402
|
parts.append(f"[{seg['type'][9:]}]")
|
|
401
403
|
return "".join(parts)
|
|
@@ -33,7 +33,7 @@ try:
|
|
|
33
33
|
except ImportError: # pragma: no cover
|
|
34
34
|
spawn_background = None
|
|
35
35
|
|
|
36
|
-
__version__ = "4.
|
|
36
|
+
__version__ = "4.4.0"
|
|
37
37
|
|
|
38
38
|
# 软依赖的框架最低版本(运行时检测,仅提示不强制)
|
|
39
39
|
MIN_FRAMEWORK_VERSION = (2, 7, 1)
|
|
@@ -438,6 +438,13 @@ class OneBotAdapter(BaseAdapter):
|
|
|
438
438
|
if isinstance(message, dict):
|
|
439
439
|
message = [message]
|
|
440
440
|
|
|
441
|
+
# 全部为 node 段 → 合并转发。NapCat 等实现会拒绝 send_msg 携带的 node 段
|
|
442
|
+
# (retcode 1400),必须走 send_group/private_forward_msg;不支持该端点的
|
|
443
|
+
# 实现返回 failed 后自动回退 send_msg 直发 node 段。
|
|
444
|
+
segments = [seg for seg in message if isinstance(seg, dict)]
|
|
445
|
+
if segments and all(str(seg.get("type")) == "node" for seg in segments):
|
|
446
|
+
return asyncio.create_task(self._do_send_forward(segments, **kwargs))
|
|
447
|
+
|
|
441
448
|
ob11_message = self._build_ob11_message(message)
|
|
442
449
|
|
|
443
450
|
async def _do_send():
|
|
@@ -453,6 +460,40 @@ class OneBotAdapter(BaseAdapter):
|
|
|
453
460
|
|
|
454
461
|
return asyncio.create_task(_do_send())
|
|
455
462
|
|
|
463
|
+
async def _do_send_forward(self, nodes, **kwargs):
|
|
464
|
+
forward_endpoint = (
|
|
465
|
+
"send_group_forward_msg" if self._target_type == "group" else "send_private_forward_msg"
|
|
466
|
+
)
|
|
467
|
+
target_params = (
|
|
468
|
+
{"group_id": int(self._target_id)} if self._target_type == "group" else {"user_id": int(self._target_id)}
|
|
469
|
+
)
|
|
470
|
+
try:
|
|
471
|
+
result = await self._adapter.call_api(
|
|
472
|
+
endpoint=forward_endpoint,
|
|
473
|
+
_account_id=self._account_id,
|
|
474
|
+
messages=nodes,
|
|
475
|
+
**target_params,
|
|
476
|
+
)
|
|
477
|
+
if not (isinstance(result, dict) and str(result.get("status") or "") == "failed"):
|
|
478
|
+
return result
|
|
479
|
+
except Exception:
|
|
480
|
+
pass
|
|
481
|
+
return await self._adapter.call_api(
|
|
482
|
+
endpoint="send_msg",
|
|
483
|
+
_account_id=self._account_id,
|
|
484
|
+
message_type="private" if self._target_type == "user" else "group",
|
|
485
|
+
user_id=int(self._target_id) if self._target_type == "user" else None,
|
|
486
|
+
group_id=int(self._target_id) if self._target_type == "group" else None,
|
|
487
|
+
message=nodes,
|
|
488
|
+
**kwargs,
|
|
489
|
+
)
|
|
490
|
+
|
|
491
|
+
def MergeForward(self, nodes):
|
|
492
|
+
if isinstance(nodes, dict):
|
|
493
|
+
nodes = [nodes]
|
|
494
|
+
segments = [seg for seg in nodes if isinstance(seg, dict)]
|
|
495
|
+
return asyncio.create_task(self._do_send_forward(segments))
|
|
496
|
+
|
|
456
497
|
def Recall(self, message_id: Union[str, int]):
|
|
457
498
|
"""撤回消息"""
|
|
458
499
|
return asyncio.create_task(
|
|
@@ -850,6 +891,10 @@ class OneBotAdapter(BaseAdapter):
|
|
|
850
891
|
account_name, account = self._resolve_account(_account_id)
|
|
851
892
|
# 吸收 ApiDSL._merge_context 传入的 account_id
|
|
852
893
|
params.pop("account_id", None)
|
|
894
|
+
# 剥离 None 参数——OneBot 11 约定缺省参数应省略而非传 null,
|
|
895
|
+
# OneBot实现的参数校验会拒绝 null 值(如私聊 send_msg 携带 group_id: null
|
|
896
|
+
# 报 retcode 1400 "expected a positive integer"),导致消息静默未送达
|
|
897
|
+
params = {key: value for key, value in params.items() if value is not None}
|
|
853
898
|
|
|
854
899
|
connection = self.connections.get(account_name)
|
|
855
900
|
if not connection:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{erispulse_onebot11adapter-4.3.0 → erispulse_onebot11adapter-4.4.0}/OneBotAdapter/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|