nonebot-plugin-osubot 6.23.1__tar.gz → 6.24.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 (431) hide show
  1. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/PKG-INFO +1 -1
  2. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/api.py +7 -5
  3. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/bmap.py +19 -21
  4. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/bp.py +1 -1
  5. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/echarts.py +8 -2
  6. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/info.py +2 -0
  7. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/map.py +5 -2
  8. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/score.py +4 -4
  9. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/file.py +1 -12
  10. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/mania/__init__.py +9 -10
  11. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/matcher/bp_analyze.py +9 -9
  12. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/matcher/guess.py +3 -3
  13. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/matcher/map_convert.py +12 -7
  14. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/matcher/preview.py +3 -3
  15. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/matcher/recommend.py +7 -12
  16. nonebot-plugin-osubot-6.24.0/nonebot_plugin_osubot/osufile/mods/AP.png +0 -0
  17. nonebot-plugin-osubot-6.24.0/nonebot_plugin_osubot/osufile/mods/CL.png +0 -0
  18. nonebot-plugin-osubot-6.24.0/nonebot_plugin_osubot/osufile/mods/DT.png +0 -0
  19. nonebot-plugin-osubot-6.24.0/nonebot_plugin_osubot/osufile/mods/EZ.png +0 -0
  20. nonebot-plugin-osubot-6.24.0/nonebot_plugin_osubot/osufile/mods/FI.png +0 -0
  21. nonebot-plugin-osubot-6.24.0/nonebot_plugin_osubot/osufile/mods/FL.png +0 -0
  22. nonebot-plugin-osubot-6.24.0/nonebot_plugin_osubot/osufile/mods/HD.png +0 -0
  23. nonebot-plugin-osubot-6.24.0/nonebot_plugin_osubot/osufile/mods/HR.png +0 -0
  24. nonebot-plugin-osubot-6.24.0/nonebot_plugin_osubot/osufile/mods/HT.png +0 -0
  25. nonebot-plugin-osubot-6.24.0/nonebot_plugin_osubot/osufile/mods/MR.png +0 -0
  26. nonebot-plugin-osubot-6.24.0/nonebot_plugin_osubot/osufile/mods/NC.png +0 -0
  27. nonebot-plugin-osubot-6.24.0/nonebot_plugin_osubot/osufile/mods/NF.png +0 -0
  28. nonebot-plugin-osubot-6.24.0/nonebot_plugin_osubot/osufile/mods/PF.png +0 -0
  29. nonebot-plugin-osubot-6.24.0/nonebot_plugin_osubot/osufile/mods/RX.png +0 -0
  30. nonebot-plugin-osubot-6.24.0/nonebot_plugin_osubot/osufile/mods/SD.png +0 -0
  31. nonebot-plugin-osubot-6.24.0/nonebot_plugin_osubot/osufile/mods/SO.png +0 -0
  32. nonebot-plugin-osubot-6.24.0/nonebot_plugin_osubot/osufile/mods/TD.png +0 -0
  33. nonebot-plugin-osubot-6.24.0/nonebot_plugin_osubot/osufile/mods/V2.png +0 -0
  34. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/schema/__init__.py +0 -2
  35. nonebot-plugin-osubot-6.24.0/nonebot_plugin_osubot/schema/beatmapsets.py +42 -0
  36. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/schema/score.py +1 -0
  37. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/pyproject.toml +1 -1
  38. nonebot-plugin-osubot-6.23.1/nonebot_plugin_osubot/osufile/mods/AP.png +0 -0
  39. nonebot-plugin-osubot-6.23.1/nonebot_plugin_osubot/osufile/mods/CL.png +0 -0
  40. nonebot-plugin-osubot-6.23.1/nonebot_plugin_osubot/osufile/mods/DT.png +0 -0
  41. nonebot-plugin-osubot-6.23.1/nonebot_plugin_osubot/osufile/mods/EZ.png +0 -0
  42. nonebot-plugin-osubot-6.23.1/nonebot_plugin_osubot/osufile/mods/FI.png +0 -0
  43. nonebot-plugin-osubot-6.23.1/nonebot_plugin_osubot/osufile/mods/FL.png +0 -0
  44. nonebot-plugin-osubot-6.23.1/nonebot_plugin_osubot/osufile/mods/HD.png +0 -0
  45. nonebot-plugin-osubot-6.23.1/nonebot_plugin_osubot/osufile/mods/HR.png +0 -0
  46. nonebot-plugin-osubot-6.23.1/nonebot_plugin_osubot/osufile/mods/HT.png +0 -0
  47. nonebot-plugin-osubot-6.23.1/nonebot_plugin_osubot/osufile/mods/MR.png +0 -0
  48. nonebot-plugin-osubot-6.23.1/nonebot_plugin_osubot/osufile/mods/NC.png +0 -0
  49. nonebot-plugin-osubot-6.23.1/nonebot_plugin_osubot/osufile/mods/NF.png +0 -0
  50. nonebot-plugin-osubot-6.23.1/nonebot_plugin_osubot/osufile/mods/PF.png +0 -0
  51. nonebot-plugin-osubot-6.23.1/nonebot_plugin_osubot/osufile/mods/RX.png +0 -0
  52. nonebot-plugin-osubot-6.23.1/nonebot_plugin_osubot/osufile/mods/SD.png +0 -0
  53. nonebot-plugin-osubot-6.23.1/nonebot_plugin_osubot/osufile/mods/SO.png +0 -0
  54. nonebot-plugin-osubot-6.23.1/nonebot_plugin_osubot/osufile/mods/TD.png +0 -0
  55. nonebot-plugin-osubot-6.23.1/nonebot_plugin_osubot/osufile/mods/V2.png +0 -0
  56. nonebot-plugin-osubot-6.23.1/nonebot_plugin_osubot/schema/sayo_beatmap.py +0 -59
  57. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/README.md +0 -0
  58. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/__init__.py +0 -0
  59. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/beatmap_stats_moder.py +0 -0
  60. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/config.py +0 -0
  61. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/data/osu/1849145.osz +0 -0
  62. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/data/osu/1849145.zip +0 -0
  63. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/database/__init__.py +0 -0
  64. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/database/models.py +0 -0
  65. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/__init__.py +0 -0
  66. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/catch_preview.py +0 -0
  67. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/catch_preview_templates/css/style.css +0 -0
  68. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/beatmap/beatmap.js +0 -0
  69. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/beatmap/hitobject.js +0 -0
  70. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/beatmap/point.js +0 -0
  71. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/beatmap/scroll.js +0 -0
  72. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/beatmap/timingpoint.js +0 -0
  73. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/catch/LegacyRandom.js +0 -0
  74. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/catch/PalpableCatchHitObject.js +0 -0
  75. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/catch/bananashower.js +0 -0
  76. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/catch/catch.js +0 -0
  77. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/catch/fruit.js +0 -0
  78. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/catch/juicestream.js +0 -0
  79. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/fakeaudio.js +0 -0
  80. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/preview.js +0 -0
  81. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/standard/curve/bezier2.js +0 -0
  82. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/standard/curve/catmullcurve.js +0 -0
  83. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/standard/curve/centripetalcatmullrom.js +0 -0
  84. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/standard/curve/circumstancedcircle.js +0 -0
  85. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/standard/curve/curve.js +0 -0
  86. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/standard/curve/curvetype.js +0 -0
  87. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/standard/curve/equaldistancemulticurve.js +0 -0
  88. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/standard/curve/linearbezier.js +0 -0
  89. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/standard/hitcircle.js +0 -0
  90. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/standard/slider.js +0 -0
  91. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/standard/spinner.js +0 -0
  92. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/util.js +0 -0
  93. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/viewbox.js +0 -0
  94. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/zip.min.js +0 -0
  95. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/catch_preview_templates/pic.html +0 -0
  96. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/match_history.py +0 -0
  97. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/rating.py +0 -0
  98. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/static.py +0 -0
  99. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/taiko_preview.py +0 -0
  100. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/templates/bpa_chart.html +0 -0
  101. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/templates/echarts.min.js +0 -0
  102. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/templates/mod_chart.html +0 -0
  103. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/templates/pp_rank_line_chart.html +0 -0
  104. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/utils.py +0 -0
  105. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/exceptions.py +0 -0
  106. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/info/__init__.py +0 -0
  107. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/info/bg.py +0 -0
  108. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/info/bind.py +0 -0
  109. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/matcher/__init__.py +0 -0
  110. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/matcher/bind.py +0 -0
  111. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/matcher/bp.py +0 -0
  112. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/matcher/getbg.py +0 -0
  113. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/matcher/history.py +0 -0
  114. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/matcher/info.py +0 -0
  115. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/matcher/map.py +0 -0
  116. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/matcher/match.py +0 -0
  117. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/matcher/medal.py +0 -0
  118. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/matcher/mu.py +0 -0
  119. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/matcher/osu_help.py +0 -0
  120. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/matcher/osudl.py +0 -0
  121. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/matcher/pr.py +0 -0
  122. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/matcher/rank.py +0 -0
  123. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/matcher/rating.py +0 -0
  124. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/matcher/score.py +0 -0
  125. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/matcher/update.py +0 -0
  126. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/matcher/update_mode.py +0 -0
  127. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/matcher/url_match.py +0 -0
  128. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/matcher/utils.py +0 -0
  129. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/mods.py +0 -0
  130. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/network/__init__.py +0 -0
  131. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/network/auto_retry.py +0 -0
  132. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/network/first_response.py +0 -0
  133. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/network/manager.py +0 -0
  134. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/Best Performance.png +0 -0
  135. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/History Score.jpg +0 -0
  136. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/beatmapinfo.png +0 -0
  137. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/convert.jpg +0 -0
  138. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/detail.png +0 -0
  139. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/AD.png +0 -0
  140. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/AE.png +0 -0
  141. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/AF.png +0 -0
  142. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/AG.png +0 -0
  143. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/AI.png +0 -0
  144. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/AL.png +0 -0
  145. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/AM.png +0 -0
  146. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/AO.png +0 -0
  147. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/AQ.png +0 -0
  148. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/AR.png +0 -0
  149. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/AS.png +0 -0
  150. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/AT.png +0 -0
  151. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/AU.png +0 -0
  152. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/AW.png +0 -0
  153. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/AX.png +0 -0
  154. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/AZ.png +0 -0
  155. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/BA.png +0 -0
  156. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/BB.png +0 -0
  157. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/BD.png +0 -0
  158. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/BE.png +0 -0
  159. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/BF.png +0 -0
  160. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/BG.png +0 -0
  161. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/BH.png +0 -0
  162. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/BI.png +0 -0
  163. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/BJ.png +0 -0
  164. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/BL.png +0 -0
  165. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/BM.png +0 -0
  166. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/BN.png +0 -0
  167. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/BO.png +0 -0
  168. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/BQ (1).png +0 -0
  169. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/BQ (2).png +0 -0
  170. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/BR.png +0 -0
  171. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/BS.png +0 -0
  172. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/BT.png +0 -0
  173. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/BV.png +0 -0
  174. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/BW.png +0 -0
  175. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/BY.png +0 -0
  176. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/BZ.png +0 -0
  177. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/CA.png +0 -0
  178. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/CD.png +0 -0
  179. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/CF.png +0 -0
  180. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/CG.png +0 -0
  181. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/CH.png +0 -0
  182. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/CI.png +0 -0
  183. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/CK.png +0 -0
  184. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/CL.png +0 -0
  185. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/CM.png +0 -0
  186. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/CN.png +0 -0
  187. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/CO.png +0 -0
  188. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/CR.png +0 -0
  189. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/CU.png +0 -0
  190. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/CV.png +0 -0
  191. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/CX.png +0 -0
  192. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/CY.png +0 -0
  193. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/CZ.png +0 -0
  194. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/DE.png +0 -0
  195. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/DJ.png +0 -0
  196. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/DK.png +0 -0
  197. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/DM.png +0 -0
  198. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/DO.png +0 -0
  199. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/DZ.png +0 -0
  200. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/EC.png +0 -0
  201. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/EE.png +0 -0
  202. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/EG.png +0 -0
  203. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/EH.png +0 -0
  204. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/ER.png +0 -0
  205. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/ES.png +0 -0
  206. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/ET.png +0 -0
  207. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/FI.png +0 -0
  208. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/FJ.png +0 -0
  209. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/FK.png +0 -0
  210. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/FO.png +0 -0
  211. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/FR.png +0 -0
  212. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/GA.png +0 -0
  213. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/GB.png +0 -0
  214. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/GD.png +0 -0
  215. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/GE.png +0 -0
  216. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/GF.png +0 -0
  217. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/GG.png +0 -0
  218. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/GH.png +0 -0
  219. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/GI.png +0 -0
  220. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/GL.png +0 -0
  221. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/GM.png +0 -0
  222. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/GN.png +0 -0
  223. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/GP.png +0 -0
  224. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/GQ.png +0 -0
  225. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/GR.png +0 -0
  226. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/GS.png +0 -0
  227. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/GT.png +0 -0
  228. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/GU.png +0 -0
  229. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/GW.png +0 -0
  230. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/GY.png +0 -0
  231. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/HK.png +0 -0
  232. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/HM.png +0 -0
  233. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/HN.png +0 -0
  234. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/HR.png +0 -0
  235. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/HT.png +0 -0
  236. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/HU.png +0 -0
  237. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/ID.png +0 -0
  238. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/IE.png +0 -0
  239. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/IL.png +0 -0
  240. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/IM.png +0 -0
  241. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/IN.png +0 -0
  242. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/IO.png +0 -0
  243. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/IQ.png +0 -0
  244. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/IR.png +0 -0
  245. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/IS.png +0 -0
  246. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/IT.png +0 -0
  247. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/JE.png +0 -0
  248. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/JM.png +0 -0
  249. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/JO.png +0 -0
  250. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/JP.png +0 -0
  251. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/KE.png +0 -0
  252. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/KG.png +0 -0
  253. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/KH.png +0 -0
  254. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/KI.png +0 -0
  255. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/KM.png +0 -0
  256. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/KN.png +0 -0
  257. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/KP.png +0 -0
  258. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/KR.png +0 -0
  259. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/KW.png +0 -0
  260. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/KY.png +0 -0
  261. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/KZ.png +0 -0
  262. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/LA.png +0 -0
  263. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/LB.png +0 -0
  264. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/LC.png +0 -0
  265. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/LI.png +0 -0
  266. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/LK.png +0 -0
  267. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/LR.png +0 -0
  268. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/LS.png +0 -0
  269. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/LT.png +0 -0
  270. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/LU.png +0 -0
  271. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/LV.png +0 -0
  272. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/LY.png +0 -0
  273. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/MA.png +0 -0
  274. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/MC.png +0 -0
  275. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/MD.png +0 -0
  276. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/ME.png +0 -0
  277. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/MF.png +0 -0
  278. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/MG.png +0 -0
  279. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/MH.png +0 -0
  280. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/MK.png +0 -0
  281. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/ML.png +0 -0
  282. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/MM.png +0 -0
  283. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/MN.png +0 -0
  284. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/MO.png +0 -0
  285. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/MP.png +0 -0
  286. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/MQ.png +0 -0
  287. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/MR.png +0 -0
  288. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/MS.png +0 -0
  289. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/MT.png +0 -0
  290. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/MU.png +0 -0
  291. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/MV.png +0 -0
  292. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/MW.png +0 -0
  293. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/MX.png +0 -0
  294. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/MY.png +0 -0
  295. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/MZ.png +0 -0
  296. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/NA.png +0 -0
  297. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/NC.png +0 -0
  298. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/NE.png +0 -0
  299. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/NF.png +0 -0
  300. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/NG.png +0 -0
  301. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/NI.png +0 -0
  302. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/NL.png +0 -0
  303. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/NO.png +0 -0
  304. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/NP.png +0 -0
  305. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/NR.png +0 -0
  306. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/NU.png +0 -0
  307. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/NZ.png +0 -0
  308. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/OM.png +0 -0
  309. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/PA.png +0 -0
  310. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/PE.png +0 -0
  311. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/PF.png +0 -0
  312. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/PG.png +0 -0
  313. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/PH.png +0 -0
  314. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/PK.png +0 -0
  315. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/PL.png +0 -0
  316. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/PM.png +0 -0
  317. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/PN.png +0 -0
  318. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/PR.png +0 -0
  319. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/PS.png +0 -0
  320. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/PT.png +0 -0
  321. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/PW.png +0 -0
  322. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/PY.png +0 -0
  323. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/QA.png +0 -0
  324. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/RE.png +0 -0
  325. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/RO.png +0 -0
  326. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/RS.png +0 -0
  327. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/RU.png +0 -0
  328. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/RW.png +0 -0
  329. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/SA.png +0 -0
  330. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/SB.png +0 -0
  331. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/SC.png +0 -0
  332. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/SD.png +0 -0
  333. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/SE.png +0 -0
  334. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/SG.png +0 -0
  335. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/SH.png +0 -0
  336. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/SI.png +0 -0
  337. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/SJ.png +0 -0
  338. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/SK.png +0 -0
  339. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/SL.png +0 -0
  340. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/SM.png +0 -0
  341. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/SN.png +0 -0
  342. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/SO.png +0 -0
  343. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/SR.png +0 -0
  344. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/SS.png +0 -0
  345. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/ST.png +0 -0
  346. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/SV.png +0 -0
  347. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/SY.png +0 -0
  348. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/SZ.png +0 -0
  349. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/TC.png +0 -0
  350. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/TD.png +0 -0
  351. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/TF.png +0 -0
  352. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/TG.png +0 -0
  353. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/TH.png +0 -0
  354. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/TJ.png +0 -0
  355. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/TK.png +0 -0
  356. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/TL.png +0 -0
  357. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/TM.png +0 -0
  358. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/TN.png +0 -0
  359. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/TO.png +0 -0
  360. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/TR.png +0 -0
  361. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/TT.png +0 -0
  362. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/TV.png +0 -0
  363. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/TW.png +0 -0
  364. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/TZ.png +0 -0
  365. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/UA.png +0 -0
  366. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/UG.png +0 -0
  367. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/UM.png +0 -0
  368. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/US.png +0 -0
  369. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/UY.png +0 -0
  370. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/UZ.png +0 -0
  371. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/VA.png +0 -0
  372. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/VC.png +0 -0
  373. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/VE.png +0 -0
  374. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/VG.png +0 -0
  375. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/VI.png +0 -0
  376. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/VN.png +0 -0
  377. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/VU.png +0 -0
  378. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/WF.png +0 -0
  379. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/WS.png +0 -0
  380. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/YE.png +0 -0
  381. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/YT.png +0 -0
  382. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/ZA.png +0 -0
  383. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/ZM.png +0 -0
  384. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/ZW.png +0 -0
  385. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/fonts/Extra.otf +0 -0
  386. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/fonts/Torus Regular.otf +0 -0
  387. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/fonts/Torus SemiBold.otf +0 -0
  388. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/fonts/Venera.otf +0 -0
  389. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/help.png +0 -0
  390. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/info.png +0 -0
  391. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/maniabeatmapinfo.png +0 -0
  392. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/match/mplink.png +0 -0
  393. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/match/mplink_map.png +0 -0
  394. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/match/team_blue.png +0 -0
  395. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/match/team_red.png +0 -0
  396. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/medals/medals.json +0 -0
  397. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/mods/4K.png +0 -0
  398. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/mods/5K.png +0 -0
  399. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/mods/6K.png +0 -0
  400. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/mods/7K.png +0 -0
  401. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/mods/8K.png +0 -0
  402. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/mods/9K.png +0 -0
  403. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/pfm_ctb.png +0 -0
  404. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/pfm_mania.png +0 -0
  405. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/pfm_std.png +0 -0
  406. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/pfm_taiko.png +0 -0
  407. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/ranking/ranking-A.png +0 -0
  408. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/ranking/ranking-B.png +0 -0
  409. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/ranking/ranking-C.png +0 -0
  410. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/ranking/ranking-D.png +0 -0
  411. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/ranking/ranking-F.png +0 -0
  412. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/ranking/ranking-S.png +0 -0
  413. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/ranking/ranking-SH.png +0 -0
  414. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/ranking/ranking-X.png +0 -0
  415. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/ranking/ranking-XH.png +0 -0
  416. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/work/bmap.png +0 -0
  417. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/work/center.png +0 -0
  418. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/work/left.png +0 -0
  419. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/work/right.png +0 -0
  420. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/work/stardiff.png +0 -0
  421. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/work/stars.png +0 -0
  422. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/work/stars_expertplus.png +0 -0
  423. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/work/suppoter.png +0 -0
  424. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/pp.py +0 -0
  425. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/schema/alphaosu.py +0 -0
  426. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/schema/basemodel.py +0 -0
  427. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/schema/beatmap.py +0 -0
  428. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/schema/match.py +0 -0
  429. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/schema/ppysb/__init__.py +0 -0
  430. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/schema/user.py +0 -0
  431. {nonebot-plugin-osubot-6.23.1 → nonebot-plugin-osubot-6.24.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.23.1
3
+ Version: 6.24.0
4
4
  Summary: OSUbot in NoneBot2
5
5
  License: AGPL-3.0
6
6
  Author-email: yaowan233 <572473053@qq.com>
@@ -11,19 +11,19 @@ from nonebot import get_plugin_config
11
11
  from httpx import Response
12
12
 
13
13
  from .network.manager import network_manager
14
+ from .schema.beatmapsets import BeatmapSets
14
15
  from .utils import FGM
15
16
  from .config import Config
16
17
  from .mods import get_mods
17
18
  from .network import auto_retry
18
19
  from .exceptions import NetworkError
19
20
  from .network.first_response import get_first_response
20
- from .schema import User, NewScore, SayoBeatmap, RecommendData
21
+ from .schema import User, NewScore, RecommendData
21
22
  from .schema.score import UnifiedScore, NewStatistics, UnifiedBeatmap
22
23
  from .schema.ppysb import InfoResponse, ScoresResponse, V2ScoresResponse
23
24
  from .schema.user import Level, GradeCounts, UnifiedUser, UserStatistics
24
25
 
25
26
  api = "https://osu.ppy.sh/api/v2"
26
- sayoapi = "https://api.sayobot.cn"
27
27
  cache = ExpiringDict(max_len=1, max_age_seconds=86400)
28
28
  plugin_config = get_plugin_config(Config)
29
29
 
@@ -122,6 +122,7 @@ async def fetch_score_batch(
122
122
  hp=i.beatmap.drain,
123
123
  od=i.beatmap.accuracy,
124
124
  stars=i.beatmap.difficulty_rating,
125
+ convert=i.beatmap.convert,
125
126
  ),
126
127
  beatmapset=i.beatmapset,
127
128
  )
