vibego 0.2.35__py3-none-any.whl → 0.2.36__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.
bot.py CHANGED
@@ -534,68 +534,46 @@ def _unescape_markdown_v2(text: str) -> str:
534
534
  return re.sub(r"\\([_*\[\]()~`>#+=|{}.!:-])", r"\1", text)
535
535
 
536
536
 
537
- def _unescape_if_already_escaped(text: str) -> str:
538
- """智能检测并清理预转义文本,特别保护代码块。
539
-
540
- 改进的分段处理策略:
541
- 1. 先识别已转义的代码块(\`\`\`...\`\`\` 和 \`...\`)
542
- 2. 对这些代码块先反转义边界反引号,变成正常代码块
543
- 3. 然后用正常的 CODE_SEGMENT_RE 识别代码块
544
- 4. 只对非代码块的普通文本进行反转义
545
- 5. 代码块内容保持转义状态(因为是代码本身)
546
- 6. 重新组合所有段落
547
-
548
- Args:
549
- text: 待处理的文本
550
-
551
- Returns:
552
- 处理后的文本(如未检测到预转义,返回原文本)
553
- """
537
+ def _force_unescape_markdown(text: str) -> str:
538
+ """强制移除 MarkdownV2 转义,同时保护代码块语法不被破坏。"""
554
539
  if not text:
555
540
  return text
556
541
 
557
- # 快速检测:如果没有任何转义字符,直接返回
558
- if not _is_already_escaped(text):
559
- return text
560
-
561
- # 第一步:处理已转义的代码块,将边界反引号反转义
562
- # 这样后续可以用正常的 CODE_SEGMENT_RE 识别它们
563
542
  processed = text
564
-
565
- # 先标记所有已转义的代码块,用占位符替换
566
543
  code_blocks: list[str] = []
567
544
 
568
545
  def _preserve_code_block(match: re.Match[str]) -> str:
569
- """保存代码块并返回占位符"""
546
+ """临时替换代码块,防止内部字符被错误反转义。"""
570
547
  block = match.group(0)
571
- # 代码块边界的反引号需要反转义,但内容保持不变
572
- # 例如:\`\`\`bash\npython -m vibego\_cli\`\`\`
573
- # -> ```bash\npython -m vibego\_cli```
574
548
  if block.startswith(r"\`\`\`"):
575
- # 多行代码块
576
- unescaped_block = block.replace(r"\`", "`", 6) # 只替换前后各3个反引号
549
+ # 多行代码块保留内容,只修复边界反引号
550
+ unescaped_block = block.replace(r"\`", "`", 6)
577
551
  else:
578
- # 单行代码块
579
- unescaped_block = block.replace(r"\`", "`", 2) # 只替换前后各1个反引号
552
+ # 单行代码块同理处理首尾反引号
553
+ unescaped_block = block.replace(r"\`", "`", 2)
580
554
 
581
555
  placeholder = f"__CODE_BLOCK_{len(code_blocks)}__"
582
556
  code_blocks.append(unescaped_block)
583
557
  return placeholder
584
558
 
585
559
  processed = _ESCAPED_CODE_BLOCK_PATTERN.sub(_preserve_code_block, processed)
560
+ processed = _unescape_markdown_v2(processed)
586
561
 
587
- # 第二步:对非代码块部分进行反转义
588
- if _is_already_escaped(processed):
589
- processed = _unescape_markdown_v2(processed)
590
-
591
- # 第三步:恢复代码块
592
- for i, block in enumerate(code_blocks):
593
- placeholder = f"__CODE_BLOCK_{i}__"
594
- processed = processed.replace(placeholder, block)
562
+ for index, block in enumerate(code_blocks):
563
+ processed = processed.replace(f"__CODE_BLOCK_{index}__", block)
595
564
 
596
565
  return processed
597
566
 
598
567
 
568
+ def _unescape_if_already_escaped(text: str) -> str:
569
+ """智能检测并清理预转义文本,必要时触发强制反转义。"""
570
+ if not text:
571
+ return text
572
+ if not _is_already_escaped(text):
573
+ return text
574
+ return _force_unescape_markdown(text)
575
+
576
+
599
577
  def _prepare_model_payload(text: str) -> str:
600
578
  if _IS_MARKDOWN_V2:
601
579
  cleaned = _unescape_if_already_escaped(text)
