nonebot-plugin-dnddicer 0.2.1__tar.gz → 0.2.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 (210) hide show
  1. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/.gitattributes +7 -0
  2. nonebot_plugin_dnddicer-0.2.2/.github/workflows/docs.yml +75 -0
  3. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/.gitignore +5 -0
  4. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/CHANGELOG.md +24 -3
  5. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/PKG-INFO +26 -45
  6. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/README.md +24 -43
  7. nonebot_plugin_dnddicer-0.2.2/docs/.vitepress/config.mts +89 -0
  8. nonebot_plugin_dnddicer-0.2.2/docs/.vitepress/plugins/chat-container.mts +210 -0
  9. nonebot_plugin_dnddicer-0.2.2/docs/.vitepress/scripts/sync-changelog.mjs +35 -0
  10. nonebot_plugin_dnddicer-0.2.2/docs/.vitepress/theme/index.ts +7 -0
  11. nonebot_plugin_dnddicer-0.2.2/docs/.vitepress/theme/style.css +136 -0
  12. nonebot_plugin_dnddicer-0.2.2/docs/guide/battle.md +163 -0
  13. nonebot_plugin_dnddicer-0.2.2/docs/guide/cast.md +160 -0
  14. nonebot_plugin_dnddicer-0.2.2/docs/guide/changelog.md +90 -0
  15. nonebot_plugin_dnddicer-0.2.2/docs/guide/character-card.md +225 -0
  16. nonebot_plugin_dnddicer-0.2.2/docs/guide/checks.md +190 -0
  17. nonebot_plugin_dnddicer-0.2.2/docs/guide/dm-guide.md +330 -0
  18. nonebot_plugin_dnddicer-0.2.2/docs/guide/faq.md +149 -0
  19. nonebot_plugin_dnddicer-0.2.2/docs/guide/hp-rest.md +340 -0
  20. nonebot_plugin_dnddicer-0.2.2/docs/guide/initiative.md +221 -0
  21. nonebot_plugin_dnddicer-0.2.2/docs/guide/overview.md +142 -0
  22. nonebot_plugin_dnddicer-0.2.2/docs/guide/quickstart.md +147 -0
  23. nonebot_plugin_dnddicer-0.2.2/docs/guide/roll-advanced.md +215 -0
  24. nonebot_plugin_dnddicer-0.2.2/docs/guide/roll-basics.md +137 -0
  25. nonebot_plugin_dnddicer-0.2.2/docs/index.md +54 -0
  26. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/nonebot_plugin_dnddicer/__init__.py +5 -5
  27. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/nonebot_plugin_dnddicer/character/__init__.py +1 -1
  28. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/nonebot_plugin_dnddicer/character/constants.py +5 -6
  29. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/nonebot_plugin_dnddicer/character/models.py +3 -7
  30. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/nonebot_plugin_dnddicer/character/services.py +5 -5
  31. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/nonebot_plugin_dnddicer/commands/__init__.py +2 -2
  32. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/nonebot_plugin_dnddicer/commands/base.py +2 -3
  33. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/nonebot_plugin_dnddicer/commands/battle.py +6 -8
  34. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/nonebot_plugin_dnddicer/commands/character.py +16 -18
  35. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/nonebot_plugin_dnddicer/commands/dnd.py +18 -20
  36. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/nonebot_plugin_dnddicer/commands/group_config.py +1 -1
  37. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/nonebot_plugin_dnddicer/commands/hp.py +18 -23
  38. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/nonebot_plugin_dnddicer/commands/initiative.py +27 -26
  39. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/nonebot_plugin_dnddicer/commands/roll.py +8 -8
  40. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/nonebot_plugin_dnddicer/commands/roll_parse_args.py +1 -2
  41. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/nonebot_plugin_dnddicer/commands/text.py +22 -24
  42. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/nonebot_plugin_dnddicer/data/characters.py +1 -1
  43. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/nonebot_plugin_dnddicer/data/initiative.py +1 -2
  44. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/nonebot_plugin_dnddicer/data/npc_health.py +1 -2
  45. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/nonebot_plugin_dnddicer/data/service_state.py +1 -1
  46. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/nonebot_plugin_dnddicer/engine/__init__.py +3 -8
  47. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/nonebot_plugin_dnddicer/engine/roll/__init__.py +3 -5
  48. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/nonebot_plugin_dnddicer/engine/roll/_string_utils.py +3 -5
  49. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/nonebot_plugin_dnddicer/engine/roll/ast_engine/__init__.py +1 -3
  50. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/nonebot_plugin_dnddicer/engine/roll/ast_engine/adapter.py +2 -5
  51. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/nonebot_plugin_dnddicer/engine/roll/ast_engine/ast_nodes.py +1 -3
  52. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/nonebot_plugin_dnddicer/engine/roll/ast_engine/errors.py +1 -3
  53. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/nonebot_plugin_dnddicer/engine/roll/ast_engine/evaluator.py +11 -6
  54. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/nonebot_plugin_dnddicer/engine/roll/ast_engine/limits.py +1 -3
  55. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/nonebot_plugin_dnddicer/engine/roll/ast_engine/parser.py +1 -3
  56. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/nonebot_plugin_dnddicer/engine/roll/ast_engine/preprocessor.py +6 -7
  57. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/nonebot_plugin_dnddicer/engine/roll/ast_engine/trace.py +57 -11
  58. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/nonebot_plugin_dnddicer/engine/roll/default_dice.py +3 -5
  59. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/nonebot_plugin_dnddicer/engine/roll/karma_runtime.py +1 -3
  60. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/nonebot_plugin_dnddicer/engine/roll/result.py +1 -3
  61. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/nonebot_plugin_dnddicer/engine/roll/roll_config.py +1 -3
  62. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/nonebot_plugin_dnddicer/engine/roll/roll_const.py +1 -3
  63. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/nonebot_plugin_dnddicer/engine/roll/roll_utils.py +1 -3
  64. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/nonebot_plugin_dnddicer/engine/roll/sequence_runtime.py +2 -4
  65. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/nonebot_plugin_dnddicer/initiative/__init__.py +1 -1
  66. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/nonebot_plugin_dnddicer/initiative/models.py +6 -6
  67. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/nonebot_plugin_dnddicer/version.py +1 -1
  68. nonebot_plugin_dnddicer-0.2.2/package-lock.json +2561 -0
  69. nonebot_plugin_dnddicer-0.2.2/package.json +15 -0
  70. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/pyproject.toml +4 -4
  71. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/battle_adjust.txt +13 -0
  72. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/battle_aoe.txt +5 -0
  73. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/battle_cleanup.txt +8 -0
  74. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/battle_errors.txt +12 -0
  75. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/battle_guide_hit.txt +8 -0
  76. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/battle_open.txt +4 -0
  77. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/battle_reinforce.txt +18 -0
  78. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/battle_round1.txt +48 -0
  79. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/battle_shield.txt +5 -0
  80. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/battle_tower.txt +21 -0
  81. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/battle_zero_down.txt +8 -0
  82. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/cast_setup.txt +37 -0
  83. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/char_record_error.txt +15 -0
  84. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/char_template.txt +15 -0
  85. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/char_view_other.txt +22 -0
  86. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/char_view_self.txt +13 -0
  87. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/check_attr.txt +6 -0
  88. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/check_cancel.txt +10 -0
  89. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/check_crit_fail.txt +6 -0
  90. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/check_halfling_luck.txt +4 -0
  91. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/check_mention.txt +6 -0
  92. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/check_multi.txt +7 -0
  93. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/check_no_card.txt +4 -0
  94. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/check_save_bonus.txt +6 -0
  95. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/check_skill_expertise.txt +6 -0
  96. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/dm_aoe.txt +6 -0
  97. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/dm_dark_roll.txt +5 -0
  98. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/dm_dm_turn.txt +5 -0
  99. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/dm_group_save.txt +5 -0
  100. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/dm_init_first.txt +15 -0
  101. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/dm_next_battle.txt +12 -0
  102. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/dm_player_hp.txt +9 -0
  103. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/dm_player_r.txt +12 -0
  104. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/dm_prep.txt +30 -0
  105. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/dm_prep_miss.txt +5 -0
  106. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/dm_records.txt +13 -0
  107. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/dm_turn_push.txt +17 -0
  108. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/dnd_roll.txt +9 -0
  109. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/dndx_record.txt +18 -0
  110. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/faq_default_face.txt +4 -0
  111. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/faq_dset.txt +6 -0
  112. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/faq_dset_denied.txt +8 -0
  113. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/hp_cleanup.txt +20 -0
  114. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/hp_expr_paren.txt +11 -0
  115. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/hp_resist_forms.txt +11 -0
  116. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/hp_set.txt +7 -0
  117. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/hp_target_search.txt +15 -0
  118. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/init_batch_shared.txt +6 -0
  119. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/init_batch_split.txt +5 -0
  120. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/init_check_link.txt +6 -0
  121. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/init_del_ambiguous.txt +8 -0
  122. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/init_dup_roll.txt +7 -0
  123. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/init_first.txt +4 -0
  124. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/init_mention_roll.txt +4 -0
  125. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/init_name_roll.txt +12 -0
  126. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/init_npc_fixed.txt +4 -0
  127. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/init_player_roll.txt +6 -0
  128. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/init_swap.txt +4 -0
  129. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/init_view.txt +13 -0
  130. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/init_view_final.txt +12 -0
  131. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/npc_persist.txt +4 -0
  132. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/npc_refill_next.txt +18 -0
  133. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/overview_name_chain.txt +14 -0
  134. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/quickstart_bot_info.txt +7 -0
  135. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/quickstart_bot_off.txt +4 -0
  136. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/quickstart_bot_on.txt +4 -0
  137. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/quickstart_first_roll.txt +6 -0
  138. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/quickstart_private_limits.txt +4 -0
  139. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/rest_after.txt +10 -0
  140. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/roll_adv_adv.txt +4 -0
  141. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/roll_adv_dark.txt +5 -0
  142. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/roll_adv_dis.txt +4 -0
  143. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/roll_adv_keep.txt +6 -0
  144. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/roll_adv_modifiers.txt +16 -0
  145. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/roll_adv_multi.txt +7 -0
  146. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/roll_adv_order_error.txt +6 -0
  147. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/roll_adv_reason.txt +6 -0
  148. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/roll_adv_resist.txt +6 -0
  149. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/roll_adv_short.txt +6 -0
  150. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/roll_adv_summary.txt +6 -0
  151. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/roll_adv_unimpl.txt +6 -0
  152. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/roll_basics_basic.txt +6 -0
  153. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/roll_basics_crit_1.txt +4 -0
  154. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/roll_basics_crit_20.txt +6 -0
  155. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/roll_basics_math.txt +6 -0
  156. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/roll_basics_plain_d.txt +6 -0
  157. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/roll_basics_space_error.txt +6 -0
  158. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/cast.py +145 -0
  159. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/harness.py +269 -0
  160. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/scenarios.py +993 -0
  161. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/test_docs_sync.py +123 -0
  162. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/test_examples_run.py +44 -0
  163. nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/transcript.py +81 -0
  164. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/tests/engine/test_ast_error_semantics.py +2 -2
  165. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/tests/engine/test_ast_integration.py +85 -3
  166. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/tests/test_character_command.py +27 -1
  167. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/tests/test_character_services.py +1 -1
  168. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/tests/test_dnd_command.py +3 -3
  169. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/tests/test_hp_command.py +2 -2
  170. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/tests/test_initiative_command.py +1 -1
  171. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/tests/test_npc_health.py +6 -6
  172. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/tests/test_roll_command.py +39 -2
  173. nonebot_plugin_dnddicer-0.2.1/docs/guide/attributes.md +0 -98
  174. nonebot_plugin_dnddicer-0.2.1/docs/guide/battle.md +0 -120
  175. nonebot_plugin_dnddicer-0.2.1/docs/guide/character-card.md +0 -229
  176. nonebot_plugin_dnddicer-0.2.1/docs/guide/faq.md +0 -106
  177. nonebot_plugin_dnddicer-0.2.1/docs/guide/hp-rest.md +0 -288
  178. nonebot_plugin_dnddicer-0.2.1/docs/guide/initiative.md +0 -161
  179. nonebot_plugin_dnddicer-0.2.1/docs/guide/quickstart.md +0 -140
  180. nonebot_plugin_dnddicer-0.2.1/docs/guide/roll-syntax.md +0 -183
  181. nonebot_plugin_dnddicer-0.2.1/docs/index.md +0 -134
  182. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/.github/workflows/release.yml +0 -0
  183. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/.github/workflows/test.yml +0 -0
  184. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/.python-version +0 -0
  185. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/LICENSE +0 -0
  186. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/nonebot_plugin_dnddicer/commands/bot.py +0 -0
  187. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/nonebot_plugin_dnddicer/commands/help.py +0 -0
  188. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/nonebot_plugin_dnddicer/commands/npc.py +0 -0
  189. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/nonebot_plugin_dnddicer/config.py +0 -0
  190. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/nonebot_plugin_dnddicer/data/__init__.py +0 -0
  191. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/nonebot_plugin_dnddicer/data/group_config.py +0 -0
  192. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/nonebot_plugin_dnddicer/data/schema.py +0 -0
  193. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/nonebot_plugin_dnddicer/platform/__init__.py +0 -0
  194. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/nonebot_plugin_dnddicer/platform/onebot_v11.py +0 -0
  195. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/tests/conftest.py +0 -0
  196. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/tests/engine/test_ast_evaluator.py +0 -0
  197. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/tests/engine/test_ast_parser.py +0 -0
  198. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/tests/engine/test_ast_trace_errors_limits.py +0 -0
  199. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/tests/engine/test_default_ast_path.py +0 -0
  200. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/tests/fake_event.py +0 -0
  201. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/tests/test_battle_command.py +0 -0
  202. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/tests/test_bot_command.py +0 -0
  203. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/tests/test_command_mentions.py +0 -0
  204. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/tests/test_command_starts.py +0 -0
  205. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/tests/test_data_schema.py +0 -0
  206. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/tests/test_dset_command.py +0 -0
  207. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/tests/test_error_fallback.py +0 -0
  208. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/tests/test_help_command.py +0 -0
  209. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/tests/test_plugin.py +0 -0
  210. {nonebot_plugin_dnddicer-0.2.1 → nonebot_plugin_dnddicer-0.2.2}/uv.lock +0 -0