@@ -413,9 +414,10 @@ async def get_random_bg() -> Optional[bytes]:
413
414
  return res.content
414
415
 
415
416
 
416
- async def get_sayo_map_info(sid, t=0) -> SayoBeatmap:
417
- res = await safe_async_get(f"https://api.sayobot.cn/v2/beatmapinfo?K={sid}&T={t}")
418
- return SayoBeatmap(**res.json())
417
+ async def get_beatmapsets_info(sid) -> BeatmapSets:
418
+ url = f"https://osu.ppy.sh/api/v2/beatmapsets/{sid}"
419
+ res = await make_request(url, await get_headers(), "未查询到该谱面集(Setid)信息")
420
+ return BeatmapSets(**res)
419
421
 
420
422
 
421
423
  async def get_map_bg(mapid, sid, bg_name) -> BytesIO:
@@ -4,25 +4,20 @@ from datetime import datetime, timedelta
4
4
  from PIL import ImageDraw, ImageFilter, ImageEnhance
5
5
 
6
6
  from ..file import get_projectimg
7
- from ..api import get_sayo_map_info
8
- from ..exceptions import NetworkError
7
+ from ..api import get_beatmapsets_info
9
8
  from .utils import crop_bg, stars_diff, calc_songlen
10
9
  from .static import Image, BarImg, IconLs, Torus_SemiBold_20, Torus_SemiBold_40, Torus_SemiBold_50, extra_30, Stars
