nonebot-plugin-rollpig-plus 0.7.3__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 (176) hide show
  1. nonebot_plugin_rollpig_plus-0.7.3/LICENSE +22 -0
  2. nonebot_plugin_rollpig_plus-0.7.3/PKG-INFO +319 -0
  3. nonebot_plugin_rollpig_plus-0.7.3/README.md +289 -0
  4. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/__init__.py +1726 -0
  5. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/catalog_renderer.py +529 -0
  6. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/config.py +105 -0
  7. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/data_manager.py +910 -0
  8. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/perf_logging.py +32 -0
  9. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/render_budget.py +55 -0
  10. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/catalog_anchor.html +8 -0
  11. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/catalog_base.png +0 -0
  12. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/catalog_template.html +207 -0
  13. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/abstract-pig.png +0 -0
  14. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/ai-pig.png +0 -0
  15. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/alien-pig.png +0 -0
  16. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/android-pig.png +0 -0
  17. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/antibacterial-pig.png +0 -0
  18. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/apple-of-eye-pig.png +0 -0
  19. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/apple-pig.png +0 -0
  20. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/arknights-pig.png +0 -0
  21. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/astro-pig.png +0 -0
  22. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/bacon.png +0 -0
  23. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/balloon-pig.png +0 -0
  24. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/bamboo-pig.png +0 -0
  25. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/bandage-pig.png +0 -0
  26. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/big-lazy-pig.png +0 -0
  27. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/big-stomach-pig.png +0 -0
  28. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/black-pig.png +0 -0
  29. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/black-white-pig.png +0 -0
  30. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/bone-soup-pig.png +0 -0
  31. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/buddha-pig.png +0 -0
  32. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/burger-pig.png +0 -0
  33. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/canned-pig.png +0 -0
  34. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/carrot-ghost-pig.png +0 -0
  35. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/chained_crown_pig.png +0 -0
  36. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/chainsaw-pig.png +0 -0
  37. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/char-siu.png +0 -0
  38. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/charge-pig.png +0 -0
  39. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/chef-pig.png +0 -0
  40. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/chocolate-pig.png +0 -0
  41. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/civil-eng-pig.png +0 -0
  42. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/clean-pig.png +0 -0
  43. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/cloud-pig.png +0 -0
  44. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/cocktail-pig.png +0 -0
  45. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/coder-pig.png +0 -0
  46. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/computer-pig.png +0 -0
  47. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/crystal-pig.png +0 -0
  48. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/curator-pig.png +0 -0
  49. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/cyberpunk-pig.png +0 -0
  50. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/delivery-pig.png +0 -0
  51. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/demon-pig.png +0 -0
  52. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/dirty-pig.png +0 -0
  53. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/doctor-pig.png +0 -0
  54. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/doll-pig.png +0 -0
  55. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/doro-pig.png +0 -0
  56. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/drunk-pig.png +0 -0
  57. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/dumb-pig.png +0 -0
  58. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/dumpling-pig.png +0 -0
  59. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/early-class-pig.png +0 -0
  60. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/earthy-pig.png +0 -0
  61. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/eaten.png +0 -0
  62. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/elephant-pig.png +0 -0
  63. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/error-404-pig.png +0 -0
  64. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/everest-pig.png +0 -0
  65. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/explosive-pig.png +0 -0
  66. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/fine-chaff-boar.png +0 -0
  67. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/frozen-pig.png +0 -0
  68. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/goblin-pig.png +0 -0
  69. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/halloween-pig.png +0 -0
  70. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/heaven-pig.png +0 -0
  71. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/homebody-pig.png +0 -0
  72. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/hotdog-pig.png +0 -0
  73. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/human.png +0 -0
  74. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/invisible_pig.png +0 -0
  75. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/jewelry-pig.png +0 -0
  76. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/jiahao-pig.png +0 -0
  77. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/juliet-pig.png +0 -0
  78. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/jurassic-pig.png +0 -0
  79. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/laborer-pig.png +0 -0
  80. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/landmine-pig.png +0 -0
  81. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/lao_zhu_li.png +0 -0
  82. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/lard-pig.png +0 -0
  83. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/leek-pig.png +0 -0
  84. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/lemon-pig.png +0 -0
  85. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/little-red-pig.png +0 -0
  86. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/lone-pig.png +0 -0
  87. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/magic-pig-cat.png +0 -0
  88. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/magic-pig.png +0 -0
  89. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/mc_porkchop.png +0 -0
  90. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/mcdonalds-pig.png +0 -0
  91. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/mechanical-pig.png +0 -0
  92. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/melting-pig.png +0 -0
  93. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/miku-pig.png +0 -0
  94. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/mini-pig.png +0 -0
  95. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/muscle-pig.png +0 -0
  96. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/ninja-pig.png +0 -0
  97. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/oreo-pig.png +0 -0
  98. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/oriental-pearl-pig.png +0 -0
  99. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/palico-pig.png +0 -0
  100. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/pearl-pig.png +0 -0
  101. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/pig-ball.png +0 -0
  102. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/pig-bun.png +0 -0
  103. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/pig-cat.png +0 -0
  104. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/pig-coin.png +0 -0
  105. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/pig-die.png +0 -0
  106. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/pig-human.png +0 -0
  107. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/pig-king.png +0 -0
  108. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/pig-skin-milk.png +0 -0
  109. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/pig-souffle.png +0 -0
  110. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/pig-stamp.png +0 -0
  111. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/pig-turtle.png +0 -0
  112. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/pig.png +0 -0
  113. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/pig_god.png +0 -0
  114. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/piggsium.png +0 -0
  115. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/piggy-bank.png +0 -0
  116. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/pigskin-pig.png +0 -0
  117. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/pigsleep.png +0 -0
  118. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/pigtok.png +0 -0
  119. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/pork-floss.png +0 -0
  120. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/pork-skewer.png +0 -0
  121. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/prison-break-pig.png +0 -0
  122. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/protagonist-pig.png +0 -0
  123. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/rail-pig.png +0 -0
  124. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/rainbow-pig.png +0 -0
  125. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/repeater-pig.png +0 -0
  126. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/roasted-pig.png +0 -0
  127. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/salmon-sushi-pig.png +0 -0
  128. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/shop-pig.png +0 -0
  129. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/shrimp-sushi-pig.png +0 -0
  130. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/skeleton-pig.png +0 -0
  131. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/sleepy-pig.png +0 -0
  132. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/snow-pig.png +0 -0
  133. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/sold-out.png +0 -0
  134. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/soul-pig.png +0 -0
  135. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/spider-pig.png +0 -0
  136. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/spring-festival-pig.png +0 -0
  137. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/stacking-pig.png +0 -0
  138. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/stem-pig.png +0 -0
  139. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/strawberry-cake-pig.png +0 -0
  140. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/streamer-pig.png +0 -0
  141. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/stressed-pig.png +0 -0
  142. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/stuck-pig.png +0 -0
  143. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/study-pig.png +0 -0
  144. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/suckling-pig.png +0 -0
  145. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/sushi-platter-pig.png +0 -0
  146. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/taffy-pig.png +0 -0
  147. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/tamagoyaki-pig.png +0 -0
  148. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/tangyuan_pig.png +0 -0
  149. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/tank_pig.png +0 -0
  150. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/taxi-pig.png +0 -0
  151. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/teammate-pig.png +0 -0
  152. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/tiramisu-pig.png +0 -0
  153. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/unchained-pig-king.png +0 -0
  154. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/upper-class-pig.png +0 -0
  155. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/vangogh_pig.png +0 -0
  156. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/watermelon-pig.png +0 -0
  157. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/wechat-pig.png +0 -0
  158. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/wild-boar.png +0 -0
  159. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/world-ruler-pig.png +0 -0
  160. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/zhuge-liang.png +0 -0
  161. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/image/zombie-pig.png +0 -0
  162. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/pig.json +896 -0
  163. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/pig_rules.json +33 -0
  164. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource/template.html +61 -0
  165. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/resource_manager.py +735 -0
  166. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/roast_manager.py +228 -0
  167. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/runtime.py +121 -0
  168. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/store/__init__.py +3 -0
  169. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/store/base.py +107 -0
  170. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/store/cloud.py +337 -0
  171. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/store/factory.py +23 -0
  172. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/store/local_json.py +113 -0
  173. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/store/models.py +64 -0
  174. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/summary_service.py +96 -0
  175. nonebot_plugin_rollpig_plus-0.7.3/nonebot_plugin_rollpig_plus/texts.py +487 -0
  176. nonebot_plugin_rollpig_plus-0.7.3/pyproject.toml +32 -0