@@ -12,6 +12,13 @@
12
12
  *.lock text eol=lf
13
13
  *.gitignore text eol=lf
14
14
  *.gitattributes text eol=lf
15
+ # 文档站(VitePress)前端文件
16
+ *.mts text eol=lf
17
+ *.ts text eol=lf
18
+ *.js text eol=lf
19
+ *.mjs text eol=lf
20
+ *.css text eol=lf
21
+ *.vue text eol=lf
15
22
 
16
23
  # 二进制文件不转换
17
24
  *.png binary
@@ -0,0 +1,75 @@
1
+ # 文档站部署(GitHub Pages)
2
+ #
3
+ # 触发时机 = 发布时机:只有推 v* 标签(发版)或手动触发时才构建并部署。
4
+ # 平时往 main 推送的文档改动只留在仓库里,不会改变线上页面——
5
+ # 需要让某个改动上线时,要么随下一次发版,要么在 Actions 里手动运行本工作流。
6
+ #
7
+ # 首次使用:仓库 Settings → Pages → Source 选「GitHub Actions」。
8
+ # 未启用前本工作流会自动跳过(保持绿色),启用后无需再改任何配置。
9
+ name: docs
10
+
11
+ on:
12
+ push:
13
+ tags:
14
+ - "v*"
15
+ workflow_dispatch:
16
+
17
+ permissions:
18
+ contents: read
19
+ pages: write
20
+ id-token: write
21
+
22
+ concurrency:
23
+ group: pages
24
+ cancel-in-progress: false
25
+
26
+ jobs:
27
+ check:
28
+ runs-on: ubuntu-latest
29
+ outputs:
30
+ enabled: ${{ steps.pages.outputs.enabled }}
31
+ steps:
32
+ - name: 检查 Pages 是否已启用
33
+ id: pages
34
+ env:
35
+ GH_TOKEN: ${{ github.token }}
36
+ run: |
37
+ if gh api "repos/$GITHUB_REPOSITORY/pages" > /dev/null 2>&1; then
38
+ echo "enabled=true" >> "$GITHUB_OUTPUT"
39
+ echo "Pages 已启用,继续构建与部署。"
40
+ else
41
+ echo "enabled=false" >> "$GITHUB_OUTPUT"
42
+ echo "::notice title=文档站尚未启用::仓库 Settings → Pages 还没把 Source 选为 GitHub Actions,跳过本次部署;启用后手动运行本工作流、或等下一次发版即可。"
43
+ fi
44
+
45
+ build:
46
+ needs: check
47
+ if: needs.check.outputs.enabled == 'true'
48
+ runs-on: ubuntu-latest
49
+ steps:
50
+ - uses: actions/checkout@v4
51
+ - uses: actions/setup-node@v4
52
+ with:
53
+ node-version: 22
54
+ cache: npm
55
+ cache-dependency-path: package-lock.json
56
+ - name: 安装文档站依赖
57
+ run: npm ci
58
+ # docs:build 自带「从 CHANGELOG.md 生成《更新日志》页」一步,站点更新日志随仓库同步
59
+ - name: 构建文档站
60
+ run: npm run docs:build
61
+ - uses: actions/configure-pages@v5
62
+ - uses: actions/upload-pages-artifact@v3
63
+ with:
64
+ path: docs/.vitepress/dist
65
+
66
+ deploy:
67
+ needs: build
68
+ runs-on: ubuntu-latest
69
+ environment:
70
+ name: github-pages
71
+ url: ${{ steps.deployment.outputs.page_url }}
72
+ steps:
73
+ - name: 部署到 GitHub Pages
74
+ id: deployment
75
+ uses: actions/deploy-pages@v4
@@ -42,3 +42,8 @@ Thumbs.db
42
42
 