11
10
 
12
11
 
13
12
  async def draw_bmap_info(mapid) -> BytesIO:
14
- sayo_info = await get_sayo_map_info(mapid)
15
- if sayo_info.status == -1:
16
- raise NetworkError("在sayobot未查询到该地图")
17
- data = sayo_info.data
18
-
13
+ data = await get_beatmapsets_info(mapid)
19
14
  coverurl = f"https://assets.ppy.sh/beatmaps/{mapid}/covers/cover@2x.jpg"
20
15
  cover = await get_projectimg(coverurl)
21
16
  # 新建
22
- if len(data.bid_data) > 20:
17
+ if len(data.beatmaps) > 20:
23
18
  im_h = 400 + 102 * 20
24
19
  else:
25
- im_h = 400 + 102 * (len(data.bid_data) - 1)
20
+ im_h = 400 + 102 * (len(data.beatmaps) - 1)
26
21
  im = Image.new("RGBA", (1200, im_h), (31, 41, 46, 255))
27
22
  draw = ImageDraw.Draw(im)
28
23
  # 背景
@@ -37,35 +32,36 @@ async def draw_bmap_info(mapid) -> BytesIO:
37
32
  # mapper
38
33
  draw.text((25, 105), f"谱面作者: {data.creator}", font=Torus_SemiBold_20, anchor="lt")