@@ -0,0 +1,22 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Bear_lele
4
+ Copyright (c) 2025-2026 Felis
5
+
6
+ Permission is hereby granted, free of charge, to any person obtaining a copy
7
+ of this software and associated documentation files (the "Software"), to deal
8
+ in the Software without restriction, including without limitation the rights
9
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
+ copies of the Software, and to permit persons to whom the Software is
11
+ furnished to do so, subject to the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be included in all
14
+ copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
+ SOFTWARE.
@@ -0,0 +1,319 @@
1
+ Metadata-Version: 2.4
2
+ Name: nonebot-plugin-rollpig-plus
3
+ Version: 0.7.3
4
+ Summary: 今天是什么小猪(今日小猪)Plus:基于原版拓展烤群友、图鉴成长等玩法
5
+ License: MIT
6
+ License-File: LICENSE
7
+ Author: Bear_lele
8
+ Author-email: lele2587342146@gmail.com
9
+ Requires-Python: >=3.10,<4.0
10
+ Classifier: License :: OSI Approved :: MIT License
11
+ Classifier: Programming Language :: Python :: 3
12
+ Classifier: Programming Language :: Python :: 3.10
13
+ Classifier: Programming Language :: Python :: 3.11
14
+ Classifier: Programming Language :: Python :: 3.12
15
+ Classifier: Programming Language :: Python :: 3.13
16
+ Classifier: Programming Language :: Python :: 3.14
17
+ Requires-Dist: Pillow (>=12.2.0)
18
+ Requires-Dist: httpx (>=0.20.0)
19
+ Requires-Dist: nonebot-adapter-onebot (>=2.4.0)
20
+ Requires-Dist: nonebot-plugin-apscheduler (>=0.5.0)
21
+ Requires-Dist: nonebot-plugin-htmlrender (>=0.6.0)
22
+ Requires-Dist: nonebot-plugin-localstore (>=0.7.4)
23
+ Requires-Dist: nonebot2 (>=2.4.0)
24
+ Requires-Dist: openai (>=1.0.0)
25
+ Requires-Dist: pydantic (>=1.10.0,<3.0.0)
26
+ Requires-Dist: python-dotenv (>=1.2.2,<2.0.0)
27
+ Project-URL: Homepage, https://github.com/Felis2026/nonebot-plugin-rollpig-plus
28
+ Description-Content-Type: text/markdown
29
+
30
+ <div align="center">
31
+ <img src="docs/assets/logo.jpeg" width="180" alt="rollpig-plus logo">
32
+
33
+ <h1>🐖 rollpig-plus 🐖</h1>
34
+
35
+ <p><strong>“今天是什么小猪”的增强维护版</strong></p>
36
+ <p>支持云端资源同步、图片版小猪图鉴、EX Lv. 成长、AI 烤猪与多 Bot 状态同步。</p>
37
+
38
+ <p>
39
+ <img src="https://img.shields.io/badge/Python-3.10%2B-blue" alt="Python >= 3.10">
40
+ <img src="https://img.shields.io/badge/NoneBot-2.x-black" alt="NoneBot2">
41
+ <img src="https://img.shields.io/badge/License-MIT-green" alt="MIT License">
42
+ <img src="https://img.shields.io/badge/Version-0.7.3-ff69b4" alt="Version 0.7.3">
43
+ </p>
44
+ </div>
45
+
46
+ > 本项目最初基于 [Bearlele/nonebot-plugin-rollpig](https://github.com/Bearlele/nonebot-plugin-rollpig) 修改,当前作为拓展分支继续开发。
47
+
48
+ ## 🧭 和原项目怎么选
49
+
50
+ | 选择 | 更适合的情况 |
51
+ | --- | --- |
52
+ | 原作插件 | 想要更轻量、更接近最初玩法,只需要本地“今日小猪 / 随机小猪 / 找猪”等基础功能。 |
53
+ | rollpig-plus | 想要图片版小猪图鉴、EX Lv. 成长、多 Bot 状态同步、AI 烤猪、烤群友与日报等增强功能。 |
54
+
55
+ rollpig-plus 的目标是作为独立维护的增强分支继续演进:保留原作的核心趣味,拓展部分玩法,同时把资源、图鉴、云端同步和稳定性做得更工程化。原rollpig本体依然能与本项目一样获取到每月更新(也许)的最新小猪。
56
+
57
+ 迁移时建议把原作插件替换为 rollpig-plus,不要在同一个 Bot 进程里同时加载两者;两者的基础指令和 `rollpig_*` 配置键高度重合,同时加载会造成命令响应和配置读取混杂。
58
+
59
+ ## ✨ 效果预览
60
+
61
+ | 今日小猪 | 小猪图鉴 | 烤群友 |
62
+ | --- | --- | --- |
63
+ | <img src="docs/assets/preview-today.jpg" width="220" alt="今日小猪预览"> | <img src="docs/assets/preview-catalog.png" width="360" alt="小猪图鉴预览"> | <img src="docs/assets/preview-roast.jpg" width="220" alt="烤群友预览"> |
64
+
65
+ ## 📦 安装
66
+
67
+ 环境要求:Python `>=3.10`,NoneBot `>=2.4.0`。
68
+
69
+ 发布到 NoneBot 插件商店后,可使用:
70
+
71
+ ```bash
72
+ nb plugin install nonebot-plugin-rollpig-plus
73
+ ```
74
+
75
+ 当前也可以直接从 GitHub 主分支安装:
76
+
77
+ ```bash
78
+ pip install -U "git+https://github.com/Felis2026/nonebot-plugin-rollpig-plus.git@main"
79
+ ```
80
+
81
+ 或固定到指定版本:
82
+
83
+ ```bash
84
+ pip install -U "git+https://github.com/Felis2026/nonebot-plugin-rollpig-plus.git@v0.7.3"
85
+ ```
86
+
87
+ 加载插件时使用新的模块名:
88
+
89
+ ```python
90
+ nonebot.load_plugin("nonebot_plugin_rollpig_plus")
91
+ ```
92
+
93
+ 如果首次使用图片渲染功能时 Chromium 环境缺失,可按 `nonebot-plugin-htmlrender` / Playwright 的提示安装浏览器运行时:
94
+
95
+ ```bash
96
+ playwright install chromium
97
+ ```
98
+
99
+ ## 🐷 指令一览
100
+
101
+ | 指令 | 说明 |
102
+ | --- | --- |
103
+ | `今日小猪` / `今天是什么小猪` | 抽取今天属于你的小猪。每个用户每天只会生成一次结果,重复查看不会改变。 |
104
+ | `随机小猪 [数量]` | 从 PigHub 随机获取猪猪图,最多 10 张。 |
105
+ | `找猪 关键词` / `搜猪 关键词` | 从 PigHub 搜索猪猪图,例如 `找猪 玩偶`。 |
106
+ | `明日小猪` | 预测明天的小猪运势。 |
107
+ | `昨日小猪` | 查看昨天抽到的小猪。 |
108
+ | `今日烤猪` | 把今天的小猪做成美食;AI 烤猪需额外开启并配置 Key。 |
109
+ | `烤群友 @目标` | 在群聊中烤一位群友,带充能、概率与目标状态限制。 |
110
+ | `我的猪圈` | 查看已解锁数量、收藏率、最高 EX Lv.、本命猪等摘要。 |
111
+ | `小猪图鉴 [页码]` | 生成图片版小猪图鉴。 |
112
+ | `本周小猪` | 生成本周猪猪总结长图。 |
113
+
114
+ ### 抽取与成长
115
+
116
+ - 每个用户每天只能抽取一次,跨天后重新抽取。
117
+ - 重复抽到已解锁小猪会提升专家等级(EX Lv.)。
118
+ - 连续重复时,后续抽到新猪的概率会逐步提高。
119
+ - 特殊形态(人类、熟食、吃掉了、售罄等)会参与烤猪与保护逻辑判定。
120
+
121
+ ### 烤群友规则
122
+
123
+ - 常规概率:成功 60% / 逃脱 30% / 反噬 10%。
124
+ - 普通烤群友默认最多储存 2 次,每 8 小时恢复 1 次。
125
+ - 常规模式下,目标需先抽过今日小猪,且不能是人类、熟食形态、吃掉了或猪售罄。
126
+ - 加急点火口令可在限制范围内触发特殊成功判定;不会绕过目标资格检查。
127
+
128
+ ## ⚙️ 配置方法
129
+
130
+ 插件内置完整默认值:**完全不写 `.env`、不写 JSON 也能启动并使用基础功能**。
131
+
132
+ 默认状态下:
133
+
134
+ - 本地存储启用,数据写入插件自己的 localstore 数据目录。
135
+ - AI 烤猪关闭;未配置 Key 时自动使用本地文案模板。
136
+ - 公有小猪资源同步开启;同步失败会回退旧缓存或内置资源。
137
+ - 私有资源 overlay 内置默认关闭;示例配置保留可用链接,方便需要时手动启用。
138
+ - 图片版小猪图鉴开启,默认 PNG 输出。
139
+ - 每日总结定时任务开启,可通过配置关闭。
140
+
141
+ 配置优先级:
142
+
143
+ ```text
144
+ .env / NoneBot 配置 > JSON 配置文件 > 插件默认值
145
+ ```
146
+
147
+ 推荐分工:
148
+
149
+ - JSON 配置文件:放非敏感、稳定参数。默认读取 Bot 运行目录下的 `rollpig_config.json`,也会读取 `config/rollpig.json`。
150
+ - `.env`:放 Token / Key / 私密覆盖项;如需自定义 JSON 路径,只在 `.env` 写 `ROLLPIG_CONFIG_FILE=/path/to/rollpig_config.json`。
151
+
152
+ 下面用 `jsonc` 展示注释方便阅读;多数示例值按插件默认值填写,私有资源链接保留为“如何启用”的示意,不代表内置默认开启。实际 `rollpig_config.json` 必须是合法 JSON,可直接参考仓库内的 `rollpig_config.example.json`。
153
+
154
+ ```jsonc
155
+ {
156
+ "rollpig": {
157
+ // ================================ AI 烤猪 ================================ //
158
+ "rollpig_ai_enabled": false, // 是否启用 AI 烤猪;只填 Key 不会自动开启
159
+ "rollpig_model": "deepseek-chat", // AI 模型名称,默认 DeepSeek Chat
160
+ "rollpig_ai_timeout": 20.0, // 单次 AI 文案生成超时时间(秒),超时自动回退本地模板
161
+ "rollpig_ai_concurrency": 4, // AI 文案生成并发上限,避免多人同时烤猪时堆积请求
162
+ "rollpig_ai_max_tokens": 4096, // AI 单次响应 token 上限,防止异常长输出
163
+ "rollpig_ai_output_max_chars": 240, // AI 文案入库前最大字符数,避免过长文本撑爆消息
164
+ "rollpig_roast_cooldown_hours": 8, // 普通烤群友每恢复 1 次所需小时数
165
+ "rollpig_roast_charge_max": 2, // 普通烤群友最多可储存次数;加急/强制点火不消耗
166
+
167
+ // ================================ 存储与云端 ================================ //
168
+ "rollpig_storage_backend": "local", // local=本地 JSON;cloud=rollpig-cloud 多 Bot 同步
169
+ "rollpig_cloud_api_url": null, // cloud 模式的 rollpig-cloud 地址;默认不配置
170
+ "rollpig_cloud_timeout": 3.0, // 请求 rollpig-cloud 的超时时间(秒)
171
+ "rollpig_cloud_strict_mode": true, // true=云端异常直接失败;false=读接口可安全兜底
172
+
173
+ // ================================ 小猪资源包 ================================ //
174
+ "rollpig_resource_sync_enabled": true, // 是否自动同步云端资源包;失败会回退旧缓存/内置资源
175
+ "rollpig_resource_manifest_url": "https://pig.felislab.cc/resources/rollpig/manifest.json", // 公有全量包
176
+ "rollpig_resource_sync_interval_hours": 24, // 自动检查资源更新的间隔小时数
177
+ "rollpig_resource_sync_timeout": 10.0, // 下载 manifest / pig.json / 图片的超时时间(秒)
178
+ "rollpig_resource_max_file_size": 10485760, // 单文件下载大小上限,默认 10 MiB
179
+ "rollpig_private_resource_manifest_url": "https://pig.felislab.cc/resources/rollpig-pjsk/manifest.json", // 可选私有 overlay 示例;内置默认关闭,不需要时设为 ""
180
+
181
+ // ================================ 定时日报 ================================ //
182
+ "rollpig_daily_summary_enabled": true, // 是否启用每日总结定时任务;关闭后不推日报,也不刷新日报派生的次日保护
183
+
184
+ // ================================ 图片版小猪图鉴 ================================ //
185
+ "rollpig_catalog_enabled": true, // 是否启用“小猪图鉴”图片命令;不替代“我的猪圈”
186
+ "rollpig_catalog_render_concurrency": 2, // 常驻 Playwright 页面池上限;小内存机器建议 1~2
187
+ "rollpig_catalog_cache_seconds": 300, // 同一状态指纹的图鉴结果缓存秒数,不会额外刷新 copies
188
+ "rollpig_catalog_output_format": "png", // 输出格式;默认 PNG
189
+ "rollpig_catalog_render_timeout": 8.0, // 单张图鉴渲染超时时间(秒)
190
+ "rollpig_catalog_scale_factor": 2.0, // 2x 渲染,提升文字和徽章清晰度
191
+ "rollpig_html_render_concurrency": 2 // 所有 HTML/Chromium 生图的总并发预算
192
+ }
193
+ }
194
+ ```
195
+
196
+ 建议留在 `.env` 的敏感项与路径覆盖:
197
+
198
+ ```properties
199
+ # DeepSeek API Key;仅填写 Key 不会开启 AI,还需设置 ROLLPIG_AI_ENABLED=true
200
+ ROLLPIG_DEEPSEEK_KEY=sk-xxxxxxxxxxxxxxxx
201
+
202
+ # rollpig-cloud Bearer Token
203
+ ROLLPIG_CLOUD_TOKEN=replace-with-token
204
+
205
+ # 私有资源 Bearer Token;公开静态资源通常不需要
206
+ ROLLPIG_PRIVATE_RESOURCE_TOKEN=replace-with-token
207
+
208
+ # 可选:指定 JSON 配置文件位置
209
+ ROLLPIG_CONFIG_FILE=/path/to/rollpig_config.json
210
+ ```
211
+
212
+ 补充说明:
213
+
214
+ - 未开启 AI 或未配置 Key 时,会自动回退到本地文案模板。
215
+ - 未配置云端时,默认继续使用本地 `pig_data.json` 存储,不影响单 Bot 正常运行。
216
+ - 云同步可自行部署 [rollpig-cloud](https://github.com/Felis2026/rollpig-cloud),也可以联系维护者申请接入现有 API。
217
+ - `ROLLPIG_STORAGE_BACKEND=cloud` 时,今日小猪、图鉴成长状态、普通烤群友充能、加急点火次数会在多 Bot 间同步。
218
+ - `ROLLPIG_CLOUD_STRICT_MODE=false` 只允许读接口使用安全兜底;关键写接口不会偷偷回退本地,避免多 Bot 数据脑裂。
219
+ - 私有资源 overlay 优先级高于公有云端资源和插件内置资源;公开版内置默认关闭,需要时填写 `rollpig_private_resource_manifest_url`,不需要时设为 `""`。
220
+ - `rollpig_daily_summary_enabled=false` 会跳过每日总结定时任务;该任务同时负责日报推送和日报派生的次日保护名单刷新。
221
+ - 超级用户可发送 `同步小猪资源` / `刷新小猪图鉴` 手动触发资源同步。
222
+ - 图片版图鉴每页固定展示 38 只小猪,不提供配置项,避免和当前底图安全区错位。
223
+
224
+ ## 🐖 自定义小猪
225
+
226
+ 本体内置资源位于:
227
+
228
+ ```text
229
+ nonebot_plugin_rollpig_plus/resource/
230
+ ```
231
+
232
+ 最小资源格式:
233
+
234
+ ```json
235
+ [
236
+ {
237
+ "id": "pig",
238
+ "name": "猪",
239
+ "description": "普通小猪",
240
+ "analysis": "你性格温和,喜欢简单的生活,容易满足。"
241
+ }
242
+ ]
243
+ ```
244
+
245
+ 规则说明:
246
+
247
+ - `pig.json` 维护基础小猪信息。
248
+ - `resource/image/<id>.png` 为对应图片,文件名需要和 `id` 一致。
249
+ - `pig_rules.json` 维护熟食、特殊形态等规则,避免污染上游兼容的 `pig.json` 基础格式。
250
+ - 当前稳定支持 `png` 图片;如果未来支持 GIF,需要同步调整渲染和输出链路。
251
+ - 公有云端资源会缓存到 `data/localstore/nonebot_plugin_rollpig_plus/resources/active/`。
252
+ - 私有 overlay 会缓存到 `data/localstore/nonebot_plugin_rollpig_plus/resources/private_active/`。
253
+
254
+ ## 📁 项目结构
255
+
256
+ ```text
257
+ nonebot_plugin_rollpig_plus/
258
+ ├─ __init__.py # 指令注册与主流程
259
+ ├─ catalog_renderer.py # 图片版小猪图鉴渲染
260
+ ├─ config.py # 配置模型与 JSON 配置合并
261
+ ├─ data_manager.py # 本地 JSON 存储实现
262
+ ├─ perf_logging.py # 性能日志辅助
263
+ ├─ render_budget.py # HTML/Chromium 渲染并发预算
264
+ ├─ resource_manager.py # 云端小猪资源同步与本地缓存加载
265
+ ├─ roast_manager.py # AI 烤猪与文案生成
266
+ ├─ runtime.py # 宿主适配 / 群开关 / 运行时工具
267
+ ├─ summary_service.py # 每日总结聚合
268
+ ├─ texts.py # 文案模板与特殊形态文本
269
+ ├─ store/
270
+ │ ├─ base.py # 存储接口定义
271
+ │ ├─ cloud.py # rollpig-cloud 云端适配
272
+ │ ├─ factory.py # local / cloud 后端选择
273
+ │ ├─ local_json.py # 本地存储适配
274
+ │ └─ models.py # 存储数据模型
275
+ └─ resource/
276
+ ├─ pig.json
277
+ ├─ pig_rules.json
278
+ ├─ template.html
279
+ ├─ catalog_base.png
280
+ ├─ catalog_template.html
281
+ ├─ catalog_anchor.html
282
+ └─ image/
283
+ └─ pig.png
284
+ ```
285
+
286
+ ## 🔗 相关项目
287
+
288
+ - 原作插件:[Bearlele/nonebot-plugin-rollpig](https://github.com/Bearlele/nonebot-plugin-rollpig)
289
+ - 小猪资源包:[Felis2026/rollpig-resources](https://github.com/Felis2026/rollpig-resources)
290
+ - 云端存储服务:[Felis2026/rollpig-cloud](https://github.com/Felis2026/rollpig-cloud)
291
+ - PigHub(搜猪功能支持):[pighub.top](https://pighub.top/)
292
+
293
+ ## 📋 最近更新
294
+
295
+ ### v0.7.3
296
+
297
+ - 整理为独立发布仓库与独立包名 `nonebot-plugin-rollpig-plus`。
298
+ - 模块名调整为 `nonebot_plugin_rollpig_plus`,补齐面向 GitHub / PyPI / NoneBot 商店的发布说明。
299
+ - 内置公共资源包,小猪默认数量更新至 149 只,并同步最新资源规则。
300
+
301
+ ### v0.7.2
302
+
303
+ - 加固本地存储与云端资源同步,降低坏文件、坏 manifest、异常下载导致的数据风险。
304
+ - 优化 AI 烤猪并发与输出边界,默认并发调整为 4。
305
+ - 新增图片版小猪图鉴缓存与常驻页面池,改善重复触发时的渲染性能。
306
+
307
+ ### v0.7.1
308
+
309
+ - 修复 PigHub 搜索接口变更导致的 `找猪` / `搜猪` 不可用问题。
310
+ - 新增 PigHub 新旧接口兼容与异常兜底。
311
+
312
+ 完整更新日志见 [CHANGELOG.md](CHANGELOG.md)。
313
+
314
+ ## 📄 许可证与致谢
315
+
316
+ 插件代码使用 [MIT License](LICENSE)。
317
+
318
+ 本项目最初基于 [Bearlele/nonebot-plugin-rollpig](https://github.com/Bearlele/nonebot-plugin-rollpig) 修改,感谢原作者提供的创意与基础实现。内置初始文案和部分猪图继承自原作;后续扩展资源由维护者创作、整理或来自公开用户投稿渠道。资源包的详细来源、使用边界与贡献说明请以 [rollpig-resources](https://github.com/Felis2026/rollpig-resources) 为准。
319
+
@@ -0,0 +1,289 @@
1
+ <div align="center">
2
+ <img src="docs/assets/logo.jpeg" width="180" alt="rollpig-plus logo">
3
+
4
+ <h1>🐖 rollpig-plus 🐖</h1>
5
+
6
+ <p><strong>“今天是什么小猪”的增强维护版</strong></p>
7
+ <p>支持云端资源同步、图片版小猪图鉴、EX Lv. 成长、AI 烤猪与多 Bot 状态同步。</p>
8
+
9
+ <p>
10
+ <img src="https://img.shields.io/badge/Python-3.10%2B-blue" alt="Python >= 3.10">
11
+ <img src="https://img.shields.io/badge/NoneBot-2.x-black" alt="NoneBot2">
12
+ <img src="https://img.shields.io/badge/License-MIT-green" alt="MIT License">
13
+ <img src="https://img.shields.io/badge/Version-0.7.3-ff69b4" alt="Version 0.7.3">
14
+ </p>
15
+ </div>
16
+
17
+ > 本项目最初基于 [Bearlele/nonebot-plugin-rollpig](https://github.com/Bearlele/nonebot-plugin-rollpig) 修改,当前作为拓展分支继续开发。
18
+
19
+ ## 🧭 和原项目怎么选
20
+
21
+ | 选择 | 更适合的情况 |
22
+ | --- | --- |
23
+ | 原作插件 | 想要更轻量、更接近最初玩法,只需要本地“今日小猪 / 随机小猪 / 找猪”等基础功能。 |
24
+ | rollpig-plus | 想要图片版小猪图鉴、EX Lv. 成长、多 Bot 状态同步、AI 烤猪、烤群友与日报等增强功能。 |
25
+
26
+ rollpig-plus 的目标是作为独立维护的增强分支继续演进:保留原作的核心趣味,拓展部分玩法,同时把资源、图鉴、云端同步和稳定性做得更工程化。原rollpig本体依然能与本项目一样获取到每月更新(也许)的最新小猪。
27
+
28
+ 迁移时建议把原作插件替换为 rollpig-plus,不要在同一个 Bot 进程里同时加载两者;两者的基础指令和 `rollpig_*` 配置键高度重合,同时加载会造成命令响应和配置读取混杂。
29
+
30
+ ## ✨ 效果预览
31
+
32
+ | 今日小猪 | 小猪图鉴 | 烤群友 |
33
+ | --- | --- | --- |
34
+ | <img src="docs/assets/preview-today.jpg" width="220" alt="今日小猪预览"> | <img src="docs/assets/preview-catalog.png" width="360" alt="小猪图鉴预览"> | <img src="docs/assets/preview-roast.jpg" width="220" alt="烤群友预览"> |
35
+
36
+ ## 📦 安装
37
+
38
+ 环境要求:Python `>=3.10`,NoneBot `>=2.4.0`。
39
+
40
+ 发布到 NoneBot 插件商店后,可使用:
41
+
42
+ ```bash
43
+ nb plugin install nonebot-plugin-rollpig-plus
44
+ ```
45
+
46
+ 当前也可以直接从 GitHub 主分支安装:
47
+
48
+ ```bash
49
+ pip install -U "git+https://github.com/Felis2026/nonebot-plugin-rollpig-plus.git@main"
50
+ ```
51
+
52
+ 或固定到指定版本:
53
+
54
+ ```bash
55
+ pip install -U "git+https://github.com/Felis2026/nonebot-plugin-rollpig-plus.git@v0.7.3"
56
+ ```
57
+
58
+ 加载插件时使用新的模块名:
59
+
60
+ ```python
61
+ nonebot.load_plugin("nonebot_plugin_rollpig_plus")
62
+ ```
63
+
64
+ 如果首次使用图片渲染功能时 Chromium 环境缺失,可按 `nonebot-plugin-htmlrender` / Playwright 的提示安装浏览器运行时:
65
+
66
+ ```bash
67
+ playwright install chromium
68
+ ```
69
+
70
+ ## 🐷 指令一览
71
+
72
+ | 指令 | 说明 |
73
+ | --- | --- |
74
+ | `今日小猪` / `今天是什么小猪` | 抽取今天属于你的小猪。每个用户每天只会生成一次结果,重复查看不会改变。 |
75
+ | `随机小猪 [数量]` | 从 PigHub 随机获取猪猪图,最多 10 张。 |
76
+ | `找猪 关键词` / `搜猪 关键词` | 从 PigHub 搜索猪猪图,例如 `找猪 玩偶`。 |
77
+ | `明日小猪` | 预测明天的小猪运势。 |
78
+ | `昨日小猪` | 查看昨天抽到的小猪。 |
79
+ | `今日烤猪` | 把今天的小猪做成美食;AI 烤猪需额外开启并配置 Key。 |
80
+ | `烤群友 @目标` | 在群聊中烤一位群友,带充能、概率与目标状态限制。 |
81
+ | `我的猪圈` | 查看已解锁数量、收藏率、最高 EX Lv.、本命猪等摘要。 |
82
+ | `小猪图鉴 [页码]` | 生成图片版小猪图鉴。 |
83
+ | `本周小猪` | 生成本周猪猪总结长图。 |
84
+
85
+ ### 抽取与成长
86
+
87
+ - 每个用户每天只能抽取一次,跨天后重新抽取。
88
+ - 重复抽到已解锁小猪会提升专家等级(EX Lv.)。
89
+ - 连续重复时,后续抽到新猪的概率会逐步提高。
90
+ - 特殊形态(人类、熟食、吃掉了、售罄等)会参与烤猪与保护逻辑判定。
91
+
92
+ ### 烤群友规则
93
+
94
+ - 常规概率:成功 60% / 逃脱 30% / 反噬 10%。
95
+ - 普通烤群友默认最多储存 2 次,每 8 小时恢复 1 次。
96
+ - 常规模式下,目标需先抽过今日小猪,且不能是人类、熟食形态、吃掉了或猪售罄。
97
+ - 加急点火口令可在限制范围内触发特殊成功判定;不会绕过目标资格检查。
98
+
99
+ ## ⚙️ 配置方法
100
+
101
+ 插件内置完整默认值:**完全不写 `.env`、不写 JSON 也能启动并使用基础功能**。
102
+
103
+ 默认状态下:
104
+
105
+ - 本地存储启用,数据写入插件自己的 localstore 数据目录。
106
+ - AI 烤猪关闭;未配置 Key 时自动使用本地文案模板。
107
+ - 公有小猪资源同步开启;同步失败会回退旧缓存或内置资源。
108
+ - 私有资源 overlay 内置默认关闭;示例配置保留可用链接,方便需要时手动启用。
109
+ - 图片版小猪图鉴开启,默认 PNG 输出。
110
+ - 每日总结定时任务开启,可通过配置关闭。
111
+
112
+ 配置优先级:
113
+
114
+ ```text
115
+ .env / NoneBot 配置 > JSON 配置文件 > 插件默认值
116
+ ```
117
+
118
+ 推荐分工:
119
+
120
+ - JSON 配置文件:放非敏感、稳定参数。默认读取 Bot 运行目录下的 `rollpig_config.json`,也会读取 `config/rollpig.json`。
121
+ - `.env`:放 Token / Key / 私密覆盖项;如需自定义 JSON 路径,只在 `.env` 写 `ROLLPIG_CONFIG_FILE=/path/to/rollpig_config.json`。
122
+
123
+ 下面用 `jsonc` 展示注释方便阅读;多数示例值按插件默认值填写,私有资源链接保留为“如何启用”的示意,不代表内置默认开启。实际 `rollpig_config.json` 必须是合法 JSON,可直接参考仓库内的 `rollpig_config.example.json`。
124
+
125
+ ```jsonc
126
+ {
127
+ "rollpig": {
128
+ // ================================ AI 烤猪 ================================ //
129
+ "rollpig_ai_enabled": false, // 是否启用 AI 烤猪;只填 Key 不会自动开启
130
+ "rollpig_model": "deepseek-chat", // AI 模型名称,默认 DeepSeek Chat
131
+ "rollpig_ai_timeout": 20.0, // 单次 AI 文案生成超时时间(秒),超时自动回退本地模板
132
+ "rollpig_ai_concurrency": 4, // AI 文案生成并发上限,避免多人同时烤猪时堆积请求
133
+ "rollpig_ai_max_tokens": 4096, // AI 单次响应 token 上限,防止异常长输出
134
+ "rollpig_ai_output_max_chars": 240, // AI 文案入库前最大字符数,避免过长文本撑爆消息
135
+ "rollpig_roast_cooldown_hours": 8, // 普通烤群友每恢复 1 次所需小时数
136
+ "rollpig_roast_charge_max": 2, // 普通烤群友最多可储存次数;加急/强制点火不消耗
137
+
138
+ // ================================ 存储与云端 ================================ //
139
+ "rollpig_storage_backend": "local", // local=本地 JSON;cloud=rollpig-cloud 多 Bot 同步
140
+ "rollpig_cloud_api_url": null, // cloud 模式的 rollpig-cloud 地址;默认不配置
141
+ "rollpig_cloud_timeout": 3.0, // 请求 rollpig-cloud 的超时时间(秒)
142
+ "rollpig_cloud_strict_mode": true, // true=云端异常直接失败;false=读接口可安全兜底
143
+
144
+ // ================================ 小猪资源包 ================================ //
145
+ "rollpig_resource_sync_enabled": true, // 是否自动同步云端资源包;失败会回退旧缓存/内置资源
146
+ "rollpig_resource_manifest_url": "https://pig.felislab.cc/resources/rollpig/manifest.json", // 公有全量包
147
+ "rollpig_resource_sync_interval_hours": 24, // 自动检查资源更新的间隔小时数
148
+ "rollpig_resource_sync_timeout": 10.0, // 下载 manifest / pig.json / 图片的超时时间(秒)
149
+ "rollpig_resource_max_file_size": 10485760, // 单文件下载大小上限,默认 10 MiB
150
+ "rollpig_private_resource_manifest_url": "https://pig.felislab.cc/resources/rollpig-pjsk/manifest.json", // 可选私有 overlay 示例;内置默认关闭,不需要时设为 ""
151
+
152
+ // ================================ 定时日报 ================================ //
153
+ "rollpig_daily_summary_enabled": true, // 是否启用每日总结定时任务;关闭后不推日报,也不刷新日报派生的次日保护
154
+
155
+ // ================================ 图片版小猪图鉴 ================================ //
156
+ "rollpig_catalog_enabled": true, // 是否启用“小猪图鉴”图片命令;不替代“我的猪圈”
157
+ "rollpig_catalog_render_concurrency": 2, // 常驻 Playwright 页面池上限;小内存机器建议 1~2
158
+ "rollpig_catalog_cache_seconds": 300, // 同一状态指纹的图鉴结果缓存秒数,不会额外刷新 copies
159
+ "rollpig_catalog_output_format": "png", // 输出格式;默认 PNG
160
+ "rollpig_catalog_render_timeout": 8.0, // 单张图鉴渲染超时时间(秒)
161
+ "rollpig_catalog_scale_factor": 2.0, // 2x 渲染,提升文字和徽章清晰度
162
+ "rollpig_html_render_concurrency": 2 // 所有 HTML/Chromium 生图的总并发预算
163
+ }
164
+ }
165
+ ```
166
+
167
+ 建议留在 `.env` 的敏感项与路径覆盖:
168
+
169
+ ```properties
170
+ # DeepSeek API Key;仅填写 Key 不会开启 AI,还需设置 ROLLPIG_AI_ENABLED=true
171
+ ROLLPIG_DEEPSEEK_KEY=sk-xxxxxxxxxxxxxxxx
172
+
173
+ # rollpig-cloud Bearer Token
174
+ ROLLPIG_CLOUD_TOKEN=replace-with-token
175
+
176
+ # 私有资源 Bearer Token;公开静态资源通常不需要
177
+ ROLLPIG_PRIVATE_RESOURCE_TOKEN=replace-with-token
178
+
179
+ # 可选:指定 JSON 配置文件位置
180
+ ROLLPIG_CONFIG_FILE=/path/to/rollpig_config.json
181
+ ```
182
+
183
+ 补充说明:
184
+
185
+ - 未开启 AI 或未配置 Key 时,会自动回退到本地文案模板。
186
+ - 未配置云端时,默认继续使用本地 `pig_data.json` 存储,不影响单 Bot 正常运行。
187
+ - 云同步可自行部署 [rollpig-cloud](https://github.com/Felis2026/rollpig-cloud),也可以联系维护者申请接入现有 API。
188
+ - `ROLLPIG_STORAGE_BACKEND=cloud` 时,今日小猪、图鉴成长状态、普通烤群友充能、加急点火次数会在多 Bot 间同步。
189
+ - `ROLLPIG_CLOUD_STRICT_MODE=false` 只允许读接口使用安全兜底;关键写接口不会偷偷回退本地,避免多 Bot 数据脑裂。
190
+ - 私有资源 overlay 优先级高于公有云端资源和插件内置资源;公开版内置默认关闭,需要时填写 `rollpig_private_resource_manifest_url`,不需要时设为 `""`。
191
+ - `rollpig_daily_summary_enabled=false` 会跳过每日总结定时任务;该任务同时负责日报推送和日报派生的次日保护名单刷新。
192
+ - 超级用户可发送 `同步小猪资源` / `刷新小猪图鉴` 手动触发资源同步。
193
+ - 图片版图鉴每页固定展示 38 只小猪,不提供配置项,避免和当前底图安全区错位。
194
+
195
+ ## 🐖 自定义小猪
196
+
197
+ 本体内置资源位于:
198
+
199
+ ```text
200
+ nonebot_plugin_rollpig_plus/resource/
201
+ ```
202
+
203
+ 最小资源格式:
204
+
205
+ ```json
206
+ [
207
+ {
208
+ "id": "pig",
209
+ "name": "猪",
210
+ "description": "普通小猪",
211
+ "analysis": "你性格温和,喜欢简单的生活,容易满足。"
212
+ }
213
+ ]
214
+ ```
215
+
216
+ 规则说明:
217
+
218
+ - `pig.json` 维护基础小猪信息。
219
+ - `resource/image/<id>.png` 为对应图片,文件名需要和 `id` 一致。
220
+ - `pig_rules.json` 维护熟食、特殊形态等规则,避免污染上游兼容的 `pig.json` 基础格式。
221
+ - 当前稳定支持 `png` 图片;如果未来支持 GIF,需要同步调整渲染和输出链路。
222
+ - 公有云端资源会缓存到 `data/localstore/nonebot_plugin_rollpig_plus/resources/active/`。
223
+ - 私有 overlay 会缓存到 `data/localstore/nonebot_plugin_rollpig_plus/resources/private_active/`。
224
+
225
+ ## 📁 项目结构
226
+
227
+ ```text
228
+ nonebot_plugin_rollpig_plus/
229
+ ├─ __init__.py # 指令注册与主流程
230
+ ├─ catalog_renderer.py # 图片版小猪图鉴渲染
231
+ ├─ config.py # 配置模型与 JSON 配置合并
232
+ ├─ data_manager.py # 本地 JSON 存储实现
233
+ ├─ perf_logging.py # 性能日志辅助
234
+ ├─ render_budget.py # HTML/Chromium 渲染并发预算
235
+ ├─ resource_manager.py # 云端小猪资源同步与本地缓存加载
236
+ ├─ roast_manager.py # AI 烤猪与文案生成
237
+ ├─ runtime.py # 宿主适配 / 群开关 / 运行时工具
238
+ ├─ summary_service.py # 每日总结聚合
239
+ ├─ texts.py # 文案模板与特殊形态文本
240
+ ├─ store/
241
+ │ ├─ base.py # 存储接口定义
242
+ │ ├─ cloud.py # rollpig-cloud 云端适配
243
+ │ ├─ factory.py # local / cloud 后端选择
244
+ │ ├─ local_json.py # 本地存储适配
245
+ │ └─ models.py # 存储数据模型
246
+ └─ resource/
247
+ ├─ pig.json
248
+ ├─ pig_rules.json
249
+ ├─ template.html
250
+ ├─ catalog_base.png
251
+ ├─ catalog_template.html
252
+ ├─ catalog_anchor.html
253
+ └─ image/
254
+ └─ pig.png
255
+ ```
256
+
257
+ ## 🔗 相关项目
258
+
259
+ - 原作插件:[Bearlele/nonebot-plugin-rollpig](https://github.com/Bearlele/nonebot-plugin-rollpig)
260
+ - 小猪资源包:[Felis2026/rollpig-resources](https://github.com/Felis2026/rollpig-resources)
261
+ - 云端存储服务:[Felis2026/rollpig-cloud](https://github.com/Felis2026/rollpig-cloud)
262
+ - PigHub(搜猪功能支持):[pighub.top](https://pighub.top/)
263
+
264
+ ## 📋 最近更新
265
+
266
+ ### v0.7.3
267
+
268
+ - 整理为独立发布仓库与独立包名 `nonebot-plugin-rollpig-plus`。
269
+ - 模块名调整为 `nonebot_plugin_rollpig_plus`,补齐面向 GitHub / PyPI / NoneBot 商店的发布说明。
270
+ - 内置公共资源包,小猪默认数量更新至 149 只,并同步最新资源规则。
271
+
272
+ ### v0.7.2
273
+
274
+ - 加固本地存储与云端资源同步,降低坏文件、坏 manifest、异常下载导致的数据风险。
275
+ - 优化 AI 烤猪并发与输出边界,默认并发调整为 4。
276
+ - 新增图片版小猪图鉴缓存与常驻页面池,改善重复触发时的渲染性能。
277
+
278
+ ### v0.7.1
279
+
280
+ - 修复 PigHub 搜索接口变更导致的 `找猪` / `搜猪` 不可用问题。
281
+ - 新增 PigHub 新旧接口兼容与异常兜底。
282
+
283
+ 完整更新日志见 [CHANGELOG.md](CHANGELOG.md)。
284
+
285
+ ## 📄 许可证与致谢
286
+
287
+ 插件代码使用 [MIT License](LICENSE)。
288
+
289
+ 本项目最初基于 [Bearlele/nonebot-plugin-rollpig](https://github.com/Bearlele/nonebot-plugin-rollpig) 修改,感谢原作者提供的创意与基础实现。内置初始文案和部分猪图继承自原作;后续扩展资源由维护者创作、整理或来自公开用户投稿渠道。资源包的详细来源、使用边界与贡献说明请以 [rollpig-resources](https://github.com/Felis2026/rollpig-resources) 为准。