43
43
  # ---- 发布流程临时产物(release workflow 提取的 Release 正文;本地试跑同名脚本时也会生成)----
44
44
  .release-notes.md
45
+
46
+ # ---- 文档站(VitePress,仅构建文档用,不进发布产物)----
47
+ node_modules/
48
+ docs/.vitepress/dist/
49
+ docs/.vitepress/cache/
@@ -1,8 +1,29 @@
1
1
  # 更新日志
2
2
 
3
- 本文件按版本记录对外变化,分「新增 / 变更 / 修复 / 文档」四组,表述面向使用者(跑团玩家与 DM)。条目一律一条目一整行、不做软换行——本文件小节的正文会原样成为 GitHub Release 正文,而 Release 页面按「issue 式」渲染,单个换行会被渲染为真实换行。
3
+ 本文件按版本记录对外变化,分「新增 / 变更 / 修复 / 文档」四组,表述面向使用者(跑团玩家与 DM)。
4
4
 
5
- 发布时 `.github/workflows/release.yml` 会把**与所推标签同名的版本小节**(下方 `## [x.y.z] - 日期` 标题)提取为 GitHub Release 的说明正文——因此**打 `v*` 标签前,请先在下方补好该版本的小节**,否则发布流程会在构建前直接失败。
5
+ <!-- 维护说明(渲染时不可见):
6
+
7
+ - 条目一律一条目一整行、不做软换行:本文件小节的正文会原样成为 GitHub Release 正文,而 Release 页面按「issue 式」渲染,单个换行会被渲染为真实换行。
8
+ - 打 `v*` 标签前,请先在下方补好该版本的小节(标题格式 `## [x.y.z] - 日期`):发布时 `.github/workflows/release.yml` 会提取与所推标签同名的小节作为 GitHub Release 的说明正文,缺小节即会在构建前直接失败。
9
+ -->
10
+
11
+ ## [0.2.2] - 2026-09-24
12
+
13
+ ### 变更
14
+
15
+ - **定位表述统一**:`.bot` 插件简介与插件元数据描述更新为「功能最全面、体验最好的 DND 骰娘」口径,清理旧的对齐式表述(掷骰引擎上游来源的致谢仅保留在许可位置)。
16
+
17
+ ### 修复
18
+
19
+ - **掷骰说明文字按四则运算还原**:修复算式说明里常量复合子表达式与一元负号的错位——如 `.rd6+2*2` 旧显示为 `1D6+2*2=[4]*2+4=8`(乘号挪用了骰块)、`-1d6+3` 丢负号、`12/(1+2)`、`3*d6` 同类错显;说明文字现与表达式结构一一对应,骰子结果与取骰规则不变。
20
+ - **私聊下的群聊限定命令不再静默**:角色卡、检定/豁免/攻击点、HP、先攻与战斗轮等按群归属的命令在私聊中发送时,会如常收到「该指令仅在群聊中可用。」提示(此前部分命令族没有回应)。
21
+ - **`.bot` 私聊回应文案修正**:不再写「私聊可直接使用本插件的全部功能」,改为如实说明私聊可用范围(掷骰、属性生成、`.帮助` 等可用;角色卡、检定、HP、先攻与战斗轮、群配置等仅限群聊)。
22
+
23
+ ### 文档
24
+
25
+ - **使用文档站上线**:手册式 15 页(快速开始、三章教程、参考组、更新日志),配固定示例团的真实取证示例;推 `v*` 标签时自动构建并部署到 GitHub Pages。
26
+ - README 改为手册式目录并挂文档站入口;全站正文统一骰记法(D20 等)与命令示例的最简写法。
6
27
 