39
34
  # rank时间
40
- if data.approved_date == -1:
35
+ if not data.ranked_date:
41
36
  approved_date = "谱面状态可能非ranked"
42
37
  else:
43
- datearray = datetime.utcfromtimestamp(data.approved_date)
38
+ datearray = datetime.fromisoformat(data.ranked_date.replace("Z", ""))
44
39
  approved_date = (datearray + timedelta(hours=8)).strftime("%Y-%m-%d %H:%M:%S")
45
40
  draw.text((25, 140), f"上架时间: {approved_date}", font=Torus_SemiBold_20, anchor="lt")
46
41
  # 来源
47
- draw.text((25, 175), f"Source: {data.source}", font=Torus_SemiBold_20, anchor="lt")
42
+ if data.source:
43
+ draw.text((25, 175), f"Source: {data.source}", font=Torus_SemiBold_20, anchor="lt")
48
44
  # bpm
49
45
  draw.text((1150, 105), f"BPM: {data.bpm}", font=Torus_SemiBold_20, anchor="rt")
50
46
  # 曲长
51
- music_len = calc_songlen(data.bid_data[0].length)
47
+ music_len = calc_songlen(data.beatmaps[0].total_length)
52
48
  draw.text((1150, 140), f"length: {music_len}", font=Torus_SemiBold_20, anchor="rt")
