nonebot-plugin-osubot 6.20.1__tar.gz → 6.21.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.

Potentially problematic release.


This version of nonebot-plugin-osubot might be problematic. Click here for more details.

Files changed (412) hide show
  1. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/PKG-INFO +1 -1
  2. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/catch/catch.js +4 -3
  3. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/draw/score.py +198 -141
  4. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/draw/static.py +3 -2
  5. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/draw/utils.py +17 -2
  6. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/matcher/utils.py +6 -4
  7. nonebot-plugin-osubot-6.21.0/nonebot_plugin_osubot/osufile/pfm_ctb.png +0 -0
  8. nonebot-plugin-osubot-6.21.0/nonebot_plugin_osubot/osufile/pfm_mania.png +0 -0
  9. nonebot-plugin-osubot-6.21.0/nonebot_plugin_osubot/osufile/pfm_std.png +0 -0
  10. nonebot-plugin-osubot-6.21.0/nonebot_plugin_osubot/osufile/pfm_taiko.png +0 -0
  11. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/pyproject.toml +1 -1
  12. nonebot-plugin-osubot-6.20.1/nonebot_plugin_osubot/osufile/pfm_ctb.png +0 -0
  13. nonebot-plugin-osubot-6.20.1/nonebot_plugin_osubot/osufile/pfm_mania.png +0 -0
  14. nonebot-plugin-osubot-6.20.1/nonebot_plugin_osubot/osufile/pfm_std.png +0 -0
  15. nonebot-plugin-osubot-6.20.1/nonebot_plugin_osubot/osufile/pfm_taiko.png +0 -0
  16. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/README.md +0 -0
  17. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/__init__.py +0 -0
  18. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/api.py +0 -0
  19. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/beatmap_stats_moder.py +0 -0
  20. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/config.py +0 -0
  21. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/database/__init__.py +0 -0
  22. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/database/models.py +0 -0
  23. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/draw/__init__.py +0 -0
  24. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/draw/bmap.py +0 -0
  25. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/draw/bp.py +0 -0
  26. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/draw/catch_preview.py +0 -0
  27. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/draw/catch_preview_templates/css/style.css +0 -0
  28. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/beatmap/beatmap.js +0 -0
  29. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/beatmap/hitobject.js +0 -0
  30. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/beatmap/point.js +0 -0
  31. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/beatmap/scroll.js +0 -0
  32. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/beatmap/timingpoint.js +0 -0
  33. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/catch/LegacyRandom.js +0 -0
  34. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/catch/PalpableCatchHitObject.js +0 -0
  35. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/catch/bananashower.js +0 -0
  36. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/catch/fruit.js +0 -0
  37. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/catch/juicestream.js +0 -0
  38. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/fakeaudio.js +0 -0
  39. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/preview.js +0 -0
  40. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/standard/curve/bezier2.js +0 -0
  41. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/standard/curve/catmullcurve.js +0 -0
  42. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/standard/curve/centripetalcatmullrom.js +0 -0
  43. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/standard/curve/circumstancedcircle.js +0 -0
  44. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/standard/curve/curve.js +0 -0
  45. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/standard/curve/curvetype.js +0 -0
  46. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/standard/curve/equaldistancemulticurve.js +0 -0
  47. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/standard/curve/linearbezier.js +0 -0
  48. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/standard/hitcircle.js +0 -0
  49. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/standard/slider.js +0 -0
  50. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/standard/spinner.js +0 -0
  51. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/util.js +0 -0
  52. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/viewbox.js +0 -0
  53. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/zip.min.js +0 -0
  54. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/draw/catch_preview_templates/pic.html +0 -0
  55. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/draw/echarts.py +0 -0
  56. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/draw/info.py +0 -0
  57. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/draw/map.py +0 -0
  58. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/draw/match_history.py +0 -0
  59. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/draw/rating.py +0 -0
  60. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/draw/taiko_preview.py +0 -0
  61. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/draw/templates/bpa_chart.html +0 -0
  62. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/draw/templates/echarts.min.js +0 -0
  63. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/draw/templates/mod_chart.html +0 -0
  64. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/draw/templates/pp_rank_line_chart.html +0 -0
  65. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/exceptions.py +0 -0
  66. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/file.py +0 -0
  67. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/info/__init__.py +0 -0
  68. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/info/bg.py +0 -0
  69. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/info/bind.py +0 -0
  70. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/mania/__init__.py +0 -0
  71. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/matcher/__init__.py +0 -0
  72. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/matcher/bind.py +0 -0
  73. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/matcher/bp.py +0 -0
  74. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/matcher/bp_analyze.py +0 -0
  75. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/matcher/getbg.py +0 -0
  76. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/matcher/guess.py +0 -0
  77. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/matcher/history.py +0 -0
  78. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/matcher/info.py +0 -0
  79. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/matcher/map.py +0 -0
  80. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/matcher/map_convert.py +0 -0
  81. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/matcher/match.py +0 -0
  82. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/matcher/medal.py +0 -0
  83. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/matcher/mu.py +0 -0
  84. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/matcher/osu_help.py +0 -0
  85. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/matcher/osudl.py +0 -0
  86. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/matcher/pr.py +0 -0
  87. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/matcher/preview.py +0 -0
  88. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/matcher/rank.py +0 -0
  89. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/matcher/rating.py +0 -0
  90. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/matcher/recommend.py +0 -0
  91. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/matcher/score.py +0 -0
  92. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/matcher/update.py +0 -0
  93. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/matcher/update_mode.py +0 -0
  94. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/matcher/url_match.py +0 -0
  95. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/mods.py +0 -0
  96. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/network/__init__.py +0 -0
  97. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/network/auto_retry.py +0 -0
  98. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/network/first_response.py +0 -0
  99. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/Best Performance.png +0 -0
  100. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/History Score.jpg +0 -0
  101. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/beatmapinfo.png +0 -0
  102. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/convert.jpg +0 -0
  103. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/detail.png +0 -0
  104. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/AD.png +0 -0
  105. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/AE.png +0 -0
  106. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/AF.png +0 -0
  107. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/AG.png +0 -0
  108. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/AI.png +0 -0
  109. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/AL.png +0 -0
  110. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/AM.png +0 -0
  111. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/AO.png +0 -0
  112. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/AQ.png +0 -0
  113. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/AR.png +0 -0
  114. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/AS.png +0 -0
  115. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/AT.png +0 -0
  116. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/AU.png +0 -0
  117. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/AW.png +0 -0
  118. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/AX.png +0 -0
  119. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/AZ.png +0 -0
  120. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/BA.png +0 -0
  121. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/BB.png +0 -0
  122. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/BD.png +0 -0
  123. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/BE.png +0 -0
  124. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/BF.png +0 -0
  125. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/BG.png +0 -0
  126. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/BH.png +0 -0
  127. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/BI.png +0 -0
  128. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/BJ.png +0 -0
  129. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/BL.png +0 -0
  130. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/BM.png +0 -0
  131. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/BN.png +0 -0
  132. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/BO.png +0 -0
  133. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/BQ (1).png +0 -0
  134. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/BQ (2).png +0 -0
  135. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/BR.png +0 -0
  136. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/BS.png +0 -0
  137. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/BT.png +0 -0
  138. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/BV.png +0 -0
  139. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/BW.png +0 -0
  140. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/BY.png +0 -0
  141. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/BZ.png +0 -0
  142. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/CA.png +0 -0
  143. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/CD.png +0 -0
  144. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/CF.png +0 -0
  145. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/CG.png +0 -0
  146. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/CH.png +0 -0
  147. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/CI.png +0 -0
  148. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/CK.png +0 -0
  149. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/CL.png +0 -0
  150. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/CM.png +0 -0
  151. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/CN.png +0 -0
  152. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/CO.png +0 -0
  153. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/CR.png +0 -0
  154. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/CU.png +0 -0
  155. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/CV.png +0 -0
  156. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/CX.png +0 -0
  157. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/CY.png +0 -0
  158. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/CZ.png +0 -0
  159. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/DE.png +0 -0
  160. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/DJ.png +0 -0
  161. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/DK.png +0 -0
  162. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/DM.png +0 -0
  163. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/DO.png +0 -0
  164. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/DZ.png +0 -0
  165. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/EC.png +0 -0
  166. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/EE.png +0 -0
  167. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/EG.png +0 -0
  168. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/EH.png +0 -0
  169. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/ER.png +0 -0
  170. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/ES.png +0 -0
  171. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/ET.png +0 -0
  172. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/FI.png +0 -0
  173. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/FJ.png +0 -0
  174. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/FK.png +0 -0
  175. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/FO.png +0 -0
  176. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/FR.png +0 -0
  177. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/GA.png +0 -0
  178. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/GB.png +0 -0
  179. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/GD.png +0 -0
  180. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/GE.png +0 -0
  181. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/GF.png +0 -0
  182. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/GG.png +0 -0
  183. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/GH.png +0 -0
  184. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/GI.png +0 -0
  185. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/GL.png +0 -0
  186. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/GM.png +0 -0
  187. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/GN.png +0 -0
  188. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/GP.png +0 -0
  189. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/GQ.png +0 -0
  190. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/GR.png +0 -0
  191. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/GS.png +0 -0
  192. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/GT.png +0 -0
  193. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/GU.png +0 -0
  194. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/GW.png +0 -0
  195. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/GY.png +0 -0
  196. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/HK.png +0 -0
  197. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/HM.png +0 -0
  198. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/HN.png +0 -0
  199. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/HR.png +0 -0
  200. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/HT.png +0 -0
  201. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/HU.png +0 -0
  202. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/ID.png +0 -0
  203. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/IE.png +0 -0
  204. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/IL.png +0 -0
  205. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/IM.png +0 -0
  206. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/IN.png +0 -0
  207. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/IO.png +0 -0
  208. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/IQ.png +0 -0
  209. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/IR.png +0 -0
  210. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/IS.png +0 -0
  211. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/IT.png +0 -0
  212. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/JE.png +0 -0
  213. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/JM.png +0 -0
  214. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/JO.png +0 -0
  215. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/JP.png +0 -0
  216. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/KE.png +0 -0
  217. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/KG.png +0 -0
  218. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/KH.png +0 -0
  219. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/KI.png +0 -0
  220. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/KM.png +0 -0
  221. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/KN.png +0 -0
  222. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/KP.png +0 -0
  223. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/KR.png +0 -0
  224. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/KW.png +0 -0
  225. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/KY.png +0 -0
  226. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/KZ.png +0 -0
  227. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/LA.png +0 -0
  228. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/LB.png +0 -0
  229. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/LC.png +0 -0
  230. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/LI.png +0 -0
  231. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/LK.png +0 -0
  232. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/LR.png +0 -0
  233. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/LS.png +0 -0
  234. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/LT.png +0 -0
  235. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/LU.png +0 -0
  236. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/LV.png +0 -0
  237. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/LY.png +0 -0
  238. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/MA.png +0 -0
  239. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/MC.png +0 -0
  240. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/MD.png +0 -0
  241. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/ME.png +0 -0
  242. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/MF.png +0 -0
  243. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/MG.png +0 -0
  244. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/MH.png +0 -0
  245. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/MK.png +0 -0
  246. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/ML.png +0 -0
  247. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/MM.png +0 -0
  248. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/MN.png +0 -0
  249. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/MO.png +0 -0
  250. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/MP.png +0 -0
  251. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/MQ.png +0 -0
  252. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/MR.png +0 -0
  253. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/MS.png +0 -0
  254. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/MT.png +0 -0
  255. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/MU.png +0 -0
  256. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/MV.png +0 -0
  257. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/MW.png +0 -0
  258. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/MX.png +0 -0
  259. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/MY.png +0 -0
  260. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/MZ.png +0 -0
  261. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/NA.png +0 -0
  262. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/NC.png +0 -0
  263. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/NE.png +0 -0
  264. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/NF.png +0 -0
  265. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/NG.png +0 -0
  266. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/NI.png +0 -0
  267. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/NL.png +0 -0
  268. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/NO.png +0 -0
  269. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/NP.png +0 -0
  270. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/NR.png +0 -0
  271. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/NU.png +0 -0
  272. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/NZ.png +0 -0
  273. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/OM.png +0 -0
  274. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/PA.png +0 -0
  275. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/PE.png +0 -0
  276. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/PF.png +0 -0
  277. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/PG.png +0 -0
  278. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/PH.png +0 -0
  279. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/PK.png +0 -0
  280. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/PL.png +0 -0
  281. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/PM.png +0 -0
  282. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/PN.png +0 -0
  283. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/PR.png +0 -0
  284. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/PS.png +0 -0
  285. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/PT.png +0 -0
  286. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/PW.png +0 -0
  287. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/PY.png +0 -0
  288. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/QA.png +0 -0
  289. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/RE.png +0 -0
  290. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/RO.png +0 -0
  291. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/RS.png +0 -0
  292. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/RU.png +0 -0
  293. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/RW.png +0 -0
  294. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/SA.png +0 -0
  295. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/SB.png +0 -0
  296. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/SC.png +0 -0
  297. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/SD.png +0 -0
  298. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/SE.png +0 -0
  299. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/SG.png +0 -0
  300. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/SH.png +0 -0
  301. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/SI.png +0 -0
  302. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/SJ.png +0 -0
  303. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/SK.png +0 -0
  304. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/SL.png +0 -0
  305. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/SM.png +0 -0
  306. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/SN.png +0 -0
  307. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/SO.png +0 -0
  308. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/SR.png +0 -0
  309. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/SS.png +0 -0
  310. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/ST.png +0 -0
  311. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/SV.png +0 -0
  312. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/SY.png +0 -0
  313. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/SZ.png +0 -0
  314. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/TC.png +0 -0
  315. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/TD.png +0 -0
  316. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/TF.png +0 -0
  317. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/TG.png +0 -0
  318. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/TH.png +0 -0
  319. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/TJ.png +0 -0
  320. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/TK.png +0 -0
  321. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/TL.png +0 -0
  322. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/TM.png +0 -0
  323. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/TN.png +0 -0
  324. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/TO.png +0 -0
  325. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/TR.png +0 -0
  326. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/TT.png +0 -0
  327. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/TV.png +0 -0
  328. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/TW.png +0 -0
  329. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/TZ.png +0 -0
  330. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/UA.png +0 -0
  331. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/UG.png +0 -0
  332. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/UM.png +0 -0
  333. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/US.png +0 -0
  334. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/UY.png +0 -0
  335. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/UZ.png +0 -0
  336. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/VA.png +0 -0
  337. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/VC.png +0 -0
  338. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/VE.png +0 -0
  339. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/VG.png +0 -0
  340. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/VI.png +0 -0
  341. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/VN.png +0 -0
  342. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/VU.png +0 -0
  343. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/WF.png +0 -0
  344. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/WS.png +0 -0
  345. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/YE.png +0 -0
  346. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/YT.png +0 -0
  347. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/ZA.png +0 -0
  348. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/ZM.png +0 -0
  349. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/flags/ZW.png +0 -0
  350. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/fonts/Extra.otf +0 -0
  351. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/fonts/Torus Regular.otf +0 -0
  352. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/fonts/Torus SemiBold.otf +0 -0
  353. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/fonts/Venera.otf +0 -0
  354. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/help.png +0 -0
  355. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/info.png +0 -0
  356. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/maniabeatmapinfo.png +0 -0
  357. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/match/mplink.png +0 -0
  358. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/match/mplink_map.png +0 -0
  359. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/match/team_blue.png +0 -0
  360. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/match/team_red.png +0 -0
  361. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/medals/medals.json +0 -0
  362. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/mods/4K.png +0 -0
  363. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/mods/5K.png +0 -0
  364. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/mods/6K.png +0 -0
  365. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/mods/7K.png +0 -0
  366. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/mods/8K.png +0 -0
  367. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/mods/9K.png +0 -0
  368. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/mods/AP.png +0 -0
  369. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/mods/CL.png +0 -0
  370. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/mods/DT.png +0 -0
  371. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/mods/EZ.png +0 -0
  372. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/mods/FI.png +0 -0
  373. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/mods/FL.png +0 -0
  374. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/mods/HD.png +0 -0
  375. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/mods/HR.png +0 -0
  376. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/mods/HT.png +0 -0
  377. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/mods/MR.png +0 -0
  378. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/mods/NC.png +0 -0
  379. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/mods/NF.png +0 -0
  380. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/mods/PF.png +0 -0
  381. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/mods/RX.png +0 -0
  382. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/mods/SD.png +0 -0
  383. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/mods/SO.png +0 -0
  384. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/mods/TD.png +0 -0
  385. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/mods/V2.png +0 -0
  386. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/ranking/ranking-A.png +0 -0
  387. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/ranking/ranking-B.png +0 -0
  388. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/ranking/ranking-C.png +0 -0
  389. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/ranking/ranking-D.png +0 -0
  390. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/ranking/ranking-F.png +0 -0
  391. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/ranking/ranking-S.png +0 -0
  392. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/ranking/ranking-SH.png +0 -0
  393. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/ranking/ranking-X.png +0 -0
  394. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/ranking/ranking-XH.png +0 -0
  395. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/work/bmap.png +0 -0
  396. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/work/center.png +0 -0
  397. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/work/left.png +0 -0
  398. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/work/right.png +0 -0
  399. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/work/stars.png +0 -0
  400. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/work/stars_expertplus.png +0 -0
  401. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/osufile/work/suppoter.png +0 -0
  402. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/pp.py +0 -0
  403. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/schema/__init__.py +0 -0
  404. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/schema/alphaosu.py +0 -0
  405. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/schema/basemodel.py +0 -0
  406. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/schema/beatmap.py +0 -0
  407. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/schema/match.py +0 -0
  408. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/schema/ppysb/__init__.py +0 -0
  409. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/schema/sayo_beatmap.py +0 -0
  410. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/schema/score.py +0 -0
  411. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/schema/user.py +0 -0
  412. {nonebot-plugin-osubot-6.20.1 → nonebot-plugin-osubot-6.21.0}/nonebot_plugin_osubot/utils/__init__.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: nonebot-plugin-osubot