@@ -695,7 +673,7 @@ async def _send_with_markdown_guard(
695
673
  raise
696
674
 
697
675
  # Markdown 彻底失败时退回纯文本发送,需要先清理 MarkdownV2 转义符号
698
- fallback_payload = _unescape_if_already_escaped(text)
676
+ fallback_payload = _force_unescape_markdown(text)
699
677
  if fallback_payload != text:
700
678
  worker_log.debug(
701
679
  "Markdown 降级为纯文本发送,已移除转义符号",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: vibego
3
- Version: 0.2.35
3
+ Version: 0.2.36
4
4
  Summary: vibego CLI:用于初始化与管理 Telegram Master Bot 的工具
5
5
  Author: Hypha
6
6
  License-Expression: LicenseRef-Proprietary
@@ -1,4 +1,4 @@
1
- bot.py,sha256=bp1j-Dyp6FLsRkwbnxnFixFyJefFM4noJcpH_WIjzHQ,271364
1
+ bot.py,sha256=jVPxYu3rUCFmypgJzgc8iy97zOXidhvCnlZNwFtkxv4,270454
2
2
  logging_setup.py,sha256=gvxHi8mUwK3IhXJrsGNTDo-DR6ngkyav1X-tvlBF_IE,4613
3
3
  master.py,sha256=ZW4A3Gh0MUKFnfZX-VJ7OCNnBzlEcOWkPKYH92OfyKA,112967
4
4
  project_repository.py,sha256=UcthtSGOJK0cTE5bQCneo3xkomRG-kyc1N1QVqxeHIs,17577
@@ -427,14 +427,14 @@ tasks/fsm.py,sha256=rKXXLEieQQU4r2z_CZUvn1_70FXiZXBBugF40gpe_tQ,1476
427
427
  tasks/models.py,sha256=N_qqRBo9xMSV0vbn4k6bLBXT8C_dp_oTFUxvdx16ZQM,2459
428
428
  tasks/service.py,sha256=w_S_aWiVqRXzXEpimLDsuCCCX2lB5uDkff9aKThBw9c,41916
429
429
  telegram_markdown/__init__.py,sha256=bG3H9fWn5GfTqC6xvd49xbVdYWfSFeaX2nefweOYcWY,9757
430
- vibego_cli/__init__.py,sha256=_5XgkMeh6CuhPHHa6ulRX3B_Ja_dtOgJp9oowplquDg,311
430
+ vibego_cli/__init__.py,sha256=p-CPmV5XSaL8LOoFcrAi-ds8pvLeygAon4JKakgK7MY,311
431
431
  vibego_cli/__main__.py,sha256=qqTrYmRRLe4361fMzbI3-CqpZ7AhTofIHmfp4ykrrBY,158
432
432
  vibego_cli/config.py,sha256=VxkPJMq01tA3h3cOkH-z_tiP7pMgfSGGicRvUnCWkhI,3054
433
433
  vibego_cli/deps.py,sha256=1nRXI7Dd-S1hYE8DligzK5fIluQWETRUj4_OKL0DikQ,1419
434
434
  vibego_cli/main.py,sha256=X__NXwZnIDIFbdKSTbNyZgZHKcPlN0DQz9sqTI1aQ9E,12158
435
435
  vibego_cli/data/worker_requirements.txt,sha256=QSt30DSSSHtfucTFPpc7twk9kLS5rVLNTcvDiagxrZg,62
436
- vibego-0.2.35.dist-info/METADATA,sha256=EuDdzAX4rdAXErzufZdXP8aW326sLBDDj4oAPj7NvjM,10519
437
- vibego-0.2.35.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
438
- vibego-0.2.35.dist-info/entry_points.txt,sha256=Lsy_zm-dlyxt8-9DL9blBReIwU2k22c8-kifr46ND1M,48
439
- vibego-0.2.35.dist-info/top_level.txt,sha256=rWDj9KERtbJL6Lar9Xa0O6dthaFSY_jc1WNpQgUrXCM,87
440
- vibego-0.2.35.dist-info/RECORD,,
436
+ vibego-0.2.36.dist-info/METADATA,sha256=MP9mOr2c7s7mckhdVFBeVeHx0MQH0VKuZqRPSFUoshE,10519
437
+ vibego-0.2.36.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
438
+ vibego-0.2.36.dist-info/entry_points.txt,sha256=Lsy_zm-dlyxt8-9DL9blBReIwU2k22c8-kifr46ND1M,48
439
+ vibego-0.2.36.dist-info/top_level.txt,sha256=rWDj9KERtbJL6Lar9Xa0O6dthaFSY_jc1WNpQgUrXCM,87
440
+ vibego-0.2.36.dist-info/RECORD,,
vibego_cli/__init__.py CHANGED
@@ -7,6 +7,6 @@ from __future__ import annotations
7
7
 
8
8
  __all__ = ["main", "__version__"]
9
9
 
10
- __version__ = "0.2.35"
10
+ __version__ = "0.2.36"
11
11
 
12
12
  from .main import main # noqa: E402