53
49
  # Setid
54
50
  draw.text((1150, 35), f"Setid: {mapid}", font=Torus_SemiBold_20, anchor="rt")
55
- gmap = sorted(data.bid_data, key=lambda k: k.star, reverse=False)
51
+ gmap = sorted(data.beatmaps, key=lambda k: k.difficulty_rating, reverse=False)
56
52
  for num, cmap in enumerate(gmap):
57
53
  if num < 20:
58
54
  h_num = 102 * num
59
55
  # 难度
60
- draw.text((20, 320 + h_num), IconLs[cmap.mode], font=extra_30, anchor="lt")
56
+ draw.text((20, 320 + h_num), IconLs[cmap.mode_int], font=extra_30, anchor="lt")
61
57
  # 星星
62
- stars_bg = stars_diff(cmap.star, Stars)
58
+ stars_bg = stars_diff(cmap.difficulty_rating, Stars)
63
59
  stars_img = stars_bg.resize((80, 30))
64
60
  im.alpha_composite(stars_img, (60, 320 + h_num))
65
61
  # diff
66
62
  im.alpha_composite(BarImg, (10, 365 + h_num))
67
63
  gc = ["CS", "HP", "OD", "AR"]
68
- for index, i in enumerate((cmap.CS, cmap.HP, cmap.OD, cmap.AR)):
64
+ for index, i in enumerate((cmap.cs, cmap.drain, cmap.accuracy, cmap.ar)):
69
65
  diff_len = int(200 * i / 10) if i <= 10 else 200
70
66
  diff_bg = Image.new("RGBA", (diff_len, 12), (255, 255, 255, 255))
71
67
  im.alpha_composite(diff_bg, (50 + 300 * index, 365 + h_num))
@@ -90,11 +86,13 @@ async def draw_bmap_info(mapid) -> BytesIO:
90
86
  anchor="lm",
91
87
  )
92
88
  # 难度
93
- if cmap.star < 6.5:
89
+ if cmap.difficulty_rating < 6.5:
94
90
  color = (0, 0, 0, 255)
95
91
  else:
96
92
  color = (255, 217, 102, 255)
97
- draw.text((65, 335 + h_num), f"★{cmap.star:.2f}", font=Torus_SemiBold_20, anchor="lm", fill=color)
93
+ draw.text(
94
+ (65, 335 + h_num), f"★{cmap.difficulty_rating:.2f}", font=Torus_SemiBold_20, anchor="lm", fill=color
95
+ )
98
96
  # version
