nonebot-plugin-osubot 6.23.0__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.
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/PKG-INFO +1 -1
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/api.py +8 -5
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/bmap.py +20 -22
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/bp.py +1 -1
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/echarts.py +8 -1
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/info.py +2 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/map.py +7 -3
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/score.py +4 -4
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/taiko_preview.py +14 -13
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/templates/bpa_chart.html +1 -1
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/file.py +1 -12
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/mania/__init__.py +9 -10
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/matcher/bp_analyze.py +14 -9
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/matcher/guess.py +3 -3
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/matcher/map_convert.py +12 -7
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/matcher/medal.py +1 -1
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/matcher/preview.py +3 -3
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/matcher/recommend.py +7 -12
- nonebot-plugin-osubot-6.24.0/nonebot_plugin_osubot/osufile/mods/AP.png +0 -0
- nonebot-plugin-osubot-6.24.0/nonebot_plugin_osubot/osufile/mods/CL.png +0 -0
- nonebot-plugin-osubot-6.24.0/nonebot_plugin_osubot/osufile/mods/DT.png +0 -0
- nonebot-plugin-osubot-6.24.0/nonebot_plugin_osubot/osufile/mods/EZ.png +0 -0
- nonebot-plugin-osubot-6.24.0/nonebot_plugin_osubot/osufile/mods/FI.png +0 -0
- nonebot-plugin-osubot-6.24.0/nonebot_plugin_osubot/osufile/mods/FL.png +0 -0
- nonebot-plugin-osubot-6.24.0/nonebot_plugin_osubot/osufile/mods/HD.png +0 -0
- nonebot-plugin-osubot-6.24.0/nonebot_plugin_osubot/osufile/mods/HR.png +0 -0
- nonebot-plugin-osubot-6.24.0/nonebot_plugin_osubot/osufile/mods/HT.png +0 -0
- nonebot-plugin-osubot-6.24.0/nonebot_plugin_osubot/osufile/mods/MR.png +0 -0
- nonebot-plugin-osubot-6.24.0/nonebot_plugin_osubot/osufile/mods/NC.png +0 -0
- nonebot-plugin-osubot-6.24.0/nonebot_plugin_osubot/osufile/mods/NF.png +0 -0
- nonebot-plugin-osubot-6.24.0/nonebot_plugin_osubot/osufile/mods/PF.png +0 -0
- nonebot-plugin-osubot-6.24.0/nonebot_plugin_osubot/osufile/mods/RX.png +0 -0
- nonebot-plugin-osubot-6.24.0/nonebot_plugin_osubot/osufile/mods/SD.png +0 -0
- nonebot-plugin-osubot-6.24.0/nonebot_plugin_osubot/osufile/mods/SO.png +0 -0
- nonebot-plugin-osubot-6.24.0/nonebot_plugin_osubot/osufile/mods/TD.png +0 -0
- nonebot-plugin-osubot-6.24.0/nonebot_plugin_osubot/osufile/mods/V2.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/schema/__init__.py +0 -2
- nonebot-plugin-osubot-6.24.0/nonebot_plugin_osubot/schema/beatmapsets.py +42 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/schema/score.py +1 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/pyproject.toml +1 -1
- nonebot-plugin-osubot-6.23.0/nonebot_plugin_osubot/draw/templates/t.html +0 -58
- nonebot-plugin-osubot-6.23.0/nonebot_plugin_osubot/osufile/mods/AP.png +0 -0
- nonebot-plugin-osubot-6.23.0/nonebot_plugin_osubot/osufile/mods/CL.png +0 -0
- nonebot-plugin-osubot-6.23.0/nonebot_plugin_osubot/osufile/mods/DT.png +0 -0
- nonebot-plugin-osubot-6.23.0/nonebot_plugin_osubot/osufile/mods/EZ.png +0 -0
- nonebot-plugin-osubot-6.23.0/nonebot_plugin_osubot/osufile/mods/FI.png +0 -0
- nonebot-plugin-osubot-6.23.0/nonebot_plugin_osubot/osufile/mods/FL.png +0 -0
- nonebot-plugin-osubot-6.23.0/nonebot_plugin_osubot/osufile/mods/HD.png +0 -0
- nonebot-plugin-osubot-6.23.0/nonebot_plugin_osubot/osufile/mods/HR.png +0 -0
- nonebot-plugin-osubot-6.23.0/nonebot_plugin_osubot/osufile/mods/HT.png +0 -0
- nonebot-plugin-osubot-6.23.0/nonebot_plugin_osubot/osufile/mods/MR.png +0 -0
- nonebot-plugin-osubot-6.23.0/nonebot_plugin_osubot/osufile/mods/NC.png +0 -0
- nonebot-plugin-osubot-6.23.0/nonebot_plugin_osubot/osufile/mods/NF.png +0 -0
- nonebot-plugin-osubot-6.23.0/nonebot_plugin_osubot/osufile/mods/PF.png +0 -0
- nonebot-plugin-osubot-6.23.0/nonebot_plugin_osubot/osufile/mods/RX.png +0 -0
- nonebot-plugin-osubot-6.23.0/nonebot_plugin_osubot/osufile/mods/SD.png +0 -0
- nonebot-plugin-osubot-6.23.0/nonebot_plugin_osubot/osufile/mods/SO.png +0 -0
- nonebot-plugin-osubot-6.23.0/nonebot_plugin_osubot/osufile/mods/TD.png +0 -0
- nonebot-plugin-osubot-6.23.0/nonebot_plugin_osubot/osufile/mods/V2.png +0 -0
- nonebot-plugin-osubot-6.23.0/nonebot_plugin_osubot/schema/sayo_beatmap.py +0 -59
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/README.md +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/__init__.py +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/beatmap_stats_moder.py +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/config.py +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/data/osu/1849145.osz +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/data/osu/1849145.zip +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/database/__init__.py +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/database/models.py +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/__init__.py +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/catch_preview.py +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/catch_preview_templates/css/style.css +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/beatmap/beatmap.js +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/beatmap/hitobject.js +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/beatmap/point.js +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/beatmap/scroll.js +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/beatmap/timingpoint.js +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/catch/LegacyRandom.js +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/catch/PalpableCatchHitObject.js +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/catch/bananashower.js +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/catch/catch.js +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/catch/fruit.js +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/catch/juicestream.js +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/fakeaudio.js +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/preview.js +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/standard/curve/bezier2.js +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/standard/curve/catmullcurve.js +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/standard/curve/centripetalcatmullrom.js +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/standard/curve/circumstancedcircle.js +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/standard/curve/curve.js +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/standard/curve/curvetype.js +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/standard/curve/equaldistancemulticurve.js +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/standard/curve/linearbezier.js +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/standard/hitcircle.js +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/standard/slider.js +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/standard/spinner.js +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/util.js +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/viewbox.js +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/catch_preview_templates/js/zip.min.js +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/catch_preview_templates/pic.html +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/match_history.py +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/rating.py +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/static.py +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/templates/echarts.min.js +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/templates/mod_chart.html +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/templates/pp_rank_line_chart.html +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/utils.py +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/exceptions.py +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/info/__init__.py +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/info/bg.py +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/info/bind.py +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/matcher/__init__.py +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/matcher/bind.py +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/matcher/bp.py +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/matcher/getbg.py +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/matcher/history.py +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/matcher/info.py +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/matcher/map.py +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/matcher/match.py +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/matcher/mu.py +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/matcher/osu_help.py +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/matcher/osudl.py +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/matcher/pr.py +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/matcher/rank.py +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/matcher/rating.py +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/matcher/score.py +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/matcher/update.py +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/matcher/update_mode.py +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/matcher/url_match.py +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/matcher/utils.py +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/mods.py +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/network/__init__.py +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/network/auto_retry.py +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/network/first_response.py +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/network/manager.py +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/Best Performance.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/History Score.jpg +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/beatmapinfo.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/convert.jpg +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/detail.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/AD.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/AE.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/AF.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/AG.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/AI.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/AL.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/AM.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/AO.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/AQ.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/AR.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/AS.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/AT.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/AU.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/AW.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/AX.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/AZ.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/BA.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/BB.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/BD.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/BE.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/BF.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/BG.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/BH.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/BI.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/BJ.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/BL.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/BM.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/BN.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/BO.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/BQ (1).png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/BQ (2).png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/BR.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/BS.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/BT.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/BV.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/BW.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/BY.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/BZ.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/CA.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/CD.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/CF.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/CG.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/CH.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/CI.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/CK.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/CL.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/CM.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/CN.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/CO.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/CR.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/CU.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/CV.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/CX.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/CY.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/CZ.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/DE.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/DJ.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/DK.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/DM.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/DO.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/DZ.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/EC.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/EE.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/EG.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/EH.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/ER.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/ES.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/ET.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/FI.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/FJ.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/FK.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/FO.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/FR.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/GA.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/GB.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/GD.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/GE.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/GF.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/GG.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/GH.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/GI.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/GL.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/GM.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/GN.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/GP.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/GQ.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/GR.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/GS.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/GT.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/GU.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/GW.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/GY.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/HK.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/HM.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/HN.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/HR.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/HT.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/HU.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/ID.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/IE.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/IL.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/IM.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/IN.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/IO.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/IQ.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/IR.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/IS.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/IT.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/JE.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/JM.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/JO.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/JP.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/KE.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/KG.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/KH.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/KI.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/KM.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/KN.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/KP.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/KR.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/KW.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/KY.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/KZ.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/LA.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/LB.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/LC.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/LI.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/LK.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/LR.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/LS.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/LT.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/LU.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/LV.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/LY.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/MA.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/MC.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/MD.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/ME.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/MF.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/MG.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/MH.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/MK.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/ML.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/MM.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/MN.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/MO.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/MP.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/MQ.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/MR.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/MS.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/MT.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/MU.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/MV.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/MW.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/MX.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/MY.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/MZ.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/NA.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/NC.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/NE.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/NF.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/NG.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/NI.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/NL.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/NO.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/NP.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/NR.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/NU.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/NZ.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/OM.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/PA.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/PE.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/PF.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/PG.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/PH.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/PK.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/PL.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/PM.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/PN.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/PR.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/PS.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/PT.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/PW.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/PY.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/QA.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/RE.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/RO.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/RS.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/RU.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/RW.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/SA.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/SB.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/SC.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/SD.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/SE.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/SG.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/SH.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/SI.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/SJ.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/SK.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/SL.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/SM.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/SN.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/SO.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/SR.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/SS.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/ST.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/SV.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/SY.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/SZ.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/TC.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/TD.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/TF.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/TG.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/TH.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/TJ.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/TK.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/TL.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/TM.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/TN.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/TO.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/TR.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/TT.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/TV.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/TW.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/TZ.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/UA.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/UG.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/UM.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/US.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/UY.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/UZ.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/VA.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/VC.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/VE.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/VG.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/VI.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/VN.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/VU.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/WF.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/WS.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/YE.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/YT.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/ZA.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/ZM.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/flags/ZW.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/fonts/Extra.otf +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/fonts/Torus Regular.otf +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/fonts/Torus SemiBold.otf +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/fonts/Venera.otf +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/help.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/info.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/maniabeatmapinfo.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/match/mplink.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/match/mplink_map.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/match/team_blue.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/match/team_red.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/medals/medals.json +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/mods/4K.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/mods/5K.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/mods/6K.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/mods/7K.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/mods/8K.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/mods/9K.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/pfm_ctb.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/pfm_mania.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/pfm_std.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/pfm_taiko.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/ranking/ranking-A.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/ranking/ranking-B.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/ranking/ranking-C.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/ranking/ranking-D.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/ranking/ranking-F.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/ranking/ranking-S.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/ranking/ranking-SH.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/ranking/ranking-X.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/ranking/ranking-XH.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/work/bmap.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/work/center.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/work/left.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/work/right.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/work/stardiff.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/work/stars.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/work/stars_expertplus.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/osufile/work/suppoter.png +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/pp.py +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/schema/alphaosu.py +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/schema/basemodel.py +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/schema/beatmap.py +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/schema/match.py +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/schema/ppysb/__init__.py +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/schema/user.py +0 -0
- {nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/utils/__init__.py +0 -0
|
@@ -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,
|
|
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
|
)
|
|
@@ -189,6 +190,7 @@ async def get_user_scores(
|
|
|
189
190
|
ended_at=datetime.strptime(i.play_time, "%Y-%m-%dT%H:%M:%S") + timedelta(hours=8),
|
|
190
191
|
max_combo=i.max_combo,
|
|
191
192
|
passed=True,
|
|
193
|
+
pp=i.pp,
|
|
192
194
|
statistics=NewStatistics(
|
|
193
195
|
miss=i.nmiss,
|
|
194
196
|
perfect=i.ngeki,
|
|
@@ -412,9 +414,10 @@ async def get_random_bg() -> Optional[bytes]:
|
|
|
412
414
|
return res.content
|
|
413
415
|
|
|
414
416
|
|
|
415
|
-
async def
|
|
416
|
-
|
|
417
|
-
|
|
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)
|
|
418
421
|
|
|
419
422
|
|
|
420
423
|
async def get_map_bg(mapid, sid, bg_name) -> BytesIO:
|
{nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/bmap.py
RENAMED
|
@@ -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
|
|
8
|
-
from ..exceptions import NetworkError
|
|
7
|
+
from ..api import get_beatmapsets_info
|
|
9
8
|
from .utils import crop_bg, stars_diff, calc_songlen
|
|
10
|
-
from .static import Image, BarImg, IconLs, Torus_SemiBold_20, Torus_SemiBold_40, Torus_SemiBold_50, extra_30
|
|
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
|
-
|
|
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.
|
|
17
|
+
if len(data.beatmaps) > 20:
|
|
23
18
|
im_h = 400 + 102 * 20
|
|
24
19
|
else:
|
|
25
|
-
im_h = 400 + 102 * (len(data.
|
|
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.
|
|
35
|
+
if not data.ranked_date:
|
|
41
36
|
approved_date = "谱面状态可能非ranked"
|
|
42
37
|
else:
|
|
43
|
-
datearray = datetime.
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
56
|
+
draw.text((20, 320 + h_num), IconLs[cmap.mode_int], font=extra_30, anchor="lt")
|
|
61
57
|
# 星星
|
|
62
|
-
stars_bg = stars_diff(cmap.
|
|
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.
|
|
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.
|
|
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(
|
|
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.
|
|
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.
|
|
113
|
+
f"Max Combo: {cmap.max_combo or 0}",
|
|
116
114
|
font=Torus_SemiBold_20,
|
|
117
115
|
anchor="lm",
|
|
118
116
|
)
|
{nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/bp.py
RENAMED
|
@@ -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")))
|
{nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/echarts.py
RENAMED
|
@@ -20,7 +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
|
-
{
|
|
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
|
+
},
|
|
24
31
|
)
|
|
25
32
|
return pic
|
|
26
33
|
|
{nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/info.py
RENAMED
|
@@ -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
|
{nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/map.py
RENAMED
|
@@ -23,6 +23,7 @@ from .static import (
|
|
|
23
23
|
Torus_SemiBold_25,
|
|
24
24
|
osufile,
|
|
25
25
|
extra_30,
|
|
26
|
+
Stars,
|
|
26
27
|
)
|
|
27
28
|
|
|
28
29
|
|
|
@@ -68,7 +69,7 @@ async def draw_map_info(mapid: int, mods: list[str], is_lazer) -> BytesIO:
|
|
|
68
69
|
# 模式
|
|
69
70
|
draw.text((50, 65), IconLs[FGM[mapinfo.mode]], font=extra_30, anchor="lt")
|
|
70
71
|
# 难度星星
|
|
71
|
-
stars_bg = stars_diff(ss_pp_info.difficulty.stars)
|
|
72
|
+
stars_bg = stars_diff(ss_pp_info.difficulty.stars, Stars)
|
|
72
73
|
stars_img = stars_bg.resize((80, 30))
|
|
73
74
|
im.alpha_composite(stars_img, (90, 65))
|
|
74
75
|
if ss_pp_info.difficulty.stars < 6.5:
|
|
@@ -155,8 +156,11 @@ async def draw_map_info(mapid: int, mods: list[str], is_lazer) -> BytesIO:
|
|
|
155
156
|
if mods:
|
|
156
157
|
for mods_num, s_mods in enumerate(mods):
|
|
157
158
|
mods_bg = osufile / "mods" / f"{s_mods.acronym}.png"
|
|
158
|
-
|
|
159
|
-
|
|
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
|
|
160
164
|
# mapper
|
|
161
165
|
icon_url = f"https://a.ppy.sh/{mapinfo.user_id}"
|
|
162
166
|
user_icon = await get_projectimg(icon_url)
|
{nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/draw/score.py
RENAMED
|
@@ -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")))
|
|
@@ -4,7 +4,7 @@ from pathlib import Path
|
|
|
4
4
|
|
|
5
5
|
from PIL import Image, ImageDraw
|
|
6
6
|
|
|
7
|
-
from .static import Torus_Regular_8, Torus_Regular_15
|
|
7
|
+
from .static import Torus_Regular_8, Torus_Regular_15
|
|
8
8
|
|
|
9
9
|
HIT_DON = 0x00
|
|
10
10
|
HIT_KAT = 0x01
|
|
@@ -35,20 +35,21 @@ def map_to_image(map_data) -> BytesIO:
|
|
|
35
35
|
img = Image.new(mode="RGB", size=(3000, 30000), color=0x121212)
|
|
36
36
|
draw = ImageDraw.Draw(img)
|
|
37
37
|
|
|
38
|
-
title_font = Torus_Regular_30
|
|
39
|
-
semi_font = Torus_Regular_25
|
|
40
|
-
reg_font = Torus_Regular_20
|
|
38
|
+
# title_font = Torus_Regular_30
|
|
39
|
+
# semi_font = Torus_Regular_25
|
|
40
|
+
# reg_font = Torus_Regular_20
|
|
41
41
|
small_font = Torus_Regular_15
|
|
42
42
|
tiny_font = Torus_Regular_8
|
|
43
43
|
|
|
44
|
-
draw.text(
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
)
|
|
50
|
-
draw.text((LEFT_MARGIN, 90), "by " + map_data.creator, font=semi_font, fill="#CCC")
|
|
51
|
-
draw.text((LEFT_MARGIN, 135), "HP = " + str(map_data.hp) +
|
|
44
|
+
# draw.text(
|
|
45
|
+
# (LEFT_MARGIN, 40),
|
|
46
|
+
# map_data.artist + " - " + map_data.title + " [" + map_data.diff + "]",
|
|
47
|
+
# font=title_font,
|
|
48
|
+
# fill="#FFF",
|
|
49
|
+
# )
|
|
50
|
+
# draw.text((LEFT_MARGIN, 90), "by " + map_data.creator, font=semi_font, fill="#CCC")
|
|
51
|
+
# draw.text((LEFT_MARGIN, 135), "HP = " + str(map_data.hp) +
|
|
52
|
+
# " OD = " + str(map_data.od), font=reg_font, fill="#AAA")
|
|
52
53
|
|
|
53
54
|
max_meter = 0
|
|
54
55
|
timing_sections = [] # (start, beat_ms, meter, [list of hit_object])
|
|
@@ -67,7 +68,7 @@ def map_to_image(map_data) -> BytesIO:
|
|
|
67
68
|
(map_data.timing_points[i][0], map_data.timing_points[i][1], map_data.timing_points[i][2], current_list)
|
|
68
69
|
)
|
|
69
70
|
|
|
70
|
-
y_start =
|
|
71
|
+
y_start = 40
|
|
71
72
|
max_x = 0
|
|
72
73
|
max_y = 0
|
|
73
74
|
bar_number = 1
|
|
@@ -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
|
|
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
|
-
|
|
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.
|
|
93
|
-
for
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
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
|
|
@@ -34,12 +34,16 @@ async def _(event: Event, state: T_State):
|
|
|
34
34
|
uid = state["user"]
|
|
35
35
|
lazer_mode = "lazer模式下" if state["is_lazer"] else "stable模式下"
|
|
36
36
|
try:
|
|
37
|
-
score_ls = await get_user_scores(
|
|
37
|
+
score_ls = await get_user_scores(
|
|
38
|
+
uid, NGM[state["mode"]], "best", state["source"], legacy_only=not state["is_lazer"]
|
|
39
|
+
)
|
|
38
40
|
except NetworkError as e:
|
|
39
41
|
await UniMessage.text(
|
|
40
42
|
f"在查找用户:{state['username']} {NGM[state['mode']]}模式 {lazer_mode}时 {str(e)}"
|
|
41
43
|
).finish(reply_to=True)
|
|
42
44
|
for score in score_ls:
|
|
45
|
+
if not state["is_lazer"] or state["source"] == "ppysb":
|
|
46
|
+
score.mods = [mod for mod in score.mods if mod.acronym != "CL"]
|
|
43
47
|
for mod in score.mods:
|
|
44
48
|
if mod.acronym == "DT" or mod.acronym == "NC":
|
|
45
49
|
score.beatmap.total_length /= 1.5
|
|
@@ -89,14 +93,15 @@ async def _(event: Event, state: T_State):
|
|
|
89
93
|
pp_data.append({"name": mod, "value": round(pp, 2)})
|
|
90
94
|
mapper_pp = defaultdict(int)
|
|
91
95
|
for num, i in enumerate(score_ls):
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
mapper_pp = mapper_pp[:9]
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
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]
|
|
100
105
|
if len(mapper_pp_data) > 20:
|
|
101
106
|
mapper_pp_data = mapper_pp_data[:20]
|
|
102
107
|
name = f"{state['username']} {NGM[state['mode']]} 模式 "
|
{nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/matcher/guess.py
RENAMED
|
@@ -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,
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
41
|
-
|
|
42
|
-
|
|
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
|
-
|
|
89
|
-
|
|
90
|
-
|
|
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)
|
{nonebot-plugin-osubot-6.23.0 → nonebot-plugin-osubot-6.24.0}/nonebot_plugin_osubot/matcher/medal.py
RENAMED
|
@@ -69,6 +69,6 @@ async def _(msg: Message = CommandArg()):
|
|
|
69
69
|
for beatmap in medal_data["beatmaps"]:
|
|
70
70
|
msg += (
|
|
71
71
|
f"{beatmap['SongTitle']} [{beatmap['DifficultyName']}]\n{beatmap['Difficulty']}⭐\n"
|
|
72
|
-
+ f"https://osu.ppy.sh/b/{beatmap['BeatmapID']}"
|
|
72
|
+
+ f"https://osu.ppy.sh/b/{beatmap['BeatmapID']}\n"
|
|
73
73
|
)
|
|
74
74
|
await msg.send()
|
|
@@ -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
|
|
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
|
|
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
|
|
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,
|
|
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
|
-
|
|
46
|
-
|
|
47
|
-
|
|
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://
|
|
55
|
+
pic_url = f"https://osu.direct/api/media/background/{bid}"
|
|
61
56
|
return pic_url, s
|
|
62
57
|
|
|
63
58
|
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|