nonebot-plugin-osubot 6.21.0__tar.gz → 6.22.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 (410) hide show
  1. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/PKG-INFO +1 -1
  2. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/api.py +9 -6
  3. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/draw/catch_preview_templates/pic.html +2 -2
  4. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/draw/score.py +14 -7
  5. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/draw/static.py +1 -0
  6. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/draw/templates/bpa_chart.html +1 -1
  7. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/draw/utils.py +6 -5
  8. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/matcher/bp_analyze.py +3 -10
  9. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/matcher/guess.py +40 -40
  10. nonebot-plugin-osubot-6.22.0/nonebot_plugin_osubot/network/manager.py +30 -0
  11. nonebot-plugin-osubot-6.22.0/nonebot_plugin_osubot/osufile/work/stardiff.png +0 -0
  12. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/schema/score.py +2 -0
  13. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/pyproject.toml +1 -1
  14. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/README.md +0 -0
  15. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/__init__.py +0 -0
  16. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/beatmap_stats_moder.py +0 -0
  17. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/config.py +0 -0
  18. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/database/__init__.py +0 -0
  19. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/database/models.py +0 -0
  20. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/draw/__init__.py +0 -0
  21. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/draw/bmap.py +0 -0
  22. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/draw/bp.py +0 -0
  23. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/draw/catch_preview.py +0 -0
  24. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/draw/catch_preview_templates/css/style.css +0 -0
  25. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/beatmap/beatmap.js +0 -0
  26. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/beatmap/hitobject.js +0 -0
  27. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/beatmap/point.js +0 -0
  28. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/beatmap/scroll.js +0 -0
  29. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/beatmap/timingpoint.js +0 -0
  30. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/catch/LegacyRandom.js +0 -0
  31. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/catch/PalpableCatchHitObject.js +0 -0
  32. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/catch/bananashower.js +0 -0
  33. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/catch/catch.js +0 -0
  34. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/catch/fruit.js +0 -0
  35. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/catch/juicestream.js +0 -0
  36. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/fakeaudio.js +0 -0
  37. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/preview.js +0 -0
  38. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/standard/curve/bezier2.js +0 -0
  39. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/standard/curve/catmullcurve.js +0 -0
  40. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/standard/curve/centripetalcatmullrom.js +0 -0
  41. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/standard/curve/circumstancedcircle.js +0 -0
  42. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/standard/curve/curve.js +0 -0
  43. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/standard/curve/curvetype.js +0 -0
  44. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/standard/curve/equaldistancemulticurve.js +0 -0
  45. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/standard/curve/linearbezier.js +0 -0
  46. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/standard/hitcircle.js +0 -0
  47. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/standard/slider.js +0 -0
  48. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/standard/spinner.js +0 -0
  49. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/util.js +0 -0
  50. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/viewbox.js +0 -0
  51. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/zip.min.js +0 -0
  52. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/draw/echarts.py +0 -0
  53. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/draw/info.py +0 -0
  54. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/draw/map.py +0 -0
  55. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/draw/match_history.py +0 -0
  56. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/draw/rating.py +0 -0
  57. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/draw/taiko_preview.py +0 -0
  58. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/draw/templates/echarts.min.js +0 -0
  59. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/draw/templates/mod_chart.html +0 -0
  60. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/draw/templates/pp_rank_line_chart.html +0 -0
  61. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/exceptions.py +0 -0
  62. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/file.py +0 -0
  63. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/info/__init__.py +0 -0
  64. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/info/bg.py +0 -0
  65. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/info/bind.py +0 -0
  66. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/mania/__init__.py +0 -0
  67. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/matcher/__init__.py +0 -0
  68. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/matcher/bind.py +0 -0
  69. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/matcher/bp.py +0 -0
  70. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/matcher/getbg.py +0 -0
  71. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/matcher/history.py +0 -0
  72. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/matcher/info.py +0 -0
  73. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/matcher/map.py +0 -0
  74. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/matcher/map_convert.py +0 -0
  75. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/matcher/match.py +0 -0
  76. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/matcher/medal.py +0 -0
  77. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/matcher/mu.py +0 -0
  78. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/matcher/osu_help.py +0 -0
  79. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/matcher/osudl.py +0 -0
  80. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/matcher/pr.py +0 -0
  81. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/matcher/preview.py +0 -0
  82. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/matcher/rank.py +0 -0
  83. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/matcher/rating.py +0 -0
  84. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/matcher/recommend.py +0 -0
  85. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/matcher/score.py +0 -0
  86. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/matcher/update.py +0 -0
  87. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/matcher/update_mode.py +0 -0
  88. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/matcher/url_match.py +0 -0
  89. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/matcher/utils.py +0 -0
  90. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/mods.py +0 -0
  91. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/network/__init__.py +0 -0
  92. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/network/auto_retry.py +0 -0
  93. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/network/first_response.py +0 -0
  94. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/Best Performance.png +0 -0
  95. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/History Score.jpg +0 -0
  96. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/beatmapinfo.png +0 -0
  97. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/convert.jpg +0 -0
  98. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/detail.png +0 -0
  99. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/AD.png +0 -0
  100. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/AE.png +0 -0
  101. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/AF.png +0 -0
  102. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/AG.png +0 -0
  103. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/AI.png +0 -0
  104. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/AL.png +0 -0
  105. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/AM.png +0 -0
  106. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/AO.png +0 -0
  107. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/AQ.png +0 -0
  108. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/AR.png +0 -0
  109. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/AS.png +0 -0
  110. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/AT.png +0 -0
  111. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/AU.png +0 -0
  112. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/AW.png +0 -0
  113. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/AX.png +0 -0
  114. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/AZ.png +0 -0
  115. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/BA.png +0 -0
  116. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/BB.png +0 -0
  117. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/BD.png +0 -0
  118. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/BE.png +0 -0
  119. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/BF.png +0 -0
  120. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/BG.png +0 -0
  121. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/BH.png +0 -0
  122. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/BI.png +0 -0
  123. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/BJ.png +0 -0
  124. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/BL.png +0 -0
  125. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/BM.png +0 -0
  126. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/BN.png +0 -0
  127. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/BO.png +0 -0
  128. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/BQ (1).png +0 -0
  129. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/BQ (2).png +0 -0
  130. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/BR.png +0 -0
  131. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/BS.png +0 -0
  132. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/BT.png +0 -0
  133. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/BV.png +0 -0
  134. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/BW.png +0 -0
  135. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/BY.png +0 -0
  136. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/BZ.png +0 -0
  137. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/CA.png +0 -0
  138. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/CD.png +0 -0
  139. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/CF.png +0 -0
  140. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/CG.png +0 -0
  141. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/CH.png +0 -0
  142. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/CI.png +0 -0
  143. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/CK.png +0 -0
  144. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/CL.png +0 -0
  145. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/CM.png +0 -0
  146. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/CN.png +0 -0
  147. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/CO.png +0 -0
  148. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/CR.png +0 -0
  149. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/CU.png +0 -0
  150. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/CV.png +0 -0
  151. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/CX.png +0 -0
  152. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/CY.png +0 -0
  153. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/CZ.png +0 -0
  154. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/DE.png +0 -0
  155. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/DJ.png +0 -0
  156. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/DK.png +0 -0
  157. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/DM.png +0 -0
  158. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/DO.png +0 -0
  159. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/DZ.png +0 -0
  160. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/EC.png +0 -0
  161. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/EE.png +0 -0
  162. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/EG.png +0 -0
  163. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/EH.png +0 -0
  164. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/ER.png +0 -0
  165. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/ES.png +0 -0
  166. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/ET.png +0 -0
  167. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/FI.png +0 -0
  168. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/FJ.png +0 -0
  169. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/FK.png +0 -0
  170. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/FO.png +0 -0
  171. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/FR.png +0 -0
  172. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/GA.png +0 -0
  173. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/GB.png +0 -0
  174. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/GD.png +0 -0
  175. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/GE.png +0 -0
  176. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/GF.png +0 -0
  177. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/GG.png +0 -0
  178. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/GH.png +0 -0
  179. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/GI.png +0 -0
  180. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/GL.png +0 -0
  181. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/GM.png +0 -0
  182. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/GN.png +0 -0
  183. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/GP.png +0 -0
  184. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/GQ.png +0 -0
  185. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/GR.png +0 -0
  186. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/GS.png +0 -0
  187. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/GT.png +0 -0
  188. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/GU.png +0 -0
  189. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/GW.png +0 -0
  190. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/GY.png +0 -0
  191. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/HK.png +0 -0
  192. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/HM.png +0 -0
  193. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/HN.png +0 -0
  194. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/HR.png +0 -0
  195. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/HT.png +0 -0
  196. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/HU.png +0 -0
  197. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/ID.png +0 -0
  198. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/IE.png +0 -0
  199. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/IL.png +0 -0
  200. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/IM.png +0 -0
  201. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/IN.png +0 -0
  202. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/IO.png +0 -0
  203. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/IQ.png +0 -0
  204. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/IR.png +0 -0
  205. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/IS.png +0 -0
  206. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/IT.png +0 -0
  207. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/JE.png +0 -0
  208. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/JM.png +0 -0
  209. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/JO.png +0 -0
  210. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/JP.png +0 -0
  211. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/KE.png +0 -0
  212. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/KG.png +0 -0
  213. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/KH.png +0 -0
  214. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/KI.png +0 -0
  215. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/KM.png +0 -0
  216. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/KN.png +0 -0
  217. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/KP.png +0 -0
  218. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/KR.png +0 -0
  219. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/KW.png +0 -0
  220. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/KY.png +0 -0
  221. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/KZ.png +0 -0
  222. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/LA.png +0 -0
  223. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/LB.png +0 -0
  224. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/LC.png +0 -0
  225. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/LI.png +0 -0
  226. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/LK.png +0 -0
  227. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/LR.png +0 -0
  228. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/LS.png +0 -0
  229. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/LT.png +0 -0
  230. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/LU.png +0 -0
  231. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/LV.png +0 -0
  232. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/LY.png +0 -0
  233. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/MA.png +0 -0
  234. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/MC.png +0 -0
  235. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/MD.png +0 -0
  236. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/ME.png +0 -0
  237. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/MF.png +0 -0
  238. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/MG.png +0 -0
  239. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/MH.png +0 -0
  240. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/MK.png +0 -0
  241. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/ML.png +0 -0
  242. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/MM.png +0 -0
  243. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/MN.png +0 -0
  244. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/MO.png +0 -0
  245. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/MP.png +0 -0
  246. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/MQ.png +0 -0
  247. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/MR.png +0 -0
  248. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/MS.png +0 -0
  249. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/MT.png +0 -0
  250. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/MU.png +0 -0
  251. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/MV.png +0 -0
  252. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/MW.png +0 -0
  253. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/MX.png +0 -0
  254. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/MY.png +0 -0
  255. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/MZ.png +0 -0
  256. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/NA.png +0 -0
  257. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/NC.png +0 -0
  258. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/NE.png +0 -0
  259. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/NF.png +0 -0
  260. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/NG.png +0 -0
  261. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/NI.png +0 -0
  262. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/NL.png +0 -0
  263. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/NO.png +0 -0
  264. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/NP.png +0 -0
  265. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/NR.png +0 -0
  266. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/NU.png +0 -0
  267. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/NZ.png +0 -0
  268. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/OM.png +0 -0
  269. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/PA.png +0 -0
  270. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/PE.png +0 -0
  271. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/PF.png +0 -0
  272. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/PG.png +0 -0
  273. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/PH.png +0 -0
  274. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/PK.png +0 -0
  275. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/PL.png +0 -0
  276. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/PM.png +0 -0
  277. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/PN.png +0 -0
  278. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/PR.png +0 -0
  279. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/PS.png +0 -0
  280. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/PT.png +0 -0
  281. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/PW.png +0 -0
  282. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/PY.png +0 -0
  283. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/QA.png +0 -0
  284. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/RE.png +0 -0
  285. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/RO.png +0 -0
  286. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/RS.png +0 -0
  287. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/RU.png +0 -0
  288. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/RW.png +0 -0
  289. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/SA.png +0 -0
  290. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/SB.png +0 -0
  291. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/SC.png +0 -0
  292. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/SD.png +0 -0
  293. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/SE.png +0 -0
  294. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/SG.png +0 -0
  295. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/SH.png +0 -0
  296. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/SI.png +0 -0
  297. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/SJ.png +0 -0
  298. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/SK.png +0 -0
  299. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/SL.png +0 -0
  300. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/SM.png +0 -0
  301. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/SN.png +0 -0
  302. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/SO.png +0 -0
  303. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/SR.png +0 -0
  304. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/SS.png +0 -0
  305. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/ST.png +0 -0
  306. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/SV.png +0 -0
  307. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/SY.png +0 -0
  308. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/SZ.png +0 -0
  309. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/TC.png +0 -0
  310. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/TD.png +0 -0
  311. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/TF.png +0 -0
  312. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/TG.png +0 -0
  313. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/TH.png +0 -0
  314. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/TJ.png +0 -0
  315. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/TK.png +0 -0
  316. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/TL.png +0 -0
  317. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/TM.png +0 -0
  318. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/TN.png +0 -0
  319. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/TO.png +0 -0
  320. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/TR.png +0 -0
  321. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/TT.png +0 -0
  322. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/TV.png +0 -0
  323. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/TW.png +0 -0
  324. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/TZ.png +0 -0
  325. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/UA.png +0 -0
  326. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/UG.png +0 -0
  327. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/UM.png +0 -0
  328. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/US.png +0 -0
  329. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/UY.png +0 -0
  330. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/UZ.png +0 -0
  331. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/VA.png +0 -0
  332. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/VC.png +0 -0
  333. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/VE.png +0 -0
  334. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/VG.png +0 -0
  335. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/VI.png +0 -0
  336. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/VN.png +0 -0
  337. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/VU.png +0 -0
  338. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/WF.png +0 -0
  339. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/WS.png +0 -0
  340. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/YE.png +0 -0
  341. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/YT.png +0 -0
  342. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/ZA.png +0 -0
  343. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/ZM.png +0 -0
  344. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/flags/ZW.png +0 -0
  345. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/fonts/Extra.otf +0 -0
  346. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/fonts/Torus Regular.otf +0 -0
  347. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/fonts/Torus SemiBold.otf +0 -0
  348. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/fonts/Venera.otf +0 -0
  349. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/help.png +0 -0
  350. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/info.png +0 -0
  351. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/maniabeatmapinfo.png +0 -0
  352. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/match/mplink.png +0 -0
  353. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/match/mplink_map.png +0 -0
  354. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/match/team_blue.png +0 -0
  355. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/match/team_red.png +0 -0
  356. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/medals/medals.json +0 -0
  357. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/mods/4K.png +0 -0
  358. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/mods/5K.png +0 -0
  359. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/mods/6K.png +0 -0
  360. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/mods/7K.png +0 -0
  361. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/mods/8K.png +0 -0
  362. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/mods/9K.png +0 -0
  363. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/mods/AP.png +0 -0
  364. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/mods/CL.png +0 -0
  365. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/mods/DT.png +0 -0
  366. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/mods/EZ.png +0 -0
  367. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/mods/FI.png +0 -0
  368. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/mods/FL.png +0 -0
  369. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/mods/HD.png +0 -0
  370. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/mods/HR.png +0 -0
  371. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/mods/HT.png +0 -0
  372. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/mods/MR.png +0 -0
  373. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/mods/NC.png +0 -0
  374. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/mods/NF.png +0 -0
  375. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/mods/PF.png +0 -0
  376. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/mods/RX.png +0 -0
  377. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/mods/SD.png +0 -0
  378. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/mods/SO.png +0 -0
  379. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/mods/TD.png +0 -0
  380. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/mods/V2.png +0 -0
  381. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/pfm_ctb.png +0 -0
  382. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/pfm_mania.png +0 -0
  383. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/pfm_std.png +0 -0
  384. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/pfm_taiko.png +0 -0
  385. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/ranking/ranking-A.png +0 -0
  386. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/ranking/ranking-B.png +0 -0
  387. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/ranking/ranking-C.png +0 -0
  388. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/ranking/ranking-D.png +0 -0
  389. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/ranking/ranking-F.png +0 -0
  390. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/ranking/ranking-S.png +0 -0
  391. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/ranking/ranking-SH.png +0 -0
  392. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/ranking/ranking-X.png +0 -0
  393. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/ranking/ranking-XH.png +0 -0
  394. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/work/bmap.png +0 -0
  395. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/work/center.png +0 -0
  396. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/work/left.png +0 -0
  397. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/work/right.png +0 -0
  398. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/work/stars.png +0 -0
  399. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/work/stars_expertplus.png +0 -0
  400. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/osufile/work/suppoter.png +0 -0
  401. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/pp.py +0 -0
  402. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/schema/__init__.py +0 -0
  403. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/schema/alphaosu.py +0 -0
  404. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/schema/basemodel.py +0 -0
  405. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/schema/beatmap.py +0 -0
  406. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/schema/match.py +0 -0
  407. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/schema/ppysb/__init__.py +0 -0
  408. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/schema/sayo_beatmap.py +0 -0
  409. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.0}/nonebot_plugin_osubot/schema/user.py +0 -0
  410. {nonebot-plugin-osubot-6.21.0 → nonebot-plugin-osubot-6.22.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.21.0
3
+ Version: 6.22.0
4
4
  Summary: OSUbot in NoneBot2
5
5
  License: AGPL-3.0
6
6
  Author-email: yaowan233 <572473053@qq.com>
@@ -8,8 +8,9 @@ from typing import Union, Literal, Optional
8
8
  from nonebot.log import logger
9
9
  from expiringdict import ExpiringDict
10
10
  from nonebot import get_plugin_config
11
- from httpx import Response, AsyncClient
11
+ from httpx import Response
12
12
 
13
+ from .network.manager import network_manager
13
14
  from .utils import FGM
14
15
  from .config import Config
15
16
  from .mods import get_mods
@@ -25,7 +26,6 @@ api = "https://osu.ppy.sh/api/v2"
25
26
  sayoapi = "https://api.sayobot.cn"
26
27
  cache = ExpiringDict(max_len=1, max_age_seconds=86400)
27
28
  plugin_config = get_plugin_config(Config)
28
- proxy = plugin_config.osu_proxy
29
29
 
30
30
  key = plugin_config.osu_key
31
31
  client_id = plugin_config.osu_client
@@ -34,15 +34,15 @@ bg_url = plugin_config.info_bg
34
34
 
35
35
  @auto_retry
36
36
  async def safe_async_get(url, headers: Optional[dict] = None, params: Optional[dict] = None) -> Response:
37
- async with AsyncClient(proxy=proxy, follow_redirects=True) as client:
38
- req = await client.get(url, headers=headers, params=params)
37
+ client = await network_manager.get_client()
38
+ req = await client.get(url, headers=headers, params=params)
39
39
  return req
40
40
 
41
41
 
42
42
  @auto_retry
43
43
  async def safe_async_post(url, headers=None, data=None, json=None) -> Response:
44
- async with AsyncClient(proxy=proxy) as client:
45
- req = await client.post(url, headers=headers, data=data, json=json)
44
+ client = await network_manager.get_client()
45
+ req = await client.post(url, headers=headers, data=data, json=json)
46
46
  return req
47
47
 
48
48
 
@@ -105,8 +105,10 @@ async def fetch_score_batch(
105
105
  statistics=i.statistics,
106
106
  legacy_total_score=i.legacy_total_score,
107
107
  passed=i.passed,
108
+ pp=i.pp,
108
109
  beatmap=UnifiedBeatmap(
109
110
  id=i.beatmap_id,
111
+ user_id=i.beatmap.user_id,
110
112
  set_id=i.beatmapset.id,
111
113
  artist=i.beatmapset.artist,
112
114
  title=i.beatmapset.title,
@@ -198,6 +200,7 @@ async def get_user_scores(
198
200
  ),
199
201
  beatmap=UnifiedBeatmap(
200
202
  id=i.beatmap.id,
203
+ user_id=i.beatmap.user_id,
201
204
  set_id=i.beatmap.set_id,
202
205
  artist=i.beatmap.artist,
203
206
  title=i.beatmap.title,
@@ -41,7 +41,7 @@
41
41
 
42
42
  const createImg = function () {
43
43
  const self = this;
44
- const osufile = `{{ osu_file }}`;
44
+ const osufile = {{ osu_file|tojson }};
45
45
  let SPEED = 1;
46
46
  let mods = {
47
47
  HR: {{ is_hr }},
@@ -85,4 +85,4 @@
85
85
  </script>
86
86
  </body>
87
87
 
88
- </html>
88
+ </html>
@@ -45,6 +45,8 @@ from .static import (
45
45
  Torus_SemiBold_30,
46
46
  osufile,
47
47
  extra_30,
48
+ Stardiff,
49
+ Stars,
48
50
  )
49
51
 
50
52
 
@@ -234,14 +236,19 @@ async def draw_score_pic(score_info: UnifiedScore, info: UnifiedUser, map_json,
234
236
  fill=(255, 255, 255, 255),
235
237
  )
236
238
  # 难度星星
237
- stars_bg = stars_diff(pp_info.difficulty.stars)
239
+ stars_bg = stars_diff(pp_info.difficulty.stars, Stars)
238
240
  stars_img = stars_bg.resize((85, 37))
239
241
  im.alpha_composite(stars_img, (552, 67))
242
+ # 难度竖条
243
+ star_bg = stars_diff(pp_info.difficulty.stars, Stardiff)
244
+ star_img = star_bg.resize((20, 271))
245
+ im.alpha_composite(star_img, (0, 50))
246
+ # 星级
240
247
  if pp_info.difficulty.stars < 6.5:
241
248
  color = (0, 0, 0, 255)
242
249
  else:
243
250
  color = (255, 217, 102, 255)
244
- # 星级
251
+
245
252
  draw.text(
246
253
  (556, 85),
247
254
  f"★{pp_info.difficulty.stars:.2f}",
@@ -417,7 +424,7 @@ async def draw_score_pic(score_info: UnifiedScore, info: UnifiedUser, map_json,
417
424
  fill=(255, 255, 255, 255),
418
425
  )
419
426
  # setid
420
- draw.text((20, 25), f"Setid:{mapinfo.beatmapset_id}", font=Torus_SemiBold_20, anchor="lm")
427
+ draw.text((32, 25), f"Setid:{mapinfo.beatmapset_id}", font=Torus_SemiBold_20, anchor="lm")
421
428
  # mapid
422
429
  draw.text((650, 25), f"Mapid: {mapinfo.id}", font=Torus_SemiBold_20, anchor="rm")
423
430
  # 曲名
@@ -477,11 +484,11 @@ async def draw_score_pic(score_info: UnifiedScore, info: UnifiedUser, map_json,
477
484
  anchor="lm",
478
485
  )
479
486
  # 时间
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")
487
+ draw.text((883, 230), "达成时间:", font=Torus_SemiBold_20, anchor="lm")
488
+ draw.text((985, 230), score_info.ended_at.strftime("%Y-%m-%d %H:%M:%S"), font=Torus_SemiBold_20, anchor="lm")
482
489
  # 全球排名
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")
490
+ draw.text((883, 260), "全球排行:" if grank else "", font=Torus_SemiBold_20, anchor="lm")
491
+ draw.text((985, 260), f"#{grank}" if grank else "", font=Torus_SemiBold_25, anchor="lm")
485
492
  # 左下玩家名
486
493
  draw.text((208, 550), info.username, font=Torus_SemiBold_30, anchor="lm")
487
494
  # 国内排名
@@ -37,6 +37,7 @@ MapBg = Image.open(osufile / "beatmapinfo.png").convert("RGBA")
37
37
  MapBg1 = Image.open(osufile / "maniabeatmapinfo.png").convert("RGBA")
38
38
  BarImg = Image.open(osufile / "work" / "bmap.png").convert("RGBA")
39
39
  Stars = Image.open(osufile / "work" / "stars.png").convert("RGBA")
40
+ Stardiff = Image.open(osufile / "work" / "stardiff.png").convert("RGBA")
40
41
  TeamBlue = Image.open(osufile / "match" / "team_blue.png").convert("RGBA")
41
42
  TeamRed = Image.open(osufile / "match" / "team_red.png").convert("RGBA")
42
43
  MpLink = Image.open(osufile / "match" / "mplink.png").convert("RGBA")
@@ -43,7 +43,7 @@
43
43
  xAxis: [
44
44
  {
45
45
  type: 'category',
46
- data: Array.from({ length: 100 }, (_, i) => i),
46
+ data: Array.from({ length: 200 }, (_, i) => i),
47
47
  axisLabel: {
48
48
  interval: 9
49
49
  }
@@ -6,13 +6,14 @@ from io import BytesIO
6
6
  from typing import Union, Optional
7
7
  from difflib import SequenceMatcher
8
8
 
9
+ from PIL.ImageFile import ImageFile
9
10
  from matplotlib.figure import Figure
10
11
  from PIL import ImageDraw, ImageFilter, ImageEnhance, UnidentifiedImageError
11
12
 
12
13
  from ..schema.user import UnifiedUser
13
14
  from ..schema import SeasonalBackgrounds
14
15
  from ..api import safe_async_get, get_seasonal_bg
15
- from .static import Path, Image, Stars, ColorArr, np, osufile
16
+ from .static import Path, Image, ColorArr, np, osufile
16
17
  from ..file import map_path, download_osu, get_projectimg, user_cache_path, team_cache_path
17
18
 
18
19
 
@@ -183,7 +184,7 @@ async def crop_bg(size: tuple[int, int], path: Union[str, Path, BytesIO, Image.I
183
184
  return sf
184
185
 
185
186
 
186
- def stars_diff(stars: float):
187
+ def stars_diff(stars: float, stars_bg: ImageFile):
187
188
  if stars < 0.1:
188
189
  r, g, b = 170, 170, 170
189
190
  elif stars >= 9:
@@ -192,10 +193,10 @@ def stars_diff(stars: float):
192
193
  # 颜色取色参考 https://github.com/ppy/osu-web/blob/97997d9c7b7f9c49f9b3cdd776c71afb9872c34b/resources/js/utils/beatmap-helper.ts#L20
193
194
  r, g, b, _a = ColorArr[int(stars * 100)]
194
195
  # 打开底图
195
- xx, yy = Stars.size
196
+ xx, yy = stars_bg.size
196
197
  # 填充背景
197
- img = Image.new("RGBA", Stars.size, (r, g, b))
198
- img.paste(Stars, (0, 0, xx, yy), Stars)
198
+ img = Image.new("RGBA", stars_bg.size, (r, g, b))
199
+ img.paste(stars_bg, (0, 0, xx, yy), stars_bg)
199
200
  # 把白色变透明
200
201
  arr = np.array(img)
201
202
  # 创建mask,将白色替换为True,其他颜色替换为False
@@ -7,9 +7,8 @@ from nonebot_plugin_alconna import UniMessage
7
7
 
8
8
  from ..utils import NGM
9
9
  from .utils import split_msg
10
- from ..schema import NewScore
11
10
  from ..database import UserData
12
- from ..api import osu_api, get_users
11
+ from ..api import get_user_scores, get_users
13
12
  from ..exceptions import NetworkError
14
13
  from ..draw.score import cal_score_info
15
14
  from ..draw.echarts import draw_bpa_plot
@@ -35,17 +34,11 @@ async def _(event: Event, state: T_State):
35
34
  uid = state["user"]
36
35
  lazer_mode = "lazer模式下" if state["is_lazer"] else "stable模式下"
37
36
  try:
38
- bp_info = await osu_api(
39
- "bp",
40
- uid,
41
- NGM[state["mode"]],
42
- legacy_only=int(not user.lazer_mode),
43
- )
37
+ score_ls = await get_user_scores(uid, NGM[state["mode"]], "best", legacy_only=not state["is_lazer"])
44
38
  except NetworkError as e:
45
39
  await UniMessage.text(
46
40
  f"在查找用户:{state['username']} {NGM[state['mode']]}模式 {lazer_mode}时 {str(e)}"
47
41
  ).finish(reply_to=True)
48
- score_ls = [NewScore(**i) for i in bp_info]
49
42
  for score in score_ls:
50
43
  for mod in score.mods:
51
44
  if mod.acronym == "DT" or mod.acronym == "NC":
@@ -106,6 +99,6 @@ async def _(event: Event, state: T_State):
106
99
  mapper_pp_data.append({"name": user_dic.get(mapper, ""), "value": round(pp, 2)})
107
100
  if len(mapper_pp_data) > 20:
108
101
  mapper_pp_data = mapper_pp_data[:20]
109
- name = f"{score_ls[0].user.username} {NGM[state['mode']]} 模式 "
102
+ name = f"{state['username']} {NGM[state['mode']]} 模式 "
110
103
  byt = await draw_bpa_plot(name, pp_ls, length_ls, pp_data, mapper_pp_data)
111
104
  await UniMessage.image(raw=byt).finish(reply_to=True)
@@ -16,6 +16,8 @@ from nonebot.internal.rule import Rule, Event
16
16
  from nonebot_plugin_alconna import At, UniMsg, UniMessage
17
17
  from nonebot_plugin_session import SessionId, SessionIdType
18
18
 
19
+ from ..draw.taiko_preview import parse_map, map_to_image
20
+ from ..schema.score import UnifiedScore
19
21
  from ..utils import NGM
20
22
  from ..info import get_bg
21
23
  from .utils import split_msg
@@ -23,7 +25,7 @@ from ..schema import NewScore
23
25
  from ..exceptions import NetworkError
24
26
  from ..database.models import UserData
25
27
  from ..mania import generate_preview_pic
26
- from ..api import osu_api, safe_async_get
28
+ from ..api import safe_async_get, get_user_scores
27
29
  from ..file import map_path, download_tmp_osu
28
30
  from ..draw.catch_preview import draw_cath_preview
29
31
 
@@ -46,23 +48,27 @@ data_path = Path() / "data" / "osu"
46
48
  pcm_path = data_path / "out.pcm"
47
49
 
48
50
 
49
- async def get_random_beatmap_set(binded_id, group_id, ttl=10) -> (NewScore, str):
50
- if ttl == 0:
51
- return
52
- selected_user = random.choice(binded_id)
53
- if not selected_user:
54
- return
55
- user = await UserData.filter(user_id=selected_user).first()
56
- try:
57
- bp_info = await osu_api("bp", user.osu_id, NGM[str(user.osu_mode)])
58
- except NetworkError:
59
- return await get_random_beatmap_set(binded_id, group_id, ttl - 1)
60
- selected_score = random.choice([NewScore(**i) for i in bp_info])
61
- if selected_score.beatmapset.id not in guess_song_cache[group_id]:
62
- guess_song_cache[group_id].add(selected_score.beatmapset.id)
63
- else:
64
- return await get_random_beatmap_set(binded_id, group_id, ttl - 1)
65
- return selected_score, user.osu_name
51
+ async def get_random_beatmap_set(binded_id, group_id) -> (UnifiedScore, str):
52
+ # 获取已猜过的歌曲集合
53
+ guessed_songs = guess_song_cache[group_id]
54
+ available_scores = []
55
+ for user_id in binded_id:
56
+ try:
57
+ user = await UserData.filter(user_id=user_id).first()
58
+ if not user:
59
+ continue
60
+ bp_info = await get_user_scores(user.osu_id, NGM[str(user.osu_mode)], "best")
61
+ # 过滤掉已猜过的歌曲
62
+ unguessed_scores = [(score, user.osu_name) for score in bp_info if score.beatmapset.id not in guessed_songs]
63
+ available_scores.extend(unguessed_scores)
64
+ except NetworkError:
65
+ continue # 跳过网络错误的用户,继续尝试其他用户
66
+ if not available_scores:
67
+ return None, None # 所有歌曲都被猜过了
68
+ # 随机选择一个未猜过的成绩
69
+ selected_score, osu_name = random.choice(available_scores)
70
+ guess_song_cache[group_id].add(selected_score.beatmapset.id)
71
+ return selected_score, osu_name
66
72
 
67
73
 
68
74
  @guess_audio.handle(parameterless=[split_msg()])
@@ -89,12 +95,11 @@ async def _(
89
95
  if not user_data:
90
96
  await UniMessage.text("该用户未绑定osu账号").finish(reply_to=True)
91
97
  try:
92
- bp_info = await osu_api("bp", user_data.osu_id, NGM[state["mode"]])
98
+ bp_ls = await get_user_scores(user_data.osu_id, NGM[state["mode"]], "best")
93
99
  except NetworkError as e:
94
100
  await UniMessage.text(f"在查找用户:{state['username']} {NGM[state['mode']]}模式bp时 {str(e)}").finish(
95
101
  reply_to=True
96
102
  )
97
- bp_ls = [NewScore(**i) for i in bp_info]
98
103
  filtered_bp_ls = [i for i in bp_ls if i.beatmapset.id not in guess_song_cache[group_id]]
99
104
  if not filtered_bp_ls:
100
105
  await UniMessage.text(state["username"] + "的bp已经被你们猜过一遍了 -_-").finish(reply_to=True)
@@ -103,12 +108,11 @@ async def _(
103
108
  selected_user = user_data.osu_name
104
109
  elif state["user"]:
105
110
  try:
106
- bp_info = await osu_api("bp", state["user"], NGM[state["mode"]])
111
+ bp_ls = await get_user_scores(state["user"], NGM[state["mode"]], "best")
107
112
  except NetworkError as e:
108
113
  await UniMessage.text(f"在查找用户:{state['username']} {NGM[state['mode']]}模式bp时 {str(e)}").finish(
109
114
  reply_to=True
110
115
  )
111
- bp_ls = [NewScore(**i) for i in bp_info]
112
116
  filtered_bp_ls = [i for i in bp_ls if i.beatmapset.id not in guess_song_cache[group_id]]
113
117
  if not filtered_bp_ls:
114
118
  await UniMessage.text(state["username"] + "的bp已经被你们猜过一遍了 -_-").finish(reply_to=True)
@@ -354,12 +358,11 @@ async def _(
354
358
  if not user_data:
355
359
  await UniMessage.text("该用户未绑定osu账号").finish(reply_to=True)
356
360
  try:
357
- bp_info = await osu_api("bp", user_data.osu_id, NGM[state["mode"]])
361
+ bp_ls = await get_user_scores(user_data.osu_id, NGM[state["mode"]], "best")
358
362
  except NetworkError as e:
359
363
  await UniMessage.text(f"在查找用户:{state['username']} {NGM[state['mode']]}模式bp时 {str(e)}").finish(
360
364
  reply_to=True
361
365
  )
362
- bp_ls = [NewScore(**i) for i in bp_info]
363
366
  filtered_bp_ls = [i for i in bp_ls if i.beatmapset.id not in guess_song_cache[session_id]]
364
367
  if not filtered_bp_ls:
365
368
  await UniMessage.text(state["username"] + "的bp已经被你们猜过一遍了 -_-").finish(reply_to=True)
@@ -368,12 +371,11 @@ async def _(
368
371
  selected_user = user_data.osu_name
369
372
  elif state["user"]:
370
373
  try:
371
- bp_info = await osu_api("bp", state["user"], NGM[state["mode"]])
374
+ bp_ls = await get_user_scores(state["user"], NGM[state["mode"]], "best")
372
375
  except NetworkError as e:
373
376
  await UniMessage.text(f"在查找用户:{state['username']} {NGM[state['mode']]}模式bp时 {str(e)}").finish(
374
377
  reply_to=True
375
378
  )
376
- bp_ls = [NewScore(**i) for i in bp_info]
377
379
  filtered_bp_ls = [i for i in bp_ls if i.beatmapset.id not in guess_song_cache[session_id]]
378
380
  if not filtered_bp_ls:
379
381
  await UniMessage.text(state["username"] + "的bp已经被你们猜过一遍了 -_-").finish(reply_to=True)
@@ -422,7 +424,7 @@ async def _(
422
424
  await UniMessage.text("由于未绑定OSU账号,本次随机选择模式进行猜歌\n" + state["error"]).send(reply_to=True)
423
425
  else:
424
426
  mode = state["mode"]
425
- if mode == "0" or mode == "1":
427
+ if mode == "0":
426
428
  await UniMessage.text("该模式暂不支持猜歌").finish(reply_to=True)
427
429
  binded_id = await UserData.filter(osu_mode=mode).values_list("user_id", flat=True)
428
430
  if not binded_id:
@@ -435,12 +437,11 @@ async def _(
435
437
  if not user_data:
436
438
  await UniMessage.text("该用户未绑定osu账号").finish(reply_to=True)
437
439
  try:
438
- bp_info = await osu_api("bp", user_data.osu_id, NGM[state["mode"]])
440
+ bp_ls = await get_user_scores(user_data.osu_id, NGM[state["mode"]], "best")
439
441
  except NetworkError as e:
440
442
  await UniMessage.text(f"在查找用户:{state['username']} {NGM[state['mode']]}模式bp时 {str(e)}").finish(
441
443
  reply_to=True
442
444
  )
443
- bp_ls = [NewScore(**i) for i in bp_info]
444
445
  filtered_bp_ls = [i for i in bp_ls if i.beatmapset.id not in guess_song_cache[session_id]]
445
446
  if not filtered_bp_ls:
446
447
  await UniMessage.text(state["username"] + "的bp已经被你们猜过一遍了 -_-").finish(reply_to=True)
@@ -449,12 +450,11 @@ async def _(
449
450
  guess_song_cache[session_id].add(selected_score.beatmapset.id)
450
451
  elif state["user"]:
451
452
  try:
452
- bp_info = await osu_api("bp", state["user"], NGM[state["mode"]])
453
+ bp_ls = await get_user_scores(state["user"], NGM[state["mode"]], "best")
453
454
  except NetworkError as e:
454
455
  await UniMessage.text(f"在查找用户:{state['username']} {NGM[state['mode']]}模式bp时 {str(e)}").finish(
455
456
  reply_to=True
456
457
  )
457
- bp_ls = [NewScore(**i) for i in bp_info]
458
458
  filtered_bp_ls = [i for i in bp_ls if i.beatmapset.id not in guess_song_cache[session_id]]
459
459
  if not filtered_bp_ls:
460
460
  await UniMessage.text(state["username"] + "的bp已经被你们猜过一遍了 -_-").finish(reply_to=True)
@@ -471,18 +471,18 @@ async def _(
471
471
  chart_set_timeout(matcher, session_id)
472
472
  if mode == "3":
473
473
  osu = await download_tmp_osu(selected_score.beatmap.id)
474
- byt = await generate_preview_pic(osu)
475
- await (
476
- UniMessage.text(f"开始谱面猜歌游戏,猜猜下面谱面的曲名吧,该曲抽选自 {selected_user} 的bp")
477
- + UniMessage.image(raw=byt)
478
- ).finish()
474
+ pic = await generate_preview_pic(osu)
475
+ elif mode == "1":
476
+ osu = await download_tmp_osu(selected_score.beatmap.id)
477
+ beatmap = parse_map(osu)
478
+ pic = map_to_image(beatmap)
479
479
  else:
480
480
  mods = [i.acronym for i in selected_score.mods]
481
481
  pic = await draw_cath_preview(selected_score.beatmap.id, selected_score.beatmapset.id, mods)
482
- await (
483
- UniMessage.text(f"开始谱面猜歌游戏,猜猜下面谱面的曲名吧,该曲抽选自 {selected_user} 的bp")
484
- + UniMessage.image(raw=pic)
485
- ).finish()
482
+ await (
483
+ UniMessage.text(f"开始谱面猜歌游戏,猜猜下面谱面的曲名吧,该曲抽选自 {selected_user} 的bp")
484
+ + UniMessage.image(raw=pic)
485
+ ).finish()
486
486
 
487
487
 
488
488
  @chart_word_matcher.handle()
@@ -0,0 +1,30 @@
1
+ import httpx
2
+ import asyncio
3
+ from ..config import Config
4
+ from httpx import AsyncClient
5
+ from nonebot import get_plugin_config
6
+
7
+
8
+ plugin_config = get_plugin_config(Config)
9
+ proxy = plugin_config.osu_proxy
10
+
11
+
12
+ class NetworkManager:
13
+ def __init__(self):
14
+ self._client = None
15
+ self._lock = asyncio.Lock()
16
+
17
+ async def get_client(self) -> AsyncClient:
18
+ if self._client is None:
19
+ async with self._lock:
20
+ if self._client is None:
21
+ self._client = AsyncClient(
22
+ proxy=proxy,
23
+ follow_redirects=True,
24
+ limits=httpx.Limits(max_keepalive_connections=20, max_connections=100, keepalive_expiry=30),
25
+ timeout=httpx.Timeout(30.0),
26
+ )
27
+ return self._client
28
+
29
+
30
+ network_manager = NetworkManager()
@@ -113,6 +113,7 @@ class UnifiedBeatmap(Base):
113
113
  ar: float
114
114
  hp: float
115
115
  stars: float
116
+ user_id: int
116
117
 
117
118
 
118
119
  class UnifiedScore(Base):
@@ -127,3 +128,4 @@ class UnifiedScore(Base):
127
128
  statistics: NewStatistics
128
129
  beatmap: Optional[UnifiedBeatmap] = None
129
130
  passed: bool
131
+ pp: Optional[float] = None
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "nonebot-plugin-osubot"
3
- version = "6.21.0"
3
+ version = "6.22.0"
4
4
  description = "OSUbot in NoneBot2"
5
5
  authors = [
6
6
  { name = "yaowan233", email = "572473053@qq.com" },