3
- Version: 6.20.1
3
+ Version: 6.21.0
4
4
  Summary: OSUbot in NoneBot2
5
5
  License: AGPL-3.0
6
6
  Author-email: yaowan233 <572473053@qq.com>
@@ -673,9 +673,10 @@ Catch.prototype.draw2 = function (SCALE, SPEED = 1, params = {}) {
673
673
  // 按总物件数/时间控制密度
674
674
  let totalTime = this.fullCatchObjects[this.fullCatchObjects.length - 1].time - this.fullCatchObjects[0].time;
675
675
  if (this.fullCatchObjects.length * 1000 / totalTime > 2) comboSplit = Math.ceil(this.fullCatchObjects.length * 1000 / totalTime) * 10;
676
- // 按0.5*位数修约
677
- let roundBy = Math.pow(10, comboSplit.toString().length) * 0.5;
676
+ // 按0.5*(10^(位数-1&&最小为2))修约 60=>50 270=>250 820=>800 1434=>1500 1834=>2000
677
+ let roundBy = Math.pow(10, Math.max(comboSplit.toString().length - 1, 2)) * 0.5;
678
678
  comboSplit = Math.round(comboSplit / roundBy) * roundBy;
679
+ if (comboSplit <= 0) comboSplit = 20;
679
680
  for (let i = 0; i < this.fullCatchObjects.length; i++) {
680
681
  let showCombo = null;
681
682
  if (objs[i].type === "Fruit" || objs[i].type === "Droplet") {
@@ -799,4 +800,4 @@ Catch.prototype.processProgressBar = function (ctx, totalTime) {
799
800
  ctx.fillRect(ctxwidth * time / totalTime, 0, ctxwidth * (endtime - time) / totalTime, ctxheight);
800
801
  }
801
802
  }
802
- };
803
+ };
@@ -28,14 +28,18 @@ from .utils import (
28
28
  open_user_icon,
29
29
  filter_scores_with_regex,
30
30
  trim_text_with_ellipsis,
31
+ draw_text_with_outline,
31
32
  )