7
28
  ## [0.2.1] - 2026-09-22
8
29
 
@@ -54,7 +75,7 @@
54
75
 
55
76
  ### 新增
56
77
 
57
- - **掷骰**:`.r` / `.rh`——优势/劣势、保留最高、重掷、爆炸骰、连掷、暗骰、原因后缀、群默认骰面;仅 d20 出目 20/1 播报大成功/大失败。
78
+ - **掷骰**:`.r` / `.rh`——优势/劣势、保留最高、重掷、爆炸骰、连掷、暗骰、原因后缀、群默认骰面;仅 D20 出目 20/1 播报大成功/大失败。
58
79
  - **角色卡与检定**:`.角色卡` / `.状态`(`$…$` 模板建卡,`.角色卡模板` 输出模板);检定/豁免/攻击点命令自动代入调整值、熟练与额外加值。
59
80
  - **属性生成**:`.dnd`(4D6K3 掷点)。
60
81
  - **HP 管理与长休**:`.hp`(查看 / 结算 / 列表 / 删除)、抗性/易伤与 AOE 伤害掷骰、`.长休`。
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: nonebot-plugin-dnddicer
3
- Version: 0.2.1
4
- Summary: 专精 DND5e/5r 跑团的 NoneBot2 骰娘插件(屠龙骰):掷骰表达式、角色卡与检定、属性生成、HP 管理、先攻列表、战斗轮等,命令手感对齐 nonebot-dicepp
3
+ Version: 0.2.2
4
+ Summary: 专精 DND5e/5r 跑团的 NoneBot2 骰娘插件(屠龙骰):掷骰表达式、角色卡与检定、属性生成、HP 管理、先攻列表、战斗轮等
5
5
  Project-URL: Homepage, https://github.com/H-Elden/nonebot-plugin-dnddicer
6
6
  Project-URL: Issues, https://github.com/H-Elden/nonebot-plugin-dnddicer/issues
7
7
  Project-URL: Repository, https://github.com/H-Elden/nonebot-plugin-dnddicer.git
@@ -30,32 +30,28 @@ Description-Content-Type: text/markdown
30
30
 
31
31
  # 屠龙骰(DNDDicer / nonebot-plugin-dnddicer)
32
32
 