99
97
  draw.text(
100
98
  (150, 335 + h_num),
@@ -105,14 +103,14 @@ async def draw_bmap_info(mapid) -> BytesIO:
105
103
  # mapid
106
104
  draw.text(
107
105
  (1150, 328 + h_num),
108
- f"Mapid: {cmap.bid}",
106
+ f"Mapid: {cmap.id}",
109
107
  font=Torus_SemiBold_20,
110
108
  anchor="rm",
111
109
  )
112
110
  # maxcb
113
111
  draw.text(
114
112
  (700, 328 + h_num),
115
- f"Max Combo: {cmap.maxcombo}",
113
+ f"Max Combo: {cmap.max_combo or 0}",
116
114
  font=Torus_SemiBold_20,
117
115
  anchor="lm",
118
116
  )
@@ -48,7 +48,7 @@ async def draw_bp(
48
48
  # 判断是否开启lazer模式
49
49
  if is_lazer:
50
50
  score_info.legacy_total_score = score_info.total_score
51
- if score_info.ruleset_id == 3 and not is_lazer:
51
+ if score_info.ruleset_id == 3 and not is_lazer and source != "ppysb":
52
52
  score_info.accuracy = cal_legacy_acc(score_info.statistics)
53
53
  if not is_lazer:
54
54
  is_hidden = any(i in score_info.mods for i in (Mod(acronym="HD"), Mod(acronym="FL"), Mod(acronym="FI")))
@@ -20,8 +20,14 @@ async def draw_bpa_plot(name, pp_ls, length_ls, mod_pp_ls, mapper_pp_ls) -> byte
20
20
  pic = await template_to_pic(
21
21
  template_path,
22
22
  template_name,
23
- {"name": name, "pp_ls": pp_ls, "length_ls": length_ls, "mod_pp_ls": mod_pp_ls,
24
- "mapper_pp_ls": mapper_pp_ls, "length": len(pp_ls)},
23
+ {
24
+ "name": name,
25
+ "pp_ls": pp_ls,
26
+ "length_ls": length_ls,
27
+ "mod_pp_ls": mod_pp_ls,
28
+ "mapper_pp_ls": mapper_pp_ls,
29
+ "length": len(pp_ls),
30
+ },
25
31
  )
26
32
  return pic
27
33
 
@@ -221,7 +221,9 @@ async def draw_info(uid: Union[int, str], mode: str, day: int, source: str) -> B
221
221
  # 总命中
222
222
  op, value = info_calc(statistics.total_hits, n_count)
223
223
  t_count = f"{statistics.total_hits:,}({op}{value:,})" if value != 0 else f"{statistics.total_hits:,}"
224
+ avg_hit = 0 if statistics.play_count == 0 else statistics.total_hits // statistics.play_count
224
225
  draw.text((935, 1175), t_count, font=Torus_Regular_40, anchor="rt")
226
+ draw.text((250, 945), f"(avg.{avg_hit:,})", font=Torus_Regular_25, anchor="lt")
225
227
  # 游玩时间
226
228
  sec = timedelta(seconds=statistics.play_time)
227
229
  d_time = datetime(1, 1, 1) + sec
@@ -156,8 +156,11 @@ async def draw_map_info(mapid: int, mods: list[str], is_lazer) -> BytesIO:
156
156
  if mods:
157
157
  for mods_num, s_mods in enumerate(mods):
158
158
  mods_bg = osufile / "mods" / f"{s_mods.acronym}.png"
159
- mods_img = Image.open(mods_bg).convert("RGBA")
160
- im.alpha_composite(mods_img, (700 + 50 * mods_num, 295))
159
+ try:
160
+ mods_img = Image.open(mods_bg).convert("RGBA")
161
+ im.alpha_composite(mods_img, (700 + 50 * mods_num, 295))
162
+ except FileNotFoundError:
163
+ pass
161
164
  # mapper
162
165
  icon_url = f"https://a.ppy.sh/{mapinfo.user_id}"
163
166
  user_icon = await get_projectimg(icon_url)
@@ -107,7 +107,7 @@ async def draw_score(
107
107
  map_json = await task2
108
108
  # 判断是否开启lazer模式
109
109
  if source == "osu":
110
- score = cal_score_info(is_lazer, score)
110
+ score = cal_score_info(is_lazer, score, source)
111
111
  return await draw_score_pic(score, info, map_json, "", is_lazer, source)
112
112
 
113
113
 
@@ -180,7 +180,7 @@ async def get_score_data(
180
180
  user_path.mkdir(parents=True, exist_ok=True)
181
181
  # 判断是否开启lazer模式
182
182
  if source == "osu":
183
- score = cal_score_info(is_lazer, score)
183
+ score = cal_score_info(is_lazer, score, source)
184
184
  return await draw_score_pic(score, info, map_json, grank, is_lazer, source)
185
185
 
186
186
 
@@ -795,10 +795,10 @@ def cal_legacy_rank(score_info: UnifiedScore, is_hidden: bool):
795
795
  return "N/A"
796
796
 
797
797
 
798
- def cal_score_info(is_lazer: bool, score_info: UnifiedScore) -> UnifiedScore:
798
+ def cal_score_info(is_lazer: bool, score_info: UnifiedScore, source: str = "osu") -> UnifiedScore:
799
799
  if is_lazer:
800
800
  score_info.legacy_total_score = score_info.total_score
801
- if score_info.ruleset_id == 3 and not is_lazer:
801
+ if score_info.ruleset_id == 3 and not is_lazer and source != "ppysb":
802
802
  score_info.accuracy = cal_legacy_acc(score_info.statistics)
803
803
  if not is_lazer:
804
804
  is_hidden = any(i in score_info.mods for i in (Mod(acronym="HD"), Mod(acronym="FL"), Mod(acronym="FI")))
@@ -47,18 +47,6 @@ async def download_map(setid: int) -> Optional[Path]:
47
47
  return filepath
48
48
 
49
49
 
50
- async def download_tmp_osu(map_id):
51
- url = f"https://osu.ppy.sh/osu/{map_id}"
52
- logger.info(f"开始下载谱面: <{map_id}>")
53
- req = await safe_async_get(url)
54
- filename = f"{map_id}.osu"
55
- filepath = map_path / filename
56
- chunk = req.read()
57
- with open(filepath, "wb") as f:
58
- f.write(chunk)
59
- return filepath
60
-
61
-
62
50
  @auto_retry
63
51
  async def download_osu(set_id, map_id):
64
52
  url = [
@@ -71,6 +59,7 @@ async def download_osu(set_id, map_id):
71
59
  if req := await get_first_response(url):
72
60
  filename = f"{map_id}.osu"
73
61
  filepath = map_path / str(set_id) / filename
62
+ filepath.parent.mkdir(parents=True, exist_ok=True)
74
63
  with open(filepath, "wb") as f:
75
64
  f.write(req)
76
65
  return filepath
@@ -25,7 +25,7 @@ from reamber.algorithms.playField.parts import (
25
25
  )
26
26
 
27
27
  from ..file import download_map
28
- from ..schema import SayoBeatmap
28
+ from ..schema.beatmapsets import BeatmapSets
29
29
 
30
30
  osu_path = Path() / "data" / "osu"
31
31
  if not osu_path.exists():
@@ -39,7 +39,7 @@ class Options:
39
39
  od: Optional[float]
40
40
  set: Optional[int]
41
41
  map: Optional[int] = None
42
- sayo_info: Optional[SayoBeatmap] = None
42
+ beatmapsets: Optional[BeatmapSets] = None
43
43
  nsv: bool = False
44
44
  nln: bool = False
45
45
  fln: bool = False
@@ -89,15 +89,14 @@ async def convert_mania_map(options: Options) -> Optional[Path]:
89
89
  with ZipFile(osz_file.absolute()) as my_zip:
90
90
  my_zip.extractall(path)
91
91
  os.remove(osz_file)
92
- if options.sayo_info:
93
- for i in options.sayo_info.data.bid_data:
94
- if i.bid == options.map:
95
- audio_file_name = i.audio
96
- audio_name = audio_file_name[:-4]
97
- audio_type = audio_file_name[-4:]
92
+ if options.beatmapsets:
93
+ for file in path.rglob("*.osu"):
94
+ osu = OsuMap.read_file(str(file.absolute()))
95
+ if osu.beatmap_id == options.map:
96
+ audio_file_name = osu.audio_file_name
97
+ audio_name = osu.audio_file_name[:-4]
98
+ audio_type = osu.audio_file_name[-4:]
98
99
  break
99
- else:
100
- raise Exception("小夜api有问题啊")
101
100
  if options.rate:
102
101
  if options.rate > 10:
103
102
  options.rate = 10
@@ -42,7 +42,6 @@ async def _(event: Event, state: T_State):
42
42
  f"在查找用户:{state['username']} {NGM[state['mode']]}模式 {lazer_mode}时 {str(e)}"
43
43
  ).finish(reply_to=True)
44
44
  for score in score_ls:
45
- # Filter mods outside of the iteration
46
45
  if not state["is_lazer"] or state["source"] == "ppysb":
47
46
  score.mods = [mod for mod in score.mods if mod.acronym != "CL"]
48
47
  for mod in score.mods:
@@ -94,14 +93,15 @@ async def _(event: Event, state: T_State):
94
93
  pp_data.append({"name": mod, "value": round(pp, 2)})
95
94
  mapper_pp = defaultdict(int)
96
95
  for num, i in enumerate(score_ls):
97
- mapper_pp[i.beatmap.user_id] += i.pp * 0.95**num
98
- mapper_pp = sorted(mapper_pp.items(), key=lambda x: x[1], reverse=True)
99
- mapper_pp = mapper_pp[:9]
100
- users = await get_users([i[0] for i in mapper_pp])
101
- user_dic = {i.id: i.username for i in users}
102
- mapper_pp_data = []
103
- for mapper, pp in mapper_pp:
104
- mapper_pp_data.append({"name": user_dic.get(mapper, ""), "value": round(pp, 2)})
96
+ key = i.beatmap.creator if state["source"] == "ppysb" else i.beatmap.user_id
97
+ mapper_pp[key] += i.pp * 0.95**num
98
+ mapper_pp = sorted(mapper_pp.items(), key=lambda x: x[1], reverse=True)[:9]
99
+ if state["source"] == "ppysb":
100
+ mapper_pp_data = [{"name": mapper, "value": round(pp, 2)} for mapper, pp in mapper_pp]
101
+ else:
102
+ users = await get_users([i[0] for i in mapper_pp])
103
+ user_dic = {i.id: i.username for i in users}
104
+ mapper_pp_data = [{"name": user_dic.get(mapper, ""), "value": round(pp, 2)} for mapper, pp in mapper_pp]
105
105
  if len(mapper_pp_data) > 20:
106
106
  mapper_pp_data = mapper_pp_data[:20]
107
107
  name = f"{state['username']} {NGM[state['mode']]} 模式 "
@@ -26,7 +26,7 @@ from ..exceptions import NetworkError
26
26
  from ..database.models import UserData
27
27
  from ..mania import generate_preview_pic
28
28
  from ..api import safe_async_get, get_user_scores
29
- from ..file import map_path, download_tmp_osu
29
+ from ..file import map_path, download_osu
30
30
  from ..draw.catch_preview import draw_cath_preview
31
31
 
32
32
  games: dict[str, NewScore] = {}
@@ -470,10 +470,10 @@ async def _(
470
470
  chart_games[session_id] = selected_score
471
471
  chart_set_timeout(matcher, session_id)
472
472
  if mode == "3":
473
- osu = await download_tmp_osu(selected_score.beatmap.id)
473
+ osu = await download_osu(selected_score.beatmapset.id, selected_score.beatmap.id)
474
474
  pic = await generate_preview_pic(osu)
475
475
  elif mode == "1":
476
- osu = await download_tmp_osu(selected_score.beatmap.id)
476
+ osu = await download_osu(selected_score.beatmapset.id, selected_score.beatmap.id)
477
477
  beatmap = parse_map(osu)
478
478
  pic = map_to_image(beatmap)
479
479
  else:
@@ -7,8 +7,9 @@ from nonebot import on_command, on_shell_command
7
7
  from nonebot.exception import ParserExit, ActionFailed
8
8
  from nonebot.params import CommandArg, ShellCommandArgv
9
9
 
10
- from ..api import get_sayo_map_info
10
+ from ..api import get_beatmapsets_info, osu_api
11
11
  from ..mania import Options, convert_mania_map
12
+ from ..schema import Beatmap
12
13
 
13
14
  parser = ArgumentParser("convert", description="变换mania谱面")
14
15
  parser.add_argument("--set", type=int, help="要转换的谱面的setid")
@@ -37,9 +38,11 @@ async def _(argv: list[str] = ShellCommandArgv()):
37
38
  return
38
39
  options = Options(**vars(args))
39
40
  if options.map:
40
- sayo_map_info = await get_sayo_map_info(options.map, 1)
41
- options.set = sayo_map_info.data.sid
42
- options.sayo_info = sayo_map_info
41
+ map_data = await osu_api("map", options.map)
42
+ mapinfo = Beatmap(**map_data)
43
+ beatmapsets_info = await get_beatmapsets_info(mapinfo.beatmapset_id)
44
+ options.set = mapinfo.beatmapset_id
45
+ options.beatmapsets = beatmapsets_info
43
46
  if not options.set:
44
47
  await UniMessage.text("请提供需要转换的谱面setid").finish(reply_to=True)
45
48
  if options.nln and options.fln:
@@ -85,9 +88,11 @@ async def _(msg: Message = CommandArg()):
85
88
  args = parser.parse_args(argv)
86
89
  options = Options(**vars(args))
87
90
  if options.map:
88
- sayo_map_info = await get_sayo_map_info(options.map, 1)
89
- options.set = sayo_map_info.data.sid
90
- options.sayo_info = sayo_map_info
91
+ map_data = await osu_api("map", options.map)
92
+ mapinfo = Beatmap(**map_data)
93
+ beatmapsets_info = await get_beatmapsets_info(mapinfo.beatmapset_id)
94
+ options.set = mapinfo.beatmapset_id
95
+ options.beatmapsets = beatmapsets_info
91
96
  osz_path = await convert_mania_map(options)
92
97
  if not osz_path:
93
98
  await UniMessage.text("未找到该地图,请检查是否搞混了mapID与setID").finish(reply_to=True)
@@ -5,7 +5,7 @@ from nonebot_plugin_alconna import UniMessage
5
5
  from ..utils import NGM
6
6
  from ..api import osu_api
7
7
  from .utils import split_msg
8
- from ..file import download_tmp_osu
8
+ from ..file import download_osu
9
9
  from ..exceptions import NetworkError
10
10
  from ..mania import generate_preview_pic
11
11
  from ..draw.catch_preview import draw_cath_preview
@@ -24,7 +24,7 @@ async def _(state: T_State):
24
24
  except NetworkError as e:
25
25
  await UniMessage.text(f"查找map_id:{osu_id} 信息时 {str(e)}").finish(reply_to=True)
26
26
  if state["mode"] == "3":
27
- osu = await download_tmp_osu(osu_id)
27
+ osu = await download_osu(data["beatmapset_id"], int(osu_id))
28
28
  if state["_prefix"]["command"][0] == "完整预览":
29
29
  pic = await generate_preview_pic(osu, True)
30
30
  else:
@@ -34,7 +34,7 @@ async def _(state: T_State):
34
34
  pic = await draw_cath_preview(int(osu_id), data["beatmapset_id"], state["mods"])
35
35
  await UniMessage.image(raw=pic).finish(reply_to=True)
36
36
  elif state["mode"] == "1":
37
- osu = await download_tmp_osu(osu_id)
37
+ osu = await download_osu(data["beatmapset_id"], int(osu_id))
38
38
  beatmap = parse_map(osu)
39
39
  pic = map_to_image(beatmap)
40
40
  await UniMessage.image(raw=pic).finish(reply_to=True)
@@ -2,14 +2,14 @@ import re
2
2
  from random import shuffle
3
3
 
4
4
  from nonebot import on_command
5
- from nonebot.log import logger
6
5
  from nonebot.typing import T_State
7
6
  from expiringdict import ExpiringDict
8
7
  from nonebot.internal.matcher import Matcher
9
8
  from nonebot_plugin_alconna import UniMessage
10
9
 
11
10
  from .utils import split_msg
12
- from ..api import get_recommend, update_recommend, get_sayo_map_info
11
+ from ..api import get_recommend, update_recommend, osu_api
12
+ from ..schema import Beatmap
13
13
 
14
14
  recommend = on_command("推荐", priority=11, block=True, aliases={"recommend", "推荐铺面", "推荐谱面"})
15
15
  recommend_cache = ExpiringDict(1000, 60 * 60 * 12)
@@ -41,23 +41,18 @@ async def handle_recommend(state: T_State, matcher: type[Matcher]):
41
41
  break
42
42
  else:
43
43
  await matcher.finish("今天已经没有可以推荐的图啦,明天再来吧")
44
+ return None
44
45
  bid = int(re.findall("https://osu.ppy.sh/beatmaps/(.*)", recommend_map.mapLink)[0])
45
- map_info = await get_sayo_map_info(bid, 1)
46
- sid = map_info.data.sid
47
- for i in map_info.data.bid_data:
48
- if i.bid == bid:
49
- bg = i.bg
50
- break
51
- else:
52
- bg = ""
53
- logger.error(f"出现问题: 有问题的是{bid}, {sid}")
46
+ map_data = await osu_api("map", bid)
47
+ map_info = Beatmap(**map_data)
48
+ sid = map_info.beatmapset_id
54
49
  s = (
55
50
  f"推荐的铺面是{recommend_map.mapName} ⭐{round(recommend_map.difficulty, 2)}\n{''.join(recommend_map.mod)}\n"
56
51
  f"预计pp为{round(recommend_map.predictPP, 2)}\n提升概率为{round(recommend_map.passPercent * 100, 2)}%\n"
57
52
  f"{recommend_map.mapLink}\nhttps://kitsu.moe/api/d/{sid}\n"
58
53
  f"https://txy1.sayobot.cn/beatmaps/download/novideo/{sid}"
59
54
  )
60
- pic_url = f"https://dl.sayobot.cn/beatmaps/files/{sid}/{bg}"
55
+ pic_url = f"https://osu.direct/api/media/background/{bid}"
61
56
  return pic_url, s
62
57
 
63
58
 
@@ -1,7 +1,6 @@
1
1
  from .user import User, Badge
2
2
  from .match import Game, Match
3
3
  from .alphaosu import RecommendData
4
- from .sayo_beatmap import SayoBeatmap
5
4
  from .score import Score, NewScore, BeatmapUserScore
6
5
  from .beatmap import Beatmap, Beatmapset, SeasonalBackgrounds
7
6
 
@@ -14,7 +13,6 @@ __all__ = [
14
13
  "Beatmap",
15
14
  "Beatmapset",
16
15
  "SeasonalBackgrounds",
17
- "SayoBeatmap",
18
16
  "RecommendData",
19
17
  "Match",
20
18
  "Game",
@@ -0,0 +1,42 @@
1
+ from typing import Optional
2
+ from .basemodel import Base
3
+
4
+
5
+ class BidData(Base):
6
+ id: int
7
+ mode_int: int
8
+ version: str
9
+ total_length: int
10
+ cs: float
11
+ ar: float
12
+ accuracy: float
13
+ drain: float
14
+ difficulty_rating: float
15
+ count_circles: int
16
+ count_sliders: int
17
+ count_spinners: int
18
+ max_combo: Optional[int] = None
19
+ playcount: int
20
+ passcount: int
21
+
22
+
23
+ class BeatmapSets(Base):
24
+ id: int
25
+ ranked: int
26
+ title: str
27
+ artist: str
28
+ title_unicode: str
29
+ artist_unicode: str
30
+ creator: str
31
+ user_id: int
32
+ source: str
33
+ last_updated: str
34
+ ranked_date: Optional[str]
35
+ bpm: float
36
+ favourite_count: int
37
+ video: bool
38
+ storyboard: bool
39
+ tags: str
40
+ language_id: int
41
+ genre_id: int
42
+ beatmaps: list[BidData]
@@ -114,6 +114,7 @@ class UnifiedBeatmap(Base):
114
114
  hp: float
115
115
  stars: float
116
116
  user_id: Optional[int] = None
117
+ convert: Optional[bool] = False
117
118
 
118
119
 
119
120
  class UnifiedScore(Base):
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "nonebot-plugin-osubot"
3
- version = "6.23.1"
3
+ version = "6.24.0"
4
4
  description = "OSUbot in NoneBot2"
5
5
  authors = [
6
6
  { name = "yaowan233", email = "572473053@qq.com" },