32
33
  from .static import (
33
34
  Image,
34
35
  IconLs,
35
- Venera_75,
36
+ Venera_60,
37
+ Torus_Regular_15,
36
38
  Torus_Regular_20,
37
- Torus_Regular_30,
38
- Torus_Regular_75,
39
+ Torus_Regular_25,
40
+ Torus_Regular_50,
41
+ Torus_Regular_60,
42
+ Torus_SemiBold_15,
39
43
  Torus_SemiBold_20,
40
44
  Torus_SemiBold_25,
41
45
  Torus_SemiBold_30,
@@ -197,15 +201,23 @@ async def draw_score_pic(score_info: UnifiedScore, info: UnifiedUser, map_json,
197
201
  original_ss_pp_info = get_ss_pp(str(osu.absolute()), 0, is_lazer)
198
202
  if_pp, ss_pp = get_if_pp_ss_pp(score_info, str(osu.absolute()), is_lazer)
199
203
  # 新建图片
200
- im = Image.new("RGBA", (1500, 720))
204
+ im = Image.new("RGBA", (1280, 720))
201
205
  draw = ImageDraw.Draw(im)
202
206
  # 获取cover并裁剪,高斯,降低亮度
203
207
  try:
204
208
  bg = await get_bg(mapinfo.id, mapinfo.beatmapset_id)
205
- cover_crop = await crop_bg((1500, 720), bg)
206
- cover_gb = cover_crop.filter(ImageFilter.GaussianBlur(3))
207
- cover_img = ImageEnhance.Brightness(cover_gb).enhance(2 / 4.0)
208
- im.alpha_composite(cover_img, (0, 0))
209
+ cover_crop_left = await crop_bg((1280, 720), bg)
210
+ cover_gb_left = cover_crop_left.filter(ImageFilter.GaussianBlur(10))
211
+ cover_gb_left = ImageEnhance.Brightness(cover_gb_left).enhance(1)
212
+ cover_img_left = ImageEnhance.Brightness(cover_gb_left).enhance(2 / 4.0)
213
+ im.alpha_composite(cover_img_left, (0, 0))
214
+ # 新小图 BG
215
+ cover_crop_right = await crop_bg((650, 270), bg)
216
+ cover_gb_right = cover_crop_right.filter(ImageFilter.GaussianBlur(1))
217
+ cover_gb_right = ImageEnhance.Brightness(cover_gb_right).enhance(0.9)
218
+ cover_img_right = ImageEnhance.Brightness(cover_gb_right).enhance(1)
219
+ cover_img_right = draw_fillet(cover_img_right, 15)
220
+ im.alpha_composite(cover_img_right, (0, 50))
209
221
  except NetworkError:
210
222
  ...
211
223
  # 获取成绩背景做底图
@@ -213,58 +225,65 @@ async def draw_score_pic(score_info: UnifiedScore, info: UnifiedUser, map_json,
213
225
  recent_bg = Image.open(bg).convert("RGBA")
214
226
  im.alpha_composite(recent_bg)
215
227
  # 模式
216
- draw.text((75, 75), IconLs[score_info.ruleset_id], font=extra_30, anchor="lt")
228
+ draw_text_with_outline(
229
+ draw,
230
+ (30, 80),
231
+ IconLs[score_info.ruleset_id],
232
+ extra_30,
233
+ anchor="lm",
234
+ fill=(255, 255, 255, 255),
235
+ )
217
236
  # 难度星星
218
237
  stars_bg = stars_diff(pp_info.difficulty.stars)
219
238
  stars_img = stars_bg.resize((85, 37))
220
- im.alpha_composite(stars_img, (122, 72))
239
+ im.alpha_composite(stars_img, (552, 67))
221
240
  if pp_info.difficulty.stars < 6.5:
222
241
  color = (0, 0, 0, 255)
223
242
  else:
224
243
  color = (255, 217, 102, 255)
225
244
  # 星级
226
245
  draw.text(
227
- (128, 90),
246
+ (556, 85),
228
247
  f"★{pp_info.difficulty.stars:.2f}",
229
248
  font=Torus_SemiBold_20,
230
249
  anchor="lm",
231
250
  fill=color,
232
251
  )
233
252
  # mods
234
- if any(i in score_info.mods for i in (Mod(acronym="HD"), Mod(acronym="FL"), Mod(acronym="FI"))):
235
- ranking = ["XH", "SH", "A", "B", "C", "D", "F"]
236
- else:
237
- ranking = ["X", "S", "A", "B", "C", "D", "F"]
253
+ # if any(i in score_info.mods for i in (Mod(acronym="HD"), Mod(acronym="FL"), Mod(acronym="FI"))):
254
+ # ranking = ["XH", "SH", "A", "B", "C", "D", "F"]
255
+ # else:
256
+ # ranking = ["X", "S", "A", "B", "C", "D", "F"]
238
257
  if score_info.mods:
239
258
  for mods_num, s_mods in enumerate(score_info.mods):
240
259
  mods_bg = osufile / "mods" / f"{s_mods.acronym}.png"
241
260
  try:
242
261
  mods_img = Image.open(mods_bg).convert("RGBA")
243
- im.alpha_composite(mods_img, (500 + 50 * mods_num, 160))
262
+ im.alpha_composite(mods_img, (880 + 50 * mods_num, 100))
244
263
  except FileNotFoundError:
245
264
  pass
246
265
  # 成绩S-F
247
- rank_ok = False
248
- for rank_num, i in enumerate(ranking):
249
- rank_img = osufile / "ranking" / f"ranking-{i}.png"
250
- if rank_ok:
251
- rank_b = Image.open(rank_img).convert("RGBA").resize((48, 24))
252
- rank_new = Image.new("RGBA", rank_b.size, (0, 0, 0, 0))
253
- rank_bg = Image.blend(rank_new, rank_b, 0.5)
254
- elif i != score_info.rank:
255
- rank_b = Image.open(rank_img).convert("RGBA").resize((48, 24))
256
- rank_new = Image.new("RGBA", rank_b.size, (0, 0, 0, 0))
257
- rank_bg = Image.blend(rank_new, rank_b, 0.2)
258
- else:
259
- rank_bg = Image.open(rank_img).convert("RGBA").resize((48, 24))
260
- rank_ok = True
261
- im.alpha_composite(rank_bg, (75, 163 + 39 * rank_num))
266
+ # rank_ok = False
267
+ # for rank_num, i in enumerate(ranking):
268
+ # rank_img = osufile / "ranking" / f"ranking-{i}.png"
269
+ # if rank_ok:
270
+ # rank_b = Image.open(rank_img).convert("RGBA").resize((48, 24))
271
+ # rank_new = Image.new("RGBA", rank_b.size, (0, 0, 0, 0))
272
+ # rank_bg = Image.blend(rank_new, rank_b, 0.5)
273
+ # elif i != score_info.rank:
274
+ # rank_b = Image.open(rank_img).convert("RGBA").resize((48, 24))
275
+ # rank_new = Image.new("RGBA", rank_b.size, (0, 0, 0, 0))
276
+ # rank_bg = Image.blend(rank_new, rank_b, 0.2)
277
+ # else:
278
+ # rank_bg = Image.open(rank_img).convert("RGBA").resize((48, 24))
279
+ # rank_ok = True
280
+ # im.alpha_composite(rank_bg, (75, 163 + 39 * rank_num))
262
281
  # 成绩+acc
263
282
  im = draw_acc(im, score_info.accuracy, score_info.ruleset_id)
264
283
  # 地区
265
284
  country = osufile / "flags" / f"{info.country_code}.png"
266
285
  country_bg = Image.open(country).convert("RGBA").resize((66, 45))
267
- im.alpha_composite(country_bg, (250, 577))
286
+ im.alpha_composite(country_bg, (208, 597))
268
287
  if info.team and info.team.flag_url:
269
288
  team_path = team_cache_path / f"{info.team.id}.png"
270
289
  if not team_path.exists():
@@ -273,11 +292,11 @@ async def draw_score_pic(score_info: UnifiedScore, info: UnifiedUser, map_json,
273
292
  team_img.save(team_path)
274
293
  try:
275
294
  team_img = Image.open(team_path).convert("RGBA").resize((80, 40))
276
- im.alpha_composite(team_img, (250, 640))
295
+ im.alpha_composite(team_img, (208, 660))
277
296
  except UnidentifiedImageError:
278
297
  team_path.unlink()
279
298
  raise NetworkError("team 图片下载错误,请重试!")
280
- draw.text((340, 660), info.team.name, font=Torus_Regular_20, anchor="lt")
299
+ draw.text((297, 675), info.team.name, font=Torus_Regular_20, anchor="lt")
281
300
  # supporter
282
301
  # if info.is_supporter:
283
302
  # im.alpha_composite(SupporterBg.resize((40, 40)), (250, 640))
@@ -309,38 +328,38 @@ async def draw_score_pic(score_info: UnifiedScore, info: UnifiedUser, map_json,
309
328
  ]
310
329
 
311
330
  for num, (orig, new) in enumerate(zip(original_mapdiff, mapdiff)):
312
- orig_difflen = int(250 * max(0, orig) / 10) if orig <= 10 else 250
313
- new_difflen = int(250 * max(0, new) / 10) if new <= 10 else 250
331
+ orig_difflen = int(400 * max(0, orig) / 10) if orig <= 10 else 400
332
+ new_difflen = int(400 * max(0, new) / 10) if new <= 10 else 400
314
333
  if is_close(new, orig):
315
334
  color = (255, 255, 255, 255)
316
335
  diff_len = Image.new("RGBA", (orig_difflen, 8), color)
317
- im.alpha_composite(diff_len, (1190, 306 + 35 * num))
336
+ im.alpha_composite(diff_len, (165, 352 + 35 * num))
318
337
  elif new > orig and not (score_info.ruleset_id == 3 and mapinfo.mode == "osu"):
319
338
  color = (198, 92, 102, 255)
320
339
  orig_color = (246, 136, 144, 255)
321
340
  new_diff_len = Image.new("RGBA", (new_difflen, 8), color)
322
- im.alpha_composite(new_diff_len, (1190, 306 + 35 * num))
341
+ im.alpha_composite(new_diff_len, (165, 352 + 35 * num))
323
342
  orig_diff_len = Image.new("RGBA", (orig_difflen, 8), orig_color)
324
- im.alpha_composite(orig_diff_len, (1190, 306 + 35 * num))
343
+ im.alpha_composite(orig_diff_len, (165, 352 + 35 * num))
325
344
  elif new < orig and not (score_info.ruleset_id == 3 and mapinfo.mode == "osu"):
326
345
  color = (161, 212, 238, 255)
327
346
  orig_color = (255, 255, 255, 255)
328
347
  orig_diff_len = Image.new("RGBA", (orig_difflen, 8), orig_color)
329
- im.alpha_composite(orig_diff_len, (1190, 306 + 35 * num))
348
+ im.alpha_composite(orig_diff_len, (165, 352 + 35 * num))
330
349
  new_diff_len = Image.new("RGBA", (new_difflen, 8), color)
331
- im.alpha_composite(new_diff_len, (1190, 306 + 35 * num))
350
+ im.alpha_composite(new_diff_len, (165, 352 + 35 * num))
332
351
  else:
333
352
  raise Exception("没有这种情况")
334
353
  if new == round(new):
335
354
  draw.text(
336
- (1470, 310 + 35 * num),
355
+ (610, 355 + 35 * num),
337
356
  f"{new:.0f}",
338
357
  font=Torus_SemiBold_20,
339
358
  anchor="mm",
340
359
  )
341
360
  else:
342
361
  draw.text(
343
- (1470, 310 + 35 * num),
362
+ (610, 355 + 35 * num),
344
363
  f"{new:.2f}" if new != round(new, 1) else f"{new:.1f}",
345
364
  font=Torus_SemiBold_20,
346
365
  anchor="mm",
@@ -351,253 +370,291 @@ async def draw_score_pic(score_info: UnifiedScore, info: UnifiedUser, map_json,
351
370
  if stars > original_stars:
352
371
  color = (198, 92, 102, 255)
353
372
  orig_color = (246, 111, 34, 255)
354
- new_difflen = int(250 * max(0.0, stars) / 10) if stars <= 10 else 250
373
+ new_difflen = int(400 * max(0.0, stars) / 10) if stars <= 10 else 400
355
374
  new_diff_len = Image.new("RGBA", (new_difflen, 8), color)
356
- im.alpha_composite(new_diff_len, (1190, 446))
357
- orig_difflen = int(250 * max(0.0, original_stars) / 10) if original_stars <= 10 else 250
375
+ im.alpha_composite(new_diff_len, (165, 490))
376
+ orig_difflen = int(400 * max(0.0, original_stars) / 10) if original_stars <= 10 else 400
358
377
  orig_diff_len = Image.new("RGBA", (orig_difflen, 8), orig_color)
359
- im.alpha_composite(orig_diff_len, (1190, 446))
378
+ im.alpha_composite(orig_diff_len, (165, 490))
360
379
  elif stars < original_stars:
361
380
  color = (161, 187, 127, 255)
362
381
  orig_color = (255, 204, 34, 255)
363
- orig_difflen = int(250 * max(0.0, original_stars) / 10) if original_stars <= 10 else 250
382
+ orig_difflen = int(400 * max(0.0, original_stars) / 10) if original_stars <= 10 else 400
364
383
  orig_diff_len = Image.new("RGBA", (orig_difflen, 8), orig_color)
365
- im.alpha_composite(orig_diff_len, (1190, 446))
366
- new_difflen = int(250 * max(0.0, stars) / 10) if stars <= 10 else 250
384
+ im.alpha_composite(orig_diff_len, (165, 490))
385
+ new_difflen = int(400 * max(0.0, stars) / 10) if stars <= 10 else 400
367
386
  new_diff_len = Image.new("RGBA", (new_difflen, 8), color)
368
- im.alpha_composite(new_diff_len, (1190, 446))
387
+ im.alpha_composite(new_diff_len, (165, 490))
369
388
  else:
370
389
  color = (255, 204, 34, 255)
371
- difflen = int(250 * stars / 10) if stars <= 10 else 250
390
+ difflen = int(400 * stars / 10) if stars <= 10 else 400
372
391
  diff_len = Image.new("RGBA", (difflen, 8), color)
373
- im.alpha_composite(diff_len, (1190, 446))
374
- draw.text((1470, 450), f"{stars:.2f}", font=Torus_SemiBold_20, anchor="mm")
392
+ im.alpha_composite(diff_len, (165, 490))
393
+ draw.text((610, 493), f"{stars:.2f}", font=Torus_SemiBold_20, anchor="mm")
375
394
  # 时长 - 滑条
376
- diff_info = (
395
+ diff_info = [
377
396
  calc_songlen(mapinfo.total_length),
378
397
  f"{mapinfo.bpm:.1f}",
379
398
  mapinfo.count_circles,
380
399
  mapinfo.count_sliders,
381
- )
400
+ ] + ([mapinfo.count_spinners] if score_info.ruleset_id != 3 else [])
382
401
  for num, i in enumerate(diff_info):
383
- draw.text(
384
- (1070 + 120 * num, 245),
402
+ draw_text_with_outline(
403
+ draw,
404
+ (70 + 120 * num, 300),
385
405
  f"{i}",
386
406
  font=Torus_Regular_20,
387
407
  anchor="lm",
388
408
  fill=(255, 204, 34, 255),
389
409
  )
390
410
  # 状态
391
- draw.text((1400, 184), mapinfo.status.capitalize(), font=Torus_SemiBold_20, anchor="mm")
411
+ draw_text_with_outline(
412
+ draw,
413
+ (595, 115),
414
+ mapinfo.status.capitalize(),
415
+ Torus_SemiBold_15,
416
+ anchor="mm",
417
+ fill=(255, 255, 255, 255),
418
+ )
419
+ # setid
420
+ draw.text((20, 25), f"Setid:{mapinfo.beatmapset_id}", font=Torus_SemiBold_20, anchor="lm")
392
421
  # mapid
393
- draw.text((1485, 90), f"Mapid: {mapinfo.id}", font=Torus_SemiBold_20, anchor="rm")
422
+ draw.text((650, 25), f"Mapid: {mapinfo.id}", font=Torus_SemiBold_20, anchor="rm")
394
423
  # 曲名
395
- draw.text(
396
- (75, 38),
397
- f"{mapinfo.beatmapset.title} | by {mapinfo.beatmapset.artist_unicode}",
398
- font=Torus_SemiBold_30,
424
+ title = trim_text_with_ellipsis(mapinfo.beatmapset.title, 600, Torus_SemiBold_30)
425
+ draw_text_with_outline(
426
+ draw,
427
+ (30, 200),
428
+ title,
429
+ Torus_SemiBold_30,
399
430
  anchor="lm",
431
+ fill=(255, 255, 255, 255),
400
432
  )
401
- # 谱面版本,mapper
433
+ # 艺术家
434
+ artist = trim_text_with_ellipsis(mapinfo.beatmapset.artist, 600, Torus_SemiBold_20)
435
+ draw_text_with_outline(
436
+ draw,
437
+ (30, 230),
438
+ artist,
439
+ Torus_SemiBold_20,
440
+ anchor="lm",
441
+ fill=(255, 255, 255, 255),
442
+ )
443
+ # mapper
402
444
  if mapinfo.owners:
403
445
  owner_names = [owner.username for owner in mapinfo.owners]
404
446
  owners_str = ", ".join(owner_names)
405
- mapper = f"{mapinfo.version} | 谱师: {owners_str}"
447
+ mapper = f"谱师: {owners_str}"
406
448
 
407
449
  else:
408
- mapper = f"{mapinfo.version} | 谱师: {mapinfo.beatmapset.creator}"
409
- mapper = trim_text_with_ellipsis(mapper, 1000, Torus_SemiBold_20)
410
-
411
- draw.text(
412
- (225, 90),
450
+ mapper = f"谱师: {mapinfo.beatmapset.creator}"
451
+ mapper = trim_text_with_ellipsis(mapper, 600, Torus_SemiBold_15)
452
+ draw_text_with_outline(
453
+ draw,
454
+ (30, 265),
413
455
  mapper,
414
- font=Torus_SemiBold_20,
456
+ Torus_SemiBold_15,
457
+ anchor="lm",
458
+ fill=(255, 255, 255, 255),
459
+ )
460
+ # 谱面版本
461
+ version = trim_text_with_ellipsis(mapinfo.version, 450, Torus_SemiBold_15)
462
+ draw_text_with_outline(
463
+ draw,
464
+ (65, 80),
465
+ version,
466
+ Torus_SemiBold_15,
415
467
  anchor="lm",
468
+ fill=(255, 255, 255, 255),
416
469
  )
417
470
  # 评价
418
- draw.text((316, 307), score_info.rank, font=Venera_75, anchor="mm")
471
+ draw.text((772, 185), score_info.rank, font=Venera_60, anchor="mm")
419
472
  # 分数
420
473
  draw.text(
421
- (498, 251),
474
+ (880, 165),
422
475
  f"{score_info.legacy_total_score or score_info.total_score:,}",
423
- font=Torus_Regular_75,
476
+ font=Torus_Regular_60,
424
477
  anchor="lm",
425
478
  )
426
479
  # 时间
427
- draw.text((498, 341), "达成时间:", font=Torus_SemiBold_20, anchor="lm")
428
- draw.text((630, 341), score_info.ended_at.strftime("%Y-%m-%d %H:%M:%S"), font=Torus_SemiBold_20, anchor="lm")
480
+ draw.text((883, 260), "达成时间:", font=Torus_SemiBold_20, anchor="lm")
481
+ draw.text((985, 260), score_info.ended_at.strftime("%Y-%m-%d %H:%M:%S"), font=Torus_SemiBold_20, anchor="lm")
429
482
  # 全球排名
430
- draw.text((583, 410), f"#{grank}" if grank else "", font=Torus_SemiBold_25, anchor="mm")
483
+ draw.text((715, 300), "全球排行:" if grank else "", font=Torus_SemiBold_20, anchor="lm")
484
+ draw.text((817, 300), f"#{grank}" if grank else "", font=Torus_SemiBold_25, anchor="lm")
431
485
  # 左下玩家名
432
- draw.text((250, 530), info.username, font=Torus_SemiBold_30, anchor="lm")
486
+ draw.text((208, 550), info.username, font=Torus_SemiBold_30, anchor="lm")
433
487
  # 国内排名
434
488
  draw.text(
435
- (325, 610),
489
+ (283, 630),
436
490
  f"#{info.statistics.country_rank}",
437
491
  font=Torus_SemiBold_25,
438
492
  anchor="lm",
439
493
  )
440
494
  if score_info.ruleset_id in {0, 4, 8}:
441
- draw.text((720, 550), ss_pp, font=Torus_Regular_30, anchor="mm")
442
- draw.text((840, 550), if_pp, font=Torus_Regular_30, anchor="mm")
443
- draw.text((960, 550), f"{pp_info.pp:.0f}", font=Torus_Regular_30, anchor="mm")
444
- draw.text((720, 645), f"{pp_info.pp_aim:.0f}", font=Torus_Regular_30, anchor="mm")
445
- draw.text((840, 645), f"{pp_info.pp_speed:.0f}", font=Torus_Regular_30, anchor="mm")
446
- draw.text((960, 645), f"{pp_info.pp_accuracy:.0f}", font=Torus_Regular_30, anchor="mm")
495
+ draw.text((1066, 393), ss_pp, font=Torus_Regular_25, anchor="mm")
496
+ draw.text((933, 393), if_pp, font=Torus_Regular_25, anchor="mm")
497
+ draw.text((768, 438), f"{pp_info.pp:.0f}", font=Torus_Regular_50, anchor="mm")
498
+ draw.text((933, 482), f"{pp_info.pp_aim:.0f}", font=Torus_Regular_25, anchor="mm")
499
+ draw.text((1066, 482), f"{pp_info.pp_speed:.0f}", font=Torus_Regular_25, anchor="mm")
500
+ draw.text((1200, 482), f"{pp_info.pp_accuracy:.0f}", font=Torus_Regular_25, anchor="mm")
447
501
  draw.text(
448
- (1157, 550),
502
+ (768, 577),
449
503
  f"{score_info.accuracy:.2f}%",
450
- font=Torus_Regular_30,
504
+ font=Torus_Regular_25,
451
505
  anchor="mm",
452
506
  )
453
507
  draw.text(
454
- (1385, 550),
508
+ (768, 666),
455
509
  f"{score_info.max_combo:,}/{pp_info.difficulty.max_combo}",
456
- font=Torus_Regular_30,
510
+ font=Torus_Regular_25,
457
511
  anchor="mm",
458
512
  )
459
513
  draw.text(
460
- (1100, 645),
514
+ (933, 577),
461
515
  f"{score_info.statistics.great or 0}",
462
- font=Torus_Regular_30,
516
+ font=Torus_Regular_25,
463
517
  anchor="mm",
464
518
  )
465
519
  draw.text(
466
- (1214, 645),
520
+ (1066, 577),
467
521
  f"{score_info.statistics.ok or 0}",
468
- font=Torus_Regular_30,
522
+ font=Torus_Regular_25,
469
523
  anchor="mm",
470
524
  )
471
525
  draw.text(
472
- (1328, 645),
526
+ (933, 666),
473
527
  f"{score_info.statistics.meh or 0}",
474
- font=Torus_Regular_30,
528
+ font=Torus_Regular_25,
475
529
  anchor="mm",
476
530
  )
477
531
  draw.text(
478
- (1442, 645),
532
+ (1066, 666),
479
533
  f"{score_info.statistics.miss or 0}",
480
- font=Torus_Regular_30,
534
+ font=Torus_Regular_25,
481
535
  anchor="mm",
482
536
  )
483
537
  elif score_info.ruleset_id in {1, 5}:
484
538
  draw.text(
485
- (1118, 550),
539
+ (768, 577),
486
540
  f"{score_info.accuracy:.2f}%",
487
- font=Torus_Regular_30,
541
+ font=Torus_Regular_25,
488
542
  anchor="mm",
489
543
  )
490
- draw.text((1270, 550), f"{score_info.max_combo:,}", font=Torus_Regular_30, anchor="mm")
491
- draw.text((1420, 550), f"{pp_info.pp:.0f}/{ss_pp}", font=Torus_Regular_30, anchor="mm")
544
+ draw.text((768, 666), f"{score_info.max_combo:,}", font=Torus_Regular_25, anchor="mm")
545
+ draw.text((768, 438), f"{pp_info.pp:.0f}", font=Torus_Regular_50, anchor="mm")
546
+ draw.text((933, 393), f"{ss_pp}", font=Torus_Regular_25, anchor="mm")
492
547
  draw.text(
493
- (1118, 645),
548
+ (933, 577),
494
549
  f"{score_info.statistics.great or 0}",
495
- font=Torus_Regular_30,
550
+ font=Torus_Regular_25,
496
551
  anchor="mm",
497
552
  )
498
553
  draw.text(
499
- (1270, 645),
554
+ (1066, 577),
500
555
  f"{score_info.statistics.ok or 0}",
501
- font=Torus_Regular_30,
556
+ font=Torus_Regular_25,
502
557
  anchor="mm",
503
558
  )
504
559
  draw.text(
505
- (1420, 645),
560
+ (933, 666),
506
561
  f"{score_info.statistics.miss or 0}",
507
- font=Torus_Regular_30,
562
+ font=Torus_Regular_25,
508
563
  anchor="mm",
509
564
  )
510
565
  elif score_info.ruleset_id in {2, 6}:
511
566
  draw.text(
512
- (1083, 550),
567
+ (768, 577),
513
568
  f"{score_info.accuracy:.2f}%",
514
- font=Torus_Regular_30,
569
+ font=Torus_Regular_25,
515
570
  anchor="mm",
516
571
  )
517
572
  draw.text(
518
- (1247, 550),
573
+ (768, 666),
519
574
  f"{score_info.max_combo}/{pp_info.difficulty.max_combo}",
520
- font=Torus_Regular_30,
575
+ font=Torus_Regular_25,
521
576
  anchor="mm",
522
577
  )
523
- draw.text((1411, 550), f"{pp_info.pp:.0f}/{ss_pp}", font=Torus_Regular_30, anchor="mm")
578
+ draw.text((768, 438), f"{pp_info.pp:.0f}", font=Torus_Regular_50, anchor="mm")
579
+ draw.text((933, 393), f"{ss_pp}", font=Torus_Regular_25, anchor="mm")
524
580
  draw.text(
525
- (1062, 645),
581
+ (933, 577),
526
582
  f"{score_info.statistics.great or 0}",
527
- font=Torus_Regular_30,
583
+ font=Torus_Regular_25,
528
584
  anchor="mm",
529
585
  )
530
586
  draw.text(
531
- (1185, 645),
587
+ (1066, 577),
532
588
  f"{score_info.statistics.large_tick_hit or 0}",
533
- font=Torus_Regular_30,
589
+ font=Torus_Regular_25,
534
590
  anchor="mm",
535
591
  )
536
592
  draw.text(
537
- (1309, 645),
593
+ (933, 666),
538
594
  f"{score_info.statistics.small_tick_miss or 0}",
539
- font=Torus_Regular_30,
595
+ font=Torus_Regular_25,
540
596
  anchor="mm",
541
597
  )
542
598
  draw.text(
543
- (1432, 645),
599
+ (1066, 666),
544
600
  f"{score_info.statistics.miss or 0}",
545
- font=Torus_Regular_30,
601
+ font=Torus_Regular_25,
546
602
  anchor="mm",
547
603
  )
548
604
  else:
549
605
  draw.text(
550
- (1002, 580),
606
+ (933, 600),
551
607
  (
552
608
  f"{score_info.statistics.perfect / score_info.statistics.great:.1f}:1"
553
609
  if (score_info.statistics.great or 0) != 0
554
610
  else "∞:1"
555
611
  ),
556
- font=Torus_Regular_20,
612
+ font=Torus_Regular_15,
557
613
  anchor="mm",
558
614
  )
559
615
  draw.text(
560
- (1002, 550),
616
+ (768, 577),
561
617
  f"{score_info.accuracy:.2f}%",
562
- font=Torus_Regular_30,
618
+ font=Torus_Regular_25,
563
619
  anchor="mm",
564
620
  )
565
- draw.text((1197, 550), f"{score_info.max_combo}", font=Torus_Regular_30, anchor="mm")
566
- draw.text((1395, 550), f"{pp_info.pp:.0f}/{ss_pp}", font=Torus_Regular_30, anchor="mm")
621
+ draw.text((768, 666), f"{score_info.max_combo}", font=Torus_Regular_25, anchor="mm")
622
+ draw.text((768, 438), f"{pp_info.pp:.0f}", font=Torus_Regular_50, anchor="mm")
623
+ draw.text((933, 393), f"{ss_pp}", font=Torus_Regular_25, anchor="mm")
567
624
  draw.text(
568
- (953, 645),
625
+ (933, 577),
569
626
  f"{score_info.statistics.perfect or 0}",
570
- font=Torus_Regular_30,
627
+ font=Torus_Regular_25,
571
628
  anchor="mm",
572
629
  )
573
630
  draw.text(
574
- (1051, 645),
631
+ (1066, 577),
575
632
  f"{score_info.statistics.great or 0}",
576
- font=Torus_Regular_30,
633
+ font=Torus_Regular_25,
577
634
  anchor="mm",
578
635
  )
579
636
  draw.text(
580
- (1150, 645),
637
+ (1200, 577),
581
638
  f"{score_info.statistics.good or 0}",
582
- font=Torus_Regular_30,
639
+ font=Torus_Regular_25,
583
640
  anchor="mm",
584
641
  )
585
642
  draw.text(
586
- (1249, 645),
643
+ (933, 666),
587
644
  f"{score_info.statistics.ok or 0}",
588
- font=Torus_Regular_30,
645
+ font=Torus_Regular_25,
589
646
  anchor="mm",
590
647
  )
591
648
  draw.text(
592
- (1347, 645),
649
+ (1066, 666),
593
650
  f"{score_info.statistics.meh or 0}",
594
- font=Torus_Regular_30,
651
+ font=Torus_Regular_25,
595
652
  anchor="mm",
596
653
  )
597
654
  draw.text(
598
- (1445, 645),
655
+ (1200, 666),
599
656
  f"{score_info.statistics.miss or 0}",
600
- font=Torus_Regular_30,
657
+ font=Torus_Regular_25,
601
658
  anchor="mm",
602
659
  )
603
660
  user_icon = await open_user_icon(info, source)
@@ -607,7 +664,7 @@ async def draw_score_pic(score_info: UnifiedScore, info: UnifiedUser, map_json,
607
664
  if not getattr(user_icon, "is_animated", False):
608
665
  icon_bg = user_icon.convert("RGBA").resize((170, 170))
609
666
  icon_img = draw_fillet(icon_bg, 15)
610
- im.alpha_composite(icon_img, (60, 510))
667
+ im.alpha_composite(icon_img, (27, 532))
611
668
  byt = BytesIO()
612
669
  im.convert("RGB").save(byt, "jpeg")
613
670
  im.close()
@@ -620,7 +677,7 @@ async def draw_score_pic(score_info: UnifiedScore, info: UnifiedUser, map_json,
620
677
  # 创建一个新的 RGBA 图片,将 PNG 图片作为背景,将当前帧添加到背景上
621
678
  rgba_frame = Image.new("RGBA", im.size, (0, 0, 0, 0))
622
679
  rgba_frame.paste(im, (0, 0), im)
623
- rgba_frame.paste(gif_frame, (60, 510), gif_frame)
680
+ rgba_frame.paste(gif_frame, (27, 532), gif_frame)
624
681
  # 将 RGBA 图片转换为 RGB 模式,并添加到 GIF 图片中
625
682
  gif_frames.append(rgba_frame)
626
683
  gif_bytes = BytesIO()
@@ -15,14 +15,15 @@ Torus_Regular_35 = ImageFont.truetype(str(osufile / "fonts" / "Torus Regular.otf
15
15
  Torus_Regular_40 = ImageFont.truetype(str(osufile / "fonts" / "Torus Regular.otf"), 40)
16
16
  Torus_Regular_45 = ImageFont.truetype(str(osufile / "fonts" / "Torus Regular.otf"), 45)
17
17
  Torus_Regular_50 = ImageFont.truetype(str(osufile / "fonts" / "Torus Regular.otf"), 50)
18
- Torus_Regular_75 = ImageFont.truetype(str(osufile / "fonts" / "Torus Regular.otf"), 75)
18
+ Torus_Regular_60 = ImageFont.truetype(str(osufile / "fonts" / "Torus Regular.otf"), 60)
19
+ Torus_SemiBold_15 = ImageFont.truetype(str(osufile / "fonts" / "Torus SemiBold.otf"), 15)
19
20
  Torus_SemiBold_20 = ImageFont.truetype(str(osufile / "fonts" / "Torus SemiBold.otf"), 20)
20
21
  Torus_SemiBold_25 = ImageFont.truetype(str(osufile / "fonts" / "Torus SemiBold.otf"), 25)
21
22
  Torus_SemiBold_30 = ImageFont.truetype(str(osufile / "fonts" / "Torus SemiBold.otf"), 30)
22
23
  Torus_SemiBold_40 = ImageFont.truetype(str(osufile / "fonts" / "Torus SemiBold.otf"), 40)
23
24
  Torus_SemiBold_45 = ImageFont.truetype(str(osufile / "fonts" / "Torus SemiBold.otf"), 45)
24
25
  Torus_SemiBold_50 = ImageFont.truetype(str(osufile / "fonts" / "Torus SemiBold.otf"), 50)
25
- Venera_75 = ImageFont.truetype(str(osufile / "fonts" / "Venera.otf"), 75)
26
+ Venera_60 = ImageFont.truetype(str(osufile / "fonts" / "Venera.otf"), 60)
26
27
  extra_30 = ImageFont.truetype(str(osufile / "fonts" / "Extra.otf"), 30)
27
28
 
28
29
  InfoImg = Image.open(osufile / "info.png").convert("RGBA")