33
- > 专精 **DND5e / DND5r** 跑团的 [NoneBot2](https://nonebot.dev/) 骰娘插件(OneBot V11 适配器),
34
- > 命令手感对齐 [nonebot-dicepp](https://github.com/pear-studio/nonebot-dicepp)(梨骰)。
33
+ > 专精 **DND5e / DND5r** 跑团的 [NoneBot2](https://nonebot.dev/) 骰娘插件(OneBot V11 适配器),致力于做功能最全面、体验最好的 DND 骰娘。
35
34
  >
36
- > 当前版本:**v0.2.1** · 完整使用手册见 **📖 [使用文档](./docs/index.md)**
35
+ > 当前版本:**v0.2.2** · 完整使用手册见 **📖 [使用文档](https://h-elden.github.io/nonebot-plugin-dnddicer/)**
37
36
 
38
37
  ## ✨ 简介
39
38
 
40
- DNDDicer 的目标是填补「NoneBot 商店中缺少 **DND5e/5r 专业 + 现代维护 + 插件形态** 骰娘」的空位:
41
- 以 DicePP 掷骰引擎与命令手感为基准,做独立的、零配置可加载的 NoneBot 插件,供任何已有
42
- 机器人从商店安装即用。
39
+ DNDDicer 的目标是填补「NoneBot 商店中缺少 **DND5e/5r 专业 + 现代维护 + 插件形态** 骰娘」的空位:围绕 DND 跑团全流程持续做深做全,致力于提供功能最全面、体验最好的 DND 骰娘,零配置可加载,供任何已有机器人从商店安装即用。
43
40
 
44
- - **掷骰引擎**:移植 nonebot-dicepp 的 AST 表达式引擎(Lark 文法),支持 `2d20kh1`、
45
- 优势/劣势、爆炸骰、连掷、暗骰等 DicePP 完整语法面;
46
- - **跑团全流程**:掷骰 → `.dnd` 属性生成 → 角色卡与检定/豁免/攻击点命令 → HP 管理
47
- (伤害掷骰、抗性/易伤、AOE 多目标结算、长休)→ 先攻列表与战斗轮;
48
- - **规则范围**:仅 DND5e/5r——专精 DND 定位,不做 COC/d100 体系与 `.mode` 模式切换;
41
+ - **掷骰引擎**:内置 AST 表达式引擎(Lark 文法),支持 `2d20kh1`、优势/劣势、爆炸骰、连掷、暗骰等完整掷骰语法;
42
+ - **跑团全流程**:掷骰 → `.dnd` 属性生成 → 角色卡与检定/豁免/攻击点命令 → HP 管理(伤害掷骰、抗性/易伤、AOE 多目标结算、长休)→ 先攻列表与战斗轮;
43
+ - **规则范围**:仅 DND5e/5r——专精 DND 定位,不做 COC/D100 体系与 `.mode` 模式切换;
49
44
  - **商店合规**:零配置可加载、本地存储走 `nonebot-plugin-localstore`、元数据完整、全程异步。
50
45
 
51
46
  ## 📖 使用文档
52
47
 
53
- 详细用法、输入/输出示例与常见问题见仓库 `docs/` 使用文档:
48
+ 详细用法、输入/输出示例与常见问题见使用文档(手册式分章,含跑团示例;**在线版**:<https://h-elden.github.io/nonebot-plugin-dnddicer/>,源文件在仓库 `docs/`):
54
49
 
55
- - [命令总表与快速开始](./docs/index.md) · [群管理与 FAQ](./docs/guide/faq.md)
56
- - [掷骰语法](./docs/guide/roll-syntax.md) · [角色卡与检定](./docs/guide/character-card.md)
57
- - [属性生成](./docs/guide/attributes.md) · [HP 管理](./docs/guide/hp-rest.md)
58
- - [先攻列表](./docs/guide/initiative.md) · [战斗轮](./docs/guide/battle.md)
50
+ - 开始:[快速开始](./docs/guide/quickstart.md) · [示例团与人物](./docs/guide/cast.md)
51
+ - 第一章 · 基础操作:[掷骰基础](./docs/guide/roll-basics.md) · [掷骰进阶](./docs/guide/roll-advanced.md) · [先攻列表](./docs/guide/initiative.md)
52
+ - 第二章 · 进阶操作:[角色卡与属性](./docs/guide/character-card.md) · [检定与豁免](./docs/guide/checks.md) · [HP 与长休](./docs/guide/hp-rest.md) · [战斗轮](./docs/guide/battle.md)
53
+ - 第三章 · DM 操作:[DM 实战指南](./docs/guide/dm-guide.md)
54
+ - 参考 · [命令总览](./docs/guide/overview.md) · [群管理与 FAQ](./docs/guide/faq.md)
59
55
 
60
56
  ## 📦 安装
61
57
 
@@ -85,29 +81,21 @@ plugins = ["nonebot_plugin_dnddicer"]
85
81
  | 配置项 | 类型 | 默认值 | 说明 |
86
82
  | --- | --- | --- | --- |
87
83
  | `dnddicer_command_priority` | `int` | `10` | 命令事件响应器基础优先级(越小越优先),与其他插件冲突时按需调整 |
88
- | `dnddicer_default_face` | `int` | `20` | 全局默认骰面(DND 惯例 d20;已配置 `.dset` 的群以群配置为准,此项作兜底) |
84
+ | `dnddicer_default_face` | `int` | `20` | 全局默认骰面(DND 惯例 D20;已配置 `.dset` 的群以群配置为准,此项作兜底) |
89
85
  | `dnddicer_enabled` | `bool` | `true` | 功能总开关,`false` 时只加载骨架、不注册命令 |
90
86
  | `dnddicer_use_host_command_starts` | `bool` | `false` | 是否兼容宿主 `COMMAND_START` 起始符(NoneBot 默认 `/`,开启后 `/.help` 等亦可触发)。默认只匹配 `.` / `。`,避免 `/help`、`/bot` 等常见单词命令与其他插件同时命中(冲突) |
91
87
 
92
88
  ## 🎲 用法
93
89
 
94
- > 命令以 `.`(或全角 `。`)开头,中英文别名对齐 DicePP;命令起始符默认仅 `.` / `。`,
95
- > 如需用宿主斜杠 `/` 等起始符触发(如 `/.help`),请设置配置项 `dnddicer_use_host_command_starts=true`。
96
- > **群聊服务默认关闭(白名单)**:需群主/管理员发送 `.bot on` 开启本群服务;`.bot off`
97
- > 关闭后本群不再响应命令(`.bot` 本身不受影响)。群聊中使用 `.bot` 需先 @ 本机器人;
98
- > 私聊不受服务开关限制,可直接使用全部功能。
90
+ > 命令以 `.`(或全角 `。`)开头;命令起始符默认仅 `.` / `。`,如需用宿主斜杠 `/` 等起始符触发(如 `/.help`),请设置配置项 `dnddicer_use_host_command_starts=true`。**群聊服务默认关闭(白名单)**:需群主/管理员发送 `.bot on` 开启本群服务;`.bot off` 关闭后本群不再响应命令(`.bot` 本身不受影响)。群聊中使用 `.bot` 需先 @ 本机器人;私聊不受服务开关限制,但可用命令更少——角色卡、检定、HP、先攻等仅限群聊(差异见[快速开始](./docs/guide/quickstart.md))。
99
91
  >
100
- > **DM 代操作(@ 提及目标)**:多数带目标的命令支持用 **@群成员** 指定目标——直连该成员
101
- > 在本群的角色卡,不受同名 NPC/改名影响,且可与名称混写(`.hp @玩家 -4d6`、
102
- > `.hp @玩家;地精 -d4`、`.ri+3 @玩家`、`.init del @玩家`、`.回合 @玩家`、
103
- > `.角色卡 @玩家`、`.力量豁免 @玩家`、`.先攻检定 @玩家` 等)。详见
104
- > [使用文档](./docs/index.md#-提及目标dm-代操作)。
92
+ > **DM 代操作(@ 提及目标)**:多数带目标的命令支持用 **@群成员** 指定目标——直连该成员在本群的角色卡,不受同名 NPC/改名影响,且可与名称混写(`.hp @玩家 -4d6`、`.hp @玩家;地精 -d4`、`.ri+3 @玩家`、`.init del @玩家`、`.回合 @玩家`、`.角色卡 @玩家`、`.力量豁免 @玩家`、`.先攻检定 @玩家` 等)。详见 [命令总览 - @ 提及目标](./docs/guide/overview.md#-提及目标dm-代操作)。
105
93
 
106
94
  ### 🎲 掷骰(群聊 / 私聊)
107
95
 
108
96
  | 命令 | 说明 |
109
97
  | --- | --- |
110
- | `.r [N#][hs][表达式] [原因]` | 掷骰表达式(`#` 连掷 1~10、`h` 暗骰、`s` 只显数值;仅 d20 有大成功/大失败播报) |
98
+ | `.r [N#][hs][表达式] [原因]` | 掷骰表达式(`#` 连掷 1~10、`h` 暗骰、`s` 只显数值;仅 D20 有大成功/大失败播报) |
111
99
  | `.rh [表达式] [原因]` | 暗骰(群内提示、结果私聊) |
112
100
 
113
101
  ### 📋 角色卡与检定(群聊)
@@ -162,22 +150,16 @@ plugins = ["nonebot_plugin_dnddicer"]
162
150
  | `.bot [on/off]` | 插件信息查询 / 本群服务开关(群主/管理员,需 @) |
163
151
  | `.帮助` / `.help [命令]` | 命令总览 / 指定命令详细用法(如 `.help r`) |
164
152
 
165
- > 一期范围外功能会**显式提示而非静默**:`.r exp` 期望值采样、`.r a/n` 特殊判定;
166
- > 牌堆/随机表与规则查询(T2)、法术位/死亡豁免/BUFF 表(T3 候选)见下方路线。
153
+ > 一期范围外功能会**显式提示而非静默**:`.r exp` 期望值采样、`.r a/n` 特殊判定;牌堆/随机表与规则查询(T2)、法术位/死亡豁免/BUFF 表(T3 候选)见下方路线。
167
154
 
168
155
  ## 📄 版本与路线
169
156
 
170
- 1. ✅ **v0.1.0**(第一期 = T0 + T1 + 战斗轮简化版 + `.bot` 服务开关):掷骰引擎移植、`.r/.rh`、
171
- 帮助、群配置(`.dset`)、角色卡与检定/豁免/攻击、`.dnd` 属性生成、HP 管理与长休
172
- (含抗性/易伤与 AOE 伤害掷骰)、先攻列表、战斗轮——全部落地,全量测试通过;
173
- 2. ✅ **v0.2.0**:HP 抗性/易伤与 AOE 掷骰完善、`.dnd 原因` 兼容修复、
174
- **NPC/怪物血量**(三层目标搜索、先攻列表与 `.hp list` 联动、`.ri` 入表自动回满、
175
- `.npc 持久/临时` 跨战斗保持)、`.dndx` 属性名绑定掷点;
176
- 3. ✅ **v0.2.1**:**@ 提及目标**(DM 可代玩家操作 `.hp`/`.npc`/`.ri`/`.回合` 等、查看角色卡)、
177
- 玩家名称显示统一回退链、`.hp del/clr` 语义修订(仅作用 NPC 血量)、
178
- 优势/劣势别名粘连等真机反馈修复;
179
- 4. ⏳ **第二期 T2**:牌堆/随机表、规则查询;
180
- 5. ⏳(可选)**T3 增强期**:法术位管理(`.ss/.cast`)、死亡豁免闭环(`.ds`)、BUFF/临时加值表(`.buff`)等。
157
+ 1. ✅ **v0.1.0**(第一期 = T0 + T1 + 战斗轮简化版 + `.bot` 服务开关):掷骰引擎移植、`.r/.rh`、帮助、群配置(`.dset`)、角色卡与检定/豁免/攻击、`.dnd` 属性生成、HP 管理与长休(含抗性/易伤与 AOE 伤害掷骰)、先攻列表、战斗轮——全部落地,全量测试通过;
158
+ 2. ✅ **v0.2.0**:HP 抗性/易伤与 AOE 掷骰完善、`.dnd 原因` 兼容修复、**NPC/怪物血量**(三层目标搜索、先攻列表与 `.hp list` 联动、`.ri` 入表自动回满、`.npc 持久/临时` 跨战斗保持)、`.dndx` 属性名绑定掷点;
159
+ 3. ✅ **v0.2.1**:**@ 提及目标**(DM 可代玩家操作 `.hp`/`.npc`/`.ri`/`.回合` 等、查看角色卡)、玩家名称显示统一回退链、`.hp del/clr` 语义修订(仅作用 NPC 血量)、优势/劣势别名粘连等真机反馈修复;
160
+ 4. ✅ **v0.2.2**:掷骰说明文字按四则运算还原(常量复合子表达式与一元负号)、私聊下的群聊限定命令不再静默与 `.bot` 私聊文案修正;**使用文档站上线**(手册式 15 页,随发版自动部署);
161
+ 5. ⏳ **第二期 T2**:牌堆/随机表、规则查询;
162
+ 6. ⏳(可选)**T3 增强期**:法术位管理(`.ss/.cast`)、死亡豁免闭环(`.ds`)、BUFF/临时加值表(`.buff`)等。
181
163
 
182
164
  每版完整变更(新增 / 变更 / 修复 / 文档)见 [CHANGELOG.md](./CHANGELOG.md)。
183
165
 
@@ -194,7 +176,6 @@ uv run pytest
194
176
  ## 🤝 许可与致谢
195
177
 
196
178
  - 本项目(业务层与工程骨架)以 **MIT License** 发布,见 [LICENSE](./LICENSE)。
197
- - **掷骰引擎与命令语法移植自 [nonebot-dicepp](https://github.com/pear-studio/nonebot-dicepp)**
198
- (Copyright (c) 2022 pear-studio,MIT License):相关文件头保留上游版权声明与 MIT 许可全文,来源按 MIT 要求在 LICENSE 中注明。
179
+ - **掷骰引擎移植自 [nonebot-dicepp](https://github.com/pear-studio/nonebot-dicepp)**(Copyright (c) 2022 pear-studio,MIT License):引擎文件头保留上游版权声明,MIT 许可全文见 [LICENSE](./LICENSE)。
199
180
  - 规则查询类资料内容**不随插件分发**(版权归原权利方/译者),需要时由使用者自行提供。
200
181
  - 本项目与 nonebot-dicepp 无隶属关系,为独立命名的衍生/移植作品。
@@ -1,31 +1,27 @@
1
1
  # 屠龙骰(DNDDicer / nonebot-plugin-dnddicer)
2
2
 
3
- > 专精 **DND5e / DND5r** 跑团的 [NoneBot2](https://nonebot.dev/) 骰娘插件(OneBot V11 适配器),
4
- > 命令手感对齐 [nonebot-dicepp](https://github.com/pear-studio/nonebot-dicepp)(梨骰)。
3
+ > 专精 **DND5e / DND5r** 跑团的 [NoneBot2](https://nonebot.dev/) 骰娘插件(OneBot V11 适配器),致力于做功能最全面、体验最好的 DND 骰娘。
5
4
  >
6
- > 当前版本:**v0.2.1** · 完整使用手册见 **📖 [使用文档](./docs/index.md)**
5
+ > 当前版本:**v0.2.2** · 完整使用手册见 **📖 [使用文档](https://h-elden.github.io/nonebot-plugin-dnddicer/)**
7
6
 
8
7
  ## ✨ 简介
9
8
 
10
- DNDDicer 的目标是填补「NoneBot 商店中缺少 **DND5e/5r 专业 + 现代维护 + 插件形态** 骰娘」的空位:
11
- 以 DicePP 掷骰引擎与命令手感为基准,做独立的、零配置可加载的 NoneBot 插件,供任何已有
12
- 机器人从商店安装即用。
9
+ DNDDicer 的目标是填补「NoneBot 商店中缺少 **DND5e/5r 专业 + 现代维护 + 插件形态** 骰娘」的空位:围绕 DND 跑团全流程持续做深做全,致力于提供功能最全面、体验最好的 DND 骰娘,零配置可加载,供任何已有机器人从商店安装即用。
13
10
 
14
- - **掷骰引擎**:移植 nonebot-dicepp 的 AST 表达式引擎(Lark 文法),支持 `2d20kh1`、
15
- 优势/劣势、爆炸骰、连掷、暗骰等 DicePP 完整语法面;
16
- - **跑团全流程**:掷骰 → `.dnd` 属性生成 → 角色卡与检定/豁免/攻击点命令 → HP 管理
17
- (伤害掷骰、抗性/易伤、AOE 多目标结算、长休)→ 先攻列表与战斗轮;
18
- - **规则范围**:仅 DND5e/5r——专精 DND 定位,不做 COC/d100 体系与 `.mode` 模式切换;
11
+ - **掷骰引擎**:内置 AST 表达式引擎(Lark 文法),支持 `2d20kh1`、优势/劣势、爆炸骰、连掷、暗骰等完整掷骰语法;
12
+ - **跑团全流程**:掷骰 → `.dnd` 属性生成 → 角色卡与检定/豁免/攻击点命令 → HP 管理(伤害掷骰、抗性/易伤、AOE 多目标结算、长休)→ 先攻列表与战斗轮;
13
+ - **规则范围**:仅 DND5e/5r——专精 DND 定位,不做 COC/D100 体系与 `.mode` 模式切换;
19
14
  - **商店合规**:零配置可加载、本地存储走 `nonebot-plugin-localstore`、元数据完整、全程异步。
20
15
 
21
16
  ## 📖 使用文档
22
17
 
23
- 详细用法、输入/输出示例与常见问题见仓库 `docs/` 使用文档:
18
+ 详细用法、输入/输出示例与常见问题见使用文档(手册式分章,含跑团示例;**在线版**:<https://h-elden.github.io/nonebot-plugin-dnddicer/>,源文件在仓库 `docs/`):
24
19
 
25
- - [命令总表与快速开始](./docs/index.md) · [群管理与 FAQ](./docs/guide/faq.md)
26
- - [掷骰语法](./docs/guide/roll-syntax.md) · [角色卡与检定](./docs/guide/character-card.md)
27
- - [属性生成](./docs/guide/attributes.md) · [HP 管理](./docs/guide/hp-rest.md)
28
- - [先攻列表](./docs/guide/initiative.md) · [战斗轮](./docs/guide/battle.md)
20
+ - 开始:[快速开始](./docs/guide/quickstart.md) · [示例团与人物](./docs/guide/cast.md)
21
+ - 第一章 · 基础操作:[掷骰基础](./docs/guide/roll-basics.md) · [掷骰进阶](./docs/guide/roll-advanced.md) · [先攻列表](./docs/guide/initiative.md)
22
+ - 第二章 · 进阶操作:[角色卡与属性](./docs/guide/character-card.md) · [检定与豁免](./docs/guide/checks.md) · [HP 与长休](./docs/guide/hp-rest.md) · [战斗轮](./docs/guide/battle.md)
23
+ - 第三章 · DM 操作:[DM 实战指南](./docs/guide/dm-guide.md)
24
+ - 参考 · [命令总览](./docs/guide/overview.md) · [群管理与 FAQ](./docs/guide/faq.md)
29
25
 
30
26
  ## 📦 安装
31
27
 
@@ -55,29 +51,21 @@ plugins = ["nonebot_plugin_dnddicer"]
55
51
  | 配置项 | 类型 | 默认值 | 说明 |
56
52
  | --- | --- | --- | --- |
57
53
  | `dnddicer_command_priority` | `int` | `10` | 命令事件响应器基础优先级(越小越优先),与其他插件冲突时按需调整 |
58
- | `dnddicer_default_face` | `int` | `20` | 全局默认骰面(DND 惯例 d20;已配置 `.dset` 的群以群配置为准,此项作兜底) |
54
+ | `dnddicer_default_face` | `int` | `20` | 全局默认骰面(DND 惯例 D20;已配置 `.dset` 的群以群配置为准,此项作兜底) |
59
55
  | `dnddicer_enabled` | `bool` | `true` | 功能总开关,`false` 时只加载骨架、不注册命令 |
60
56
  | `dnddicer_use_host_command_starts` | `bool` | `false` | 是否兼容宿主 `COMMAND_START` 起始符(NoneBot 默认 `/`,开启后 `/.help` 等亦可触发)。默认只匹配 `.` / `。`,避免 `/help`、`/bot` 等常见单词命令与其他插件同时命中(冲突) |
61
57
 
62
58
  ## 🎲 用法
63
59
 
64
- > 命令以 `.`(或全角 `。`)开头,中英文别名对齐 DicePP;命令起始符默认仅 `.` / `。`,
65
- > 如需用宿主斜杠 `/` 等起始符触发(如 `/.help`),请设置配置项 `dnddicer_use_host_command_starts=true`。
66
- > **群聊服务默认关闭(白名单)**:需群主/管理员发送 `.bot on` 开启本群服务;`.bot off`
67
- > 关闭后本群不再响应命令(`.bot` 本身不受影响)。群聊中使用 `.bot` 需先 @ 本机器人;
68
- > 私聊不受服务开关限制,可直接使用全部功能。
60
+ > 命令以 `.`(或全角 `。`)开头;命令起始符默认仅 `.` / `。`,如需用宿主斜杠 `/` 等起始符触发(如 `/.help`),请设置配置项 `dnddicer_use_host_command_starts=true`。**群聊服务默认关闭(白名单)**:需群主/管理员发送 `.bot on` 开启本群服务;`.bot off` 关闭后本群不再响应命令(`.bot` 本身不受影响)。群聊中使用 `.bot` 需先 @ 本机器人;私聊不受服务开关限制,但可用命令更少——角色卡、检定、HP、先攻等仅限群聊(差异见[快速开始](./docs/guide/quickstart.md))。
69
61
  >
70
- > **DM 代操作(@ 提及目标)**:多数带目标的命令支持用 **@群成员** 指定目标——直连该成员
71
- > 在本群的角色卡,不受同名 NPC/改名影响,且可与名称混写(`.hp @玩家 -4d6`、
72
- > `.hp @玩家;地精 -d4`、`.ri+3 @玩家`、`.init del @玩家`、`.回合 @玩家`、
73
- > `.角色卡 @玩家`、`.力量豁免 @玩家`、`.先攻检定 @玩家` 等)。详见
74
- > [使用文档](./docs/index.md#-提及目标dm-代操作)。
62
+ > **DM 代操作(@ 提及目标)**:多数带目标的命令支持用 **@群成员** 指定目标——直连该成员在本群的角色卡,不受同名 NPC/改名影响,且可与名称混写(`.hp @玩家 -4d6`、`.hp @玩家;地精 -d4`、`.ri+3 @玩家`、`.init del @玩家`、`.回合 @玩家`、`.角色卡 @玩家`、`.力量豁免 @玩家`、`.先攻检定 @玩家` 等)。详见 [命令总览 - @ 提及目标](./docs/guide/overview.md#-提及目标dm-代操作)。
75
63
 
76
64
  ### 🎲 掷骰(群聊 / 私聊)
77
65
 
78
66
  | 命令 | 说明 |
79
67
  | --- | --- |
80
- | `.r [N#][hs][表达式] [原因]` | 掷骰表达式(`#` 连掷 1~10、`h` 暗骰、`s` 只显数值;仅 d20 有大成功/大失败播报) |
68
+ | `.r [N#][hs][表达式] [原因]` | 掷骰表达式(`#` 连掷 1~10、`h` 暗骰、`s` 只显数值;仅 D20 有大成功/大失败播报) |
81
69
  | `.rh [表达式] [原因]` | 暗骰(群内提示、结果私聊) |
82
70
 
83
71
  ### 📋 角色卡与检定(群聊)
@@ -132,22 +120,16 @@ plugins = ["nonebot_plugin_dnddicer"]
132
120
  | `.bot [on/off]` | 插件信息查询 / 本群服务开关(群主/管理员,需 @) |
133
121
  | `.帮助` / `.help [命令]` | 命令总览 / 指定命令详细用法(如 `.help r`) |
134
122
 
135
- > 一期范围外功能会**显式提示而非静默**:`.r exp` 期望值采样、`.r a/n` 特殊判定;
136
- > 牌堆/随机表与规则查询(T2)、法术位/死亡豁免/BUFF 表(T3 候选)见下方路线。
123
+ > 一期范围外功能会**显式提示而非静默**:`.r exp` 期望值采样、`.r a/n` 特殊判定;牌堆/随机表与规则查询(T2)、法术位/死亡豁免/BUFF 表(T3 候选)见下方路线。
137
124
 
138
125
  ## 📄 版本与路线
139
126
 
140
- 1. ✅ **v0.1.0**(第一期 = T0 + T1 + 战斗轮简化版 + `.bot` 服务开关):掷骰引擎移植、`.r/.rh`、
141
- 帮助、群配置(`.dset`)、角色卡与检定/豁免/攻击、`.dnd` 属性生成、HP 管理与长休
142
- (含抗性/易伤与 AOE 伤害掷骰)、先攻列表、战斗轮——全部落地,全量测试通过;
143
- 2. ✅ **v0.2.0**:HP 抗性/易伤与 AOE 掷骰完善、`.dnd 原因` 兼容修复、
144
- **NPC/怪物血量**(三层目标搜索、先攻列表与 `.hp list` 联动、`.ri` 入表自动回满、
145
- `.npc 持久/临时` 跨战斗保持)、`.dndx` 属性名绑定掷点;
146
- 3. ✅ **v0.2.1**:**@ 提及目标**(DM 可代玩家操作 `.hp`/`.npc`/`.ri`/`.回合` 等、查看角色卡)、
147
- 玩家名称显示统一回退链、`.hp del/clr` 语义修订(仅作用 NPC 血量)、
148
- 优势/劣势别名粘连等真机反馈修复;
149
- 4. ⏳ **第二期 T2**:牌堆/随机表、规则查询;
150
- 5. ⏳(可选)**T3 增强期**:法术位管理(`.ss/.cast`)、死亡豁免闭环(`.ds`)、BUFF/临时加值表(`.buff`)等。
127
+ 1. ✅ **v0.1.0**(第一期 = T0 + T1 + 战斗轮简化版 + `.bot` 服务开关):掷骰引擎移植、`.r/.rh`、帮助、群配置(`.dset`)、角色卡与检定/豁免/攻击、`.dnd` 属性生成、HP 管理与长休(含抗性/易伤与 AOE 伤害掷骰)、先攻列表、战斗轮——全部落地,全量测试通过;
128
+ 2. ✅ **v0.2.0**:HP 抗性/易伤与 AOE 掷骰完善、`.dnd 原因` 兼容修复、**NPC/怪物血量**(三层目标搜索、先攻列表与 `.hp list` 联动、`.ri` 入表自动回满、`.npc 持久/临时` 跨战斗保持)、`.dndx` 属性名绑定掷点;
129
+ 3. ✅ **v0.2.1**:**@ 提及目标**(DM 可代玩家操作 `.hp`/`.npc`/`.ri`/`.回合` 等、查看角色卡)、玩家名称显示统一回退链、`.hp del/clr` 语义修订(仅作用 NPC 血量)、优势/劣势别名粘连等真机反馈修复;
130
+ 4. ✅ **v0.2.2**:掷骰说明文字按四则运算还原(常量复合子表达式与一元负号)、私聊下的群聊限定命令不再静默与 `.bot` 私聊文案修正;**使用文档站上线**(手册式 15 页,随发版自动部署);
131
+ 5. ⏳ **第二期 T2**:牌堆/随机表、规则查询;
132
+ 6. ⏳(可选)**T3 增强期**:法术位管理(`.ss/.cast`)、死亡豁免闭环(`.ds`)、BUFF/临时加值表(`.buff`)等。
151
133
 
152
134
  每版完整变更(新增 / 变更 / 修复 / 文档)见 [CHANGELOG.md](./CHANGELOG.md)。
153
135
 
@@ -164,7 +146,6 @@ uv run pytest
164
146
  ## 🤝 许可与致谢
165
147
 
166
148
  - 本项目(业务层与工程骨架)以 **MIT License** 发布,见 [LICENSE](./LICENSE)。
167
- - **掷骰引擎与命令语法移植自 [nonebot-dicepp](https://github.com/pear-studio/nonebot-dicepp)**
168
- (Copyright (c) 2022 pear-studio,MIT License):相关文件头保留上游版权声明与 MIT 许可全文,来源按 MIT 要求在 LICENSE 中注明。
149
+ - **掷骰引擎移植自 [nonebot-dicepp](https://github.com/pear-studio/nonebot-dicepp)**(Copyright (c) 2022 pear-studio,MIT License):引擎文件头保留上游版权声明,MIT 许可全文见 [LICENSE](./LICENSE)。
169
150
  - 规则查询类资料内容**不随插件分发**(版权归原权利方/译者),需要时由使用者自行提供。
170
151
  - 本项目与 nonebot-dicepp 无隶属关系,为独立命名的衍生/移植作品。
@@ -0,0 +1,89 @@
1
+ import { defineConfig } from 'vitepress'
2
+ import { chatContainer } from './plugins/chat-container.mts'
3
+
4
+ // 屠龙骰(DNDDicer)使用文档站配置。
5
+ // 注意:站点发布在 GitHub Pages 的仓库子路径下,base 必须与实际部署路径一致,
6
+ // 本地开发地址也随之带前缀(http://localhost:5173/nonebot-plugin-dnddicer/)。
7
+ export default defineConfig({
8
+ lang: 'zh-CN',
9
+ title: '屠龙骰 DNDDicer',
10
+ description:
11
+ '专精 DND5e/5r 的 QQ 跑团骰娘插件使用文档:掷骰表达式、角色卡与属性、检定与豁免、HP 管理、先攻列表与战斗轮',
12
+ base: '/nonebot-plugin-dnddicer/',
13
+ cleanUrls: true,
14
+ lastUpdated: true,
15
+
16
+ markdown: {
17
+ config: (md) => {
18
+ // `::: chat` 聊天气泡容器(示例渲染)
19
+ md.use(chatContainer)
20
+ },
21
+ },
22
+
23
+ themeConfig: {
24
+ nav: [
25
+ { text: '使用文档', link: '/guide/overview' },
26
+ { text: '快速开始', link: '/guide/quickstart' },
27
+ { text: 'GitHub', link: 'https://github.com/H-Elden/nonebot-plugin-dnddicer' },
28
+ { text: 'PyPI', link: 'https://pypi.org/project/nonebot-plugin-dnddicer/' },
29
+ ],
30
+
31
+ sidebar: [
32
+ {
33
+ text: '开始',
34
+ items: [
35
+ { text: '快速开始', link: '/guide/quickstart' },
36
+ { text: '示例团与人物', link: '/guide/cast' },
37
+ ],
38
+ },
39
+ {
40
+ text: '第一章 · 基础操作',
41
+ items: [
42
+ { text: '掷骰基础', link: '/guide/roll-basics' },
43
+ { text: '掷骰进阶', link: '/guide/roll-advanced' },
44
+ { text: '先攻列表', link: '/guide/initiative' },
45
+ ],
46
+ },
47
+ {
48
+ text: '第二章 · 进阶操作',
49
+ items: [
50
+ { text: '角色卡与属性', link: '/guide/character-card' },
51
+ { text: '检定与豁免', link: '/guide/checks' },
52
+ { text: 'HP 与长休', link: '/guide/hp-rest' },
53
+ { text: '战斗轮', link: '/guide/battle' },
54
+ ],
55
+ },
56
+ {
57
+ text: '第三章 · DM 操作',
58
+ items: [{ text: 'DM 实战指南', link: '/guide/dm-guide' }],
59
+ },
60
+ {
61
+ text: '参考',
62
+ items: [
63
+ { text: '命令总览', link: '/guide/overview' },
64
+ { text: '群管理与 FAQ', link: '/guide/faq' },
65
+ { text: '更新日志', link: '/guide/changelog' },
66
+ ],
67
+ },
68
+ ],
69
+
70
+ search: {
71
+ provider: 'local',
72
+ },
73
+
74
+ outline: { level: [2, 3], label: '本页目录' },
75
+ docFooter: { prev: '上一篇', next: '下一篇' },
76
+ lastUpdated: { text: '最后更新于' },
77
+ editLink: {
78
+ pattern: 'https://github.com/H-Elden/nonebot-plugin-dnddicer/edit/main/docs/:path',
79
+ text: '在 GitHub 上编辑此页',
80
+ },
81
+ returnToTopLabel: '回到顶部',
82
+ sidebarMenuLabel: '目录',
83
+ darkModeSwitchLabel: '外观',
84
+ footer: {
85
+ message: '以 MIT 许可发布 · 掷骰引擎移植自 nonebot-dicepp(MIT)',
86
+ copyright: 'Copyright © 2026 DNDDicer contributors',
87
+ },
88
+ },
89
+ })