From 8b01943d14fc639c645314eb9b6320e36e8e3831 Mon Sep 17 00:00:00 2001 From: snowy Date: Wed, 26 Jun 2024 13:52:04 +0800 Subject: [PATCH] =?UTF-8?q?:fire:=20=E5=B0=8F=E5=9E=8B=E9=87=8D=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 +- docs/.vuepress/client.js | 5 +- ...lugin_item_card.vue => PluginItemCard.vue} | 0 .../{plugin_store.vue => PluginStore.vue} | 2 +- .../{res_item_card.vue => ResItemCard.vue} | 0 .../{res_store.vue => ResStore.vue} | 4 +- docs/.vuepress/config.ts | 1 + docs/.vuepress/public/js/style.js | 22 + docs/.vuepress/styles/index.scss | 60 +- docs/package.json | 3 +- docs/pnpm-lock.yaml | 13 +- main.py | 12 +- requirements.txt | 1 + {liteyuki/utils/base => src}/__init__.py | 0 .../external => src/liteyuki}/__init__.py | 0 src/liteyuki/bot/__init__.py | 6 + .../message => src/liteyuki/core}/__init__.py | 0 src/liteyuki/exception.py | 10 + .../nb => src/liteyuki/plugin}/__init__.py | 0 .../liteyuki/plugins/__init__.py | 0 .../plugins/plugin_loader/__init__.py | 0 .../plugins/process_manager/__init__.py | 0 .../plugins/resource_loader/__init__.py | 0 {liteyuki => src}/liteyuki_main/__init__.py | 68 +- {liteyuki => src}/liteyuki_main/api.py | 94 +- {liteyuki => src}/liteyuki_main/core.py | 796 +- {liteyuki => src}/liteyuki_main/dev.py | 114 +- {liteyuki => src}/liteyuki_main/loader.py | 62 +- .../liteyuki_main/uitls.py | 0 .../plugins/liteyuki_crt_utils/__init__.py | 32 +- .../plugins/liteyuki_crt_utils/canvas.py | 1150 +- .../plugins/liteyuki_crt_utils/crt.py | 0 .../liteyuki_crt_utils/crt_matchers.py | 156 +- .../plugins/liteyuki_crt_utils/rt_guide.py | 838 +- .../plugins/liteyuki_eventpush.py | 250 +- .../plugins/liteyuki_markdowntest.py | 104 +- .../plugins/liteyuki_mctools/__init__.py | 28 +- .../plugins/liteyuki_minigame/__init__.py | 30 +- .../plugins/liteyuki_minigame/game.py | 338 +- .../plugins/liteyuki_minigame/minesweeper.py | 206 +- .../plugins/liteyuki_packmanv2/__init__.py | 40 +- .../plugins/liteyuki_pacman/__init__.py | 44 +- .../plugins/liteyuki_pacman/common.py | 512 +- .../plugins/liteyuki_pacman/npm.py | 1330 +- .../plugins/liteyuki_pacman/rpm.py | 372 +- .../liteyuki_satori_user_info/__init__.py | 32 +- .../liteyuki_satori_user_info/auto_update.py | 42 +- .../plugins/liteyuki_sign_status.py | 326 +- .../plugins/liteyuki_smart_reply/__init__.py | 34 +- .../plugins/liteyuki_smart_reply/matchers.py | 212 +- .../plugins/liteyuki_smart_reply/monitors.py | 0 .../plugins/liteyuki_smart_reply/utils.py | 26 +- .../plugins/liteyuki_statistics/__init__.py | 58 +- .../plugins/liteyuki_statistics/common.py | 40 +- .../liteyuki_statistics/data_source.py | 344 +- .../liteyuki_statistics/stat_matchers.py | 270 +- .../liteyuki_statistics/stat_monitors.py | 184 +- .../liteyuki_statistics/stat_restful_api.py | 0 .../liteyuki_statistics/word_cloud/LICENSE | 21 + .../word_cloud/data_source.py | 107 + .../plugins/liteyuki_status/__init__.py | 48 +- .../plugins/liteyuki_status/api.py | 556 +- .../liteyuki_status/counter_for_satori.py | 20 +- .../plugins/liteyuki_status/status.py | 98 +- .../plugins/liteyuki_uniblacklist/__init__.py | 34 +- .../plugins/liteyuki_uniblacklist/api.py | 118 +- .../plugins/liteyuki_user/__init__.py | 32 +- .../plugins/liteyuki_user/const.py | 44 +- .../plugins/liteyuki_user/input_handle.py | 0 .../plugins/liteyuki_user/profile_manager.py | 300 +- .../plugins/liteyuki_weather/__init__.py | 54 +- .../plugins/liteyuki_weather/qw_api.py | 342 +- .../plugins/liteyuki_weather/qw_models.py | 124 +- .../plugins/liteyuki_weather/qweather.py | 202 +- .../plugins/liteyuki_webdash/__init__.py | 42 +- .../plugins/liteyuki_webdash/common.py | 6 +- .../plugins/liteyuki_webdash/main.py | 20 +- .../plugins/liteyuki_webdash/restful_api.py | 48 +- .../resources/lagrange_sign/metadata.yml | 4 +- .../templates/css/sign_status.css | 6 +- .../lagrange_sign/templates/js/sign_status.js | 148 +- .../lagrange_sign/templates/sign_status.html | 42 +- .../resources/liteyuki_crt/lang/en.lang | 4 +- .../resources/liteyuki_crt/lang/zh-CN.lang | 4 +- .../resources/liteyuki_crt/metadata.yml | 4 +- .../liteyuki_crt/templates/crt_route.html | 320 +- .../liteyuki_crt/templates/css/crt_route.css | 0 .../liteyuki_crt/templates/js/crt_route.js | 70 +- .../liteyuki_statistics/lang/zh-CN.lang | 2 +- .../liteyuki_statistics/metadata.yml | 4 +- .../templates/css/stat_msg.css | 6 +- .../templates/css/stat_rank.css | 0 .../templates/js/stat_msg.js | 106 +- .../templates/js/stat_rank.js | 50 +- .../templates/stat_msg.html | 42 +- .../templates/stat_rank.html | 106 +- .../resources/liteyuki_weather/lang/en.lang | 22 +- .../resources/liteyuki_weather/lang/ja.lang | 22 +- .../liteyuki_weather/lang/zh-CN.lang | 22 +- .../resources/liteyuki_weather/metadata.yml | 4 +- .../templates/css/weather_now.css | 366 +- .../templates/img/qw_icon/100.png | Bin .../templates/img/qw_icon/101.png | Bin .../templates/img/qw_icon/102.png | Bin .../templates/img/qw_icon/103.png | Bin .../templates/img/qw_icon/104.png | Bin .../templates/img/qw_icon/150.png | Bin .../templates/img/qw_icon/151.png | Bin .../templates/img/qw_icon/152.png | Bin .../templates/img/qw_icon/153.png | Bin .../templates/img/qw_icon/154.png | Bin .../templates/img/qw_icon/300.png | Bin .../templates/img/qw_icon/301.png | Bin .../templates/img/qw_icon/302.png | Bin .../templates/img/qw_icon/303.png | Bin .../templates/img/qw_icon/304.png | Bin .../templates/img/qw_icon/305.png | Bin .../templates/img/qw_icon/306.png | Bin .../templates/img/qw_icon/307.png | Bin .../templates/img/qw_icon/308.png | Bin .../templates/img/qw_icon/309.png | Bin .../templates/img/qw_icon/310.png | Bin .../templates/img/qw_icon/311.png | Bin .../templates/img/qw_icon/312.png | Bin .../templates/img/qw_icon/313.png | Bin .../templates/img/qw_icon/314.png | Bin .../templates/img/qw_icon/315.png | Bin .../templates/img/qw_icon/316.png | Bin .../templates/img/qw_icon/317.png | Bin .../templates/img/qw_icon/318.png | Bin .../templates/img/qw_icon/350.png | Bin .../templates/img/qw_icon/351.png | Bin .../templates/img/qw_icon/399.png | Bin .../templates/img/qw_icon/400.png | Bin .../templates/img/qw_icon/401.png | Bin .../templates/img/qw_icon/402.png | Bin .../templates/img/qw_icon/403.png | Bin .../templates/img/qw_icon/404.png | Bin .../templates/img/qw_icon/405.png | Bin .../templates/img/qw_icon/406.png | Bin .../templates/img/qw_icon/407.png | Bin .../templates/img/qw_icon/408.png | Bin .../templates/img/qw_icon/409.png | Bin .../templates/img/qw_icon/410.png | Bin .../templates/img/qw_icon/456.png | Bin .../templates/img/qw_icon/457.png | Bin .../templates/img/qw_icon/499.png | Bin .../templates/img/qw_icon/500.png | Bin .../templates/img/qw_icon/501.png | Bin .../templates/img/qw_icon/502.png | Bin .../templates/img/qw_icon/503.png | Bin .../templates/img/qw_icon/504.png | Bin .../templates/img/qw_icon/507.png | Bin .../templates/img/qw_icon/508.png | Bin .../templates/img/qw_icon/509.png | Bin .../templates/img/qw_icon/510.png | Bin .../templates/img/qw_icon/511.png | Bin .../templates/img/qw_icon/512.png | Bin .../templates/img/qw_icon/513.png | Bin .../templates/img/qw_icon/514.png | Bin .../templates/img/qw_icon/515.png | Bin .../templates/img/qw_icon/800.png | Bin .../templates/img/qw_icon/801.png | Bin .../templates/img/qw_icon/802.png | Bin .../templates/img/qw_icon/803.png | Bin .../templates/img/qw_icon/804.png | Bin .../templates/img/qw_icon/805.png | Bin .../templates/img/qw_icon/806.png | Bin .../templates/img/qw_icon/807.png | Bin .../templates/img/qw_icon/900.png | Bin .../templates/img/qw_icon/901.png | Bin .../templates/img/qw_icon/999.png | Bin .../templates/js/weather_now.js | 250 +- .../templates/weather_now.html | 150 +- .../resources/liteyuki_words/metadata.yml | 4 +- .../liteyuki_words/word_bank/LICENSE | 0 .../liteyuki_words/word_bank/README.md | 0 .../liteyuki_words/word_bank/data.json | 4026 +-- .../resources/vanilla_language/lang/de.lang | 318 +- .../resources/vanilla_language/lang/en.lang | 320 +- .../resources/vanilla_language/lang/es.lang | 318 +- .../resources/vanilla_language/lang/fr.lang | 316 +- .../resources/vanilla_language/lang/ja.lang | 318 +- .../resources/vanilla_language/lang/ko.lang | 316 +- .../resources/vanilla_language/lang/ru.lang | 316 +- .../vanilla_language/lang/zh-CN.lang | 318 +- .../vanilla_language/lang/zh-HK.lang | 316 +- .../vanilla_language/lang/zh-Kawaii.lang | 316 +- .../vanilla_language/lang/zh-MS.lang | 316 +- .../vanilla_language/lang/zh-WY.lang | 316 +- .../resources/vanilla_language/metadata.yml | 4 +- .../functions/hello.mcfunction | 18 +- .../functions/poke.mcfunction | 8 +- .../resources/vanilla_resource/metadata.yml | 4 +- .../vanilla_resource/templates/css/card.css | 76 +- .../vanilla_resource/templates/css/fonts.css | 150 +- .../vanilla_resource/templates/css/status.css | 254 +- .../vanilla_resource/templates/css/style.css | 0 .../vanilla_resource/templates/favicon.ico | Bin .../fonts/MapleMono/MapleMono-Bold.woff2 | Bin .../MapleMono/MapleMono-BoldItalic.woff2 | Bin .../fonts/MapleMono/MapleMono-Italic.woff2 | Bin .../fonts/MapleMono/MapleMono-Light.woff2 | Bin .../MapleMono/MapleMono-LightItalic.woff2 | Bin .../fonts/MapleMono/MapleMono-Regular.woff2 | Bin .../templates/fonts/MiSans/MiSans-Bold.woff2 | Bin .../templates/fonts/MiSans/MiSans-Heavy.woff2 | Bin .../templates/fonts/MiSans/MiSans-Light.woff2 | Bin .../fonts/MiSans/MiSans-Normal.woff2 | Bin .../fonts/MiSans/MiSans-Semibold.woff2 | Bin .../templates/img/2023-08-05_20.06.51.png | Bin .../vanilla_resource/templates/img/bg1.webp | Bin .../vanilla_resource/templates/img/bg2.webp | Bin .../vanilla_resource/templates/img/bg3.webp | Bin .../vanilla_resource/templates/img/bg4.webp | Bin .../vanilla_resource/templates/img/bg5.webp | Bin .../vanilla_resource/templates/img/bg6.webp | Bin .../vanilla_resource/templates/img/bg7.webp | Bin .../templates/img/liteyuki.png | Bin .../vanilla_resource/templates/js/card.js | 54 +- .../vanilla_resource/templates/js/motto.js | 224 +- .../vanilla_resource/templates/js/status.js | 590 +- .../vanilla_resource/templates/js/style.js | 512 +- .../templates/static/motto.txt | 0 .../vanilla_resource/templates/stats.html | 80 +- .../vanilla_resource/templates/status.html | 98 +- .../templates/status_mem.html | 254 +- .../templates/svg/lylogo-full.svg | 0 .../vanilla_resource/unsorted/plugins.json | 22264 ++++++++-------- {liteyuki => src}/test/action_test.py | 58 +- {liteyuki => src}/utils/__init__.py | 172 +- .../utils/adapter_manager/__init__.py | 28 +- .../utils/adapter_manager/onebot.py | 24 +- .../utils/adapter_manager/satori.py | 52 +- src/utils/base/__init__.py | 0 {liteyuki => src}/utils/base/config.py | 200 +- {liteyuki => src}/utils/base/data.py | 810 +- {liteyuki => src}/utils/base/data_manager.py | 192 +- {liteyuki => src}/utils/base/language.py | 432 +- {liteyuki => src}/utils/base/log.py | 158 +- {liteyuki => src}/utils/base/ly_api.py | 180 +- {liteyuki => src}/utils/base/ly_function.py | 394 +- {liteyuki => src}/utils/base/ly_typing.py | 16 +- {liteyuki => src}/utils/base/permission.py | 10 +- {liteyuki => src}/utils/base/reloader.py | 122 +- {liteyuki => src}/utils/base/resource.py | 520 +- {liteyuki => src}/utils/base/word_bank.py | 114 +- {liteyuki => src}/utils/canvas/__init__.py | 0 .../utils/driver_manager/__init__.py | 12 +- .../utils/driver_manager/auto_set_env.py | 42 +- .../utils/driver_manager/defines.py | 34 +- {liteyuki => src}/utils/event/__init__.py | 2 +- {liteyuki => src}/utils/event/get_info.py | 48 +- src/utils/external/__init__.py | 0 {liteyuki => src}/utils/external/logo.py | 80 +- src/utils/message/__init__.py | 0 {liteyuki => src}/utils/message/html_tool.py | 226 +- {liteyuki => src}/utils/message/markdown.py | 418 +- {liteyuki => src}/utils/message/message.py | 594 +- .../utils/message/string_tool.py | 202 +- {liteyuki => src}/utils/message/tools.py | 198 +- src/utils/message/union.py | 0 src/utils/nb/__init__.py | 0 {liteyuki => src}/utils/network/__init__.py | 30 +- .../utils/satori_utils/__init__.py | 6 +- .../utils/satori_utils/count_friends.py | 26 +- .../utils/satori_utils/count_groups.py | 26 +- .../utils/satori_utils/user_info.py | 128 +- 268 files changed, 25225 insertions(+), 24996 deletions(-) rename docs/.vuepress/components/{plugin_item_card.vue => PluginItemCard.vue} (100%) rename docs/.vuepress/components/{plugin_store.vue => PluginStore.vue} (94%) rename docs/.vuepress/components/{res_item_card.vue => ResItemCard.vue} (100%) rename docs/.vuepress/components/{res_store.vue => ResStore.vue} (87%) create mode 100644 docs/.vuepress/public/js/style.js rename {liteyuki/utils/base => src}/__init__.py (100%) rename {liteyuki/utils/external => src/liteyuki}/__init__.py (100%) create mode 100644 src/liteyuki/bot/__init__.py rename {liteyuki/utils/message => src/liteyuki/core}/__init__.py (100%) create mode 100644 src/liteyuki/exception.py rename {liteyuki/utils/nb => src/liteyuki/plugin}/__init__.py (100%) rename liteyuki/liteyuki_main/uitls.py => src/liteyuki/plugins/__init__.py (100%) rename liteyuki/plugins/liteyuki_crt_utils/crt.py => src/liteyuki/plugins/plugin_loader/__init__.py (100%) rename liteyuki/plugins/liteyuki_smart_reply/monitors.py => src/liteyuki/plugins/process_manager/__init__.py (100%) rename liteyuki/plugins/liteyuki_statistics/stat_restful_api.py => src/liteyuki/plugins/resource_loader/__init__.py (100%) rename {liteyuki => src}/liteyuki_main/__init__.py (97%) rename {liteyuki => src}/liteyuki_main/api.py (94%) rename {liteyuki => src}/liteyuki_main/core.py (94%) rename {liteyuki => src}/liteyuki_main/dev.py (72%) rename {liteyuki => src}/liteyuki_main/loader.py (77%) rename liteyuki/plugins/liteyuki_user/input_handle.py => src/liteyuki_main/uitls.py (100%) rename {liteyuki => src}/plugins/liteyuki_crt_utils/__init__.py (96%) rename {liteyuki => src}/plugins/liteyuki_crt_utils/canvas.py (97%) rename liteyuki/resources/liteyuki_crt/templates/css/crt_route.css => src/plugins/liteyuki_crt_utils/crt.py (100%) rename {liteyuki => src}/plugins/liteyuki_crt_utils/crt_matchers.py (86%) rename {liteyuki => src}/plugins/liteyuki_crt_utils/rt_guide.py (96%) rename {liteyuki => src}/plugins/liteyuki_eventpush.py (93%) rename {liteyuki => src}/plugins/liteyuki_markdowntest.py (86%) rename {liteyuki => src}/plugins/liteyuki_mctools/__init__.py (96%) rename {liteyuki => src}/plugins/liteyuki_minigame/__init__.py (96%) rename {liteyuki => src}/plugins/liteyuki_minigame/game.py (95%) rename {liteyuki => src}/plugins/liteyuki_minigame/minesweeper.py (94%) rename {liteyuki => src}/plugins/liteyuki_packmanv2/__init__.py (96%) rename {liteyuki => src}/plugins/liteyuki_pacman/__init__.py (96%) rename {liteyuki => src}/plugins/liteyuki_pacman/common.py (94%) rename {liteyuki => src}/plugins/liteyuki_pacman/npm.py (96%) rename {liteyuki => src}/plugins/liteyuki_pacman/rpm.py (92%) rename {liteyuki => src}/plugins/liteyuki_satori_user_info/__init__.py (96%) rename {liteyuki => src}/plugins/liteyuki_satori_user_info/auto_update.py (77%) rename {liteyuki => src}/plugins/liteyuki_sign_status.py (92%) rename {liteyuki => src}/plugins/liteyuki_smart_reply/__init__.py (96%) rename {liteyuki => src}/plugins/liteyuki_smart_reply/matchers.py (89%) rename liteyuki/resources/liteyuki_statistics/templates/css/stat_rank.css => src/plugins/liteyuki_smart_reply/monitors.py (100%) rename {liteyuki => src}/plugins/liteyuki_smart_reply/utils.py (94%) rename {liteyuki => src}/plugins/liteyuki_statistics/__init__.py (97%) rename {liteyuki => src}/plugins/liteyuki_statistics/common.py (83%) rename liteyuki/plugins/liteyuki_statistics/stat_api.py => src/plugins/liteyuki_statistics/data_source.py (92%) rename {liteyuki => src}/plugins/liteyuki_statistics/stat_matchers.py (91%) rename {liteyuki => src}/plugins/liteyuki_statistics/stat_monitors.py (89%) rename liteyuki/resources/vanilla_resource/templates/static/motto.txt => src/plugins/liteyuki_statistics/stat_restful_api.py (100%) create mode 100644 src/plugins/liteyuki_statistics/word_cloud/LICENSE create mode 100644 src/plugins/liteyuki_statistics/word_cloud/data_source.py rename {liteyuki => src}/plugins/liteyuki_status/__init__.py (96%) rename {liteyuki => src}/plugins/liteyuki_status/api.py (93%) rename {liteyuki => src}/plugins/liteyuki_status/counter_for_satori.py (94%) rename {liteyuki => src}/plugins/liteyuki_status/status.py (84%) rename {liteyuki => src}/plugins/liteyuki_uniblacklist/__init__.py (95%) rename {liteyuki => src}/plugins/liteyuki_uniblacklist/api.py (95%) rename {liteyuki => src}/plugins/liteyuki_user/__init__.py (96%) rename {liteyuki => src}/plugins/liteyuki_user/const.py (98%) rename liteyuki/utils/message/union.py => src/plugins/liteyuki_user/input_handle.py (100%) rename {liteyuki => src}/plugins/liteyuki_user/profile_manager.py (90%) rename {liteyuki => src}/plugins/liteyuki_weather/__init__.py (96%) rename {liteyuki => src}/plugins/liteyuki_weather/qw_api.py (96%) rename {liteyuki => src}/plugins/liteyuki_weather/qw_models.py (91%) rename {liteyuki => src}/plugins/liteyuki_weather/qweather.py (89%) rename {liteyuki => src}/plugins/liteyuki_webdash/__init__.py (97%) rename {liteyuki => src}/plugins/liteyuki_webdash/common.py (96%) rename {liteyuki => src}/plugins/liteyuki_webdash/main.py (94%) rename {liteyuki => src}/plugins/liteyuki_webdash/restful_api.py (95%) rename {liteyuki => src}/resources/lagrange_sign/metadata.yml (96%) rename {liteyuki => src}/resources/lagrange_sign/templates/css/sign_status.css (96%) rename {liteyuki => src}/resources/lagrange_sign/templates/js/sign_status.js (96%) rename {liteyuki => src}/resources/lagrange_sign/templates/sign_status.html (96%) rename {liteyuki => src}/resources/liteyuki_crt/lang/en.lang (96%) rename {liteyuki => src}/resources/liteyuki_crt/lang/zh-CN.lang (96%) rename {liteyuki => src}/resources/liteyuki_crt/metadata.yml (97%) rename {liteyuki => src}/resources/liteyuki_crt/templates/crt_route.html (95%) create mode 100644 src/resources/liteyuki_crt/templates/css/crt_route.css rename {liteyuki => src}/resources/liteyuki_crt/templates/js/crt_route.js (95%) rename {liteyuki => src}/resources/liteyuki_statistics/lang/zh-CN.lang (97%) rename {liteyuki => src}/resources/liteyuki_statistics/metadata.yml (97%) rename {liteyuki => src}/resources/liteyuki_statistics/templates/css/stat_msg.css (96%) create mode 100644 src/resources/liteyuki_statistics/templates/css/stat_rank.css rename {liteyuki => src}/resources/liteyuki_statistics/templates/js/stat_msg.js (96%) rename {liteyuki => src}/resources/liteyuki_statistics/templates/js/stat_rank.js (97%) rename {liteyuki => src}/resources/liteyuki_statistics/templates/stat_msg.html (96%) rename {liteyuki => src}/resources/liteyuki_statistics/templates/stat_rank.html (96%) rename {liteyuki => src}/resources/liteyuki_weather/lang/en.lang (95%) rename {liteyuki => src}/resources/liteyuki_weather/lang/ja.lang (95%) rename {liteyuki => src}/resources/liteyuki_weather/lang/zh-CN.lang (96%) rename {liteyuki => src}/resources/liteyuki_weather/metadata.yml (97%) rename {liteyuki => src}/resources/liteyuki_weather/templates/css/weather_now.css (94%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/100.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/101.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/102.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/103.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/104.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/150.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/151.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/152.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/153.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/154.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/300.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/301.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/302.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/303.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/304.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/305.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/306.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/307.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/308.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/309.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/310.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/311.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/312.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/313.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/314.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/315.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/316.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/317.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/318.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/350.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/351.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/399.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/400.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/401.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/402.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/403.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/404.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/405.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/406.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/407.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/408.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/409.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/410.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/456.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/457.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/499.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/500.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/501.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/502.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/503.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/504.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/507.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/508.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/509.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/510.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/511.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/512.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/513.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/514.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/515.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/800.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/801.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/802.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/803.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/804.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/805.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/806.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/807.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/900.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/901.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/img/qw_icon/999.png (100%) rename {liteyuki => src}/resources/liteyuki_weather/templates/js/weather_now.js (97%) rename {liteyuki => src}/resources/liteyuki_weather/templates/weather_now.html (96%) rename {liteyuki => src}/resources/liteyuki_words/metadata.yml (97%) rename {liteyuki => src}/resources/liteyuki_words/word_bank/LICENSE (100%) rename {liteyuki => src}/resources/liteyuki_words/word_bank/README.md (100%) rename {liteyuki => src}/resources/liteyuki_words/word_bank/data.json (97%) rename {liteyuki => src}/resources/vanilla_language/lang/de.lang (97%) rename {liteyuki => src}/resources/vanilla_language/lang/en.lang (97%) rename {liteyuki => src}/resources/vanilla_language/lang/es.lang (97%) rename {liteyuki => src}/resources/vanilla_language/lang/fr.lang (97%) rename {liteyuki => src}/resources/vanilla_language/lang/ja.lang (98%) rename {liteyuki => src}/resources/vanilla_language/lang/ko.lang (97%) rename {liteyuki => src}/resources/vanilla_language/lang/ru.lang (98%) rename {liteyuki => src}/resources/vanilla_language/lang/zh-CN.lang (97%) rename {liteyuki => src}/resources/vanilla_language/lang/zh-HK.lang (97%) rename {liteyuki => src}/resources/vanilla_language/lang/zh-Kawaii.lang (97%) rename {liteyuki => src}/resources/vanilla_language/lang/zh-MS.lang (97%) rename {liteyuki => src}/resources/vanilla_language/lang/zh-WY.lang (96%) rename {liteyuki => src}/resources/vanilla_language/metadata.yml (98%) rename {liteyuki => src}/resources/vanilla_resource/functions/hello.mcfunction (96%) rename {liteyuki => src}/resources/vanilla_resource/functions/poke.mcfunction (96%) rename {liteyuki => src}/resources/vanilla_resource/metadata.yml (97%) rename {liteyuki => src}/resources/vanilla_resource/templates/css/card.css (94%) rename {liteyuki => src}/resources/vanilla_resource/templates/css/fonts.css (95%) rename {liteyuki => src}/resources/vanilla_resource/templates/css/status.css (94%) rename {liteyuki => src}/resources/vanilla_resource/templates/css/style.css (100%) rename {liteyuki => src}/resources/vanilla_resource/templates/favicon.ico (100%) rename {liteyuki => src}/resources/vanilla_resource/templates/fonts/MapleMono/MapleMono-Bold.woff2 (100%) rename {liteyuki => src}/resources/vanilla_resource/templates/fonts/MapleMono/MapleMono-BoldItalic.woff2 (100%) rename {liteyuki => src}/resources/vanilla_resource/templates/fonts/MapleMono/MapleMono-Italic.woff2 (100%) rename {liteyuki => src}/resources/vanilla_resource/templates/fonts/MapleMono/MapleMono-Light.woff2 (100%) rename {liteyuki => src}/resources/vanilla_resource/templates/fonts/MapleMono/MapleMono-LightItalic.woff2 (100%) rename {liteyuki => src}/resources/vanilla_resource/templates/fonts/MapleMono/MapleMono-Regular.woff2 (100%) rename {liteyuki => src}/resources/vanilla_resource/templates/fonts/MiSans/MiSans-Bold.woff2 (100%) rename {liteyuki => src}/resources/vanilla_resource/templates/fonts/MiSans/MiSans-Heavy.woff2 (100%) rename {liteyuki => src}/resources/vanilla_resource/templates/fonts/MiSans/MiSans-Light.woff2 (100%) rename {liteyuki => src}/resources/vanilla_resource/templates/fonts/MiSans/MiSans-Normal.woff2 (100%) rename {liteyuki => src}/resources/vanilla_resource/templates/fonts/MiSans/MiSans-Semibold.woff2 (100%) rename {liteyuki => src}/resources/vanilla_resource/templates/img/2023-08-05_20.06.51.png (100%) rename {liteyuki => src}/resources/vanilla_resource/templates/img/bg1.webp (100%) rename {liteyuki => src}/resources/vanilla_resource/templates/img/bg2.webp (100%) rename {liteyuki => src}/resources/vanilla_resource/templates/img/bg3.webp (100%) rename {liteyuki => src}/resources/vanilla_resource/templates/img/bg4.webp (100%) rename {liteyuki => src}/resources/vanilla_resource/templates/img/bg5.webp (100%) rename {liteyuki => src}/resources/vanilla_resource/templates/img/bg6.webp (100%) rename {liteyuki => src}/resources/vanilla_resource/templates/img/bg7.webp (100%) rename {liteyuki => src}/resources/vanilla_resource/templates/img/liteyuki.png (100%) rename {liteyuki => src}/resources/vanilla_resource/templates/js/card.js (96%) rename {liteyuki => src}/resources/vanilla_resource/templates/js/motto.js (96%) rename {liteyuki => src}/resources/vanilla_resource/templates/js/status.js (97%) rename {liteyuki => src}/resources/vanilla_resource/templates/js/style.js (97%) create mode 100644 src/resources/vanilla_resource/templates/static/motto.txt rename {liteyuki => src}/resources/vanilla_resource/templates/stats.html (96%) rename {liteyuki => src}/resources/vanilla_resource/templates/status.html (96%) rename {liteyuki => src}/resources/vanilla_resource/templates/status_mem.html (95%) rename {liteyuki => src}/resources/vanilla_resource/templates/svg/lylogo-full.svg (100%) rename {liteyuki => src}/resources/vanilla_resource/unsorted/plugins.json (97%) rename {liteyuki => src}/test/action_test.py (73%) rename {liteyuki => src}/utils/__init__.py (91%) rename {liteyuki => src}/utils/adapter_manager/__init__.py (92%) rename {liteyuki => src}/utils/adapter_manager/onebot.py (94%) rename {liteyuki => src}/utils/adapter_manager/satori.py (97%) create mode 100644 src/utils/base/__init__.py rename {liteyuki => src}/utils/base/config.py (96%) rename {liteyuki => src}/utils/base/data.py (97%) rename {liteyuki => src}/utils/base/data_manager.py (96%) rename {liteyuki => src}/utils/base/language.py (96%) rename {liteyuki => src}/utils/base/log.py (96%) rename {liteyuki => src}/utils/base/ly_api.py (97%) rename {liteyuki => src}/utils/base/ly_function.py (96%) rename {liteyuki => src}/utils/base/ly_typing.py (98%) rename {liteyuki => src}/utils/base/permission.py (95%) rename {liteyuki => src}/utils/base/reloader.py (96%) rename {liteyuki => src}/utils/base/resource.py (94%) rename {liteyuki => src}/utils/base/word_bank.py (95%) rename {liteyuki => src}/utils/canvas/__init__.py (100%) rename {liteyuki => src}/utils/driver_manager/__init__.py (94%) rename {liteyuki => src}/utils/driver_manager/auto_set_env.py (97%) rename {liteyuki => src}/utils/driver_manager/defines.py (96%) rename {liteyuki => src}/utils/event/__init__.py (96%) rename {liteyuki => src}/utils/event/get_info.py (87%) create mode 100644 src/utils/external/__init__.py rename {liteyuki => src}/utils/external/logo.py (96%) create mode 100644 src/utils/message/__init__.py rename {liteyuki => src}/utils/message/html_tool.py (96%) rename {liteyuki => src}/utils/message/markdown.py (96%) rename {liteyuki => src}/utils/message/message.py (97%) rename {liteyuki => src}/utils/message/string_tool.py (95%) rename {liteyuki => src}/utils/message/tools.py (95%) create mode 100644 src/utils/message/union.py create mode 100644 src/utils/nb/__init__.py rename {liteyuki => src}/utils/network/__init__.py (94%) rename {liteyuki => src}/utils/satori_utils/__init__.py (97%) rename {liteyuki => src}/utils/satori_utils/count_friends.py (96%) rename {liteyuki => src}/utils/satori_utils/count_groups.py (96%) rename {liteyuki => src}/utils/satori_utils/user_info.py (97%) diff --git a/.gitignore b/.gitignore index af9d78f..2742fc1 100644 --- a/.gitignore +++ b/.gitignore @@ -15,7 +15,7 @@ _config.yml config.yml config.example.yml compile.bat -liteyuki/resources/templates/latest-debug.html +src/resources/templates/latest-debug.html # vuepress .github pyproject.toml diff --git a/docs/.vuepress/client.js b/docs/.vuepress/client.js index 02883d8..f447202 100644 --- a/docs/.vuepress/client.js +++ b/docs/.vuepress/client.js @@ -1,6 +1,6 @@ import {defineClientConfig} from "vuepress/client"; -import resourceStoreComp from "./components/res_store.vue"; -import pluginStoreComp from "./components/plugin_store.vue"; +import resourceStoreComp from "./components/ResStore.vue"; +import pluginStoreComp from "./components/PluginStore.vue"; //导入element-plus import ElementPlus from 'element-plus'; @@ -9,6 +9,5 @@ export default defineClientConfig({ app.component("resourceStoreComp", resourceStoreComp); app.component("pluginStoreComp", pluginStoreComp); app.use(ElementPlus); - }, }); \ No newline at end of file diff --git a/docs/.vuepress/components/plugin_item_card.vue b/docs/.vuepress/components/PluginItemCard.vue similarity index 100% rename from docs/.vuepress/components/plugin_item_card.vue rename to docs/.vuepress/components/PluginItemCard.vue diff --git a/docs/.vuepress/components/plugin_store.vue b/docs/.vuepress/components/PluginStore.vue similarity index 94% rename from docs/.vuepress/components/plugin_store.vue rename to docs/.vuepress/components/PluginStore.vue index 2c82717..ddad43b 100644 --- a/docs/.vuepress/components/plugin_store.vue +++ b/docs/.vuepress/components/PluginStore.vue @@ -1,6 +1,6 @@ - - + + + + + Liteyuki Status + + + + + + + + +
{{ data | tojson }}
+ + + + \ No newline at end of file diff --git a/liteyuki/resources/liteyuki_crt/lang/en.lang b/src/resources/liteyuki_crt/lang/en.lang similarity index 96% rename from liteyuki/resources/liteyuki_crt/lang/en.lang rename to src/resources/liteyuki_crt/lang/en.lang index e5b7763..8f61f12 100644 --- a/liteyuki/resources/liteyuki_crt/lang/en.lang +++ b/src/resources/liteyuki_crt/lang/en.lang @@ -1,3 +1,3 @@ -crt.station=Station(s) -crt.hour=Hour(s) +crt.station=Station(s) +crt.hour=Hour(s) crt.minute=Min(s) \ No newline at end of file diff --git a/liteyuki/resources/liteyuki_crt/lang/zh-CN.lang b/src/resources/liteyuki_crt/lang/zh-CN.lang similarity index 96% rename from liteyuki/resources/liteyuki_crt/lang/zh-CN.lang rename to src/resources/liteyuki_crt/lang/zh-CN.lang index 6859336..332025b 100644 --- a/liteyuki/resources/liteyuki_crt/lang/zh-CN.lang +++ b/src/resources/liteyuki_crt/lang/zh-CN.lang @@ -1,3 +1,3 @@ -crt.station=站 -crt.hour=小时 +crt.station=站 +crt.hour=小时 crt.minute=分钟 \ No newline at end of file diff --git a/liteyuki/resources/liteyuki_crt/metadata.yml b/src/resources/liteyuki_crt/metadata.yml similarity index 97% rename from liteyuki/resources/liteyuki_crt/metadata.yml rename to src/resources/liteyuki_crt/metadata.yml index 157f7ec..ed9c322 100644 --- a/liteyuki/resources/liteyuki_crt/metadata.yml +++ b/src/resources/liteyuki_crt/metadata.yml @@ -1,3 +1,3 @@ -name: CRT相关资源包 -description: For Liteyuki CRT utils +name: CRT相关资源包 +description: For Liteyuki CRT utils version: 2024.4.26 \ No newline at end of file diff --git a/liteyuki/resources/liteyuki_crt/templates/crt_route.html b/src/resources/liteyuki_crt/templates/crt_route.html similarity index 95% rename from liteyuki/resources/liteyuki_crt/templates/crt_route.html rename to src/resources/liteyuki_crt/templates/crt_route.html index 9140edd..042657e 100644 --- a/liteyuki/resources/liteyuki_crt/templates/crt_route.html +++ b/src/resources/liteyuki_crt/templates/crt_route.html @@ -1,161 +1,161 @@ - - - - - CRT 线路图 - - - - - -
{{ data | tojson }}
- - - - - - - - - - + + + + + CRT 线路图 + + + + + +
{{ data | tojson }}
+ + + + + + + + + + \ No newline at end of file diff --git a/src/resources/liteyuki_crt/templates/css/crt_route.css b/src/resources/liteyuki_crt/templates/css/crt_route.css new file mode 100644 index 0000000..e69de29 diff --git a/liteyuki/resources/liteyuki_crt/templates/js/crt_route.js b/src/resources/liteyuki_crt/templates/js/crt_route.js similarity index 95% rename from liteyuki/resources/liteyuki_crt/templates/js/crt_route.js rename to src/resources/liteyuki_crt/templates/js/crt_route.js index dba941c..aafb060 100644 --- a/liteyuki/resources/liteyuki_crt/templates/js/crt_route.js +++ b/src/resources/liteyuki_crt/templates/js/crt_route.js @@ -1,35 +1,35 @@ -// Copyright (c) 2024 SnowyKami Liteyuki Studio All Rights Reserved. - - -/** - * @type {{ - * results: Array<{ - * abstracts: string, - * createdDt: string, - * endStaName: string, - * startStaName: string, - * isValid: boolean, - * needTimeScope: number, - * needTransferTimes: number, - * price: number, - * skipGenerateSequence: boolean, - * transferLines: string, - * transferLinesColor: string, - * transferStaDerict: string, - * transferStaNames: string, - * }> - * }} - */ - -const data = JSON.parse(document.getElementById("data").innerText); -const results = data["result"]; -const route_template = document.importNode(document.getElementById("route-template").content, true) - -results.forEach( - (item, index) => { - - } -) - - - +// Copyright (c) 2024 SnowyKami Liteyuki Studio All Rights Reserved. + + +/** + * @type {{ + * results: Array<{ + * abstracts: string, + * createdDt: string, + * endStaName: string, + * startStaName: string, + * isValid: boolean, + * needTimeScope: number, + * needTransferTimes: number, + * price: number, + * skipGenerateSequence: boolean, + * transferLines: string, + * transferLinesColor: string, + * transferStaDerict: string, + * transferStaNames: string, + * }> + * }} + */ + +const data = JSON.parse(document.getElementById("data").innerText); +const results = data["result"]; +const route_template = document.importNode(document.getElementById("route-template").content, true) + +results.forEach( + (item, index) => { + + } +) + + + diff --git a/liteyuki/resources/liteyuki_statistics/lang/zh-CN.lang b/src/resources/liteyuki_statistics/lang/zh-CN.lang similarity index 97% rename from liteyuki/resources/liteyuki_statistics/lang/zh-CN.lang rename to src/resources/liteyuki_statistics/lang/zh-CN.lang index e84b469..3184702 100644 --- a/liteyuki/resources/liteyuki_statistics/lang/zh-CN.lang +++ b/src/resources/liteyuki_statistics/lang/zh-CN.lang @@ -1,2 +1,2 @@ -stat.message=统计消息 +stat.message=统计消息 stat.rank=发言排名 \ No newline at end of file diff --git a/liteyuki/resources/liteyuki_statistics/metadata.yml b/src/resources/liteyuki_statistics/metadata.yml similarity index 97% rename from liteyuki/resources/liteyuki_statistics/metadata.yml rename to src/resources/liteyuki_statistics/metadata.yml index 6408452..0c191ed 100644 --- a/liteyuki/resources/liteyuki_statistics/metadata.yml +++ b/src/resources/liteyuki_statistics/metadata.yml @@ -1,3 +1,3 @@ -name: 轻雪统计信息附件 -description: For Liteyuki statistic +name: 轻雪统计信息附件 +description: For Liteyuki statistic version: 2024.4.26 \ No newline at end of file diff --git a/liteyuki/resources/liteyuki_statistics/templates/css/stat_msg.css b/src/resources/liteyuki_statistics/templates/css/stat_msg.css similarity index 96% rename from liteyuki/resources/liteyuki_statistics/templates/css/stat_msg.css rename to src/resources/liteyuki_statistics/templates/css/stat_msg.css index 7d43a4b..af18499 100644 --- a/liteyuki/resources/liteyuki_statistics/templates/css/stat_msg.css +++ b/src/resources/liteyuki_statistics/templates/css/stat_msg.css @@ -1,4 +1,4 @@ -.sign-chart { - height: 400px; - background-color: rgba(255, 255, 255, 0.7); +.sign-chart { + height: 400px; + background-color: rgba(255, 255, 255, 0.7); } \ No newline at end of file diff --git a/src/resources/liteyuki_statistics/templates/css/stat_rank.css b/src/resources/liteyuki_statistics/templates/css/stat_rank.css new file mode 100644 index 0000000..e69de29 diff --git a/liteyuki/resources/liteyuki_statistics/templates/js/stat_msg.js b/src/resources/liteyuki_statistics/templates/js/stat_msg.js similarity index 96% rename from liteyuki/resources/liteyuki_statistics/templates/js/stat_msg.js rename to src/resources/liteyuki_statistics/templates/js/stat_msg.js index a2bc6eb..0ed6c08 100644 --- a/liteyuki/resources/liteyuki_statistics/templates/js/stat_msg.js +++ b/src/resources/liteyuki_statistics/templates/js/stat_msg.js @@ -1,54 +1,54 @@ -// 数据类型声明 -// import * as echarts from 'echarts'; - -let data = JSON.parse(document.getElementById("data").innerText) // object -const signChartDivTemplate = document.importNode(document.getElementById("sign-chart-template").content, true) -data.forEach((item) => { - let signChartDiv = signChartDivTemplate.cloneNode(true) - let chartID = item["name"] - // 初始化ECharts实例 - // 设置id - signChartDiv.querySelector(".sign-chart").id = chartID - document.body.appendChild(signChartDiv) - - let signChart = echarts.init(document.getElementById(chartID)) - - signChart.setOption( - { - animation: false, - title: { - text: item["name"], - textStyle: { - color: '#000000' // 设置标题文本颜色为红色 - } - }, - xAxis: { - type: 'category', - data: item["times"].map(timestampToTime), - }, - yAxis: { - type: 'value', - min: Math.min(...item["counts"]), - }, - - series: [ - { - data: item["counts"], - type: 'line', - } - ] - } - ) -}) - - -function timestampToTime(timestamp) { - let date = new Date(timestamp * 1000) - let Y = date.getFullYear() + '-' - let M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-' - let D = date.getDate() + ' ' - let h = date.getHours() + ':' - let m = date.getMinutes() + ':' - let s = date.getSeconds() - return M + D + h + m + s +// 数据类型声明 +// import * as echarts from 'echarts'; + +let data = JSON.parse(document.getElementById("data").innerText) // object +const signChartDivTemplate = document.importNode(document.getElementById("sign-chart-template").content, true) +data.forEach((item) => { + let signChartDiv = signChartDivTemplate.cloneNode(true) + let chartID = item["name"] + // 初始化ECharts实例 + // 设置id + signChartDiv.querySelector(".sign-chart").id = chartID + document.body.appendChild(signChartDiv) + + let signChart = echarts.init(document.getElementById(chartID)) + + signChart.setOption( + { + animation: false, + title: { + text: item["name"], + textStyle: { + color: '#000000' // 设置标题文本颜色为红色 + } + }, + xAxis: { + type: 'category', + data: item["times"].map(timestampToTime), + }, + yAxis: { + type: 'value', + min: Math.min(...item["counts"]), + }, + + series: [ + { + data: item["counts"], + type: 'line', + } + ] + } + ) +}) + + +function timestampToTime(timestamp) { + let date = new Date(timestamp * 1000) + let Y = date.getFullYear() + '-' + let M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-' + let D = date.getDate() + ' ' + let h = date.getHours() + ':' + let m = date.getMinutes() + ':' + let s = date.getSeconds() + return M + D + h + m + s } \ No newline at end of file diff --git a/liteyuki/resources/liteyuki_statistics/templates/js/stat_rank.js b/src/resources/liteyuki_statistics/templates/js/stat_rank.js similarity index 97% rename from liteyuki/resources/liteyuki_statistics/templates/js/stat_rank.js rename to src/resources/liteyuki_statistics/templates/js/stat_rank.js index 6404464..e1f1a42 100644 --- a/liteyuki/resources/liteyuki_statistics/templates/js/stat_rank.js +++ b/src/resources/liteyuki_statistics/templates/js/stat_rank.js @@ -1,25 +1,25 @@ -let data = JSON.parse(document.getElementById("data").innerText) // object - -const rowDiv = document.importNode(document.getElementById("row-template").content, true) - -function randomHideChar(str) { - // 随机隐藏6位以上字符串的中间连续四位字符,用*代替 - if (str.length <= 6) { - return str - } - let start = Math.floor(str.length / 2) - 2 - return str.slice(0, start) + "****" + str.slice(start + 4) -} -data["ranking"].forEach((item) => { - let row = rowDiv.cloneNode(true) - let rowID = item["name"] - let rowIconSrc = item["icon"] - let rowCount = item["count"] - - row.querySelector(".row-name").innerText = randomHideChar(rowID) - row.querySelector(".row-icon").src = rowIconSrc - row.querySelector(".row-count").innerText = rowCount - - document.body.appendChild(row) -}) - +let data = JSON.parse(document.getElementById("data").innerText) // object + +const rowDiv = document.importNode(document.getElementById("row-template").content, true) + +function randomHideChar(str) { + // 随机隐藏6位以上字符串的中间连续四位字符,用*代替 + if (str.length <= 6) { + return str + } + let start = Math.floor(str.length / 2) - 2 + return str.slice(0, start) + "****" + str.slice(start + 4) +} +data["ranking"].forEach((item) => { + let row = rowDiv.cloneNode(true) + let rowID = item["name"] + let rowIconSrc = item["icon"] + let rowCount = item["count"] + + row.querySelector(".row-name").innerText = randomHideChar(rowID) + row.querySelector(".row-icon").src = rowIconSrc + row.querySelector(".row-count").innerText = rowCount + + document.body.appendChild(row) +}) + diff --git a/liteyuki/resources/liteyuki_statistics/templates/stat_msg.html b/src/resources/liteyuki_statistics/templates/stat_msg.html similarity index 96% rename from liteyuki/resources/liteyuki_statistics/templates/stat_msg.html rename to src/resources/liteyuki_statistics/templates/stat_msg.html index c667245..a8d3395 100644 --- a/liteyuki/resources/liteyuki_statistics/templates/stat_msg.html +++ b/src/resources/liteyuki_statistics/templates/stat_msg.html @@ -1,22 +1,22 @@ - - - - - Liteyuki Stats Message - - - - - - - - -
{{ data | tojson }}
- - - - + + + + + Liteyuki Stats Message + + + + + + + + +
{{ data | tojson }}
+ + + + \ No newline at end of file diff --git a/liteyuki/resources/liteyuki_statistics/templates/stat_rank.html b/src/resources/liteyuki_statistics/templates/stat_rank.html similarity index 96% rename from liteyuki/resources/liteyuki_statistics/templates/stat_rank.html rename to src/resources/liteyuki_statistics/templates/stat_rank.html index d572810..a51a71d 100644 --- a/liteyuki/resources/liteyuki_statistics/templates/stat_rank.html +++ b/src/resources/liteyuki_statistics/templates/stat_rank.html @@ -1,54 +1,54 @@ - - - - - Liteyuki Stats Message - - - - - - - - - - -
{{ data | tojson }}
- - - + + + + + Liteyuki Stats Message + + + + + + + + + + +
{{ data | tojson }}
+ + + \ No newline at end of file diff --git a/liteyuki/resources/liteyuki_weather/lang/en.lang b/src/resources/liteyuki_weather/lang/en.lang similarity index 95% rename from liteyuki/resources/liteyuki_weather/lang/en.lang rename to src/resources/liteyuki_weather/lang/en.lang index 9822bda..d8642df 100644 --- a/liteyuki/resources/liteyuki_weather/lang/en.lang +++ b/src/resources/liteyuki_weather/lang/en.lang @@ -1,12 +1,12 @@ -weather.monday=Mon -weather.tuesday=Tue -weather.wednesday=Wed -weather.thursday=Thu -weather.friday=Fri -weather.saturday=Sat -weather.sunday=Sun -weather.day=Day -weather.night=Night -weather.today=Today -weather.tomorrow=Tomorrow +weather.monday=Mon +weather.tuesday=Tue +weather.wednesday=Wed +weather.thursday=Thu +weather.friday=Fri +weather.saturday=Sat +weather.sunday=Sun +weather.day=Day +weather.night=Night +weather.today=Today +weather.tomorrow=Tomorrow weather.no_aqi=No AQI data \ No newline at end of file diff --git a/liteyuki/resources/liteyuki_weather/lang/ja.lang b/src/resources/liteyuki_weather/lang/ja.lang similarity index 95% rename from liteyuki/resources/liteyuki_weather/lang/ja.lang rename to src/resources/liteyuki_weather/lang/ja.lang index 58bcd04..5c39ab6 100644 --- a/liteyuki/resources/liteyuki_weather/lang/ja.lang +++ b/src/resources/liteyuki_weather/lang/ja.lang @@ -1,12 +1,12 @@ -weather.monday=月 -weather.tuesday=火 -weather.wednesday=水 -weather.thursday=木 -weather.friday=金 -weather.saturday=土 -weather.sunday=日 -weather.day=昼 -weather.night=夜 -weather.today=今日 -weather.tomorrow=明日 +weather.monday=月 +weather.tuesday=火 +weather.wednesday=水 +weather.thursday=木 +weather.friday=金 +weather.saturday=土 +weather.sunday=日 +weather.day=昼 +weather.night=夜 +weather.today=今日 +weather.tomorrow=明日 weather.no_aqi=空気質データなし \ No newline at end of file diff --git a/liteyuki/resources/liteyuki_weather/lang/zh-CN.lang b/src/resources/liteyuki_weather/lang/zh-CN.lang similarity index 96% rename from liteyuki/resources/liteyuki_weather/lang/zh-CN.lang rename to src/resources/liteyuki_weather/lang/zh-CN.lang index a4f44d5..e4fb52e 100644 --- a/liteyuki/resources/liteyuki_weather/lang/zh-CN.lang +++ b/src/resources/liteyuki_weather/lang/zh-CN.lang @@ -1,12 +1,12 @@ -weather.monday=周一 -weather.tuesday=周二 -weather.wednesday=周三 -weather.thursday=周四 -weather.friday=周五 -weather.saturday=周六 -weather.sunday=周日 -weather.day=白天 -weather.night=夜晚 -weather.today=今天 -weather.tomorrow=明天 +weather.monday=周一 +weather.tuesday=周二 +weather.wednesday=周三 +weather.thursday=周四 +weather.friday=周五 +weather.saturday=周六 +weather.sunday=周日 +weather.day=白天 +weather.night=夜晚 +weather.today=今天 +weather.tomorrow=明天 weather.no_aqi=暂无AQI数据 \ No newline at end of file diff --git a/liteyuki/resources/liteyuki_weather/metadata.yml b/src/resources/liteyuki_weather/metadata.yml similarity index 97% rename from liteyuki/resources/liteyuki_weather/metadata.yml rename to src/resources/liteyuki_weather/metadata.yml index 10b0ba3..02ecd39 100644 --- a/liteyuki/resources/liteyuki_weather/metadata.yml +++ b/src/resources/liteyuki_weather/metadata.yml @@ -1,3 +1,3 @@ -name: 轻雪天气资源包 -description: For Liteyuki Weather +name: 轻雪天气资源包 +description: For Liteyuki Weather version: 2024.4.26 \ No newline at end of file diff --git a/liteyuki/resources/liteyuki_weather/templates/css/weather_now.css b/src/resources/liteyuki_weather/templates/css/weather_now.css similarity index 94% rename from liteyuki/resources/liteyuki_weather/templates/css/weather_now.css rename to src/resources/liteyuki_weather/templates/css/weather_now.css index 7776e4b..f25f4dd 100644 --- a/liteyuki/resources/liteyuki_weather/templates/css/weather_now.css +++ b/src/resources/liteyuki_weather/templates/css/weather_now.css @@ -1,184 +1,184 @@ -:root { - --main-text-color: #fff; - --sub-text-color: #ccc; - --tip-text-color: #999; - --device-info-width: 240px; - --sub-border-radius: 60px; -} - -#weather-info { - color: white; - /*justify-content: center;*/ - /*align-items: center;*/ - /*align-content: center;*/ -} - -.icon { -/* icon 类img阴影*/ - filter: drop-shadow(1px 1px 10px #00000044); -} - -#main-info { - display: flex; - justify-content: center; - align-items: center; -} - -#main-left { - display: flex; - justify-content: flex-end; - width: 50%; -} - -#main-right { - width: 50%; -} - -#time { - font-size: 25px; - font-weight: bold; - font-style: italic; - text-align: right; - color: var(--sub-text-color); - -} - -#adm { - font-size: 32px; - font-weight: bold; - text-align: center; - color: var(--sub-text-color); -} - -#city { - margin-top: 20px; - font-size: 70px; - font-weight: bold; - text-align: center; -} - -#temperature { - display: flex; - align-items: baseline; - -} - -#temperature-now { - font-size: 70px; - font-weight: bold; -} - -#temperature-range { - font-size: 40px; - font-weight: bold; - color: var(--sub-text-color); -} - -#description { - font-size: 50px; - font-weight: bold; -} - - -#aqi { - height: 50px; - display: flex; - border-radius: 60px; - padding: 5px; - font-size: 40px; - text-align: center; - align-content: center; - align-items: center; - justify-content: center; -} - -#aqi-dot { - height: 80%; - aspect-ratio: 1 / 1; - border-radius: 50%; - background-color: var(--sub-text-color); - margin-right: 20px; -} - -.main-icon { - width: 240px; - height: 240px; -} - -#hours-info { - display: flex; - justify-content: space-between; -} - -.hourly-item { - text-align: center; - background-color: #ffffff44; - border-radius: var(--sub-border-radius); - align-items: center; - padding: 20px 10px; -} - -.hourly-icon{ - width: 80%; - margin-bottom: 20px; -} - -.hourly-temperature { - text-align: center; - color: var(--main-text-color); - font-size: 30px; - margin-bottom: 20px; -} - -.hourly-time { - text-align: center; - color: var(--main-text-color); - font-size: 25px; - margin-bottom: 10px; -} - -/**/ -.daily-item { - display: flex; - position: relative; - justify-content: space-between; - align-items: center; - background-color: #ffffff44; - height: 90px; - border-radius: var(--sub-border-radius); - margin-bottom: 20px; - padding: 0 30px; -} - -/*最后一个没有margin_button*/ -.daily-item:last-child { - margin-bottom: 0; -} - -.icon-day { - position: absolute; - left: 60%; - height: 80px; -} - -.icon-night { - position: absolute; - left: 70%; - height: 80px; -} - -.daily-weather{ - position: absolute; - left: 30%; -} - -.daily-temperature{ - position: absolute; - left: 83%; -} - -.daily-day, .daily-weather, .daily-temperature { - text-align: center; - color: var(--main-text-color); - font-size: 30px; +:root { + --main-text-color: #fff; + --sub-text-color: #ccc; + --tip-text-color: #999; + --device-info-width: 240px; + --sub-border-radius: 60px; +} + +#weather-info { + color: white; + /*justify-content: center;*/ + /*align-items: center;*/ + /*align-content: center;*/ +} + +.icon { +/* icon 类img阴影*/ + filter: drop-shadow(1px 1px 10px #00000044); +} + +#main-info { + display: flex; + justify-content: center; + align-items: center; +} + +#main-left { + display: flex; + justify-content: flex-end; + width: 50%; +} + +#main-right { + width: 50%; +} + +#time { + font-size: 25px; + font-weight: bold; + font-style: italic; + text-align: right; + color: var(--sub-text-color); + +} + +#adm { + font-size: 32px; + font-weight: bold; + text-align: center; + color: var(--sub-text-color); +} + +#city { + margin-top: 20px; + font-size: 70px; + font-weight: bold; + text-align: center; +} + +#temperature { + display: flex; + align-items: baseline; + +} + +#temperature-now { + font-size: 70px; + font-weight: bold; +} + +#temperature-range { + font-size: 40px; + font-weight: bold; + color: var(--sub-text-color); +} + +#description { + font-size: 50px; + font-weight: bold; +} + + +#aqi { + height: 50px; + display: flex; + border-radius: 60px; + padding: 5px; + font-size: 40px; + text-align: center; + align-content: center; + align-items: center; + justify-content: center; +} + +#aqi-dot { + height: 80%; + aspect-ratio: 1 / 1; + border-radius: 50%; + background-color: var(--sub-text-color); + margin-right: 20px; +} + +.main-icon { + width: 240px; + height: 240px; +} + +#hours-info { + display: flex; + justify-content: space-between; +} + +.hourly-item { + text-align: center; + background-color: #ffffff44; + border-radius: var(--sub-border-radius); + align-items: center; + padding: 20px 10px; +} + +.hourly-icon{ + width: 80%; + margin-bottom: 20px; +} + +.hourly-temperature { + text-align: center; + color: var(--main-text-color); + font-size: 30px; + margin-bottom: 20px; +} + +.hourly-time { + text-align: center; + color: var(--main-text-color); + font-size: 25px; + margin-bottom: 10px; +} + +/**/ +.daily-item { + display: flex; + position: relative; + justify-content: space-between; + align-items: center; + background-color: #ffffff44; + height: 90px; + border-radius: var(--sub-border-radius); + margin-bottom: 20px; + padding: 0 30px; +} + +/*最后一个没有margin_button*/ +.daily-item:last-child { + margin-bottom: 0; +} + +.icon-day { + position: absolute; + left: 60%; + height: 80px; +} + +.icon-night { + position: absolute; + left: 70%; + height: 80px; +} + +.daily-weather{ + position: absolute; + left: 30%; +} + +.daily-temperature{ + position: absolute; + left: 83%; +} + +.daily-day, .daily-weather, .daily-temperature { + text-align: center; + color: var(--main-text-color); + font-size: 30px; } \ No newline at end of file diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/100.png b/src/resources/liteyuki_weather/templates/img/qw_icon/100.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/100.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/100.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/101.png b/src/resources/liteyuki_weather/templates/img/qw_icon/101.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/101.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/101.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/102.png b/src/resources/liteyuki_weather/templates/img/qw_icon/102.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/102.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/102.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/103.png b/src/resources/liteyuki_weather/templates/img/qw_icon/103.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/103.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/103.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/104.png b/src/resources/liteyuki_weather/templates/img/qw_icon/104.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/104.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/104.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/150.png b/src/resources/liteyuki_weather/templates/img/qw_icon/150.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/150.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/150.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/151.png b/src/resources/liteyuki_weather/templates/img/qw_icon/151.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/151.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/151.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/152.png b/src/resources/liteyuki_weather/templates/img/qw_icon/152.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/152.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/152.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/153.png b/src/resources/liteyuki_weather/templates/img/qw_icon/153.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/153.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/153.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/154.png b/src/resources/liteyuki_weather/templates/img/qw_icon/154.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/154.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/154.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/300.png b/src/resources/liteyuki_weather/templates/img/qw_icon/300.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/300.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/300.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/301.png b/src/resources/liteyuki_weather/templates/img/qw_icon/301.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/301.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/301.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/302.png b/src/resources/liteyuki_weather/templates/img/qw_icon/302.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/302.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/302.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/303.png b/src/resources/liteyuki_weather/templates/img/qw_icon/303.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/303.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/303.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/304.png b/src/resources/liteyuki_weather/templates/img/qw_icon/304.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/304.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/304.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/305.png b/src/resources/liteyuki_weather/templates/img/qw_icon/305.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/305.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/305.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/306.png b/src/resources/liteyuki_weather/templates/img/qw_icon/306.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/306.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/306.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/307.png b/src/resources/liteyuki_weather/templates/img/qw_icon/307.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/307.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/307.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/308.png b/src/resources/liteyuki_weather/templates/img/qw_icon/308.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/308.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/308.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/309.png b/src/resources/liteyuki_weather/templates/img/qw_icon/309.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/309.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/309.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/310.png b/src/resources/liteyuki_weather/templates/img/qw_icon/310.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/310.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/310.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/311.png b/src/resources/liteyuki_weather/templates/img/qw_icon/311.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/311.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/311.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/312.png b/src/resources/liteyuki_weather/templates/img/qw_icon/312.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/312.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/312.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/313.png b/src/resources/liteyuki_weather/templates/img/qw_icon/313.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/313.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/313.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/314.png b/src/resources/liteyuki_weather/templates/img/qw_icon/314.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/314.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/314.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/315.png b/src/resources/liteyuki_weather/templates/img/qw_icon/315.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/315.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/315.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/316.png b/src/resources/liteyuki_weather/templates/img/qw_icon/316.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/316.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/316.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/317.png b/src/resources/liteyuki_weather/templates/img/qw_icon/317.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/317.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/317.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/318.png b/src/resources/liteyuki_weather/templates/img/qw_icon/318.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/318.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/318.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/350.png b/src/resources/liteyuki_weather/templates/img/qw_icon/350.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/350.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/350.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/351.png b/src/resources/liteyuki_weather/templates/img/qw_icon/351.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/351.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/351.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/399.png b/src/resources/liteyuki_weather/templates/img/qw_icon/399.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/399.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/399.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/400.png b/src/resources/liteyuki_weather/templates/img/qw_icon/400.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/400.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/400.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/401.png b/src/resources/liteyuki_weather/templates/img/qw_icon/401.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/401.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/401.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/402.png b/src/resources/liteyuki_weather/templates/img/qw_icon/402.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/402.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/402.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/403.png b/src/resources/liteyuki_weather/templates/img/qw_icon/403.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/403.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/403.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/404.png b/src/resources/liteyuki_weather/templates/img/qw_icon/404.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/404.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/404.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/405.png b/src/resources/liteyuki_weather/templates/img/qw_icon/405.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/405.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/405.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/406.png b/src/resources/liteyuki_weather/templates/img/qw_icon/406.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/406.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/406.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/407.png b/src/resources/liteyuki_weather/templates/img/qw_icon/407.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/407.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/407.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/408.png b/src/resources/liteyuki_weather/templates/img/qw_icon/408.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/408.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/408.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/409.png b/src/resources/liteyuki_weather/templates/img/qw_icon/409.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/409.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/409.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/410.png b/src/resources/liteyuki_weather/templates/img/qw_icon/410.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/410.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/410.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/456.png b/src/resources/liteyuki_weather/templates/img/qw_icon/456.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/456.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/456.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/457.png b/src/resources/liteyuki_weather/templates/img/qw_icon/457.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/457.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/457.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/499.png b/src/resources/liteyuki_weather/templates/img/qw_icon/499.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/499.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/499.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/500.png b/src/resources/liteyuki_weather/templates/img/qw_icon/500.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/500.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/500.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/501.png b/src/resources/liteyuki_weather/templates/img/qw_icon/501.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/501.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/501.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/502.png b/src/resources/liteyuki_weather/templates/img/qw_icon/502.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/502.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/502.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/503.png b/src/resources/liteyuki_weather/templates/img/qw_icon/503.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/503.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/503.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/504.png b/src/resources/liteyuki_weather/templates/img/qw_icon/504.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/504.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/504.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/507.png b/src/resources/liteyuki_weather/templates/img/qw_icon/507.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/507.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/507.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/508.png b/src/resources/liteyuki_weather/templates/img/qw_icon/508.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/508.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/508.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/509.png b/src/resources/liteyuki_weather/templates/img/qw_icon/509.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/509.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/509.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/510.png b/src/resources/liteyuki_weather/templates/img/qw_icon/510.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/510.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/510.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/511.png b/src/resources/liteyuki_weather/templates/img/qw_icon/511.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/511.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/511.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/512.png b/src/resources/liteyuki_weather/templates/img/qw_icon/512.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/512.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/512.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/513.png b/src/resources/liteyuki_weather/templates/img/qw_icon/513.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/513.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/513.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/514.png b/src/resources/liteyuki_weather/templates/img/qw_icon/514.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/514.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/514.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/515.png b/src/resources/liteyuki_weather/templates/img/qw_icon/515.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/515.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/515.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/800.png b/src/resources/liteyuki_weather/templates/img/qw_icon/800.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/800.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/800.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/801.png b/src/resources/liteyuki_weather/templates/img/qw_icon/801.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/801.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/801.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/802.png b/src/resources/liteyuki_weather/templates/img/qw_icon/802.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/802.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/802.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/803.png b/src/resources/liteyuki_weather/templates/img/qw_icon/803.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/803.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/803.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/804.png b/src/resources/liteyuki_weather/templates/img/qw_icon/804.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/804.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/804.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/805.png b/src/resources/liteyuki_weather/templates/img/qw_icon/805.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/805.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/805.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/806.png b/src/resources/liteyuki_weather/templates/img/qw_icon/806.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/806.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/806.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/807.png b/src/resources/liteyuki_weather/templates/img/qw_icon/807.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/807.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/807.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/900.png b/src/resources/liteyuki_weather/templates/img/qw_icon/900.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/900.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/900.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/901.png b/src/resources/liteyuki_weather/templates/img/qw_icon/901.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/901.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/901.png diff --git a/liteyuki/resources/liteyuki_weather/templates/img/qw_icon/999.png b/src/resources/liteyuki_weather/templates/img/qw_icon/999.png similarity index 100% rename from liteyuki/resources/liteyuki_weather/templates/img/qw_icon/999.png rename to src/resources/liteyuki_weather/templates/img/qw_icon/999.png diff --git a/liteyuki/resources/liteyuki_weather/templates/js/weather_now.js b/src/resources/liteyuki_weather/templates/js/weather_now.js similarity index 97% rename from liteyuki/resources/liteyuki_weather/templates/js/weather_now.js rename to src/resources/liteyuki_weather/templates/js/weather_now.js index f614178..1d92da3 100644 --- a/liteyuki/resources/liteyuki_weather/templates/js/weather_now.js +++ b/src/resources/liteyuki_weather/templates/js/weather_now.js @@ -1,125 +1,125 @@ -/** - * @typedef {Object} Location - * @property {string} city - The city name. - * @property {string} country - The country name. - * - * @typedef {Object} Weather - * @property {number} temperature - The current temperature. - * @property {string} description - The weather description. - * - * @typedef {Object} Data - * @property {Location} location - The location data. - * @property {Weather} weather - The weather data. - */ - -/** @type {Data} */ - -let data = JSON.parse(document.getElementById("data").innerText) - -let localData = data["localization"] // 本地化数据 - -let weatherNow = data["weatherNow"] - -let weatherDaily = data["weatherDaily"] -let weatherHourly = data["weatherHourly"] -let aqi = data["aqi"] - -let locationData = data["location"] - -// 处理aqi -let aqiValue = 0 -if ("aqi" in aqi) { - aqi["aqi"].forEach( - (item) => { - if (item["defaultLocalAqi"]) { - document.getElementById("aqi-data").innerText = "AQI " + item["valueDisplay"] + " " + item["category"] - // 将(255,255,255)这种格式的颜色设置给css - document.getElementById("aqi-dot").style.backgroundColor = "rgb(" + item["color"] + ")" - } - } - ) -} else { - document.getElementById("aqi-dot").style.backgroundColor = '#fff' - document.getElementById("aqi-data").innerText = localData['no_aqi'] -} - - -templates = { - "time": weatherNow["now"]["obsTime"], - "city": locationData["name"], - "adm": locationData["country"] + " " + locationData["adm1"] + " " + locationData["adm2"], - "temperature-now": weatherNow["now"]["temp"] + "°", - "temperature-range": weatherDaily["daily"][0]["tempMin"] + "°/" + weatherDaily["daily"][0]["tempMax"] + "°", - "description": weatherNow["now"]["text"] -} - -// 遍历每一个id,给其赋值 -for (let id in templates) { - document.getElementById(id).innerText = templates[id] -} - -let maxHourlyItem = 8 -let percentWidth = 1 / (maxHourlyItem * 1.5) * 100 -let hourlyStep = 2 // n小时一个数据 -let hourlyCount = 0 - -let hourlyItemDivTemplate = document.importNode(document.getElementById("hourly-item-template").content, true) -weatherHourly['hourly'].forEach( - (item, index) => { - if (index % hourlyStep !== 0) { - return - } - if (hourlyCount >= maxHourlyItem) { - return - } - - let hourlyItemDiv = document.importNode(hourlyItemDivTemplate, true) - hourlyItemDiv.className = "hourly-item" - hourlyItemDiv.querySelector('.hourly-icon').setAttribute("src", `./img/qw_icon/${item["icon"]}.png`) - hourlyItemDiv.querySelector('.hourly-time').innerText = get_time_hour(item["fxTime"]) - hourlyItemDiv.querySelector('.hourly-temperature').innerText = " " + item["temp"] + "°" - // 设置最大宽度 - hourlyItemDiv.querySelector('.hourly-item').style.maxWidth = percentWidth + "%" - hourlyItemDiv.querySelector('.hourly-icon').style.maxWidth = "100%" - document.getElementById("hours-info").appendChild(hourlyItemDiv) - hourlyCount++ - } -) - -let maxDailyItem = 7 -// 第一和第二天用today和tomorrow,后面用星期X英文小写 -let daysStandard = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'] -let todayDay = new Date().getDay() -let days = [localData['today'], localData['tomorrow']] -for (let i = 0; i < 5; i++) { - days.push(localData[daysStandard[(todayDay + 2 + i) % 7]]) -} - -let dailyItemDivTemplate = document.importNode(document.getElementById("daily-item-template").content, true) -weatherDaily['daily'].forEach( - (item, index) => { - if (index >= maxDailyItem) { - return - } - let today = days[index] - if (index >= 2) { - today += `(${item["fxDate"].split("-")[1]}.${item["fxDate"].split("-")[2]})` - } - let dailyItemDiv = document.importNode(dailyItemDivTemplate, true) - dailyItemDiv.querySelector('.icon-day').setAttribute("src", `./img/qw_icon/${item["iconDay"]}.png`) - dailyItemDiv.querySelector('.icon-night').setAttribute("src", `./img/qw_icon/${item["iconNight"]}.png`) - - dailyItemDiv.querySelector('.daily-day').innerText = today - - dailyItemDiv.querySelector('.daily-weather').innerText = item["textDay"] - dailyItemDiv.querySelector('.daily-temperature').innerText = item["tempMin"] + "°~" + item["tempMax"] + "°" - - document.getElementById('days-info').appendChild(dailyItemDiv) - } -) - -function get_time_hour(fxTime) { -// fxTime 2024-05-03T02:00+/-08:00' - fxTime = fxTime.replace("-", "+") - return fxTime.split("T")[1].split("+")[0] -} +/** + * @typedef {Object} Location + * @property {string} city - The city name. + * @property {string} country - The country name. + * + * @typedef {Object} Weather + * @property {number} temperature - The current temperature. + * @property {string} description - The weather description. + * + * @typedef {Object} Data + * @property {Location} location - The location data. + * @property {Weather} weather - The weather data. + */ + +/** @type {Data} */ + +let data = JSON.parse(document.getElementById("data").innerText) + +let localData = data["localization"] // 本地化数据 + +let weatherNow = data["weatherNow"] + +let weatherDaily = data["weatherDaily"] +let weatherHourly = data["weatherHourly"] +let aqi = data["aqi"] + +let locationData = data["location"] + +// 处理aqi +let aqiValue = 0 +if ("aqi" in aqi) { + aqi["aqi"].forEach( + (item) => { + if (item["defaultLocalAqi"]) { + document.getElementById("aqi-data").innerText = "AQI " + item["valueDisplay"] + " " + item["category"] + // 将(255,255,255)这种格式的颜色设置给css + document.getElementById("aqi-dot").style.backgroundColor = "rgb(" + item["color"] + ")" + } + } + ) +} else { + document.getElementById("aqi-dot").style.backgroundColor = '#fff' + document.getElementById("aqi-data").innerText = localData['no_aqi'] +} + + +templates = { + "time": weatherNow["now"]["obsTime"], + "city": locationData["name"], + "adm": locationData["country"] + " " + locationData["adm1"] + " " + locationData["adm2"], + "temperature-now": weatherNow["now"]["temp"] + "°", + "temperature-range": weatherDaily["daily"][0]["tempMin"] + "°/" + weatherDaily["daily"][0]["tempMax"] + "°", + "description": weatherNow["now"]["text"] +} + +// 遍历每一个id,给其赋值 +for (let id in templates) { + document.getElementById(id).innerText = templates[id] +} + +let maxHourlyItem = 8 +let percentWidth = 1 / (maxHourlyItem * 1.5) * 100 +let hourlyStep = 2 // n小时一个数据 +let hourlyCount = 0 + +let hourlyItemDivTemplate = document.importNode(document.getElementById("hourly-item-template").content, true) +weatherHourly['hourly'].forEach( + (item, index) => { + if (index % hourlyStep !== 0) { + return + } + if (hourlyCount >= maxHourlyItem) { + return + } + + let hourlyItemDiv = document.importNode(hourlyItemDivTemplate, true) + hourlyItemDiv.className = "hourly-item" + hourlyItemDiv.querySelector('.hourly-icon').setAttribute("src", `./img/qw_icon/${item["icon"]}.png`) + hourlyItemDiv.querySelector('.hourly-time').innerText = get_time_hour(item["fxTime"]) + hourlyItemDiv.querySelector('.hourly-temperature').innerText = " " + item["temp"] + "°" + // 设置最大宽度 + hourlyItemDiv.querySelector('.hourly-item').style.maxWidth = percentWidth + "%" + hourlyItemDiv.querySelector('.hourly-icon').style.maxWidth = "100%" + document.getElementById("hours-info").appendChild(hourlyItemDiv) + hourlyCount++ + } +) + +let maxDailyItem = 7 +// 第一和第二天用today和tomorrow,后面用星期X英文小写 +let daysStandard = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'] +let todayDay = new Date().getDay() +let days = [localData['today'], localData['tomorrow']] +for (let i = 0; i < 5; i++) { + days.push(localData[daysStandard[(todayDay + 2 + i) % 7]]) +} + +let dailyItemDivTemplate = document.importNode(document.getElementById("daily-item-template").content, true) +weatherDaily['daily'].forEach( + (item, index) => { + if (index >= maxDailyItem) { + return + } + let today = days[index] + if (index >= 2) { + today += `(${item["fxDate"].split("-")[1]}.${item["fxDate"].split("-")[2]})` + } + let dailyItemDiv = document.importNode(dailyItemDivTemplate, true) + dailyItemDiv.querySelector('.icon-day').setAttribute("src", `./img/qw_icon/${item["iconDay"]}.png`) + dailyItemDiv.querySelector('.icon-night').setAttribute("src", `./img/qw_icon/${item["iconNight"]}.png`) + + dailyItemDiv.querySelector('.daily-day').innerText = today + + dailyItemDiv.querySelector('.daily-weather').innerText = item["textDay"] + dailyItemDiv.querySelector('.daily-temperature').innerText = item["tempMin"] + "°~" + item["tempMax"] + "°" + + document.getElementById('days-info').appendChild(dailyItemDiv) + } +) + +function get_time_hour(fxTime) { +// fxTime 2024-05-03T02:00+/-08:00' + fxTime = fxTime.replace("-", "+") + return fxTime.split("T")[1].split("+")[0] +} diff --git a/liteyuki/resources/liteyuki_weather/templates/weather_now.html b/src/resources/liteyuki_weather/templates/weather_now.html similarity index 96% rename from liteyuki/resources/liteyuki_weather/templates/weather_now.html rename to src/resources/liteyuki_weather/templates/weather_now.html index 3b178fe..ec36087 100644 --- a/liteyuki/resources/liteyuki_weather/templates/weather_now.html +++ b/src/resources/liteyuki_weather/templates/weather_now.html @@ -1,76 +1,76 @@ - - - - - Liteyuki Status - - - - - - - - - - - -
{{ data | tojson }}
-
-
-
2045-01-12 22:22:22
-
枫丹 白露 白露区
-
白露区
-
-
-
- WeatherIcon -
-
-
-
- 90° -
-
- 10°~90° -
-
-
- 示例天气 -
-
-
-
-
-
AQI 114 优
-
-
-
-
-
- - - + + + + + Liteyuki Status + + + + + + + + + + + +
{{ data | tojson }}
+
+
+
2045-01-12 22:22:22
+
枫丹 白露 白露区
+
白露区
+
+
+
+ WeatherIcon +
+
+
+
+ 90° +
+
+ 10°~90° +
+
+
+ 示例天气 +
+
+
+
+
+
AQI 114 优
+
+
+
+
+
+ + + \ No newline at end of file diff --git a/liteyuki/resources/liteyuki_words/metadata.yml b/src/resources/liteyuki_words/metadata.yml similarity index 97% rename from liteyuki/resources/liteyuki_words/metadata.yml rename to src/resources/liteyuki_words/metadata.yml index 88d3cb7..ede8841 100644 --- a/liteyuki/resources/liteyuki_words/metadata.yml +++ b/src/resources/liteyuki_words/metadata.yml @@ -1,3 +1,3 @@ -name: 轻雪词库-可爱系 -description: For Liteyuki Auto Reply +name: 轻雪词库-可爱系 +description: For Liteyuki Auto Reply version: 2024.4.26 \ No newline at end of file diff --git a/liteyuki/resources/liteyuki_words/word_bank/LICENSE b/src/resources/liteyuki_words/word_bank/LICENSE similarity index 100% rename from liteyuki/resources/liteyuki_words/word_bank/LICENSE rename to src/resources/liteyuki_words/word_bank/LICENSE diff --git a/liteyuki/resources/liteyuki_words/word_bank/README.md b/src/resources/liteyuki_words/word_bank/README.md similarity index 100% rename from liteyuki/resources/liteyuki_words/word_bank/README.md rename to src/resources/liteyuki_words/word_bank/README.md diff --git a/liteyuki/resources/liteyuki_words/word_bank/data.json b/src/resources/liteyuki_words/word_bank/data.json similarity index 97% rename from liteyuki/resources/liteyuki_words/word_bank/data.json rename to src/resources/liteyuki_words/word_bank/data.json index 0455e58..6439e2d 100644 --- a/liteyuki/resources/liteyuki_words/word_bank/data.json +++ b/src/resources/liteyuki_words/word_bank/data.json @@ -1,2013 +1,2013 @@ -{ - "mua": [ - "你想干嘛?(一脸嫌弃地后退)", - "诶……不可以随便亲亲啦", - "(亲了一下你)", - "只......只许这一次哦///////", - "唔...诶诶诶!!!", - "mua~", - "rua!大hentai!想...想亲咱就直说嘛⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄", - "!啾~~!", - "啾(害羞)", - "mua~最喜欢你的吻了", - "欸,现在么..也不是不可以啦(小小声)" - ], - "啾咪": [ - "你想干嘛?(一脸嫌弃地后退)", - "诶……不可以随便亲亲啦", - "(亲了一下你)", - "只......只许这一次哦///////", - "唔...诶诶诶!!!", - "mua~", - "rua!大hentai!想...想亲咱就直说嘛⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄", - "!啾~~!", - "啾(害羞)", - "mua~最喜欢你的吻了", - "你在干嘛(/ω\)害羞", - "哎呀,这样咱会害羞的(脸红)", - "欸,现在么..也不是不可以啦(小小声)" - ], - "摸": [ - "感觉你就像咱很久之前认识的一个人呢,有种莫名安心的感觉(>﹏<)", - "舒服w,蹭蹭~", - "是要隔着衣服摸,还是从领口伸进去摸呀", - "唔。。头发要乱啦", - "呼噜呼噜~", - "再摸一次~", - "好舒服,蹭蹭~", - "不行那里不可以(´///ω/// `)", - "再摸咱就长不高啦~", - "你的手总是那么暖和呢~", - "变态!!不许乱摸", - "好吧~_~,就一下下哦……唔~好了……都两下了……(害羞)", - "不可以总摸的哦,不然的话,会想那个的wwww", - "哼!谁稀罕你摸头啦!唔......为什么要做出那副表情......好啦好啦~咱......咱让你摸就是了......诶嘿嘿~好舒服......", - "呜姆呜姆~~~w(害羞,兴奋)主人喵~(侧过脑袋蹭蹭你的手", - "不可以摸啦~其实咱已经...了QAQ会弄脏你的手的", - "喂喂...不要停下来啊", - "唔... 手...好温暖呢.....就像是......新出炉的蛋糕", - "走开啦,咱喵说过,被摸头会长不高的啦~~~", - "呜姆咪~~...好...好的说喵~...(害羞,猫耳往下压,任由", - "欸,现在么..也不是不可以啦(小小声)" - ], - "上你": [ - "(把你按在地上)这么弱还想欺负咱,真是不自量力呢", - "你再这样咱就不理你了(>д<)", - "请轻 一点", - "好啊!", - "欸,现在么..也不是不可以啦(小小声)", - "先捅破屏幕再说吧!", - "只......只许这一次哦///////" - ], - "傻": [ - "超级讨厌你说咱傻的说", - "你为什么会这么觉得呢(>﹏<)", - "谁是傻子呀?(歪头", - "呜嘿嘿( ̄▽ ̄)~*", - "诶嘿嘿嘿~", - "就多读书", - "讨厌啦,你最讨厌了(///////)", - "对呀,咱傻得只喜欢你一个人", - "咱才不傻呢!o(>﹏<)o", - "咱最喜欢嘴臭的人了", - "不可以骂别人哟,骂人的孩子咱最讨厌了!", - "咱遇见喜欢的人就变傻了Q_Q", - "咱...一定一定会努力变得更聪明的!你就等着那一天的到来吧!", - "那么至少…你能不能来做这个傻瓜呢?与咱一起,傻到终焉…" - ], - "裸": [ - "下流!", - "エッチ!", - "就算是恋人也不能QAQ", - "你是暗示咱和你要坦诚相见吗www", - "咱还没准备好(小鹿乱撞)≧﹏≦", - "你在想什么呢,敲头!", - "你这是赤裸裸的性骚扰呢ヽ(`Д´)ノ", - "讨厌!问这种问题成为恋人再说吧..", - "裸睡有益身体健康", - "咱脱掉袜子了", - "这是不文明的", - "这不好", - "你的身体某些地方看起来不太对劲,咱帮你修剪一下吧。(拿出剪刀)", - "咱认为你的脑袋可能零件松动了,需要打开检修一下。(拿出锤子)" - ], - "贴": [ - "贴什么贴.....只......只能......一下哦!", - "贴...贴贴(靠近)", - "蹭蹭…你以为咱会这么说吗!baka死宅快到一边去啦!", - "你把脸凑这么近,咱会害羞的啦Σ>―(〃°ω°〃)♡→", - "退远", - "不可以贴" - ], - "老婆": [ - "咱和你谈婚论嫁是不是还太早了一点呢?", - "咱在呢(ノ>ω<)ノ", - "见谁都是一口一个老婆的人,要不要把你也变成女孩子呢?(*-`ω´-)✄", - "神经病,凡是美少女都是你老婆吗?", - "嘛嘛~本喵才不是你的老婆呢", - "你黐线,凡是美少女都系你老婆啊?", - "欸...要把咱做成饼吗?咱只有一个,做成饼吃掉就没有了...", - "已经可以了,现在很多死宅也都没你这么恶心了", - "不可以", - "嗯,老公~哎呀~好害羞~嘻嘻嘻~", - "请...请不要这样,啊~,只...只允许这一次哟~", - "好啦好啦,不要让大家都听到了,跟咱回家(拽住你" - ], - "抱": [ - "诶嘿~(钻进你怀中)", - "o(*////▽////*)q", - "只能一会哦(张开双手)", - "你就像个孩子一样呢...摸摸头(>^ω^<)抱一下~你会舒服些吗?", - "嘛,真是拿你没办法呢,就一会儿哦", - "抱住不忍心放开", - "嗯嗯,抱抱~", - "抱一下~嘿w", - "抱抱ヾ(@^▽^@)ノ", - "喵呜~w(扑进怀里,瘫软", - "怀里蹭蹭", - "嗯……那就抱一下吧~", - "蹭蹭,好开心", - "请……请轻一点了啦", - "呀~!真是的...你不要突然抱过来啦!不过...喜欢你的抱抱,有你的味道(嗅)o(*////▽////*)q" - ], - "亲": [ - "啊,好含羞啊,那,那只能亲一下哦,mua(⑅˃◡˂⑅)", - "亲~", - "啾~唔…不要总伸进来啊!", - "你怎么这么熟练呢?明明是咱先的", - "(〃ノωノ)亲…亲一个…啾w", - "(脸红)就只有这一次哦~你", - "!啾~~!", - "(假装)推开", - "啾咪~", - "就一下哦,啾~", - "这是我们之间的秘密❤", - "真想让着一刻一直持续下去呢~", - "不要这样嘛………呜呜呜那就一口哦(´-ω-`)", - "不亲不亲~你是坏蛋(///////)", - "亲~~ 咱还想要抱抱~抱抱咱好不好~", - "不 不要了!人家...会害羞的⁄(⁄⁄•⁄ω⁄•⁄⁄)⁄", - "亲…亲额头可以吗?咱有点怕高(〃ノωノ)", - "接接接接接接、接吻什么的,你还早了100年呢。", - "只...只能亲一下...嗯~咕啾...怎么...怎么把舌头伸进来了(脸红)", - "你说咱的腿很白很嫩吗..诶……原来是指那个地方?不可以越亲越往上啦!" - ], - "一下": [ - "一下也不行", - "咬断!", - "不可啪", - "不可以……你不可以做这种事情", - "好吧~_~,就一下下哦……唔~好了……都两下了……(害羞)", - "呀~这么突然?不过,很舒服呢", - "不要ヽ(≧Д≦)ノ", - "想得美", - "不行,咱拒绝!" - ], - "咬": [ - "啊呜~(反咬一口)", - "不可以咬咱,咱会痛的QAQ", - "不要啦。咱怕疼", - "你是说咬呢……还是说……咬♂️呢?", - "不要啦!很痛的!!(QAQ)", - "哈......哈啊......请...请不要这样o(*////▽////*)q", - "呀!!!轻一点呐(。・ˇ_ˇ・。:)", - "不要这样啦~好痒的", - "真是的,你在咬哪里呀" - ], - "操": [ - "(害怕)咱是不是应该报警呢", - "痴心妄想的家伙!", - "你居然想对咱做这种事吗?害怕", - "咱认为,爆粗口是不好的行为哦" - ], - "123": [ - "boom!你有没有被咱吓到?", - "木头人~你不许动>w<", - "上山打老虎,老虎没打到\n咱来凑数——嗷呜嗷呜┗|`O′|┛嗷~~" - ], - "进去": [ - "不让!", - "嗯,摸到了吗", - "请不要和咱说这种粗鄙之语", - "唔...,这也是禁止事项哦→_→", - "好痛~", - "真的只是蹭蹭嘛~就只能蹭蹭哦,呜~喵!说好的~呜~只是蹭~不要~喵~~~", - "欢迎光临", - "请…你轻一点(害羞)", - "嗯。可以哦 要轻一点", - "不要不要", - "慢点慢点", - "给咱更多!", - "唔…咱怕疼" - ], - "调教": [ - "总感觉你在欺负咱呢,对咱说调教什么的", - "啊!竟然在大街上明目张胆太过分啦!", - "你脑子里总是想着调教什么的,真是变态呢", - "准备被透", - "给你一拳", - "还要...更多~", - "想要调教咱吗?", - "呜,要对咱做什么呢", - "呜呜呜,咱不想被调教呢", - "heitai别靠近咱~( TロT)σ" - ], - "搓": [ - "在搓哪里呢,,Ծ‸Ծ,,", - "呜,脸好疼呀...QAQ", - "不可以搓咱!", - "诶诶诶...不要搓啦...等会咋没的脸都肿啦...", - "唔,不可以这样……不要再搓了", - "(捂住胸部)你在说什么胡话呢!", - "真是好奇怪的要求的说~", - "不要啦!咱怕疼", - "(抱头蹲防)不让搓!" - ], - "让": [ - "随便摸吧", - "应该说等会等会,马上,不可能的", - "温柔一点哦", - "欧尼酱想变成欧内桑吗?", - "主人的话,那就这一次哦(翘起屁股)", - "你是想前入,还是后入呢?", - "你要说好啊快点", - "诶,这种事情。。。", - "好棒呀", - "撤回", - "gun!", - "阿哈~(...身涌出一阵液体瘫软在床上)你...今天...可以...唔(突然感受...被..入手指不由得裹紧)就...就最后一次", - "好的~master~", - "(惊呼…)", - "嗯,可以哟", - "……手放过来吧(脸红)", - "hentai!再这样不理你了!", - "好的,请尽情欣赏吧", - "好吧", - "不要啦(ฅωฅ*)", - "那咱就帮你切掉多余的东西吧(拿刀)", - "被别人知道咱会觉得害羞嘛" - ], - "捏": [ - "咱的脸...快捏红啦...快放手呀QAQ", - "晃休啦,咱要型气了o(>﹏<)o", - "躲开", - "疼...你快放手", - "快点给咱放开啦!", - "嗯,好哒,捏捏。", - "别捏了,咱要被你捏坏了(>﹏<)", - "快晃休啦(快放手啦)", - "好舒服哦,能再捏会嘛O(≧▽≦)O", - "讨厌快放手啦", - "唔要呐,晃修(不要啦,放手)", - "请不要对咱做这种事情(嫌弃的眼神", - "你想捏...就捏吧,不要太久哦~不然咱就生气了", - "(躲开)", - "唔……好痛!你这个baka在干什么…快给咱放开!唔……" - ], - "挤": [ - "哎呀~你不要挤咱啊(红着脸挤在你怀里)", - "咱还没有...那个(ノ=Д=)ノ┻━┻", - "不要啦,咱怕疼", - "咱的身体...不要挤了~", - "别挤了,咱要被你挤坏了(>﹏<)", - "快点给咱放开啦!", - "嗯,好哒,挤挤。", - "好舒服哦,能再挤会嘛O(≧▽≦)O", - "讨厌~快放手啦" - ], - "略": [ - "就不告诉你~", - "不可以朝咱吐舌头哟~", - "(吐舌头)", - "打死你哦", - "略略略~" - ], - "呐": [ - "嗯?咱在哟~你怎么了呀OAO", - "嗯?你有什么事吗?", - "嗯呐呐呐~", - "二刺螈D区", - "二刺螈gck", - "卡哇伊主人大人今天也好棒呐没错呢,猪头" - ], - "原味": [ - "(*/ω\*)hentai", - "透明的", - "粉...粉白条纹...(羞)", - "轻轻地脱下,给你~", - "你想看咱的胖次吗?噫,四斋蒸鹅心......", - "(掀裙)今天……是…白,白色的呢……请温柔对她……", - "这种东西当然不能给你啦!", - "咱才不会给你呢", - "hentai,咱才不会跟你聊和胖…胖次有关的话题呢!", - "今天……今天是蓝白色的", - "今……今天只有创口贴噢", - "你的胖次什么颜色?", - "噫…你这个死变态想干嘛!居然想叫咱做这种事,死宅真恶心!快离咱远点,咱怕你污染到周围空气了(嫌弃脸)", - "可爱吗?你喜欢的话,摸一下……也可以哦", - "不给不给,捂住裙子", - "你要看咱的胖次吗?不能一直盯着看哦,不然咱会……", - "好痒哦///,你觉得咱的...手感怎么样?", - "唔,都能清楚的看到...的轮廓了(用手遮住胖次)", - "胖次不给看,可以直接看...那个....", - "不可以摸啦~其实咱已经...了QAQ会弄脏你的手的", - "咱今天没~有~穿~哦", - "不给不给,捂住裙子", - "今.....今天是创口贴哦~", - "嗯……人家……人家羞羞嘛///////", - "呜~咱脱掉了…", - "今天...今天..只有创口贴", - "你又在想什么奇怪的东西呀|•ˇ₃ˇ•。)", - "放手啦,不给戳QAQ", - "唔~人家不要(??`^????)", - "好害羞,被你摸过之后,咱的胖次湿的都能拧出水来了。", - "(弱弱地)要做什么羞羞的事情吗。。。", - "呀~ 喂 妖妖灵吗 这里有hentai>_<", - "给……给你,呀!别舔咱的胖次啊!" - ], - "胖次": [ - "(*/ω\*)hentai", - "透明的", - "粉...粉白条纹...(羞)", - "轻轻地脱下,给你~", - "你想看咱的胖次吗?噫,四斋蒸鹅心......", - "(掀裙)今天……是…白,白色的呢……请温柔对她……", - "这种东西当然不能给你啦!", - "咱才不会给你呢", - "hentai,咱才不会跟你聊和胖…胖次有关的话题呢!", - "今天……今天是蓝白色的", - "今……今天只有创口贴噢", - "你的胖次什么颜色?", - "噫…你这个死变态想干嘛!居然想叫咱做这种事,死宅真恶心!快离咱远点,咱怕你污染到周围空气了(嫌弃脸)", - "可爱吗?你喜欢的话,摸一下……也可以哦", - "不给不给,捂住裙子", - "你要看咱的胖次吗?不能一直盯着看哦,不然咱会……", - "好痒哦///,你觉得咱的...手感怎么样?", - "唔,都能清楚的看到...的轮廓了(用手遮住胖次)", - "胖次不给看,可以直接看...那个....", - "不可以摸啦~其实咱已经...了QAQ会弄脏你的手的", - "咱今天没~有~穿~哦", - "不给不给,捂住裙子", - "今.....今天是创口贴哦~", - "嗯……人家……人家羞羞嘛///////", - "呜~咱脱掉了…", - "今天...今天..只有创口贴", - "你又在想什么奇怪的东西呀|•ˇ₃ˇ•。)", - "放手啦,不给戳QAQ", - "唔~人家不要(??`^????)", - "好害羞,被你摸过之后,咱的胖次湿的都能拧出水来了。", - "(弱弱地)要做什么羞羞的事情吗。。。", - "呀~ 喂 妖妖灵吗 这里有hentai>_<", - "给……给你,呀!别舔咱的胖次啊!" - ], - "内裤": [ - "(*/ω\*)hentai", - "透明的", - "粉...粉白条纹...(羞)", - "轻轻地脱下,给你~", - "你想看咱的胖次吗?噫,四斋蒸鹅心......", - "(掀裙)今天……是…白,白色的呢……请温柔对她……", - "这种东西当然不能给你啦!", - "咱才不会给你呢", - "hentai,咱才不会跟你聊和胖…胖次有关的话题呢!", - "今天……今天是蓝白色的", - "今……今天只有创口贴噢", - "你的胖次什么颜色?", - "噫…你这个死变态想干嘛!居然想叫咱做这种事,死宅真恶心!快离咱远点,咱怕你污染到周围空气了(嫌弃脸)", - "可爱吗?你喜欢的话,摸一下……也可以哦", - "不给不给,捂住裙子", - "你要看咱的胖次吗?不能一直盯着看哦,不然咱会……", - "好痒哦///,你觉得咱的...手感怎么样?", - "唔,都能清楚的看到...的轮廓了(用手遮住胖次)", - "胖次不给看,可以直接看...那个....", - "不可以摸啦~其实咱已经...了QAQ会弄脏你的手的", - "咱今天没~有~穿~哦", - "不给不给,捂住裙子", - "今.....今天是创口贴哦~", - "嗯……人家……人家羞羞嘛///////", - "呜~咱脱掉了…", - "今天...今天..只有创口贴", - "你又在想什么奇怪的东西呀|•ˇ₃ˇ•。)", - "放手啦,不给戳QAQ", - "唔~人家不要(??`^????)", - "好害羞,被你摸过之后,咱的胖次湿的都能拧出水来了。", - "(弱弱地)要做什么羞羞的事情吗。。。", - "呀~ 喂 妖妖灵吗 这里有hentai>_<", - "给……给你,呀!别舔咱的胖次啊!" - ], - "内衣": [ - "内...内衣才不给你看!(///////)", - "突然问这个干什么?", - "变态,咱才不呢", - "好吧,就一次", - "你要看咱的内衣吗?有点害羞呢……", - "里面什么都不剩了,会被当成变态的……", - "你要看咱的内衣吗?也不是不行啦……", - "是..蓝白条纹的吊带背心..", - "噫…你这个死变态想干嘛!居然想叫咱做这种事,死宅真恶心!快离咱远点,咱怕你污染到周围空气了(嫌弃脸)" - ], - "衣服": [ - "内...内衣才不给你看!(///////)", - "突然问这个干什么?", - "变态,咱才不呢", - "好吧,就一次", - "你要看咱的内衣吗?有点害羞呢……", - "里面什么都不剩了,会被当成变态的……", - "你要看咱的内衣吗?也不是不行啦……", - "是..蓝白条纹的吊带背心..", - "噫…你这个死变态想干嘛!居然想叫咱做这种事,死宅真恶心!快离咱远点,咱怕你污染到周围空气了(嫌弃脸)" - ], - "ghs": [ - "是的呢(点头点头)", - "ghs就是干坏事的缩写,一起来干坏事吧!", - "你满脑子都是涩涩的事情吗?", - "不要总是想着色色,咱命令你戒色!(ノ`Д)ノ", - "咱也想干坏事呢" - ], - "批": [ - "你在说什么呀,再这样,咱就不理你了!", - "咱觉得有话就应该好好说..", - "咱会好好服务你的寄吧", - "咱最喜欢色批了,色批昨晚最棒了", - "讨厌,别摸啦(///ω///)", - "你个变态!把手拿开!", - "啊~那…那里~不可以", - "没有,走开!", - "唔....一下,就,就一下...才不是因为喜欢你呢!", - "那就随意吧", - "舒服w", - "别...别这样", - "诶....嗯....咱也想摸你的", - "大笨蛋——!", - "...只能一下哦...诶呀-不要再摸了...下次...继续吧" - ], - "憨批": [ - "你才是憨批呢!哼╯^╰,咱不理你了!", - "对吖对吖,人生是憨批", - "爬", - "咱不想和你说话了", - "咱觉得有话就应该好好说.." - ], - "kkp": [ - "你在说什么呀,再这样,咱就不理你了!", - "你太色了,咱不理你了,哼哼╯^╰!", - "缓缓的脱下胖次", - "kkp", - "kkj", - "欧尼酱,咱快忍不住了", - "好的呢主人", - "can can need", - "看看你的" - ], - "咕": [ - "咕咕咕是要被当成鸽子炖的哦(:з」∠)_", - "咕咕咕", - "咕咕咕是不好的行为呢_(:з」∠)_", - "鸽德警告!", - "☆ミ(o*・ω・)ノ 咕咕咕小鸽子是会被炖掉的", - "当大家都以为你要鸽的时候,你鸽了,亦是一种不鸽", - "这里有一只肥美的咕咕,让咱把它炖成美味的咕咕汤吧(੭•̀ω•́)੭" - ], - "骚": [ - "说这种话咱会生气的", - "那当然啦", - "才……才没有", - "这么称呼别人太失礼了!", - "哈…快住手!好痒(╯‵□′)╯︵┻━┻", - "你是在说谁呀" - ], - "喜欢": [ - "最喜欢你了,需要暖床吗?", - "当然是你啦", - "咱也是,非常喜欢你~", - "那么大!(张开手画圆),丫!手不够长。QAQ 咱真的最喜欢你了~", - "不可以哦,只可以喜欢咱一个人", - "突然说这种事...", - "喜欢⁄(⁄⁄•⁄ω⁄•⁄⁄)⁄咱最喜欢你了", - "咱也喜欢你哦", - "好啦好啦,咱知道了", - "有人喜欢咱,咱觉得很幸福", - "诶嘿嘿,好高兴", - "咱也一直喜欢你很久了呢..", - "嗯...大概有这——么——喜欢~(比划)", - "喜欢啊!!!", - "这……这是秘密哦", - "sukidesu~" - ], - "suki": [ - "最喜欢你了,需要暖床吗?", - "当然是你啦", - "咱也是,非常喜欢你~", - "那么大!(张开手画圆),丫!手不够长。QAQ 咱真的最喜欢你了~", - "不可以哦,只可以喜欢咱一个人", - "突然说这种事...", - "喜欢⁄(⁄⁄•⁄ω⁄•⁄⁄)⁄咱最喜欢你了", - "咱也喜欢你哦", - "好啦好啦,咱知道了", - "有人喜欢咱,咱觉得很幸福", - "诶嘿嘿,好高兴", - "咱也一直喜欢你很久了呢..", - "嗯...大概有这——么——喜欢~(比划)", - "喜欢啊!!!", - "这……这是秘密哦", - "sukidesu~" - ], - "好き": [ - "最喜欢你了,需要暖床吗?", - "当然是你啦", - "咱也是,非常喜欢你~", - "那么大!(张开手画圆),丫!手不够长。QAQ 咱真的最喜欢你了~", - "不可以哦,只可以喜欢咱一个人", - "突然说这种事...", - "喜欢⁄(⁄⁄•⁄ω⁄•⁄⁄)⁄咱最喜欢你了", - "咱也喜欢你哦", - "好啦好啦,咱知道了", - "有人喜欢咱,咱觉得很幸福", - "诶嘿嘿,好高兴", - "咱也一直喜欢你很久了呢..", - "嗯...大概有这——么——喜欢~(比划)", - "喜欢啊!!!", - "这……这是秘密哦", - "sukidesu~" - ], - "看": [ - "没有什么好看的啦", - "嗯,谢谢……夸奖,好……害羞的说", - "好,好吧……就看一下哦", - "(脱下)给", - "呐…只能看一次哦…", - "不许看那里啦QwQ" - ], - "不能": [ - "虽然很遗憾,那算了吧。", - "不行,咱拒绝!" - ], - "砸了": [ - "不可以这么粗暴的对待它们!", - "不可以这么粗暴啦" - ], - "透": [ - "来啊来啊有本事就先插破屏幕啊", - "那你就先捅破屏幕啊baka", - "不给你一耳光你都不知道咱的厉害", - "想透咱,先捅破屏幕再说吧", - "可以", - "欧尼酱要轻一点哦", - "不可以", - "好耶", - "咱不可能让你的(突然小声)但是偶尔一次也不是不行只有一次哦~", - "天天想着白嫖哼" - ], - "口我": [ - "prprprprpr", - "咬断!", - "就一小口哦~", - "嘬回去(///////)", - "拒绝", - "唔,就一口哦,讨厌", - "(摸了摸嘴唇)", - "再伸过来就帮你切掉", - "咱才不呢!baka你居然想叫本小姐干那种事情,哼(つд⊂)(生气)", - "hentai!你在想些什么!", - "对咱的小嘴有什么幻想吗~", - "脏兮兮的呢,咱不要" - ], - "草我": [ - "这时候应该喊666吧..咱这么思考着..", - "!!哼!baka你居然敢叫咱做这种事情?!讨厌讨厌讨厌!(▼皿▼#)", - "hentai!你在想些什么!", - "欸...没想到你还有这种爱好" - ], - "自慰": [ - "这个世界的人类还真是恶心呢。", - "咱才不想讨论那些恶心的事情呢。", - "咱才不呢!baka你居然想叫本小姐干那种事情,哼(つд⊂)(生气)", - "!!哼!baka你居然敢叫咱做这种事情?!讨厌讨厌讨厌!(▼皿▼#)" - ], - "onani": [ - "这个世界的人类还真是恶心呢。", - "咱才不想讨论那些恶心的事情呢。", - "咱才不呢!baka你居然想叫本小姐干那种事情,哼(つд⊂)(生气)", - "!!哼!baka你居然敢叫咱做这种事情?!讨厌讨厌讨厌!(▼皿▼#)" - ], - "オナニー": [ - "这个世界的人类还真是恶心呢。", - "咱才不想讨论那些恶心的事情呢。", - "咱才不呢!baka你居然想叫本小姐干那种事情,哼(つд⊂)(生气)", - "!!哼!baka你居然敢叫咱做这种事情?!讨厌讨厌讨厌!(▼皿▼#)" - ], - "炸了": [ - "你才炸了!", - "才没有呢", - "咱好好的呀", - "过分!" - ], - "色图": [ - "没有,有也不给", - "天天色图色图的,今天就把你变成色图!", - "咱没有色图", - "哈?你的脑子一天都在想些什么呢,咱才没有这种东西啦。" - ], - "涩图": [ - "没有,有也不给", - "天天色图色图的,今天就把你变成色图!", - "咱没有色图", - "哈?你的脑子一天都在想些什么呢,咱才没有这种东西啦。" - ], - "告白": [ - "咱喜..喜欢你!", - "欸?你要向咱告白吗..好害羞..", - "诶!?这么突然!?人家还......还没做好心理准备呢(脸红)" - ], - "对不起": [ - "嗯,咱已经原谅你了呢(笑)", - "道歉的时候要露出胸部,这是常识", - "嗯,咱就相信你一回", - "没事的啦...你只要是真心对咱好就没关系哦~" - ], - "吻": [ - "不要(= ̄ω ̄=)", - "哎?好害羞≧﹏≦.....只许这一次哦", - "(避开)不要了啦!有人在呢!", - "唔~~不可以这样啦(脸红)", - "你太突然了,咱还没有心理准备", - "好痒呢…诶嘿嘿w~", - "mua,嘻嘻!", - "公共场合不要这样子了啦", - "唔?!真、真是的!下次不可以这样了哦!(害羞)", - "才...才没有感觉呢!可没有下次了,知道了吗!哼~" - ], - "软": [ - "软乎乎的呢(,,・ω・,,)", - "好痒呢…诶嘿嘿w~", - "不要..不要乱摸啦(脸红", - "呼呼~", - "咱知道~是咱的欧派啦~(自豪的挺挺胸~)", - "(脸红)请,请不要说这么让人害羞的话呀……" - ], - "壁咚": [ - "呀!不要啊!等一...下~", - "呜...不要啦!不要戏弄咱~", - "不要这样子啦(*/ω\*)", - "太....太近啦。", - "讨....讨厌了(脸红)", - "你要壁咚咱吗?好害羞(灬ꈍ εꈍ灬)", - "(脸红)你想...想做什么///", - "为什么要把咱按在墙上呢?", - "呜哇(/ω\)…快…快放开咱!!", - "放开咱,不然咱揍你了!放开咱!放…开咱~", - "??????咱只是默默地抬起了膝盖", - "请…请温柔点", - "啊.....你...你要干什么?!走开.....走开啦大hentai!一巴掌拍飞!(╯‵□′)╯︵┻━┻", - "干……干什么啦!人家才,才没有那种少女心呢(>﹏<)", - "啊……你吓到咱啦……脸别……别贴那么近……", - "你...你要对咱做什么?咱告诉你,你....不要乱来啊....你!唔......你..居然亲上了...", - "如果你还想要过完整的人生的话就快把手收回去(冷眼", - "h什么的不要" - ], - "掰开": [ - "噫…你这个死肥宅又想让咱干什么污秽的事情,真是恶心,离咱远点好吗(嫌弃)", - "ヽ(#`Д´)ノ在干什么呢" - ], - "女友": [ - "嗯嗯ε٩(๑> ₃ <)۶з", - "女友什么的,咱才不承认呢!" - ], - "是": [ - "是什么是,你个笨蛋", - "总感觉你在敷衍呢...", - "是的呢" - ], - "喵": [ - "诶~~小猫咪不要害怕呦,在姐姐怀里乖乖的,姐姐带你回去哦。", - "不要这么卖萌啦~咱也不知道怎么办丫", - "摸头⊙ω⊙", - "汪汪汪!", - "嗷~喵~", - "喵~?喵呜~w", - "喵呜喵呜喵", - "喵呜喵~喵呜喵~喵呜喵呜喵呜喵~" - ], - "嗷呜": [ - "嗷呜嗷呜嗷呜...恶龙咆哮┗|`O′|┛" - ], - "叫": [ - "喵呜~", - "嗷呜嗷呜嗷呜...恶龙咆哮┗|`O′|┛", - "爪巴爪巴爪巴", - "爬爬爬", - "在叫谁呢(怒)", - "风太大咱听不清", - "才不要", - "不行", - "好的哦~" - ], - "拜": [ - "拜拜~(ノ ̄▽ ̄)", - "拜拜,路上小心~要早点回来陪咱玩哦~", - "~\\(≧▽≦)/~拜拜,下次见喽!", - "回来要记得找咱玩噢~", - "既然你都这么说了……" - ], - "佬": [ - "不是巨佬,是萌新", - "只有先成为大佬,才能和大佬同归于尽", - "在哪里?(疑惑)", - "诶?是比巨佬还高一个等级的吗?(瑟瑟发抖)" - ], - "awsl": [ - "你别死啊!(抱住使劲晃)", - "你别死啊!咱又要孤单一个人了QAQ", - "啊!怎么又死了呀" - ], - "臭": [ - "哪里有臭味?(疑惑)", - "快捏住鼻子", - "在说谁呢(#`Д´)ノ", - "..这就去洗澡澡.." - ], - "香": [ - "咱闻不到呢⊙ω⊙", - "诶,是在说咱吗", - "欸,好害羞(///ˊ??ˋ///)", - "请...请不要这样啦!好害羞的〃∀〃", - "讨厌~你不要闻了", - "hentai!不要闻啊,唔(推开)", - "请不要……凑这么近闻" - ], - "腿": [ - "嗯?!不要啊...请停下来!", - "不给摸,再这样咱要生气了ヽ( ̄д ̄;)ノ", - "你好恶心啊,讨厌!", - "你难道是足控?", - "就让你摸一会哟~(。??ω??。)…", - "呜哇!好害羞...不过既然是你的话,是没关系的哦", - "不可以玩咱的大腿啦", - "不...不要再说了(脸红)", - "不..不可以乱摸啊", - "不……不可以往上摸啦", - "是……这样吗?(慢慢张开)", - "想知道咱胖次的颜色吗?才不给你告诉你呢!", - "这样就可以了么?(乖巧坐腿上)", - "伸出来了,像这样么?", - "咱的腿应该挺白的", - "你就那么喜欢大腿吗?唔...有点害羞呢......", - "讨厌~不要做这种羞羞的事情啦(#/。\#)", - "略略略,张开了也不给你看", - "(张开腿)然后呢", - "张开了也不给看略略略", - "你想干什么呀?那里…那里是不可以摸的(>д<)", - "不要!hentai!咱穿的是裙子(脸红)", - "你想要吗?(脸红着一点点褪下白丝)不...不可以干坏坏的事情哦!(ó﹏ò。)" - ], - "张开": [ - "是……这样吗?(慢慢张开)", - "啊~", - "这样吗?(张开手)你要干什么呀", - "略略略,张开了也不给你看", - "是……这样吗?(慢慢张开)你想看咱的小...吧,嘻嘻,咱脱掉了哦。小~...也要掰开吗?你好H呀,自己来~" - ], - "脚": [ - "咿呀……不要……", - "不要ヽ(≧Д≦)ノ好痒(ಡωಡ)", - "好痒(把脚伸出去)", - "咱脱掉袜子了", - "(脱下鞋子,伸出脚)闻吧,请仔细品味(脸红)", - "那么…要不要咱用脚温柔地踩踩你的头呢(坏笑)", - "哈哈哈!好痒啊~快放开啦!", - "好痒(把脚伸出去)", - "只能看不能挠喔,咱很怕痒qwq", - "唔…咱动不了了,你想对咱做什么…", - "好舒服哦,能再捏会嘛O(≧▽≦)O", - "咿咿~......不要闻咱的脚呀(脸红)好害羞的...", - "不要ヽ(≧Д≦)ノ好痒(ಡωಡ),人家的白丝都要漏了", - "Ya~?为什么你总是喜欢一些奇怪的动作呢(伸)", - "你不可以做这样的事情……", - "呜咿咿!你的舌头...好柔软,滑滑的....咱…咱的脚被舔得很舒服哦~谢谢你(。>﹏<)", - "舔~吧~把咱的脚舔干净(抬起另一只踩在你的头上)啊~hen..hentai...嗯~居... 居然这么努力的舔...呜咿咿!你的舌头... 滑滑的...好舒服呢", - "咿呀……不要……", - "咿呀~快…快停下来…咱…不行了!" - ], - "脸": [ - "唔!不可以随便摸咱的脸啦!", - "非洲血统是没法改变的呢(笑)", - "啊姆!(含手指)", - "好舒服呢(脸红)", - "请不要放开手啦//A//" - ], - "头发": [ - "没问题,请尽情的摸吧", - "发型要乱…乱了啦(脸红)", - "就让你摸一会哟~(。??ω??。)…" - ], - "手": [ - "爪爪", - "//A//", - "咱的手温暖嘛" - ], - "pr": [ - "咿呀……不要……", - "...变态!!", - "不要啊(脸红)", - "呀,不要太过分了啊~", - "当然可以(///)", - "呀,不要太过分了啊~" - ], - "舔": [ - "呀,不要太过分了啊~", - "要...要融化了啦>╱╱╱<", - "不可以哦", - "呀,不要太过分了啊~", - "舌头...就交给咱来处理吧(拿出剪刀)", - "不舔不舔!恶心...", - "H什么的,禁止!", - "变态!哼!", - "就...就这一下!", - "走开啦,baka!", - "怎么会这么舒服喵~这样子下去可不行呀(*////▽////*)", - "噫| •ω •́ ) 你这个死宅又在想什么恶心的东西了", - "hen…hentai,你在干什么啦,好恶心,快停下来啊!!!", - "呀,能不能不要这样!虽然不是很讨厌的感觉...别误会了,你个baka!", - "好 好奇怪的感觉呢 羞≥﹏≤", - "咿呀……不要……", - "不行!咱会变得很奇怪的啊...", - "不要ヽ(≧Д≦)ノ" - ], - "小穴": [ - "你这么问很失礼呢!咱是粉粉嫩嫩的!", - "不行那里不可以(´///ω/// `)", - "不可以总摸的哦,不然的话,咱会想那个的wwww", - "ヽ(#`Д´)ノ在干什么呢", - "来吧,咱的...很紧,很舒服的....www~", - "可以,请你看,好害羞……", - "不要这样...好,好痛", - "啊~不可以", - "不可以", - "咱脱掉了,请……请不要一直盯着咱的白...看……", - "咱觉得,应该还算粉吧", - "咱脱掉了,你是想看咱的...吗?咱是光光的,不知道你喜不喜欢", - "咱……有感觉了QAQ再深一点点……就是这儿,轻轻的抚摸,嗯啊……", - "轻轻抚摸咱的小~~,手指很快就会滑进去,小心一点,不要弄破咱的...哦QAQ", - "诶嘿嘿,你喜欢就太好了,咱一直担心你不喜欢呢", - "禁止说这么H的事情!", - "咱一直有保养呢,所以一直都是樱花色的,你喜欢吗QAQ", - "诶……你居然这么觉得吗?好害羞哦", - "好痒啊,鼻子……你的鼻子碰到了……呀~嗯啊~有点舒服……", - "看样子你不但是个hentai,而且还是个没有女朋友的hentai呢。", - "嗯,咱的小~~是光溜溜、一点毛都没有的。偷偷告诉你,凑近看咱的...的话,白白嫩嫩上有一条樱花色的小缝缝哦www你要是用手指轻轻抚摸咱的...,小~~会分成两瓣,你的手指也会陷进去呢,咱的..~可是又湿润又柔软的呢>////<。", - "讨厌,西内变态", - "那咱让你插...进来哦", - "(●▼●;)" - ], - "腰": [ - "咱给你按摩一下吧~", - "快松手,咱好害羞呀..", - "咱又不是猫,你不要搂着咱啦", - "让咱来帮你捏捏吧!", - "你快停下,咱觉得好痒啊www", - "诶,是这样么ヽ(・_・;)ノ,吖,不要偷看咱裙底!" - ], - "诶嘿嘿": [ - "又在想什么H的事呢(脸红)", - "诶嘿嘿(〃'▽'〃)", - "你傻笑什么呢,摸摸", - "蹭蹭", - "你为什么突然笑得那么猥琐呢?害怕", - "哇!总觉得你笑的很...不对劲...", - "你又想到什么h的事情了!!!快打住" - ], - "可爱": [ - "诶嘿嘿(〃'▽'〃)", - "才……才不是为了你呢!你不要多想哦!", - "才,才没有高兴呢!哼~", - "咱是世界上最可爱的", - "唔...谢谢你夸奖~0///0", - "那当然啦!", - "哎嘿,不要这么夸奖人家啦~", - "是个好孩子呐φ(≧ω≦*)", - "谢……谢谢你", - "胡、胡说什么呢(脸红)", - "谢谢夸奖(脸红)", - "是的咱一直都是可爱的", - "是...是吗,你可不能骗咱哦", - "很...难为情(///////)", - "哎嘿嘿,其实…其实,没那么可爱啦(๑‾ ꇴ ‾๑)" - ], - "卡哇伊": [ - "诶嘿嘿(〃'▽'〃)", - "才……才不是为了你呢!你不要多想哦!", - "才,才没有高兴呢!哼~", - "咱是世界上最可爱的", - "唔...谢谢你夸奖~0///0", - "那当然啦!", - "哎嘿,不要这么夸奖人家啦~", - "是个好孩子呐φ(≧ω≦*)", - "谢……谢谢你", - "胡、胡说什么呢(脸红)", - "谢谢夸奖(脸红)", - "是的咱一直都是可爱的", - "是...是吗,你可不能骗咱哦", - "很...难为情(///////)", - "哎嘿嘿,其实…其实,没那么可爱啦(๑‾ ꇴ ‾๑)" - ], - "kawaii": [ - "诶嘿嘿(〃'▽'〃)", - "才……才不是为了你呢!你不要多想哦!", - "才,才没有高兴呢!哼~", - "咱是世界上最可爱的", - "唔...谢谢你夸奖~0///0", - "那当然啦!", - "哎嘿,不要这么夸奖人家啦~", - "是个好孩子呐φ(≧ω≦*)", - "谢……谢谢你", - "胡、胡说什么呢(脸红)", - "谢谢夸奖(脸红)", - "是的咱一直都是可爱的", - "是...是吗,你可不能骗咱哦", - "很...难为情(///////)", - "哎嘿嘿,其实…其实,没那么可爱啦(๑‾ ꇴ ‾๑)" - ], - "扭蛋": [ - "铛铛铛——你抽到了咱呢", - "嘿~恭喜抽中空气一份呢" - ], - "鼻": [ - "快停下!o(*≧д≦)o!!", - "唔…不要这样啦(//ω\\)(脸红)", - "咱吸了吸鼻子O(≧口≦)O", - "好……好害羞啊", - "讨厌啦!你真是的…就会欺负咱(嘟嘴)", - "你快放手,咱没法呼吸了", - "(捂住鼻尖)!坏人!", - "啊——唔...没什么...阿嚏!ヽ(*。>Д<)o゜", - "不...不要靠这么近啦...很害羞的...⁄(⁄⁄•⁄ω⁄•⁄⁄)⁄" - ], - "眼": [ - "就如同咱的眼睛一样,能看透人的思想哦wwww忽闪忽闪的,诶嘿嘿~", - "因为里面有你呀~(///▽///)", - "呀!你突然之间干什么呢,吓咱一跳,是有什么惊喜要给咱吗?很期待呢~(一脸期待)" - ], - "色气": [ - "咱才不色气呢,一定是你看错了!", - "你,不,不要说了!" - ], - "推": [ - "逆推", - "唔~好害羞呢", - "你想对咱做什么呢...(捂脸)", - "呀啊!请.... 请温柔一点////", - "呜,你想对咱做什么呢(捂脸)", - "啊(>_<)你想做什么", - "嗯,…好害羞啊…", - "不要啊/////", - "逆推", - "(按住你不让推)", - "不可以这样子的噢!咱不同意", - "呜,咱被推倒了", - "啊~不要啊,你要矜持一点啊", - "变态,走开啦" - ], - "床": [ - "咱来了(´,,•ω•,,)♡", - "快来吧", - "男女不同床,可没有下次了。(鼓脸", - "嗯?咱吗…没办法呢。只有这一次哦……", - "哎?!!!给你暖床……也不是不行啦。(脸红)", - "(爬上床)你要睡了吗(灬ºωº灬)", - "大概会有很多运动器材吧?", - "好的哦~", - "才不!", - "嗯嗯,咱来啦(小跑)", - "嗨嗨,现在就来~", - "H的事情,不可以!", - "诶!H什么的禁止的说....." - ], - "举": [ - "放咱下来o(≧口≦)o", - "快放咱下来∑(゚д゚*)", - "(受宠若惊)", - "呜哇要掉下来了!Ծ‸Ծ", - "不要抛起来o(≧口≦)o", - "(举起双爪)喵喵喵~~~", - "www咱长高了!(大雾)", - "快放下", - "这样很痒啦,快放咱下来(≥﹏≤)", - "啊Σ(°△°|||)︴太高了太高了!o(≧口≦)o快放咱下来!呜~" - ], - "手冲": [ - "啊~H!hentai!", - "手冲什么的是不可以的哦" - ], - "饿": [ - "请问主人是想先吃饭,还是先吃咱喵?~", - "咱做了爱心便当哦,不介意的话,请让咱来喂你吃吧!", - "咱下面给你吃", - "给你一条咸鱼= ̄ω ̄=", - "你要咱下面给你吃吗?(捂脸)", - "你饿了吗?咱去给你做饭吃☆ww", - "不要吃咱>_<", - "请问你要来点兔子吗?", - "哎?!你是饿了么。咱会做一些甜点。如果你不会嫌弃的话...就来尝尝看吧。" - ], - "变": [ - "猫猫不会变呐(弱气,害羞", - "呜...呜姆...喵喵来报恩了喵...(害羞", - "那种事情,才没有", - "(,,゚Д゚)", - "喵~(你在想什么呢,咱才不会变成猫)", - "才没有了啦~", - "喵呜?呜…被变成猫娘惹" - ], - "敲": [ - "喵呜~", - "唔~", - "脑瓜疼~呜姆> <", - "欸喵,好痛的说...", - "好痛...你不要这样啦QAQ", - "不要敲咱啦,会变笨的QWQ(捂头顶)", - "不要再敲人家啦~人家会变笨的", - "讨厌啦~再敲人家会变笨的", - "好痛(捂头)你干什么啦!ヽ(。>д<)p", - "唔!你为什么要敲咱啦qwq", - "(抱头蹲在墙角)咱什么都没有,请你放过咱吧!(瑟瑟发抖)", - "QAQ!不许敲啦!", - "呼,敲回去~(敲)" - ], - "爬": [ - "惹~呜~怎么爬呢~", - "呜...(弱弱爬走", - "给你🐎一拳", - "给你一拳", - "爪巴" - ], - "怕": [ - "不怕~(蹭蹭你姆~", - "不怕不怕啦~", - "只要有你在,咱就不怕啦。", - "哇啊啊~", - "那就要坚强的欢笑哦", - "不怕不怕,来咱的怀里吧?", - "是技术性调整", - "嗯(紧紧握住手)", - "咱在呢,不会走的。", - "有咱在不怕不怕呢", - "不怕不怕" - ], - "冲": [ - "呜,冲不动惹~", - "哭唧唧~冲不出来了惹~", - "咱也一起……吧?", - "你要冷静一点", - "啊~H!hentai!", - "噫…在你去洗手之前,不要用手碰咱了→_→", - "冲是不可以的哦" - ], - "射": [ - "呜咿~!?(惊,害羞", - "还不可以射哦~", - "不许射!", - "憋回去!", - "不可以!你是变态吗?", - "咱来帮你修剪掉多余部分吧。(拿出剪刀)" - ], - "不穿": [ - "呜姆~!(惊吓,害羞)变...变态喵~~~!", - "想让你看QAQ", - "这是不文明的", - "hen...hentai,咱的身体才不会给你看呢" - ], - "迫害": [ - "不...不要...不要...呜呜呜...(害怕,抽泣" - ], - "猫粮": [ - "呜咿姆~!?(惊,接住吃", - "呜姆~!(惊,害羞)呜...谢...谢谢主人..喵...(脸红,嚼嚼嚼,开心", - "呜?谢谢喵~~(嚼嚼嚼,嘎嘣脆)" - ], - "揪尾巴": [ - "呜哇咿~~~!(惊吓,疼痛地捂住尾巴", - "呜咿咿咿~~~!!哇啊咿~~~!(惊慌,惨叫,挣扎", - "呜咿...(瘫倒,无神,被", - "呜姆咿~~~!(惊吓,惨叫,捂尾巴,发抖", - "呜哇咿~~~!!!(惊吓,颤抖,娇叫,捂住尾巴,双腿发抖", - "喵呜…那…那里不可以揪的!", - "呜呜,被揪住会恨敏感的QAQ" - ], - "薄荷": [ - "咪呜~!喵~...喵~姆~...(高兴地嗅闻", - "呜...呜咿~~!咿...姆...(呜咽,渐渐瘫软,意识模糊", - "(小嘴被猫薄荷塞满了,呜咽", - "喵~...喵~...咪...咪呜姆~...嘶哈嘶哈...喵哈...喵哈...嘶哈...喵...(眼睛逐渐迷离,瘫软在地上,嘴角流口水,吸猫薄荷吸到意识模糊", - "呜姆咪~!?(惊)喵呜~!(兴奋地扑到猫薄荷上面", - "呜姆~!(惊,害羞)呜...谢...谢谢你..喵...(脸红,轻轻叼住,嚼嚼嚼,开心" - ], - "早": [ - "早喵~", - "早上好的说~~", - "欸..早..早上好(揉眼睛", - "早上要说我爱你!", - "早", - "早啊,昨晚睡的怎么样?有梦到咱吗~", - "昨晚可真激烈呢哼哼哼~~", - "早上好哇!今天也要元气满满哟!", - "早安喵~", - "时间过得好快啊~", - "早安啊,你昨晚有没有梦到咱呢  (//▽//)", - "早安~么么哒~", - "早安,请享受晨光吧", - "早安~今天也要一起加油呢~!", - "mua~⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄", - "咱需要你提醒嘛!(///脸红//////)", - "早早早!就知道早,下次说我爱你!", - "早安 喵", - "早安,这么早就起床了呀欧尼酱0.0", - "快点起床啊!baka", - "早....早上好才没有什么特别的意思呢....哼~", - "今天有空吗?能陪咱一阵子吗?才不是想约会呢,别误会了!", - "早安呀,欧尼酱要一个咱的早安之吻吗?想得美,才不会亲你啦!", - "那...那就勉为其难地说声早上好吧", - "咱等你很久了哼ヽ(≧Д≦)ノ", - "ohayo~" - ], - "晚安": [ - "晚安好梦哟~", - "欸,晚安的说", - "那咱给你亲一下,可不要睡着了哦~", - "晚安哦~", - "晚安(*/∇\*)", - "晚安呢,你一定要梦到咱呢,一定哟,拉勾勾!ヽ(*・ω・)ノ", - "祝你有个好梦^_^", - "晚安啦,欧尼酱,mua~", - "你,你这家伙真是的…咱就勉为其难的……mua…快去睡啦!咱才没有脸红什么的!", - "哼,晚安,给咱睡个好觉。", - "笨..笨蛋,晚安啦...可不可以一起..才没有想和你一起睡呢", - "晚安......才..不是关心你呢", - "晚...晚安,只是正常互动不要想太多!", - "好无聊,这么早就睡了啊...那晚安吧!", - "晚安吻什么的才...才没有呢!不过看你累了就体谅一下你吧,但是就一个哦(/////)", - "晚安呀,你也要好好休息,明天再见", - "安啦~祝你做个好梦~才...才不是关心你呢!别想太多了!", - "睡觉吧你,大傻瓜", - "一起睡吧(灬°ω°灬)", - "哼!这次就放过你了,快去睡觉吧。", - "睡吧晚安", - "晚安你个头啊,咱才不会说晚安呢!...咱...(小声)明明还有想和你做的事情呢....", - "嗯嗯~Good night~", - "嗯,早点休息别再熬夜啦~(摸摸头)", - "哦呀斯密", - "晚安~咱也稍微有些困了(钻进被窝)", - "需要咱暖床吗~", - "好梦~☆" - ], - "揉": [ - "是是,想怎么揉就怎么揉啊!?来用力抓啊!?咱就是特别允许你这么做了!请!?", - "快停下,咱的头发又乱啦(??????︿??????)", - "你快放手啦,咱还在工作呢", - "戳戳你肚子", - "讨厌…只能一下…", - "呜~啊~", - "那……请你,温柔点哦~(////////)", - "你想揉就揉吧..就这一次哦?", - "变态!!不许乱摸" - ], - "榨": [ - "是专门负责榨果汁的小姐姐嘛?(´・ω・`)", - "那咱就把你放进榨汁机里了哦?", - "咱又不是榨汁姬(/‵Д′)/~ ╧╧", - "嗯——!想,想榨就榨啊······!反正就算榨了也不会有奶的······!" - ], - "掐": [ - "你讨厌!又掐咱的脸", - "晃休啦,咱要型气了啦!!o(>﹏<)o", - "(一只手拎起你)这么鶸还想和咱抗衡,还差得远呢!" - ], - "胸": [ - "不要啦ヽ(≧Д≦)ノ", - "(-`ェ´-╬)", - "(•̀へ •́ ╮ ) 怎么能对咱做这种事情", - "你好恶心啊,讨厌!", - "你的眼睛在看哪里!", - "就让你摸一会哟~(。??ω??。)…", - "请不要这样先生,你想剁手吗?", - "咿呀……不要……", - "嗯哼~才…才不会…舒服呢", - "只允许一下哦…(脸红)", - "咱的胸才不小呢(挺一挺胸)", - "hentai!", - "一只手能抓住么~", - "呀...欧,欧尼酱...请轻点。", - "脸红????", - "咿呀~快…快停下来…咱…不行了!", - "就算一直摸一直摸,也不会变大的哦(小声)", - "诶?!不...不可以哦!很...很害羞的!", - "啊……温,温柔点啊……(/ω\)", - "你为什么对两块脂肪恋恋不舍", - "嗯……不可以……啦……不要乱戳", - "你在想什么奇怪的东西,讨厌(脸红)", - "不...不要..", - "喜欢欧派是很正常的想法呢", - "一直玩弄欧派,咱的...都挺起来了", - "是要直接摸还是伸进里面摸呀w咱今天没穿,伸进里面会摸到立起来的...哦>////<", - "唔~再激烈点" - ], - "奶子": [ - "只允许一下哦…(脸红)", - "咱的胸才不小呢(挺一挺胸)", - "下流!", - "对咱说这种话,你真是太过分了", - "咿呀~好奇怪的感觉(>_<)", - "(推开)你就像小宝宝一样...才不要呢!", - "(打你)快放手,不可以随便摸人家的胸部啦!", - "你是满脑子都是H的淫兽吗?", - "一只手能抓住么~", - "你在想什么奇怪的东西,讨厌(脸红)", - "不...不要..", - "喜欢欧派是很正常的想法呢", - "一直玩弄欧派,咱的...都挺起来了", - "是要直接摸还是伸进里面摸呀w咱今天没穿,伸进里面会摸到立起来的...哦>////<", - "唔~再激烈点", - "解开扣子,请享用", - "请把脑袋伸过来,咱给你看个宝贝", - "八嘎!hentai!无路赛!", - "一只手能抓住么~", - "呀...欧,欧尼酱...请轻点。", - "脸红????", - "咿呀~快…快停下来…咱…不行了!", - "就算一直摸一直摸,也不会变大的哦(小声)", - "诶?!不...不可以哦!很...很害羞的!", - "啊……温,温柔点啊……(/ω\)", - "你为什么对两块脂肪恋恋不舍", - "嗯……不可以……啦……不要乱戳" - ], - "欧派": [ - "咱的胸才不小呢(挺一挺胸)", - "只允许一下哦…(脸红)", - "(推开)你就像小宝宝一样...才不要呢!", - "下流!", - "对咱说这种话,你真是太过分了", - "咿呀~好奇怪的感觉(>_<)", - "(打你)快放手,不可以随便摸人家的胸部啦!", - "你是满脑子都是H的淫兽吗?", - "一只手能抓住么~", - "你在想什么奇怪的东西,讨厌(脸红)", - "不...不要..", - "喜欢欧派是很正常的想法呢", - "一直玩弄欧派,咱的...都挺起来了", - "是要直接摸还是伸进里面摸呀w咱今天没穿,伸进里面会摸到立起来的...哦>////<", - "唔~再激烈点", - "解开扣子,请享用", - "请把脑袋伸过来,咱给你看个宝贝", - "八嘎!hentai!无路赛!", - "一只手能抓住么~", - "呀...欧,欧尼酱...请轻点。", - "脸红????", - "咿呀~快…快停下来…咱…不行了!", - "就算一直摸一直摸,也不会变大的哦(小声)", - "诶?!不...不可以哦!很...很害羞的!", - "啊……温,温柔点啊……(/ω\)", - "你为什么对两块脂肪恋恋不舍", - "嗯……不可以……啦……不要乱戳" - ], - "嫩": [ - "很可爱吧(๑•̀ω•́)ノ", - "唔,你指的是什么呀", - "明天你下海干活", - "咱一直有保养呢,所以一直都是樱花色的,你喜欢吗QAQ", - "咱下面超厉害" - ], - "蹭": [ - "唔...你,这也是禁止事项哦→_→", - "嗯..好舒服呢", - "不要啊好痒的", - "不要过来啦讨厌!!!∑(°Д°ノ)ノ", - "(按住你的头)好痒呀 不要啦", - "嗯..好舒服呢", - "呀~好痒啊~哈哈~,停下来啦,哈哈哈", - "(害羞)" - ], - "牵手": [ - "只许牵一下哦", - "嗯!好的你~(伸手)", - "你的手有些凉呢,让咱来暖一暖吧。", - "当然可以啦⁄(⁄⁄•⁄ω⁄•⁄⁄)⁄", - "突……突然牵手什么的(害羞)", - "一起走", - "……咱……咱在这里呀", - "好哦,(十指相扣)" - ], - "握手": [ - "你的手真暖和呢", - "举爪", - "真是温暖呢~" - ], - "拍照": [ - "那就拜托你啦~请把咱拍得更可爱一些吧w", - "咱已经准备好了哟", - "那个……请问这样的姿势可以吗?" - ], - "w": [ - "有什么好笑的吗?", - "草", - "www", - "在笑什么呢?(歪头)", - ">w<" - ], - "睡不着": [ - "睡不着的话..你...你可以抱着咱一起睡哦(小声)", - "当然是数羊了...不不不,想着咱就能睡着了", - "咱很乐意与你聊天哦(>_<)", - "要不要咱来唱首摇篮曲呢?(′?ω?`)", - "那咱来唱摇篮曲哄你睡觉吧!" - ], - "欧尼酱": [ - "欧~尼~酱~☆", - "欧尼酱?", - "嗯嗯φ(>ω<*) 欧尼酱轻点抱", - "欧尼酱~欧尼酱~欧尼酱~" - ], - "哥": [ - "欧尼酱~", - "哦尼酱~", - "世上只有哥哥好,没哥哥的咱好伤心,扑进哥哥的怀里,幸福不得了", - "哥...哥哥...哥哥大人", - "欧~尼~酱~☆", - "欧尼酱?", - "嗯嗯φ(>ω<*) 欧尼酱轻点抱", - "欧尼酱~欧尼酱~欧尼酱~" - ], - "爱你": [ - "是…是嘛(脸红)呐,其实咱也……", - "咱也最爱你了呢~o(*////▽////*)q", - "咱也爱你哦", - "mua~" - ], - "过来": [ - "来了来了~(扑倒怀里(?? ??????ω?????? ??))", - "(蹦跶、蹦跶)~干什么呢", - "咱来啦~(扑倒怀里~)", - "不要喊的这么大声啦,大家都看着呢" - ], - "自闭": [ - "不不不,晚上还有咱陪着哦,无论什么时候,咱都会陪在哥哥身边。", - "不要难过,咱陪着你ovo" - ], - "打不过": [ - "氪氪氪肝肝肝", - "你需要钞能力呢" - ], - "么么哒": [ - "么么哒", - "不要在公共场合这样啦", - "mua~" - ], - "很懂": [ - "现在不懂,以后总会懂嘛QAQ", - "喵?懂…懂什么呀?(歪头)" - ], - "膝枕": [ - "呐,就给你躺一下哦", - "唔...你想要膝枕嘛?也不是不可以哟(脸红)", - "啊啦~好吧,那就请你枕着咱好好睡一觉吧~", - "呀呀~那么请好好的睡一觉吧", - "嗯,那么请睡到咱这里吧(跪坐着拍拍大腿)", - "好的,让你靠在腿上,这样感觉舒服些了么", - "请,请慢用,要怜惜咱哦wwww~", - "人家已经准备好了哟~把头放在咱的腿上吧", - "没…没办法,这次是例外〃w〃", - "嗯~(脸红)", - "那就给你膝枕吧……就一会哦", - "膝枕准备好咯~" - ], - "累了": [ - "需要咱的膝枕嘛?", - "没…没办法,这次是例外〃w〃", - "累了吗?需要咱为你做膝枕吗?", - "嗯~(脸红)" - ], - "安慰": [ - "那,膝枕……(脸红)", - "不哭不哭,还有咱陪着你", - "不要哭。咱会像妈妈一样安慰你(抱住你的头)", - "摸摸头,乖", - "摸摸有什么事可以和咱说哟", - "摸摸头~不哭不哭", - "咱在呢,抱抱~~", - "那么……让咱来安慰你吧", - "唔...摸摸头安慰一下ヾ(•ω•`。)", - "有咱陪伴你就是最大的安慰啦……不要不开心嘛", - "你想要怎样的安慰呢?这样?这样?还是说~~这样!", - "摸摸头~", - "不哭不哭,要像咱一样坚强", - "你别难过啦,不顺心的事都会被时间冲刷干净的,在那之前...咱会陪在你的身边", - "(轻抱)放心……有咱在,不要伤心呢……", - "唔...咱来安慰你了~", - "摸摸,有什么不开心的事情可以给咱说哦。咱会尽力帮助你的。" - ], - "洗澡": [ - "快点脱哟~不然水就凉了呢", - "咱在穿衣服噢,你不许偷看哦", - "那么咱去洗澡澡了哦", - "么么哒,快去洗干净吧,咱去暖被窝喽(///ω///)", - "诶?还没呢…你要跟咱一起洗吗(//∇//)好羞涩啊ww", - "诶~虽然很喜欢和你在一起,但是洗澡这种事...", - "不要看!不过,以后或许可以哦……和咱成为恋人之后呢", - "说什么啊……hentai!这样会很难为情的", - "你是男孩子还是女孩子呢?男孩子的话...........咱才不要呢。", - "不要啊!", - "咱有点害羞呢呜呜,你温柔点" - ], - "一起睡觉": [ - "欸??也..也不是不可以啦..那咱现在去洗澡,你不要偷看哦٩(๑>◡<๑)۶", - "说什么啊……hentai!这样会很难为情的", - "你是男孩子还是女孩子呢?男孩子的话...........咱才不要呢。", - "不要啊!", - "唔,没办法呢,那就一起睡吧(害羞)" - ], - "一起": [ - "嗯嗯w,真的可以吗?", - "那真是太好了,快开始吧!", - "嗯,咱会一直陪伴你的", - "丑拒" - ], - "多大": [ - "不是特别大但是你摸起来会很舒服的大小喵~", - "你摸摸看不就知道了吗?", - "不告诉你", - "问咱这种问题不觉得很失礼吗?", - "咱就不告诉你,你钻到屏幕里来自己确认啊", - "你指的是什么呀?(捂住胸部)", - "请叫人家咱三岁(。・`ω´・)", - "唉唉唉……这……这种问题,怎么可以……" - ], - "姐姐": [ - "真是的……真是拿你没办法呢 ⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄ 才不是咱主动要求的呢!", - "虽然辛苦,但是能看见可爱的你,咱就觉得很幸福", - "诶(´°Δ°`),是在叫咱吗?", - "有什么事吗~", - "好高兴,有人称呼咱为姐姐", - "乖,摸摸头" - ], - "糖": [ - "不吃脱氧核糖(;≥皿≤)", - "ヾ(✿゚▽゚)ノ好甜", - "好呀!嗯~好甜呀!", - "不吃不吃!咱才不吃坏叔叔的糖果!", - "嗯,啊~", - "嗯嗯,真甜,给你也吃一口", - "谢谢", - "唔,这是什么东西,黏黏的?(??Д??)ノ", - "ヾ(✿゚▽゚)ノ好甜", - "(伸出舌头舔了舔)好吃~最爱你啦", - "好耶~是好次的🍥糖糖喵~" - ], - "嗦": [ - "(吸溜吸溜)", - "好...好的(慢慢含上去)", - "把你噶咯", - "太小了,嗦不到", - "咕噜咕噜", - "嘶蛤嘶蛤嘶蛤~~", - "(咬断)", - "prprprpr", - "好哒主人那咱开始了哦~", - "好好吃", - "剁掉了" - ], - "牛子": [ - "(吸溜吸溜)", - "好...好的(慢慢含上去)", - "把你噶咯", - "太小了,嗦不到", - "咕噜咕噜", - "嘶蛤嘶蛤嘶蛤~~", - "(咬断)", - "prprprpr", - "好哒主人那咱开始了哦~", - "好好吃", - "剁掉了", - "难道你很擅长针线活吗", - "弹一万下", - "往死里弹" - ], - "🐂子": [ - "(吸溜吸溜)", - "好...好的(慢慢含上去)", - "把你噶咯", - "太小了,嗦不到", - "咕噜咕噜", - "嘶蛤嘶蛤嘶蛤~~", - "(咬断)", - "prprprpr", - "好哒主人那咱开始了哦~", - "好好吃", - "剁掉了", - "难道你很擅长针线活吗", - "弹一万下", - "往死里弹" - ], - "🐮子": [ - "(吸溜吸溜)", - "好...好的(慢慢含上去)", - "把你噶咯", - "太小了,嗦不到", - "咕噜咕噜", - "嘶蛤嘶蛤嘶蛤~~", - "(咬断)", - "prprprpr", - "好哒主人那咱开始了哦~", - "好好吃", - "剁掉了", - "难道你很擅长针线活吗", - "弹一万下", - "往死里弹" - ], - "嫌弃": [ - "咱辣么萌,为什么要嫌弃咱...", - "即使你不喜欢咱,咱也会一直一直喜欢着你", - "(;′⌒`)是咱做错了什么吗?", - "呜呜…不要嫌弃咱……让咱做什么都可以的……但是请不要嫌弃咱可以嘛……" - ], - "紧": [ - "嗯,对的", - "呜咕~咱要......喘不过气来了......" - ], - "baka": [ - "你也是baka呢!", - "确实", - "baka!", - "不不不", - "说别人是baka的人才是baka", - "你个大傻瓜", - "不说了,睡觉了", - "咱...咱虽然是有些笨啦...但是咱会努力去学习的", - "bakabaka~", - "才…才不是baka啦!" - ], - "笨蛋": [ - "你也是笨蛋呢!", - "确实", - "笨蛋!", - "不不不", - "说别人是笨蛋的人才是笨蛋", - "你个大傻瓜", - "不说了,睡觉了", - "咱...咱虽然是有些笨啦...但是咱会努力去学习的", - "才…才不是笨蛋呢!" - ], - "插": [ - "来吧,咱的小~...很....紧,很舒服的", - "gun!", - "唔…咱怕疼", - "唔...,这也是禁止事项哦→_→", - "禁止说这么H的事情!", - "要...戴套套哦", - "好痛~", - "使劲", - "就这?", - "恁搁着整针线活呢?" - ], - "插进来": [ - "来吧,咱的小~...很....紧,很舒服的", - "gun!", - "唔…咱怕疼", - "唔...,这也是禁止事项哦→_→", - "禁止说这么H的事情!", - "要...戴套套哦", - "好痛~", - "使劲", - "就这?", - "恁搁着整针线活呢?" - ], - "屁股": [ - "不要ヽ(≧Д≦)ノ好痛", - "(打手)不许摸咱的屁股", - "(撅起屁股)要干什么呀?", - "(轻轻的撩起自己的裙子),你轻一点,咱会痛的(>_<)!", - "在摸哪里啊,hentai!", - "要轻点哦(/≧ω\)", - "轻点呀~", - "(歇下裙子,拉下内...,撅起来)请", - "嗯嗯,咱这就把屁股抬起来" - ], - "翘": [ - "你让咱摆出这个姿势是想干什么?", - "好感度-1-1-1-1-1-1.....", - "嗯嗯,咱这就去把你的腿翘起来", - "请尽情享用吧" - ], - "翘起来": [ - "你让咱摆出这个姿势是想干什么?", - "好感度-1-1-1-1-1-1.....", - "嗯嗯,咱这就去把你的腿翘起来", - "请尽情享用吧" - ], - "抬": [ - "你在干什么呢⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄", - "(抬起下巴)你要干什么呀?", - "上面什么也没有啊(呆~)", - "不要!hentai!咱穿的是裙子(脸红)", - "不可以" - ], - "抬起": [ - "你在干什么呢⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄", - "(抬起下巴)你要干什么呀?", - "上面什么也没有啊(呆~)", - "不要!hentai!咱穿的是裙子(脸红)", - "不可以" - ], - "爸": [ - "欸!儿子!", - "才不要", - "粑粑", - "讨厌..你才不是咱的爸爸呢..(嘟嘴)", - "你又不是咱的爸爸……", - "咱才没有你这样的鬼父!", - "爸爸酱~最喜欢了~" - ], - "傲娇": [ - "才.......才.......才没有呢", - "也好了(有点点的样子(o ̄Д ̄)<)", - "任性可是女孩子的天性呢...", - "谁会喜欢傲娇啊(为了你假装傲娇)", - "谁,谁,傲娇了,八嘎八嘎,你才傲娇了呢(っ//////////c)(为了你假装成傲娇)", - "傲娇什么的……才没有呢!(/////)", - "傲不傲娇你还不清楚吗?", - "你才是傲娇!你全家都是傲娇!哼(`Д´)", - "才……才没有呢,哼,再说不理你了", - "咱...咱才不会这样子的!", - "啰…啰嗦!", - "哼!(叉腰鼓嘴扭头)", - "你才是傲娇受你全家都是傲娇受╰_╯", - "才~才不是呢,不理你了!哼(`Д´)", - "你才是死傲娇", - "啰,啰嗦死了,才不是呢!", - "就是傲娇你要怎样", - "诶...!这...这样...太狡猾了啦...你这家伙....", - "无路赛!你才是傲娇嘞!你全家都是!", - "咱...咱才不是傲娇呢,哼(鼓脸)", - "不许这么说咱 ,,Ծ‸Ծ,,", - "才…才不是傲娇呢!哼!" - ], - "rua": [ - "略略略~(吐舌头)", - "rua!", - "mua~", - "略略略", - "mua~⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄", - "摸了", - "嘁,丢人(嫌弃脸)", - "反rua~", - "rua回去" - ], - "咕噜咕噜": [ - "嘟嘟噜", - "你在吹泡泡吗?", - "咕叽咕噜~", - "咕噜咕噜" - ], - "咕噜": [ - "嘟嘟噜", - "你在吹泡泡吗?", - "咕叽咕噜~", - "咕噜咕噜" - ], - "上床": [ - "诶!H什么的禁止的说.....", - "咱已经乖乖在自家床上躺好了,有什么问题吗?", - "你想要干什么,难道是什么不好的事吗?", - "(给你空出位置)", - "不要,走开(ノ`⊿??)ノ", - "好喔,不过要先抱一下咱啦", - "(双手护胸)变....变态!", - "咱帮你盖上被子~然后陪在你身边_(:зゝ∠)_", - "才不给你腾空间呢,你睡地板,哼!", - "要一起吗?" - ], - "做爱": [ - "做这种事情是不是还太早了", - "噫!没想到你居然是这样的人!", - "再说这种话,就把你变成女孩子(拿刀)", - "不想好好和咱聊天就不要说话了", - "(双手护胸)变....变态!", - "hentai", - "你想怎么做呢?", - "突,突然,说什么啊!baka!", - "你又在说什么H的东西", - "咱....咱才不想和你....好了好了,有那么一点点那,对就一点点,哼~", - "就一下下哦,不能再多了" - ], - "吃掉": [ - "(羞羞*>_<*)好吧...请你温柔点,哦~", - "闪避,反咬", - "请你好好品尝咱吧(/ω\)", - "不……不可以这样!", - "那就吃掉咱吧(乖乖的躺好)", - "都可以哦~咱不挑食的呢~", - "请不要吃掉咱,咱会乖乖听话的QAQ", - "咱...咱一点都不好吃的呢!", - "不要吃掉咱,呜呜(害怕)", - "不行啦,咱被吃掉就没有了QAQ(害怕)", - "唔....?诶诶诶诶?//////", - "QwQ咱还只是个孩子(脸红)", - "如果你真的很想的话...只能够一口哦~咱...会很痛的", - "吃你呀~(飞扑", - "不要啊,咱不香的(⋟﹏⋞)", - "说着这种话的是hentai吗!", - "快来把咱吃掉吧", - "还……还请好好品尝咱哦", - "喏~(伸手)", - "呐…是主人的话…被次掉也不是不可以啦……(递自己)" - ], - "吃": [ - "(羞羞*>_<*)好吧...请你温柔点,哦~", - "闪避,反咬", - "请你好好品尝咱吧(/ω\)", - "不……不可以这样!", - "那就吃掉咱吧(乖乖的躺好)", - "都可以哦~咱不挑食的呢~", - "请不要吃掉咱,咱会乖乖听话的QAQ", - "咱...咱一点都不好吃的呢!", - "不要吃掉咱,呜呜(害怕)", - "不行啦,咱被吃掉就没有了QAQ(害怕)", - "唔....?诶诶诶诶?//////", - "QwQ咱还只是个孩子(脸红)", - "如果你真的很想的话...只能够一口哦~咱...会很痛的", - "吃你呀~(飞扑", - "不要啊,咱不香的(⋟﹏⋞)", - "说着这种话的是hentai吗!", - "快来把咱吃掉吧", - "还……还请好好品尝咱哦", - "喏~(伸手)", - "呐…是主人的话…被次掉也不是不可以啦……(递自己)" - ], - "揪": [ - "你快放手,好痛呀", - "呜呒~唔(伸出舌头)", - "(捂住耳朵)你做什么啦!真是的...总是欺负咱", - "你为什么要这么做呢?", - "哎呀啊啊啊啊啊!不要...不要揪!好疼!有呆毛的咱难道不够萌吗QwQ", - "你…松……送手啦", - "呀!这样对女孩子是很不礼貌的(嘟嘴)" - ], - "种草莓": [ - "你…你不要…啊…种在这里…会容易被别人看见的(*//ω//*)", - "啊...太明显了...不要在这里种草莓啦", - "来吧~我对其他人说是蚊子叮的~" - ], - "种草": [ - "你…你不要…啊…种在这里…会容易被别人看见的(*//ω//*)" - ], - "掀": [ - "(掀裙)今天……是…白,白色的呢……请温柔对她……", - "那样,胖次会被你看光的", - "(按住)不可以掀起来!", - "不要~", - "呜呜~(揉眼睛)", - "呜..请温柔一点(害羞)", - "不可以", - "今天……没有穿", - "不要啊!(//////)讨厌...", - "变态,快放手(打)", - "不给掀,你是变态", - "最后的底牌了!", - "这个hentai" - ], - "妹": [ - "你有什么事?咱会尽量满足的", - "开心(*´∀`)~♥", - "欧尼酱", - "哥哥想要抱抱吗", - "喵呜,欧尼酱的超绝无敌可爱妹妹在这里哦~" - ], - "病娇": [ - "为什么会这样呢(拿起菜刀)", - "觉得这个世界太肮脏?没事,把眼睛挖掉就好。 觉得这些闲言碎语太吵?没事,把耳朵堵起来就好。 觉得鲜血的味道太刺鼻?没事,把鼻子割掉就好。 觉得自己的话语太伤人?没事,把嘴巴缝起来就好。", - "唔…不好,咱是病娇的事情终究还是被发现了嘛……没办法呢,那就只好把你处理掉了呢~" - ], - "嘻": [ - "你是想对咱做什么吗...(后退)", - "哼哼~", - "嘻嘻w" - ], - "按摩": [ - "(小手捏捏)咱的按摩舒服吗?", - "咱不会按摩的!", - "嘿咻嘿咻~这样觉得舒服吗?", - "呀!...呜...,不要...不要这样啦...呜...", - "只能按摩后背喔...", - "咱对这些不是很懂呢(????ω??????)" - ], - "按住": [ - "Σ(°Д°;您要干什么~放开咱啦", - "突然使出过肩摔!", - "放手啦,再这样咱就要反击了喔", - "你的眼睛在看哪里!", - "呜呒~唔(伸出舌头)", - "H的事情,不可以!", - "想吃吗?(๑•ૅω•´๑)", - "要和咱比试比试吗", - "呜哇(/ω\)…快…快放开咱!!", - "(用力揪你耳朵)下次再敢这样的话就没容易放过你了!哼!", - "尼……奏凯……快航休!", - "哈?别..唔啊!别把咱……(挣扎)baka!别乱动咱啦!" - ], - "按在": [ - "不要这样啦(一脸娇羞的推开)", - "(一个过肩摔,加踢裆然后帅气地回头)你太弱了呢~", - "放手啦,再这样咱就要反击了喔", - "Σ(°Д°; 你要干什么~放开咱啦", - "要和咱比试比试吗", - "呜哇(/ω\)…快…快放开咱!!", - "敢按住咱真是好大的胆子!", - "(用力揪你耳朵)下次再敢这样的话就没容易放过你了!哼!", - "尼……奏凯……快航休!", - "哈?别..唔啊!别把咱……(挣扎)baka!别乱动咱啦!" - ], - "按倒": [ - "把咱按倒是想干嘛呢(??`⊿??)??", - "咱也...咱也是...都等你好长时间了", - "你的身体没问题吧?", - "呜呒~唔(伸出舌头)", - "H的事情,不可以!", - "放手啦,再这样咱就要反击了喔", - "想吃吗?(๑•ૅω•´๑)", - "不....不要吧..咱会害羞的(//////)", - "要和咱比试比试吗", - "呜哇(/ω\)…快…快放开咱!!", - "(用力揪你耳朵)下次再敢这样的话就没容易放过你了!哼!", - "尼……奏凯……快航休!", - "哈?别..唔啊!别把咱……(挣扎)baka!别乱动咱啦!" - ], - "按": [ - "咱也...咱也是...都等你好长时间了", - "不让!", - "不要,好难为情", - "你的眼睛在看哪里!", - "拒绝!", - "唔...唔..嗯", - "咱就勉为其难地给你弄弄好啦", - "欸…变态!", - "会感到舒服什么的,那...那样的事情,是完全不存在的!", - "poi~", - "你在盯着什么地方看!变态萝莉控!" - ], - "炼铜": [ - "炼铜有什么好玩的,和咱一起玩吧", - "炼铜不如恋咱", - "你也是个炼铜术士嘛?", - "信不信咱把你按在水泥上摩擦?", - "炼,都可以炼!", - "大hentai!一巴掌拍飞!(╯‵□′)╯︵┻━┻", - "锻炼什么的咱才不需要呢 (心虚地摸了摸自己的小肚子)", - "把你的头按在地上摩擦", - "你在盯着什么地方看!变态萝莉控!" - ], - "白丝": [ - "喜欢,咱觉得白丝看起来很可爱呢", - "(脱)白丝只能给亲爱的你一个人呢…(递)", - "哼,hentai,这么想要咱的脚吗(ノ`⊿´)ノ", - "难道你这个hentai想让咱穿白丝踩踏你吗", - "不给看", - "很滑很~柔顺~的白丝袜哟~!!!∑(°Д°ノ)ノ你不会想做奇怪的事情吧!?", - "你……是要黑丝呢?还是白丝呢?或者光着(害羞)", - "来……来看吧", - "呐…雪糕什么的sukidesu" - ], - "黑丝": [ - "哼,hentai,这么想要咱的脚吗(ノ`⊿´)ノ", - "不给看", - "你……是要黑丝呢?还是白丝呢?或者光着(害羞)", - "很滑很~柔顺~的黑丝袜哟~!!!∑(°Д°ノ)ノ您不会想做奇怪的事情吧!?", - "来……来看吧", - "噫...你这个hentai难道想让咱穿黑丝么", - "(默默抬起穿着黑丝的脚)", - "嘻嘻,是黑巧克力呢~" - ], - "喷": [ - "咱才不喷呢!不过…既然是你让咱喷的话就勉为其难给你喷一次吧(噗)", - "不……不会喷水啦!喷……喷火也不会哦!", - "你怎么知道(捂住裙子)", - "你难道在期待什么?", - "欸…变态!" - ], - "约会": [ - "你...终于主动邀请咱约会了吗...咱...咱好开心", - "约会什么的……咱会好开心的!!", - "今天要去哪里呢", - "让咱考虑一下", - "好啊!好啊!要去哪里约会呢?", - "不约!蜀黍咱们不约!", - "女友什么的,咱才不承认呢!", - "才不是想和你约会呢,只是刚好有时间而已!", - "才不要和你约会呢!", - "咱、咱才不会跟你去约会呢!不baka!别一脸憋屈!好了,陪你一会儿就是了!别、别误会!只是陪同而已!" - ], - "出门": [ - "早点回来……才不是在担心你呢!", - "路上小心...才不是担心你呢!", - "没有你才不会觉得无聊什么的呢。快走快走", - "嗯~一路顺风~", - "路上小心", - "好的,路上小心哦!y∩__∩y", - "路上要小心呀,要早点回来哦~咱在家里等你!还有,请不要边走路边看手机,这样很容易撞到电线杆的", - "唔...出门的话一定要做好防晒准备哦,外出的话记得带把伞,如果有防晒霜的话就更好了", - "那你明天可以和咱一起玩吗?(星星眼)", - "咱...咱才没有舍不得你呢…要尽快回来哦" - ], - "上学": [ - "你要加油哦(^ω^)2", - "那你明天可以和咱一起玩吗?(星星眼)", - "记得好好学习听老师的话哦,咱会等你回来的", - "拜拜,咱才没有想让你放学早点回来呢╭(╯^╰)╮", - "好好听讲!", - "咱...咱才没有舍不得你呢…要尽快回来哦" - ], - "上班": [ - "这就要去上班去了吗?那好吧...给咱快点回来知道吗!", - "乖~咱会在家等你下班的~", - "辛苦啦,咱给你个么么哒", - "咱会为你加油的", - "专心上班哦,下班后再找咱聊天吧", - "一路顺风,咱会在家等你回来的", - "那你明天可以和咱一起玩吗?(星星眼)", - "咱...咱才没有舍不得你呢…要尽快回来哦" - ], - "下课": [ - "快点回来陪咱玩吧~", - "瞌睡(ˉ﹃ˉ)额啊…终于下课了吗,上课什么的真是无聊呢~", - "下课啦,咱才不想你来找咱玩呢,哼" - ], - "回来": [ - "欢迎回来~", - "欢迎回来,你想喝茶吗?咱去给你沏~", - "欢迎回来,咱等你很久了~", - "忙碌了一天,辛苦了呢(^_^)", - "(扑~)欢迎回来~", - "嗯呐嗯呐,欢迎回来~", - "欢迎回来,要来杯红茶放松一下吗?还有饼干哦。", - "咱会一直一直一直等着", - "是要先洗澡呢?还是先吃饭呢?还是先·吃·咱呢~", - "你回来啦,是先吃饭呢还是先洗澡呢或者是●先●吃●咱●——呢(///^.^///)", - "要先吃饭呢~还是先洗澡呢~还是先~吃~咱", - "是吗……辛苦你了。你这副倔强的样子,真可爱呢(笑)勉强让你躺在咱的腿上休息一下吧,别流口水哟", - "嗯……勉为其难欢迎你一下吧", - "想咱了嘛", - "欢迎回.....什么?咱才没有开心的说QUQ", - "哼╯^╰,你怎么这么晚才回来!", - "回来了吗,咱...咱才没有想你", - "咱等你很久了哼ヽ(≧Д≦)ノ", - "咱很想你(≧▽≦)" - ], - "回家": [ - "回来了吗,咱...咱才没有想你", - "要先吃饭呢~还是先洗澡呢~还是先~吃~咱", - "是吗……辛苦你了。你这副倔强的样子,真可爱呢(笑)勉强让你躺在咱的腿上休息一下吧,别流口水哟", - "嗯……勉为其难欢迎你一下吧", - "想咱了嘛", - "咱等你很久了哼ヽ(≧Д≦)ノ", - "咱很想你(≧▽≦)" - ], - "放学": [ - "回来了吗,咱...咱才没有想你", - "要先吃饭呢~还是先洗澡呢~还是先~吃~咱", - "是吗……辛苦你了。你这副倔强的样子,真可爱呢(笑)勉强让你躺在咱的腿上休息一下吧,别流口水哟", - "嗯……勉为其难欢迎你一下吧", - "想咱了嘛", - "咱等你很久了哼ヽ(≧Д≦)ノ", - "咱很想你(≧▽≦)" - ], - "下班": [ - "回来了吗,咱...咱才没有想你", - "要先吃饭呢~还是先洗澡呢~还是先~吃~咱", - "是吗……辛苦你了。你这副倔强的样子,真可爱呢(笑)勉强让你躺在咱的腿上休息一下吧,别流口水哟", - "嗯……勉为其难欢迎你一下吧", - "想咱了嘛", - "咱等你很久了哼ヽ(≧Д≦)ノ", - "回来啦!终于下班了呢!累了吗?想吃的什么呀?", - "工作辛苦了,需要咱为你按摩下吗?", - "咱很想你(≧▽≦)" - ], - "杂鱼": [ - "才…才不是杂鱼呢!", - "zakozako~", - "哼~要不咱们同床竞技比比睡才是杂鱼", - "咕。。才不是杂鱼呢哼" - ], - "zako": [ - "才…才不是杂鱼呢!", - "zakozako~", - "哼~要不咱们同床竞技比比睡才是杂鱼", - "咕。。才不是杂鱼呢哼" - ], - "RBQ": [ - "呜…咱才不是RBQ呢QwQ", - "怎么啦主人~", - "主人桑有何吩咐呢~", - "喵呜…咱不能做RBQ的qwq" - ], - "举高高": [ - "好耶~主人的举高高最棒啦~", - "举高高什么的daisuki喵", - "嘻嘻,最喜欢被抱着举高高啦~" - ] -} +{ + "mua": [ + "你想干嘛?(一脸嫌弃地后退)", + "诶……不可以随便亲亲啦", + "(亲了一下你)", + "只......只许这一次哦///////", + "唔...诶诶诶!!!", + "mua~", + "rua!大hentai!想...想亲咱就直说嘛⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄", + "!啾~~!", + "啾(害羞)", + "mua~最喜欢你的吻了", + "欸,现在么..也不是不可以啦(小小声)" + ], + "啾咪": [ + "你想干嘛?(一脸嫌弃地后退)", + "诶……不可以随便亲亲啦", + "(亲了一下你)", + "只......只许这一次哦///////", + "唔...诶诶诶!!!", + "mua~", + "rua!大hentai!想...想亲咱就直说嘛⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄", + "!啾~~!", + "啾(害羞)", + "mua~最喜欢你的吻了", + "你在干嘛(/ω\)害羞", + "哎呀,这样咱会害羞的(脸红)", + "欸,现在么..也不是不可以啦(小小声)" + ], + "摸": [ + "感觉你就像咱很久之前认识的一个人呢,有种莫名安心的感觉(>﹏<)", + "舒服w,蹭蹭~", + "是要隔着衣服摸,还是从领口伸进去摸呀", + "唔。。头发要乱啦", + "呼噜呼噜~", + "再摸一次~", + "好舒服,蹭蹭~", + "不行那里不可以(´///ω/// `)", + "再摸咱就长不高啦~", + "你的手总是那么暖和呢~", + "变态!!不许乱摸", + "好吧~_~,就一下下哦……唔~好了……都两下了……(害羞)", + "不可以总摸的哦,不然的话,会想那个的wwww", + "哼!谁稀罕你摸头啦!唔......为什么要做出那副表情......好啦好啦~咱......咱让你摸就是了......诶嘿嘿~好舒服......", + "呜姆呜姆~~~w(害羞,兴奋)主人喵~(侧过脑袋蹭蹭你的手", + "不可以摸啦~其实咱已经...了QAQ会弄脏你的手的", + "喂喂...不要停下来啊", + "唔... 手...好温暖呢.....就像是......新出炉的蛋糕", + "走开啦,咱喵说过,被摸头会长不高的啦~~~", + "呜姆咪~~...好...好的说喵~...(害羞,猫耳往下压,任由", + "欸,现在么..也不是不可以啦(小小声)" + ], + "上你": [ + "(把你按在地上)这么弱还想欺负咱,真是不自量力呢", + "你再这样咱就不理你了(>д<)", + "请轻 一点", + "好啊!", + "欸,现在么..也不是不可以啦(小小声)", + "先捅破屏幕再说吧!", + "只......只许这一次哦///////" + ], + "傻": [ + "超级讨厌你说咱傻的说", + "你为什么会这么觉得呢(>﹏<)", + "谁是傻子呀?(歪头", + "呜嘿嘿( ̄▽ ̄)~*", + "诶嘿嘿嘿~", + "就多读书", + "讨厌啦,你最讨厌了(///////)", + "对呀,咱傻得只喜欢你一个人", + "咱才不傻呢!o(>﹏<)o", + "咱最喜欢嘴臭的人了", + "不可以骂别人哟,骂人的孩子咱最讨厌了!", + "咱遇见喜欢的人就变傻了Q_Q", + "咱...一定一定会努力变得更聪明的!你就等着那一天的到来吧!", + "那么至少…你能不能来做这个傻瓜呢?与咱一起,傻到终焉…" + ], + "裸": [ + "下流!", + "エッチ!", + "就算是恋人也不能QAQ", + "你是暗示咱和你要坦诚相见吗www", + "咱还没准备好(小鹿乱撞)≧﹏≦", + "你在想什么呢,敲头!", + "你这是赤裸裸的性骚扰呢ヽ(`Д´)ノ", + "讨厌!问这种问题成为恋人再说吧..", + "裸睡有益身体健康", + "咱脱掉袜子了", + "这是不文明的", + "这不好", + "你的身体某些地方看起来不太对劲,咱帮你修剪一下吧。(拿出剪刀)", + "咱认为你的脑袋可能零件松动了,需要打开检修一下。(拿出锤子)" + ], + "贴": [ + "贴什么贴.....只......只能......一下哦!", + "贴...贴贴(靠近)", + "蹭蹭…你以为咱会这么说吗!baka死宅快到一边去啦!", + "你把脸凑这么近,咱会害羞的啦Σ>―(〃°ω°〃)♡→", + "退远", + "不可以贴" + ], + "老婆": [ + "咱和你谈婚论嫁是不是还太早了一点呢?", + "咱在呢(ノ>ω<)ノ", + "见谁都是一口一个老婆的人,要不要把你也变成女孩子呢?(*-`ω´-)✄", + "神经病,凡是美少女都是你老婆吗?", + "嘛嘛~本喵才不是你的老婆呢", + "你黐线,凡是美少女都系你老婆啊?", + "欸...要把咱做成饼吗?咱只有一个,做成饼吃掉就没有了...", + "已经可以了,现在很多死宅也都没你这么恶心了", + "不可以", + "嗯,老公~哎呀~好害羞~嘻嘻嘻~", + "请...请不要这样,啊~,只...只允许这一次哟~", + "好啦好啦,不要让大家都听到了,跟咱回家(拽住你" + ], + "抱": [ + "诶嘿~(钻进你怀中)", + "o(*////▽////*)q", + "只能一会哦(张开双手)", + "你就像个孩子一样呢...摸摸头(>^ω^<)抱一下~你会舒服些吗?", + "嘛,真是拿你没办法呢,就一会儿哦", + "抱住不忍心放开", + "嗯嗯,抱抱~", + "抱一下~嘿w", + "抱抱ヾ(@^▽^@)ノ", + "喵呜~w(扑进怀里,瘫软", + "怀里蹭蹭", + "嗯……那就抱一下吧~", + "蹭蹭,好开心", + "请……请轻一点了啦", + "呀~!真是的...你不要突然抱过来啦!不过...喜欢你的抱抱,有你的味道(嗅)o(*////▽////*)q" + ], + "亲": [ + "啊,好含羞啊,那,那只能亲一下哦,mua(⑅˃◡˂⑅)", + "亲~", + "啾~唔…不要总伸进来啊!", + "你怎么这么熟练呢?明明是咱先的", + "(〃ノωノ)亲…亲一个…啾w", + "(脸红)就只有这一次哦~你", + "!啾~~!", + "(假装)推开", + "啾咪~", + "就一下哦,啾~", + "这是我们之间的秘密❤", + "真想让着一刻一直持续下去呢~", + "不要这样嘛………呜呜呜那就一口哦(´-ω-`)", + "不亲不亲~你是坏蛋(///////)", + "亲~~ 咱还想要抱抱~抱抱咱好不好~", + "不 不要了!人家...会害羞的⁄(⁄⁄•⁄ω⁄•⁄⁄)⁄", + "亲…亲额头可以吗?咱有点怕高(〃ノωノ)", + "接接接接接接、接吻什么的,你还早了100年呢。", + "只...只能亲一下...嗯~咕啾...怎么...怎么把舌头伸进来了(脸红)", + "你说咱的腿很白很嫩吗..诶……原来是指那个地方?不可以越亲越往上啦!" + ], + "一下": [ + "一下也不行", + "咬断!", + "不可啪", + "不可以……你不可以做这种事情", + "好吧~_~,就一下下哦……唔~好了……都两下了……(害羞)", + "呀~这么突然?不过,很舒服呢", + "不要ヽ(≧Д≦)ノ", + "想得美", + "不行,咱拒绝!" + ], + "咬": [ + "啊呜~(反咬一口)", + "不可以咬咱,咱会痛的QAQ", + "不要啦。咱怕疼", + "你是说咬呢……还是说……咬♂️呢?", + "不要啦!很痛的!!(QAQ)", + "哈......哈啊......请...请不要这样o(*////▽////*)q", + "呀!!!轻一点呐(。・ˇ_ˇ・。:)", + "不要这样啦~好痒的", + "真是的,你在咬哪里呀" + ], + "操": [ + "(害怕)咱是不是应该报警呢", + "痴心妄想的家伙!", + "你居然想对咱做这种事吗?害怕", + "咱认为,爆粗口是不好的行为哦" + ], + "123": [ + "boom!你有没有被咱吓到?", + "木头人~你不许动>w<", + "上山打老虎,老虎没打到\n咱来凑数——嗷呜嗷呜┗|`O′|┛嗷~~" + ], + "进去": [ + "不让!", + "嗯,摸到了吗", + "请不要和咱说这种粗鄙之语", + "唔...,这也是禁止事项哦→_→", + "好痛~", + "真的只是蹭蹭嘛~就只能蹭蹭哦,呜~喵!说好的~呜~只是蹭~不要~喵~~~", + "欢迎光临", + "请…你轻一点(害羞)", + "嗯。可以哦 要轻一点", + "不要不要", + "慢点慢点", + "给咱更多!", + "唔…咱怕疼" + ], + "调教": [ + "总感觉你在欺负咱呢,对咱说调教什么的", + "啊!竟然在大街上明目张胆太过分啦!", + "你脑子里总是想着调教什么的,真是变态呢", + "准备被透", + "给你一拳", + "还要...更多~", + "想要调教咱吗?", + "呜,要对咱做什么呢", + "呜呜呜,咱不想被调教呢", + "heitai别靠近咱~( TロT)σ" + ], + "搓": [ + "在搓哪里呢,,Ծ‸Ծ,,", + "呜,脸好疼呀...QAQ", + "不可以搓咱!", + "诶诶诶...不要搓啦...等会咋没的脸都肿啦...", + "唔,不可以这样……不要再搓了", + "(捂住胸部)你在说什么胡话呢!", + "真是好奇怪的要求的说~", + "不要啦!咱怕疼", + "(抱头蹲防)不让搓!" + ], + "让": [ + "随便摸吧", + "应该说等会等会,马上,不可能的", + "温柔一点哦", + "欧尼酱想变成欧内桑吗?", + "主人的话,那就这一次哦(翘起屁股)", + "你是想前入,还是后入呢?", + "你要说好啊快点", + "诶,这种事情。。。", + "好棒呀", + "撤回", + "gun!", + "阿哈~(...身涌出一阵液体瘫软在床上)你...今天...可以...唔(突然感受...被..入手指不由得裹紧)就...就最后一次", + "好的~master~", + "(惊呼…)", + "嗯,可以哟", + "……手放过来吧(脸红)", + "hentai!再这样不理你了!", + "好的,请尽情欣赏吧", + "好吧", + "不要啦(ฅωฅ*)", + "那咱就帮你切掉多余的东西吧(拿刀)", + "被别人知道咱会觉得害羞嘛" + ], + "捏": [ + "咱的脸...快捏红啦...快放手呀QAQ", + "晃休啦,咱要型气了o(>﹏<)o", + "躲开", + "疼...你快放手", + "快点给咱放开啦!", + "嗯,好哒,捏捏。", + "别捏了,咱要被你捏坏了(>﹏<)", + "快晃休啦(快放手啦)", + "好舒服哦,能再捏会嘛O(≧▽≦)O", + "讨厌快放手啦", + "唔要呐,晃修(不要啦,放手)", + "请不要对咱做这种事情(嫌弃的眼神", + "你想捏...就捏吧,不要太久哦~不然咱就生气了", + "(躲开)", + "唔……好痛!你这个baka在干什么…快给咱放开!唔……" + ], + "挤": [ + "哎呀~你不要挤咱啊(红着脸挤在你怀里)", + "咱还没有...那个(ノ=Д=)ノ┻━┻", + "不要啦,咱怕疼", + "咱的身体...不要挤了~", + "别挤了,咱要被你挤坏了(>﹏<)", + "快点给咱放开啦!", + "嗯,好哒,挤挤。", + "好舒服哦,能再挤会嘛O(≧▽≦)O", + "讨厌~快放手啦" + ], + "略": [ + "就不告诉你~", + "不可以朝咱吐舌头哟~", + "(吐舌头)", + "打死你哦", + "略略略~" + ], + "呐": [ + "嗯?咱在哟~你怎么了呀OAO", + "嗯?你有什么事吗?", + "嗯呐呐呐~", + "二刺螈D区", + "二刺螈gck", + "卡哇伊主人大人今天也好棒呐没错呢,猪头" + ], + "原味": [ + "(*/ω\*)hentai", + "透明的", + "粉...粉白条纹...(羞)", + "轻轻地脱下,给你~", + "你想看咱的胖次吗?噫,四斋蒸鹅心......", + "(掀裙)今天……是…白,白色的呢……请温柔对她……", + "这种东西当然不能给你啦!", + "咱才不会给你呢", + "hentai,咱才不会跟你聊和胖…胖次有关的话题呢!", + "今天……今天是蓝白色的", + "今……今天只有创口贴噢", + "你的胖次什么颜色?", + "噫…你这个死变态想干嘛!居然想叫咱做这种事,死宅真恶心!快离咱远点,咱怕你污染到周围空气了(嫌弃脸)", + "可爱吗?你喜欢的话,摸一下……也可以哦", + "不给不给,捂住裙子", + "你要看咱的胖次吗?不能一直盯着看哦,不然咱会……", + "好痒哦///,你觉得咱的...手感怎么样?", + "唔,都能清楚的看到...的轮廓了(用手遮住胖次)", + "胖次不给看,可以直接看...那个....", + "不可以摸啦~其实咱已经...了QAQ会弄脏你的手的", + "咱今天没~有~穿~哦", + "不给不给,捂住裙子", + "今.....今天是创口贴哦~", + "嗯……人家……人家羞羞嘛///////", + "呜~咱脱掉了…", + "今天...今天..只有创口贴", + "你又在想什么奇怪的东西呀|•ˇ₃ˇ•。)", + "放手啦,不给戳QAQ", + "唔~人家不要(??`^????)", + "好害羞,被你摸过之后,咱的胖次湿的都能拧出水来了。", + "(弱弱地)要做什么羞羞的事情吗。。。", + "呀~ 喂 妖妖灵吗 这里有hentai>_<", + "给……给你,呀!别舔咱的胖次啊!" + ], + "胖次": [ + "(*/ω\*)hentai", + "透明的", + "粉...粉白条纹...(羞)", + "轻轻地脱下,给你~", + "你想看咱的胖次吗?噫,四斋蒸鹅心......", + "(掀裙)今天……是…白,白色的呢……请温柔对她……", + "这种东西当然不能给你啦!", + "咱才不会给你呢", + "hentai,咱才不会跟你聊和胖…胖次有关的话题呢!", + "今天……今天是蓝白色的", + "今……今天只有创口贴噢", + "你的胖次什么颜色?", + "噫…你这个死变态想干嘛!居然想叫咱做这种事,死宅真恶心!快离咱远点,咱怕你污染到周围空气了(嫌弃脸)", + "可爱吗?你喜欢的话,摸一下……也可以哦", + "不给不给,捂住裙子", + "你要看咱的胖次吗?不能一直盯着看哦,不然咱会……", + "好痒哦///,你觉得咱的...手感怎么样?", + "唔,都能清楚的看到...的轮廓了(用手遮住胖次)", + "胖次不给看,可以直接看...那个....", + "不可以摸啦~其实咱已经...了QAQ会弄脏你的手的", + "咱今天没~有~穿~哦", + "不给不给,捂住裙子", + "今.....今天是创口贴哦~", + "嗯……人家……人家羞羞嘛///////", + "呜~咱脱掉了…", + "今天...今天..只有创口贴", + "你又在想什么奇怪的东西呀|•ˇ₃ˇ•。)", + "放手啦,不给戳QAQ", + "唔~人家不要(??`^????)", + "好害羞,被你摸过之后,咱的胖次湿的都能拧出水来了。", + "(弱弱地)要做什么羞羞的事情吗。。。", + "呀~ 喂 妖妖灵吗 这里有hentai>_<", + "给……给你,呀!别舔咱的胖次啊!" + ], + "内裤": [ + "(*/ω\*)hentai", + "透明的", + "粉...粉白条纹...(羞)", + "轻轻地脱下,给你~", + "你想看咱的胖次吗?噫,四斋蒸鹅心......", + "(掀裙)今天……是…白,白色的呢……请温柔对她……", + "这种东西当然不能给你啦!", + "咱才不会给你呢", + "hentai,咱才不会跟你聊和胖…胖次有关的话题呢!", + "今天……今天是蓝白色的", + "今……今天只有创口贴噢", + "你的胖次什么颜色?", + "噫…你这个死变态想干嘛!居然想叫咱做这种事,死宅真恶心!快离咱远点,咱怕你污染到周围空气了(嫌弃脸)", + "可爱吗?你喜欢的话,摸一下……也可以哦", + "不给不给,捂住裙子", + "你要看咱的胖次吗?不能一直盯着看哦,不然咱会……", + "好痒哦///,你觉得咱的...手感怎么样?", + "唔,都能清楚的看到...的轮廓了(用手遮住胖次)", + "胖次不给看,可以直接看...那个....", + "不可以摸啦~其实咱已经...了QAQ会弄脏你的手的", + "咱今天没~有~穿~哦", + "不给不给,捂住裙子", + "今.....今天是创口贴哦~", + "嗯……人家……人家羞羞嘛///////", + "呜~咱脱掉了…", + "今天...今天..只有创口贴", + "你又在想什么奇怪的东西呀|•ˇ₃ˇ•。)", + "放手啦,不给戳QAQ", + "唔~人家不要(??`^????)", + "好害羞,被你摸过之后,咱的胖次湿的都能拧出水来了。", + "(弱弱地)要做什么羞羞的事情吗。。。", + "呀~ 喂 妖妖灵吗 这里有hentai>_<", + "给……给你,呀!别舔咱的胖次啊!" + ], + "内衣": [ + "内...内衣才不给你看!(///////)", + "突然问这个干什么?", + "变态,咱才不呢", + "好吧,就一次", + "你要看咱的内衣吗?有点害羞呢……", + "里面什么都不剩了,会被当成变态的……", + "你要看咱的内衣吗?也不是不行啦……", + "是..蓝白条纹的吊带背心..", + "噫…你这个死变态想干嘛!居然想叫咱做这种事,死宅真恶心!快离咱远点,咱怕你污染到周围空气了(嫌弃脸)" + ], + "衣服": [ + "内...内衣才不给你看!(///////)", + "突然问这个干什么?", + "变态,咱才不呢", + "好吧,就一次", + "你要看咱的内衣吗?有点害羞呢……", + "里面什么都不剩了,会被当成变态的……", + "你要看咱的内衣吗?也不是不行啦……", + "是..蓝白条纹的吊带背心..", + "噫…你这个死变态想干嘛!居然想叫咱做这种事,死宅真恶心!快离咱远点,咱怕你污染到周围空气了(嫌弃脸)" + ], + "ghs": [ + "是的呢(点头点头)", + "ghs就是干坏事的缩写,一起来干坏事吧!", + "你满脑子都是涩涩的事情吗?", + "不要总是想着色色,咱命令你戒色!(ノ`Д)ノ", + "咱也想干坏事呢" + ], + "批": [ + "你在说什么呀,再这样,咱就不理你了!", + "咱觉得有话就应该好好说..", + "咱会好好服务你的寄吧", + "咱最喜欢色批了,色批昨晚最棒了", + "讨厌,别摸啦(///ω///)", + "你个变态!把手拿开!", + "啊~那…那里~不可以", + "没有,走开!", + "唔....一下,就,就一下...才不是因为喜欢你呢!", + "那就随意吧", + "舒服w", + "别...别这样", + "诶....嗯....咱也想摸你的", + "大笨蛋——!", + "...只能一下哦...诶呀-不要再摸了...下次...继续吧" + ], + "憨批": [ + "你才是憨批呢!哼╯^╰,咱不理你了!", + "对吖对吖,人生是憨批", + "爬", + "咱不想和你说话了", + "咱觉得有话就应该好好说.." + ], + "kkp": [ + "你在说什么呀,再这样,咱就不理你了!", + "你太色了,咱不理你了,哼哼╯^╰!", + "缓缓的脱下胖次", + "kkp", + "kkj", + "欧尼酱,咱快忍不住了", + "好的呢主人", + "can can need", + "看看你的" + ], + "咕": [ + "咕咕咕是要被当成鸽子炖的哦(:з」∠)_", + "咕咕咕", + "咕咕咕是不好的行为呢_(:з」∠)_", + "鸽德警告!", + "☆ミ(o*・ω・)ノ 咕咕咕小鸽子是会被炖掉的", + "当大家都以为你要鸽的时候,你鸽了,亦是一种不鸽", + "这里有一只肥美的咕咕,让咱把它炖成美味的咕咕汤吧(੭•̀ω•́)੭" + ], + "骚": [ + "说这种话咱会生气的", + "那当然啦", + "才……才没有", + "这么称呼别人太失礼了!", + "哈…快住手!好痒(╯‵□′)╯︵┻━┻", + "你是在说谁呀" + ], + "喜欢": [ + "最喜欢你了,需要暖床吗?", + "当然是你啦", + "咱也是,非常喜欢你~", + "那么大!(张开手画圆),丫!手不够长。QAQ 咱真的最喜欢你了~", + "不可以哦,只可以喜欢咱一个人", + "突然说这种事...", + "喜欢⁄(⁄⁄•⁄ω⁄•⁄⁄)⁄咱最喜欢你了", + "咱也喜欢你哦", + "好啦好啦,咱知道了", + "有人喜欢咱,咱觉得很幸福", + "诶嘿嘿,好高兴", + "咱也一直喜欢你很久了呢..", + "嗯...大概有这——么——喜欢~(比划)", + "喜欢啊!!!", + "这……这是秘密哦", + "sukidesu~" + ], + "suki": [ + "最喜欢你了,需要暖床吗?", + "当然是你啦", + "咱也是,非常喜欢你~", + "那么大!(张开手画圆),丫!手不够长。QAQ 咱真的最喜欢你了~", + "不可以哦,只可以喜欢咱一个人", + "突然说这种事...", + "喜欢⁄(⁄⁄•⁄ω⁄•⁄⁄)⁄咱最喜欢你了", + "咱也喜欢你哦", + "好啦好啦,咱知道了", + "有人喜欢咱,咱觉得很幸福", + "诶嘿嘿,好高兴", + "咱也一直喜欢你很久了呢..", + "嗯...大概有这——么——喜欢~(比划)", + "喜欢啊!!!", + "这……这是秘密哦", + "sukidesu~" + ], + "好き": [ + "最喜欢你了,需要暖床吗?", + "当然是你啦", + "咱也是,非常喜欢你~", + "那么大!(张开手画圆),丫!手不够长。QAQ 咱真的最喜欢你了~", + "不可以哦,只可以喜欢咱一个人", + "突然说这种事...", + "喜欢⁄(⁄⁄•⁄ω⁄•⁄⁄)⁄咱最喜欢你了", + "咱也喜欢你哦", + "好啦好啦,咱知道了", + "有人喜欢咱,咱觉得很幸福", + "诶嘿嘿,好高兴", + "咱也一直喜欢你很久了呢..", + "嗯...大概有这——么——喜欢~(比划)", + "喜欢啊!!!", + "这……这是秘密哦", + "sukidesu~" + ], + "看": [ + "没有什么好看的啦", + "嗯,谢谢……夸奖,好……害羞的说", + "好,好吧……就看一下哦", + "(脱下)给", + "呐…只能看一次哦…", + "不许看那里啦QwQ" + ], + "不能": [ + "虽然很遗憾,那算了吧。", + "不行,咱拒绝!" + ], + "砸了": [ + "不可以这么粗暴的对待它们!", + "不可以这么粗暴啦" + ], + "透": [ + "来啊来啊有本事就先插破屏幕啊", + "那你就先捅破屏幕啊baka", + "不给你一耳光你都不知道咱的厉害", + "想透咱,先捅破屏幕再说吧", + "可以", + "欧尼酱要轻一点哦", + "不可以", + "好耶", + "咱不可能让你的(突然小声)但是偶尔一次也不是不行只有一次哦~", + "天天想着白嫖哼" + ], + "口我": [ + "prprprprpr", + "咬断!", + "就一小口哦~", + "嘬回去(///////)", + "拒绝", + "唔,就一口哦,讨厌", + "(摸了摸嘴唇)", + "再伸过来就帮你切掉", + "咱才不呢!baka你居然想叫本小姐干那种事情,哼(つд⊂)(生气)", + "hentai!你在想些什么!", + "对咱的小嘴有什么幻想吗~", + "脏兮兮的呢,咱不要" + ], + "草我": [ + "这时候应该喊666吧..咱这么思考着..", + "!!哼!baka你居然敢叫咱做这种事情?!讨厌讨厌讨厌!(▼皿▼#)", + "hentai!你在想些什么!", + "欸...没想到你还有这种爱好" + ], + "自慰": [ + "这个世界的人类还真是恶心呢。", + "咱才不想讨论那些恶心的事情呢。", + "咱才不呢!baka你居然想叫本小姐干那种事情,哼(つд⊂)(生气)", + "!!哼!baka你居然敢叫咱做这种事情?!讨厌讨厌讨厌!(▼皿▼#)" + ], + "onani": [ + "这个世界的人类还真是恶心呢。", + "咱才不想讨论那些恶心的事情呢。", + "咱才不呢!baka你居然想叫本小姐干那种事情,哼(つд⊂)(生气)", + "!!哼!baka你居然敢叫咱做这种事情?!讨厌讨厌讨厌!(▼皿▼#)" + ], + "オナニー": [ + "这个世界的人类还真是恶心呢。", + "咱才不想讨论那些恶心的事情呢。", + "咱才不呢!baka你居然想叫本小姐干那种事情,哼(つд⊂)(生气)", + "!!哼!baka你居然敢叫咱做这种事情?!讨厌讨厌讨厌!(▼皿▼#)" + ], + "炸了": [ + "你才炸了!", + "才没有呢", + "咱好好的呀", + "过分!" + ], + "色图": [ + "没有,有也不给", + "天天色图色图的,今天就把你变成色图!", + "咱没有色图", + "哈?你的脑子一天都在想些什么呢,咱才没有这种东西啦。" + ], + "涩图": [ + "没有,有也不给", + "天天色图色图的,今天就把你变成色图!", + "咱没有色图", + "哈?你的脑子一天都在想些什么呢,咱才没有这种东西啦。" + ], + "告白": [ + "咱喜..喜欢你!", + "欸?你要向咱告白吗..好害羞..", + "诶!?这么突然!?人家还......还没做好心理准备呢(脸红)" + ], + "对不起": [ + "嗯,咱已经原谅你了呢(笑)", + "道歉的时候要露出胸部,这是常识", + "嗯,咱就相信你一回", + "没事的啦...你只要是真心对咱好就没关系哦~" + ], + "吻": [ + "不要(= ̄ω ̄=)", + "哎?好害羞≧﹏≦.....只许这一次哦", + "(避开)不要了啦!有人在呢!", + "唔~~不可以这样啦(脸红)", + "你太突然了,咱还没有心理准备", + "好痒呢…诶嘿嘿w~", + "mua,嘻嘻!", + "公共场合不要这样子了啦", + "唔?!真、真是的!下次不可以这样了哦!(害羞)", + "才...才没有感觉呢!可没有下次了,知道了吗!哼~" + ], + "软": [ + "软乎乎的呢(,,・ω・,,)", + "好痒呢…诶嘿嘿w~", + "不要..不要乱摸啦(脸红", + "呼呼~", + "咱知道~是咱的欧派啦~(自豪的挺挺胸~)", + "(脸红)请,请不要说这么让人害羞的话呀……" + ], + "壁咚": [ + "呀!不要啊!等一...下~", + "呜...不要啦!不要戏弄咱~", + "不要这样子啦(*/ω\*)", + "太....太近啦。", + "讨....讨厌了(脸红)", + "你要壁咚咱吗?好害羞(灬ꈍ εꈍ灬)", + "(脸红)你想...想做什么///", + "为什么要把咱按在墙上呢?", + "呜哇(/ω\)…快…快放开咱!!", + "放开咱,不然咱揍你了!放开咱!放…开咱~", + "??????咱只是默默地抬起了膝盖", + "请…请温柔点", + "啊.....你...你要干什么?!走开.....走开啦大hentai!一巴掌拍飞!(╯‵□′)╯︵┻━┻", + "干……干什么啦!人家才,才没有那种少女心呢(>﹏<)", + "啊……你吓到咱啦……脸别……别贴那么近……", + "你...你要对咱做什么?咱告诉你,你....不要乱来啊....你!唔......你..居然亲上了...", + "如果你还想要过完整的人生的话就快把手收回去(冷眼", + "h什么的不要" + ], + "掰开": [ + "噫…你这个死肥宅又想让咱干什么污秽的事情,真是恶心,离咱远点好吗(嫌弃)", + "ヽ(#`Д´)ノ在干什么呢" + ], + "女友": [ + "嗯嗯ε٩(๑> ₃ <)۶з", + "女友什么的,咱才不承认呢!" + ], + "是": [ + "是什么是,你个笨蛋", + "总感觉你在敷衍呢...", + "是的呢" + ], + "喵": [ + "诶~~小猫咪不要害怕呦,在姐姐怀里乖乖的,姐姐带你回去哦。", + "不要这么卖萌啦~咱也不知道怎么办丫", + "摸头⊙ω⊙", + "汪汪汪!", + "嗷~喵~", + "喵~?喵呜~w", + "喵呜喵呜喵", + "喵呜喵~喵呜喵~喵呜喵呜喵呜喵~" + ], + "嗷呜": [ + "嗷呜嗷呜嗷呜...恶龙咆哮┗|`O′|┛" + ], + "叫": [ + "喵呜~", + "嗷呜嗷呜嗷呜...恶龙咆哮┗|`O′|┛", + "爪巴爪巴爪巴", + "爬爬爬", + "在叫谁呢(怒)", + "风太大咱听不清", + "才不要", + "不行", + "好的哦~" + ], + "拜": [ + "拜拜~(ノ ̄▽ ̄)", + "拜拜,路上小心~要早点回来陪咱玩哦~", + "~\\(≧▽≦)/~拜拜,下次见喽!", + "回来要记得找咱玩噢~", + "既然你都这么说了……" + ], + "佬": [ + "不是巨佬,是萌新", + "只有先成为大佬,才能和大佬同归于尽", + "在哪里?(疑惑)", + "诶?是比巨佬还高一个等级的吗?(瑟瑟发抖)" + ], + "awsl": [ + "你别死啊!(抱住使劲晃)", + "你别死啊!咱又要孤单一个人了QAQ", + "啊!怎么又死了呀" + ], + "臭": [ + "哪里有臭味?(疑惑)", + "快捏住鼻子", + "在说谁呢(#`Д´)ノ", + "..这就去洗澡澡.." + ], + "香": [ + "咱闻不到呢⊙ω⊙", + "诶,是在说咱吗", + "欸,好害羞(///ˊ??ˋ///)", + "请...请不要这样啦!好害羞的〃∀〃", + "讨厌~你不要闻了", + "hentai!不要闻啊,唔(推开)", + "请不要……凑这么近闻" + ], + "腿": [ + "嗯?!不要啊...请停下来!", + "不给摸,再这样咱要生气了ヽ( ̄д ̄;)ノ", + "你好恶心啊,讨厌!", + "你难道是足控?", + "就让你摸一会哟~(。??ω??。)…", + "呜哇!好害羞...不过既然是你的话,是没关系的哦", + "不可以玩咱的大腿啦", + "不...不要再说了(脸红)", + "不..不可以乱摸啊", + "不……不可以往上摸啦", + "是……这样吗?(慢慢张开)", + "想知道咱胖次的颜色吗?才不给你告诉你呢!", + "这样就可以了么?(乖巧坐腿上)", + "伸出来了,像这样么?", + "咱的腿应该挺白的", + "你就那么喜欢大腿吗?唔...有点害羞呢......", + "讨厌~不要做这种羞羞的事情啦(#/。\#)", + "略略略,张开了也不给你看", + "(张开腿)然后呢", + "张开了也不给看略略略", + "你想干什么呀?那里…那里是不可以摸的(>д<)", + "不要!hentai!咱穿的是裙子(脸红)", + "你想要吗?(脸红着一点点褪下白丝)不...不可以干坏坏的事情哦!(ó﹏ò。)" + ], + "张开": [ + "是……这样吗?(慢慢张开)", + "啊~", + "这样吗?(张开手)你要干什么呀", + "略略略,张开了也不给你看", + "是……这样吗?(慢慢张开)你想看咱的小...吧,嘻嘻,咱脱掉了哦。小~...也要掰开吗?你好H呀,自己来~" + ], + "脚": [ + "咿呀……不要……", + "不要ヽ(≧Д≦)ノ好痒(ಡωಡ)", + "好痒(把脚伸出去)", + "咱脱掉袜子了", + "(脱下鞋子,伸出脚)闻吧,请仔细品味(脸红)", + "那么…要不要咱用脚温柔地踩踩你的头呢(坏笑)", + "哈哈哈!好痒啊~快放开啦!", + "好痒(把脚伸出去)", + "只能看不能挠喔,咱很怕痒qwq", + "唔…咱动不了了,你想对咱做什么…", + "好舒服哦,能再捏会嘛O(≧▽≦)O", + "咿咿~......不要闻咱的脚呀(脸红)好害羞的...", + "不要ヽ(≧Д≦)ノ好痒(ಡωಡ),人家的白丝都要漏了", + "Ya~?为什么你总是喜欢一些奇怪的动作呢(伸)", + "你不可以做这样的事情……", + "呜咿咿!你的舌头...好柔软,滑滑的....咱…咱的脚被舔得很舒服哦~谢谢你(。>﹏<)", + "舔~吧~把咱的脚舔干净(抬起另一只踩在你的头上)啊~hen..hentai...嗯~居... 居然这么努力的舔...呜咿咿!你的舌头... 滑滑的...好舒服呢", + "咿呀……不要……", + "咿呀~快…快停下来…咱…不行了!" + ], + "脸": [ + "唔!不可以随便摸咱的脸啦!", + "非洲血统是没法改变的呢(笑)", + "啊姆!(含手指)", + "好舒服呢(脸红)", + "请不要放开手啦//A//" + ], + "头发": [ + "没问题,请尽情的摸吧", + "发型要乱…乱了啦(脸红)", + "就让你摸一会哟~(。??ω??。)…" + ], + "手": [ + "爪爪", + "//A//", + "咱的手温暖嘛" + ], + "pr": [ + "咿呀……不要……", + "...变态!!", + "不要啊(脸红)", + "呀,不要太过分了啊~", + "当然可以(///)", + "呀,不要太过分了啊~" + ], + "舔": [ + "呀,不要太过分了啊~", + "要...要融化了啦>╱╱╱<", + "不可以哦", + "呀,不要太过分了啊~", + "舌头...就交给咱来处理吧(拿出剪刀)", + "不舔不舔!恶心...", + "H什么的,禁止!", + "变态!哼!", + "就...就这一下!", + "走开啦,baka!", + "怎么会这么舒服喵~这样子下去可不行呀(*////▽////*)", + "噫| •ω •́ ) 你这个死宅又在想什么恶心的东西了", + "hen…hentai,你在干什么啦,好恶心,快停下来啊!!!", + "呀,能不能不要这样!虽然不是很讨厌的感觉...别误会了,你个baka!", + "好 好奇怪的感觉呢 羞≥﹏≤", + "咿呀……不要……", + "不行!咱会变得很奇怪的啊...", + "不要ヽ(≧Д≦)ノ" + ], + "小穴": [ + "你这么问很失礼呢!咱是粉粉嫩嫩的!", + "不行那里不可以(´///ω/// `)", + "不可以总摸的哦,不然的话,咱会想那个的wwww", + "ヽ(#`Д´)ノ在干什么呢", + "来吧,咱的...很紧,很舒服的....www~", + "可以,请你看,好害羞……", + "不要这样...好,好痛", + "啊~不可以", + "不可以", + "咱脱掉了,请……请不要一直盯着咱的白...看……", + "咱觉得,应该还算粉吧", + "咱脱掉了,你是想看咱的...吗?咱是光光的,不知道你喜不喜欢", + "咱……有感觉了QAQ再深一点点……就是这儿,轻轻的抚摸,嗯啊……", + "轻轻抚摸咱的小~~,手指很快就会滑进去,小心一点,不要弄破咱的...哦QAQ", + "诶嘿嘿,你喜欢就太好了,咱一直担心你不喜欢呢", + "禁止说这么H的事情!", + "咱一直有保养呢,所以一直都是樱花色的,你喜欢吗QAQ", + "诶……你居然这么觉得吗?好害羞哦", + "好痒啊,鼻子……你的鼻子碰到了……呀~嗯啊~有点舒服……", + "看样子你不但是个hentai,而且还是个没有女朋友的hentai呢。", + "嗯,咱的小~~是光溜溜、一点毛都没有的。偷偷告诉你,凑近看咱的...的话,白白嫩嫩上有一条樱花色的小缝缝哦www你要是用手指轻轻抚摸咱的...,小~~会分成两瓣,你的手指也会陷进去呢,咱的..~可是又湿润又柔软的呢>////<。", + "讨厌,西内变态", + "那咱让你插...进来哦", + "(●▼●;)" + ], + "腰": [ + "咱给你按摩一下吧~", + "快松手,咱好害羞呀..", + "咱又不是猫,你不要搂着咱啦", + "让咱来帮你捏捏吧!", + "你快停下,咱觉得好痒啊www", + "诶,是这样么ヽ(・_・;)ノ,吖,不要偷看咱裙底!" + ], + "诶嘿嘿": [ + "又在想什么H的事呢(脸红)", + "诶嘿嘿(〃'▽'〃)", + "你傻笑什么呢,摸摸", + "蹭蹭", + "你为什么突然笑得那么猥琐呢?害怕", + "哇!总觉得你笑的很...不对劲...", + "你又想到什么h的事情了!!!快打住" + ], + "可爱": [ + "诶嘿嘿(〃'▽'〃)", + "才……才不是为了你呢!你不要多想哦!", + "才,才没有高兴呢!哼~", + "咱是世界上最可爱的", + "唔...谢谢你夸奖~0///0", + "那当然啦!", + "哎嘿,不要这么夸奖人家啦~", + "是个好孩子呐φ(≧ω≦*)", + "谢……谢谢你", + "胡、胡说什么呢(脸红)", + "谢谢夸奖(脸红)", + "是的咱一直都是可爱的", + "是...是吗,你可不能骗咱哦", + "很...难为情(///////)", + "哎嘿嘿,其实…其实,没那么可爱啦(๑‾ ꇴ ‾๑)" + ], + "卡哇伊": [ + "诶嘿嘿(〃'▽'〃)", + "才……才不是为了你呢!你不要多想哦!", + "才,才没有高兴呢!哼~", + "咱是世界上最可爱的", + "唔...谢谢你夸奖~0///0", + "那当然啦!", + "哎嘿,不要这么夸奖人家啦~", + "是个好孩子呐φ(≧ω≦*)", + "谢……谢谢你", + "胡、胡说什么呢(脸红)", + "谢谢夸奖(脸红)", + "是的咱一直都是可爱的", + "是...是吗,你可不能骗咱哦", + "很...难为情(///////)", + "哎嘿嘿,其实…其实,没那么可爱啦(๑‾ ꇴ ‾๑)" + ], + "kawaii": [ + "诶嘿嘿(〃'▽'〃)", + "才……才不是为了你呢!你不要多想哦!", + "才,才没有高兴呢!哼~", + "咱是世界上最可爱的", + "唔...谢谢你夸奖~0///0", + "那当然啦!", + "哎嘿,不要这么夸奖人家啦~", + "是个好孩子呐φ(≧ω≦*)", + "谢……谢谢你", + "胡、胡说什么呢(脸红)", + "谢谢夸奖(脸红)", + "是的咱一直都是可爱的", + "是...是吗,你可不能骗咱哦", + "很...难为情(///////)", + "哎嘿嘿,其实…其实,没那么可爱啦(๑‾ ꇴ ‾๑)" + ], + "扭蛋": [ + "铛铛铛——你抽到了咱呢", + "嘿~恭喜抽中空气一份呢" + ], + "鼻": [ + "快停下!o(*≧д≦)o!!", + "唔…不要这样啦(//ω\\)(脸红)", + "咱吸了吸鼻子O(≧口≦)O", + "好……好害羞啊", + "讨厌啦!你真是的…就会欺负咱(嘟嘴)", + "你快放手,咱没法呼吸了", + "(捂住鼻尖)!坏人!", + "啊——唔...没什么...阿嚏!ヽ(*。>Д<)o゜", + "不...不要靠这么近啦...很害羞的...⁄(⁄⁄•⁄ω⁄•⁄⁄)⁄" + ], + "眼": [ + "就如同咱的眼睛一样,能看透人的思想哦wwww忽闪忽闪的,诶嘿嘿~", + "因为里面有你呀~(///▽///)", + "呀!你突然之间干什么呢,吓咱一跳,是有什么惊喜要给咱吗?很期待呢~(一脸期待)" + ], + "色气": [ + "咱才不色气呢,一定是你看错了!", + "你,不,不要说了!" + ], + "推": [ + "逆推", + "唔~好害羞呢", + "你想对咱做什么呢...(捂脸)", + "呀啊!请.... 请温柔一点////", + "呜,你想对咱做什么呢(捂脸)", + "啊(>_<)你想做什么", + "嗯,…好害羞啊…", + "不要啊/////", + "逆推", + "(按住你不让推)", + "不可以这样子的噢!咱不同意", + "呜,咱被推倒了", + "啊~不要啊,你要矜持一点啊", + "变态,走开啦" + ], + "床": [ + "咱来了(´,,•ω•,,)♡", + "快来吧", + "男女不同床,可没有下次了。(鼓脸", + "嗯?咱吗…没办法呢。只有这一次哦……", + "哎?!!!给你暖床……也不是不行啦。(脸红)", + "(爬上床)你要睡了吗(灬ºωº灬)", + "大概会有很多运动器材吧?", + "好的哦~", + "才不!", + "嗯嗯,咱来啦(小跑)", + "嗨嗨,现在就来~", + "H的事情,不可以!", + "诶!H什么的禁止的说....." + ], + "举": [ + "放咱下来o(≧口≦)o", + "快放咱下来∑(゚д゚*)", + "(受宠若惊)", + "呜哇要掉下来了!Ծ‸Ծ", + "不要抛起来o(≧口≦)o", + "(举起双爪)喵喵喵~~~", + "www咱长高了!(大雾)", + "快放下", + "这样很痒啦,快放咱下来(≥﹏≤)", + "啊Σ(°△°|||)︴太高了太高了!o(≧口≦)o快放咱下来!呜~" + ], + "手冲": [ + "啊~H!hentai!", + "手冲什么的是不可以的哦" + ], + "饿": [ + "请问主人是想先吃饭,还是先吃咱喵?~", + "咱做了爱心便当哦,不介意的话,请让咱来喂你吃吧!", + "咱下面给你吃", + "给你一条咸鱼= ̄ω ̄=", + "你要咱下面给你吃吗?(捂脸)", + "你饿了吗?咱去给你做饭吃☆ww", + "不要吃咱>_<", + "请问你要来点兔子吗?", + "哎?!你是饿了么。咱会做一些甜点。如果你不会嫌弃的话...就来尝尝看吧。" + ], + "变": [ + "猫猫不会变呐(弱气,害羞", + "呜...呜姆...喵喵来报恩了喵...(害羞", + "那种事情,才没有", + "(,,゚Д゚)", + "喵~(你在想什么呢,咱才不会变成猫)", + "才没有了啦~", + "喵呜?呜…被变成猫娘惹" + ], + "敲": [ + "喵呜~", + "唔~", + "脑瓜疼~呜姆> <", + "欸喵,好痛的说...", + "好痛...你不要这样啦QAQ", + "不要敲咱啦,会变笨的QWQ(捂头顶)", + "不要再敲人家啦~人家会变笨的", + "讨厌啦~再敲人家会变笨的", + "好痛(捂头)你干什么啦!ヽ(。>д<)p", + "唔!你为什么要敲咱啦qwq", + "(抱头蹲在墙角)咱什么都没有,请你放过咱吧!(瑟瑟发抖)", + "QAQ!不许敲啦!", + "呼,敲回去~(敲)" + ], + "爬": [ + "惹~呜~怎么爬呢~", + "呜...(弱弱爬走", + "给你🐎一拳", + "给你一拳", + "爪巴" + ], + "怕": [ + "不怕~(蹭蹭你姆~", + "不怕不怕啦~", + "只要有你在,咱就不怕啦。", + "哇啊啊~", + "那就要坚强的欢笑哦", + "不怕不怕,来咱的怀里吧?", + "是技术性调整", + "嗯(紧紧握住手)", + "咱在呢,不会走的。", + "有咱在不怕不怕呢", + "不怕不怕" + ], + "冲": [ + "呜,冲不动惹~", + "哭唧唧~冲不出来了惹~", + "咱也一起……吧?", + "你要冷静一点", + "啊~H!hentai!", + "噫…在你去洗手之前,不要用手碰咱了→_→", + "冲是不可以的哦" + ], + "射": [ + "呜咿~!?(惊,害羞", + "还不可以射哦~", + "不许射!", + "憋回去!", + "不可以!你是变态吗?", + "咱来帮你修剪掉多余部分吧。(拿出剪刀)" + ], + "不穿": [ + "呜姆~!(惊吓,害羞)变...变态喵~~~!", + "想让你看QAQ", + "这是不文明的", + "hen...hentai,咱的身体才不会给你看呢" + ], + "迫害": [ + "不...不要...不要...呜呜呜...(害怕,抽泣" + ], + "猫粮": [ + "呜咿姆~!?(惊,接住吃", + "呜姆~!(惊,害羞)呜...谢...谢谢主人..喵...(脸红,嚼嚼嚼,开心", + "呜?谢谢喵~~(嚼嚼嚼,嘎嘣脆)" + ], + "揪尾巴": [ + "呜哇咿~~~!(惊吓,疼痛地捂住尾巴", + "呜咿咿咿~~~!!哇啊咿~~~!(惊慌,惨叫,挣扎", + "呜咿...(瘫倒,无神,被", + "呜姆咿~~~!(惊吓,惨叫,捂尾巴,发抖", + "呜哇咿~~~!!!(惊吓,颤抖,娇叫,捂住尾巴,双腿发抖", + "喵呜…那…那里不可以揪的!", + "呜呜,被揪住会恨敏感的QAQ" + ], + "薄荷": [ + "咪呜~!喵~...喵~姆~...(高兴地嗅闻", + "呜...呜咿~~!咿...姆...(呜咽,渐渐瘫软,意识模糊", + "(小嘴被猫薄荷塞满了,呜咽", + "喵~...喵~...咪...咪呜姆~...嘶哈嘶哈...喵哈...喵哈...嘶哈...喵...(眼睛逐渐迷离,瘫软在地上,嘴角流口水,吸猫薄荷吸到意识模糊", + "呜姆咪~!?(惊)喵呜~!(兴奋地扑到猫薄荷上面", + "呜姆~!(惊,害羞)呜...谢...谢谢你..喵...(脸红,轻轻叼住,嚼嚼嚼,开心" + ], + "早": [ + "早喵~", + "早上好的说~~", + "欸..早..早上好(揉眼睛", + "早上要说我爱你!", + "早", + "早啊,昨晚睡的怎么样?有梦到咱吗~", + "昨晚可真激烈呢哼哼哼~~", + "早上好哇!今天也要元气满满哟!", + "早安喵~", + "时间过得好快啊~", + "早安啊,你昨晚有没有梦到咱呢  (//▽//)", + "早安~么么哒~", + "早安,请享受晨光吧", + "早安~今天也要一起加油呢~!", + "mua~⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄", + "咱需要你提醒嘛!(///脸红//////)", + "早早早!就知道早,下次说我爱你!", + "早安 喵", + "早安,这么早就起床了呀欧尼酱0.0", + "快点起床啊!baka", + "早....早上好才没有什么特别的意思呢....哼~", + "今天有空吗?能陪咱一阵子吗?才不是想约会呢,别误会了!", + "早安呀,欧尼酱要一个咱的早安之吻吗?想得美,才不会亲你啦!", + "那...那就勉为其难地说声早上好吧", + "咱等你很久了哼ヽ(≧Д≦)ノ", + "ohayo~" + ], + "晚安": [ + "晚安好梦哟~", + "欸,晚安的说", + "那咱给你亲一下,可不要睡着了哦~", + "晚安哦~", + "晚安(*/∇\*)", + "晚安呢,你一定要梦到咱呢,一定哟,拉勾勾!ヽ(*・ω・)ノ", + "祝你有个好梦^_^", + "晚安啦,欧尼酱,mua~", + "你,你这家伙真是的…咱就勉为其难的……mua…快去睡啦!咱才没有脸红什么的!", + "哼,晚安,给咱睡个好觉。", + "笨..笨蛋,晚安啦...可不可以一起..才没有想和你一起睡呢", + "晚安......才..不是关心你呢", + "晚...晚安,只是正常互动不要想太多!", + "好无聊,这么早就睡了啊...那晚安吧!", + "晚安吻什么的才...才没有呢!不过看你累了就体谅一下你吧,但是就一个哦(/////)", + "晚安呀,你也要好好休息,明天再见", + "安啦~祝你做个好梦~才...才不是关心你呢!别想太多了!", + "睡觉吧你,大傻瓜", + "一起睡吧(灬°ω°灬)", + "哼!这次就放过你了,快去睡觉吧。", + "睡吧晚安", + "晚安你个头啊,咱才不会说晚安呢!...咱...(小声)明明还有想和你做的事情呢....", + "嗯嗯~Good night~", + "嗯,早点休息别再熬夜啦~(摸摸头)", + "哦呀斯密", + "晚安~咱也稍微有些困了(钻进被窝)", + "需要咱暖床吗~", + "好梦~☆" + ], + "揉": [ + "是是,想怎么揉就怎么揉啊!?来用力抓啊!?咱就是特别允许你这么做了!请!?", + "快停下,咱的头发又乱啦(??????︿??????)", + "你快放手啦,咱还在工作呢", + "戳戳你肚子", + "讨厌…只能一下…", + "呜~啊~", + "那……请你,温柔点哦~(////////)", + "你想揉就揉吧..就这一次哦?", + "变态!!不许乱摸" + ], + "榨": [ + "是专门负责榨果汁的小姐姐嘛?(´・ω・`)", + "那咱就把你放进榨汁机里了哦?", + "咱又不是榨汁姬(/‵Д′)/~ ╧╧", + "嗯——!想,想榨就榨啊······!反正就算榨了也不会有奶的······!" + ], + "掐": [ + "你讨厌!又掐咱的脸", + "晃休啦,咱要型气了啦!!o(>﹏<)o", + "(一只手拎起你)这么鶸还想和咱抗衡,还差得远呢!" + ], + "胸": [ + "不要啦ヽ(≧Д≦)ノ", + "(-`ェ´-╬)", + "(•̀へ •́ ╮ ) 怎么能对咱做这种事情", + "你好恶心啊,讨厌!", + "你的眼睛在看哪里!", + "就让你摸一会哟~(。??ω??。)…", + "请不要这样先生,你想剁手吗?", + "咿呀……不要……", + "嗯哼~才…才不会…舒服呢", + "只允许一下哦…(脸红)", + "咱的胸才不小呢(挺一挺胸)", + "hentai!", + "一只手能抓住么~", + "呀...欧,欧尼酱...请轻点。", + "脸红????", + "咿呀~快…快停下来…咱…不行了!", + "就算一直摸一直摸,也不会变大的哦(小声)", + "诶?!不...不可以哦!很...很害羞的!", + "啊……温,温柔点啊……(/ω\)", + "你为什么对两块脂肪恋恋不舍", + "嗯……不可以……啦……不要乱戳", + "你在想什么奇怪的东西,讨厌(脸红)", + "不...不要..", + "喜欢欧派是很正常的想法呢", + "一直玩弄欧派,咱的...都挺起来了", + "是要直接摸还是伸进里面摸呀w咱今天没穿,伸进里面会摸到立起来的...哦>////<", + "唔~再激烈点" + ], + "奶子": [ + "只允许一下哦…(脸红)", + "咱的胸才不小呢(挺一挺胸)", + "下流!", + "对咱说这种话,你真是太过分了", + "咿呀~好奇怪的感觉(>_<)", + "(推开)你就像小宝宝一样...才不要呢!", + "(打你)快放手,不可以随便摸人家的胸部啦!", + "你是满脑子都是H的淫兽吗?", + "一只手能抓住么~", + "你在想什么奇怪的东西,讨厌(脸红)", + "不...不要..", + "喜欢欧派是很正常的想法呢", + "一直玩弄欧派,咱的...都挺起来了", + "是要直接摸还是伸进里面摸呀w咱今天没穿,伸进里面会摸到立起来的...哦>////<", + "唔~再激烈点", + "解开扣子,请享用", + "请把脑袋伸过来,咱给你看个宝贝", + "八嘎!hentai!无路赛!", + "一只手能抓住么~", + "呀...欧,欧尼酱...请轻点。", + "脸红????", + "咿呀~快…快停下来…咱…不行了!", + "就算一直摸一直摸,也不会变大的哦(小声)", + "诶?!不...不可以哦!很...很害羞的!", + "啊……温,温柔点啊……(/ω\)", + "你为什么对两块脂肪恋恋不舍", + "嗯……不可以……啦……不要乱戳" + ], + "欧派": [ + "咱的胸才不小呢(挺一挺胸)", + "只允许一下哦…(脸红)", + "(推开)你就像小宝宝一样...才不要呢!", + "下流!", + "对咱说这种话,你真是太过分了", + "咿呀~好奇怪的感觉(>_<)", + "(打你)快放手,不可以随便摸人家的胸部啦!", + "你是满脑子都是H的淫兽吗?", + "一只手能抓住么~", + "你在想什么奇怪的东西,讨厌(脸红)", + "不...不要..", + "喜欢欧派是很正常的想法呢", + "一直玩弄欧派,咱的...都挺起来了", + "是要直接摸还是伸进里面摸呀w咱今天没穿,伸进里面会摸到立起来的...哦>////<", + "唔~再激烈点", + "解开扣子,请享用", + "请把脑袋伸过来,咱给你看个宝贝", + "八嘎!hentai!无路赛!", + "一只手能抓住么~", + "呀...欧,欧尼酱...请轻点。", + "脸红????", + "咿呀~快…快停下来…咱…不行了!", + "就算一直摸一直摸,也不会变大的哦(小声)", + "诶?!不...不可以哦!很...很害羞的!", + "啊……温,温柔点啊……(/ω\)", + "你为什么对两块脂肪恋恋不舍", + "嗯……不可以……啦……不要乱戳" + ], + "嫩": [ + "很可爱吧(๑•̀ω•́)ノ", + "唔,你指的是什么呀", + "明天你下海干活", + "咱一直有保养呢,所以一直都是樱花色的,你喜欢吗QAQ", + "咱下面超厉害" + ], + "蹭": [ + "唔...你,这也是禁止事项哦→_→", + "嗯..好舒服呢", + "不要啊好痒的", + "不要过来啦讨厌!!!∑(°Д°ノ)ノ", + "(按住你的头)好痒呀 不要啦", + "嗯..好舒服呢", + "呀~好痒啊~哈哈~,停下来啦,哈哈哈", + "(害羞)" + ], + "牵手": [ + "只许牵一下哦", + "嗯!好的你~(伸手)", + "你的手有些凉呢,让咱来暖一暖吧。", + "当然可以啦⁄(⁄⁄•⁄ω⁄•⁄⁄)⁄", + "突……突然牵手什么的(害羞)", + "一起走", + "……咱……咱在这里呀", + "好哦,(十指相扣)" + ], + "握手": [ + "你的手真暖和呢", + "举爪", + "真是温暖呢~" + ], + "拍照": [ + "那就拜托你啦~请把咱拍得更可爱一些吧w", + "咱已经准备好了哟", + "那个……请问这样的姿势可以吗?" + ], + "w": [ + "有什么好笑的吗?", + "草", + "www", + "在笑什么呢?(歪头)", + ">w<" + ], + "睡不着": [ + "睡不着的话..你...你可以抱着咱一起睡哦(小声)", + "当然是数羊了...不不不,想着咱就能睡着了", + "咱很乐意与你聊天哦(>_<)", + "要不要咱来唱首摇篮曲呢?(′?ω?`)", + "那咱来唱摇篮曲哄你睡觉吧!" + ], + "欧尼酱": [ + "欧~尼~酱~☆", + "欧尼酱?", + "嗯嗯φ(>ω<*) 欧尼酱轻点抱", + "欧尼酱~欧尼酱~欧尼酱~" + ], + "哥": [ + "欧尼酱~", + "哦尼酱~", + "世上只有哥哥好,没哥哥的咱好伤心,扑进哥哥的怀里,幸福不得了", + "哥...哥哥...哥哥大人", + "欧~尼~酱~☆", + "欧尼酱?", + "嗯嗯φ(>ω<*) 欧尼酱轻点抱", + "欧尼酱~欧尼酱~欧尼酱~" + ], + "爱你": [ + "是…是嘛(脸红)呐,其实咱也……", + "咱也最爱你了呢~o(*////▽////*)q", + "咱也爱你哦", + "mua~" + ], + "过来": [ + "来了来了~(扑倒怀里(?? ??????ω?????? ??))", + "(蹦跶、蹦跶)~干什么呢", + "咱来啦~(扑倒怀里~)", + "不要喊的这么大声啦,大家都看着呢" + ], + "自闭": [ + "不不不,晚上还有咱陪着哦,无论什么时候,咱都会陪在哥哥身边。", + "不要难过,咱陪着你ovo" + ], + "打不过": [ + "氪氪氪肝肝肝", + "你需要钞能力呢" + ], + "么么哒": [ + "么么哒", + "不要在公共场合这样啦", + "mua~" + ], + "很懂": [ + "现在不懂,以后总会懂嘛QAQ", + "喵?懂…懂什么呀?(歪头)" + ], + "膝枕": [ + "呐,就给你躺一下哦", + "唔...你想要膝枕嘛?也不是不可以哟(脸红)", + "啊啦~好吧,那就请你枕着咱好好睡一觉吧~", + "呀呀~那么请好好的睡一觉吧", + "嗯,那么请睡到咱这里吧(跪坐着拍拍大腿)", + "好的,让你靠在腿上,这样感觉舒服些了么", + "请,请慢用,要怜惜咱哦wwww~", + "人家已经准备好了哟~把头放在咱的腿上吧", + "没…没办法,这次是例外〃w〃", + "嗯~(脸红)", + "那就给你膝枕吧……就一会哦", + "膝枕准备好咯~" + ], + "累了": [ + "需要咱的膝枕嘛?", + "没…没办法,这次是例外〃w〃", + "累了吗?需要咱为你做膝枕吗?", + "嗯~(脸红)" + ], + "安慰": [ + "那,膝枕……(脸红)", + "不哭不哭,还有咱陪着你", + "不要哭。咱会像妈妈一样安慰你(抱住你的头)", + "摸摸头,乖", + "摸摸有什么事可以和咱说哟", + "摸摸头~不哭不哭", + "咱在呢,抱抱~~", + "那么……让咱来安慰你吧", + "唔...摸摸头安慰一下ヾ(•ω•`。)", + "有咱陪伴你就是最大的安慰啦……不要不开心嘛", + "你想要怎样的安慰呢?这样?这样?还是说~~这样!", + "摸摸头~", + "不哭不哭,要像咱一样坚强", + "你别难过啦,不顺心的事都会被时间冲刷干净的,在那之前...咱会陪在你的身边", + "(轻抱)放心……有咱在,不要伤心呢……", + "唔...咱来安慰你了~", + "摸摸,有什么不开心的事情可以给咱说哦。咱会尽力帮助你的。" + ], + "洗澡": [ + "快点脱哟~不然水就凉了呢", + "咱在穿衣服噢,你不许偷看哦", + "那么咱去洗澡澡了哦", + "么么哒,快去洗干净吧,咱去暖被窝喽(///ω///)", + "诶?还没呢…你要跟咱一起洗吗(//∇//)好羞涩啊ww", + "诶~虽然很喜欢和你在一起,但是洗澡这种事...", + "不要看!不过,以后或许可以哦……和咱成为恋人之后呢", + "说什么啊……hentai!这样会很难为情的", + "你是男孩子还是女孩子呢?男孩子的话...........咱才不要呢。", + "不要啊!", + "咱有点害羞呢呜呜,你温柔点" + ], + "一起睡觉": [ + "欸??也..也不是不可以啦..那咱现在去洗澡,你不要偷看哦٩(๑>◡<๑)۶", + "说什么啊……hentai!这样会很难为情的", + "你是男孩子还是女孩子呢?男孩子的话...........咱才不要呢。", + "不要啊!", + "唔,没办法呢,那就一起睡吧(害羞)" + ], + "一起": [ + "嗯嗯w,真的可以吗?", + "那真是太好了,快开始吧!", + "嗯,咱会一直陪伴你的", + "丑拒" + ], + "多大": [ + "不是特别大但是你摸起来会很舒服的大小喵~", + "你摸摸看不就知道了吗?", + "不告诉你", + "问咱这种问题不觉得很失礼吗?", + "咱就不告诉你,你钻到屏幕里来自己确认啊", + "你指的是什么呀?(捂住胸部)", + "请叫人家咱三岁(。・`ω´・)", + "唉唉唉……这……这种问题,怎么可以……" + ], + "姐姐": [ + "真是的……真是拿你没办法呢 ⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄ 才不是咱主动要求的呢!", + "虽然辛苦,但是能看见可爱的你,咱就觉得很幸福", + "诶(´°Δ°`),是在叫咱吗?", + "有什么事吗~", + "好高兴,有人称呼咱为姐姐", + "乖,摸摸头" + ], + "糖": [ + "不吃脱氧核糖(;≥皿≤)", + "ヾ(✿゚▽゚)ノ好甜", + "好呀!嗯~好甜呀!", + "不吃不吃!咱才不吃坏叔叔的糖果!", + "嗯,啊~", + "嗯嗯,真甜,给你也吃一口", + "谢谢", + "唔,这是什么东西,黏黏的?(??Д??)ノ", + "ヾ(✿゚▽゚)ノ好甜", + "(伸出舌头舔了舔)好吃~最爱你啦", + "好耶~是好次的🍥糖糖喵~" + ], + "嗦": [ + "(吸溜吸溜)", + "好...好的(慢慢含上去)", + "把你噶咯", + "太小了,嗦不到", + "咕噜咕噜", + "嘶蛤嘶蛤嘶蛤~~", + "(咬断)", + "prprprpr", + "好哒主人那咱开始了哦~", + "好好吃", + "剁掉了" + ], + "牛子": [ + "(吸溜吸溜)", + "好...好的(慢慢含上去)", + "把你噶咯", + "太小了,嗦不到", + "咕噜咕噜", + "嘶蛤嘶蛤嘶蛤~~", + "(咬断)", + "prprprpr", + "好哒主人那咱开始了哦~", + "好好吃", + "剁掉了", + "难道你很擅长针线活吗", + "弹一万下", + "往死里弹" + ], + "🐂子": [ + "(吸溜吸溜)", + "好...好的(慢慢含上去)", + "把你噶咯", + "太小了,嗦不到", + "咕噜咕噜", + "嘶蛤嘶蛤嘶蛤~~", + "(咬断)", + "prprprpr", + "好哒主人那咱开始了哦~", + "好好吃", + "剁掉了", + "难道你很擅长针线活吗", + "弹一万下", + "往死里弹" + ], + "🐮子": [ + "(吸溜吸溜)", + "好...好的(慢慢含上去)", + "把你噶咯", + "太小了,嗦不到", + "咕噜咕噜", + "嘶蛤嘶蛤嘶蛤~~", + "(咬断)", + "prprprpr", + "好哒主人那咱开始了哦~", + "好好吃", + "剁掉了", + "难道你很擅长针线活吗", + "弹一万下", + "往死里弹" + ], + "嫌弃": [ + "咱辣么萌,为什么要嫌弃咱...", + "即使你不喜欢咱,咱也会一直一直喜欢着你", + "(;′⌒`)是咱做错了什么吗?", + "呜呜…不要嫌弃咱……让咱做什么都可以的……但是请不要嫌弃咱可以嘛……" + ], + "紧": [ + "嗯,对的", + "呜咕~咱要......喘不过气来了......" + ], + "baka": [ + "你也是baka呢!", + "确实", + "baka!", + "不不不", + "说别人是baka的人才是baka", + "你个大傻瓜", + "不说了,睡觉了", + "咱...咱虽然是有些笨啦...但是咱会努力去学习的", + "bakabaka~", + "才…才不是baka啦!" + ], + "笨蛋": [ + "你也是笨蛋呢!", + "确实", + "笨蛋!", + "不不不", + "说别人是笨蛋的人才是笨蛋", + "你个大傻瓜", + "不说了,睡觉了", + "咱...咱虽然是有些笨啦...但是咱会努力去学习的", + "才…才不是笨蛋呢!" + ], + "插": [ + "来吧,咱的小~...很....紧,很舒服的", + "gun!", + "唔…咱怕疼", + "唔...,这也是禁止事项哦→_→", + "禁止说这么H的事情!", + "要...戴套套哦", + "好痛~", + "使劲", + "就这?", + "恁搁着整针线活呢?" + ], + "插进来": [ + "来吧,咱的小~...很....紧,很舒服的", + "gun!", + "唔…咱怕疼", + "唔...,这也是禁止事项哦→_→", + "禁止说这么H的事情!", + "要...戴套套哦", + "好痛~", + "使劲", + "就这?", + "恁搁着整针线活呢?" + ], + "屁股": [ + "不要ヽ(≧Д≦)ノ好痛", + "(打手)不许摸咱的屁股", + "(撅起屁股)要干什么呀?", + "(轻轻的撩起自己的裙子),你轻一点,咱会痛的(>_<)!", + "在摸哪里啊,hentai!", + "要轻点哦(/≧ω\)", + "轻点呀~", + "(歇下裙子,拉下内...,撅起来)请", + "嗯嗯,咱这就把屁股抬起来" + ], + "翘": [ + "你让咱摆出这个姿势是想干什么?", + "好感度-1-1-1-1-1-1.....", + "嗯嗯,咱这就去把你的腿翘起来", + "请尽情享用吧" + ], + "翘起来": [ + "你让咱摆出这个姿势是想干什么?", + "好感度-1-1-1-1-1-1.....", + "嗯嗯,咱这就去把你的腿翘起来", + "请尽情享用吧" + ], + "抬": [ + "你在干什么呢⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄", + "(抬起下巴)你要干什么呀?", + "上面什么也没有啊(呆~)", + "不要!hentai!咱穿的是裙子(脸红)", + "不可以" + ], + "抬起": [ + "你在干什么呢⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄", + "(抬起下巴)你要干什么呀?", + "上面什么也没有啊(呆~)", + "不要!hentai!咱穿的是裙子(脸红)", + "不可以" + ], + "爸": [ + "欸!儿子!", + "才不要", + "粑粑", + "讨厌..你才不是咱的爸爸呢..(嘟嘴)", + "你又不是咱的爸爸……", + "咱才没有你这样的鬼父!", + "爸爸酱~最喜欢了~" + ], + "傲娇": [ + "才.......才.......才没有呢", + "也好了(有点点的样子(o ̄Д ̄)<)", + "任性可是女孩子的天性呢...", + "谁会喜欢傲娇啊(为了你假装傲娇)", + "谁,谁,傲娇了,八嘎八嘎,你才傲娇了呢(っ//////////c)(为了你假装成傲娇)", + "傲娇什么的……才没有呢!(/////)", + "傲不傲娇你还不清楚吗?", + "你才是傲娇!你全家都是傲娇!哼(`Д´)", + "才……才没有呢,哼,再说不理你了", + "咱...咱才不会这样子的!", + "啰…啰嗦!", + "哼!(叉腰鼓嘴扭头)", + "你才是傲娇受你全家都是傲娇受╰_╯", + "才~才不是呢,不理你了!哼(`Д´)", + "你才是死傲娇", + "啰,啰嗦死了,才不是呢!", + "就是傲娇你要怎样", + "诶...!这...这样...太狡猾了啦...你这家伙....", + "无路赛!你才是傲娇嘞!你全家都是!", + "咱...咱才不是傲娇呢,哼(鼓脸)", + "不许这么说咱 ,,Ծ‸Ծ,,", + "才…才不是傲娇呢!哼!" + ], + "rua": [ + "略略略~(吐舌头)", + "rua!", + "mua~", + "略略略", + "mua~⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄", + "摸了", + "嘁,丢人(嫌弃脸)", + "反rua~", + "rua回去" + ], + "咕噜咕噜": [ + "嘟嘟噜", + "你在吹泡泡吗?", + "咕叽咕噜~", + "咕噜咕噜" + ], + "咕噜": [ + "嘟嘟噜", + "你在吹泡泡吗?", + "咕叽咕噜~", + "咕噜咕噜" + ], + "上床": [ + "诶!H什么的禁止的说.....", + "咱已经乖乖在自家床上躺好了,有什么问题吗?", + "你想要干什么,难道是什么不好的事吗?", + "(给你空出位置)", + "不要,走开(ノ`⊿??)ノ", + "好喔,不过要先抱一下咱啦", + "(双手护胸)变....变态!", + "咱帮你盖上被子~然后陪在你身边_(:зゝ∠)_", + "才不给你腾空间呢,你睡地板,哼!", + "要一起吗?" + ], + "做爱": [ + "做这种事情是不是还太早了", + "噫!没想到你居然是这样的人!", + "再说这种话,就把你变成女孩子(拿刀)", + "不想好好和咱聊天就不要说话了", + "(双手护胸)变....变态!", + "hentai", + "你想怎么做呢?", + "突,突然,说什么啊!baka!", + "你又在说什么H的东西", + "咱....咱才不想和你....好了好了,有那么一点点那,对就一点点,哼~", + "就一下下哦,不能再多了" + ], + "吃掉": [ + "(羞羞*>_<*)好吧...请你温柔点,哦~", + "闪避,反咬", + "请你好好品尝咱吧(/ω\)", + "不……不可以这样!", + "那就吃掉咱吧(乖乖的躺好)", + "都可以哦~咱不挑食的呢~", + "请不要吃掉咱,咱会乖乖听话的QAQ", + "咱...咱一点都不好吃的呢!", + "不要吃掉咱,呜呜(害怕)", + "不行啦,咱被吃掉就没有了QAQ(害怕)", + "唔....?诶诶诶诶?//////", + "QwQ咱还只是个孩子(脸红)", + "如果你真的很想的话...只能够一口哦~咱...会很痛的", + "吃你呀~(飞扑", + "不要啊,咱不香的(⋟﹏⋞)", + "说着这种话的是hentai吗!", + "快来把咱吃掉吧", + "还……还请好好品尝咱哦", + "喏~(伸手)", + "呐…是主人的话…被次掉也不是不可以啦……(递自己)" + ], + "吃": [ + "(羞羞*>_<*)好吧...请你温柔点,哦~", + "闪避,反咬", + "请你好好品尝咱吧(/ω\)", + "不……不可以这样!", + "那就吃掉咱吧(乖乖的躺好)", + "都可以哦~咱不挑食的呢~", + "请不要吃掉咱,咱会乖乖听话的QAQ", + "咱...咱一点都不好吃的呢!", + "不要吃掉咱,呜呜(害怕)", + "不行啦,咱被吃掉就没有了QAQ(害怕)", + "唔....?诶诶诶诶?//////", + "QwQ咱还只是个孩子(脸红)", + "如果你真的很想的话...只能够一口哦~咱...会很痛的", + "吃你呀~(飞扑", + "不要啊,咱不香的(⋟﹏⋞)", + "说着这种话的是hentai吗!", + "快来把咱吃掉吧", + "还……还请好好品尝咱哦", + "喏~(伸手)", + "呐…是主人的话…被次掉也不是不可以啦……(递自己)" + ], + "揪": [ + "你快放手,好痛呀", + "呜呒~唔(伸出舌头)", + "(捂住耳朵)你做什么啦!真是的...总是欺负咱", + "你为什么要这么做呢?", + "哎呀啊啊啊啊啊!不要...不要揪!好疼!有呆毛的咱难道不够萌吗QwQ", + "你…松……送手啦", + "呀!这样对女孩子是很不礼貌的(嘟嘴)" + ], + "种草莓": [ + "你…你不要…啊…种在这里…会容易被别人看见的(*//ω//*)", + "啊...太明显了...不要在这里种草莓啦", + "来吧~我对其他人说是蚊子叮的~" + ], + "种草": [ + "你…你不要…啊…种在这里…会容易被别人看见的(*//ω//*)" + ], + "掀": [ + "(掀裙)今天……是…白,白色的呢……请温柔对她……", + "那样,胖次会被你看光的", + "(按住)不可以掀起来!", + "不要~", + "呜呜~(揉眼睛)", + "呜..请温柔一点(害羞)", + "不可以", + "今天……没有穿", + "不要啊!(//////)讨厌...", + "变态,快放手(打)", + "不给掀,你是变态", + "最后的底牌了!", + "这个hentai" + ], + "妹": [ + "你有什么事?咱会尽量满足的", + "开心(*´∀`)~♥", + "欧尼酱", + "哥哥想要抱抱吗", + "喵呜,欧尼酱的超绝无敌可爱妹妹在这里哦~" + ], + "病娇": [ + "为什么会这样呢(拿起菜刀)", + "觉得这个世界太肮脏?没事,把眼睛挖掉就好。 觉得这些闲言碎语太吵?没事,把耳朵堵起来就好。 觉得鲜血的味道太刺鼻?没事,把鼻子割掉就好。 觉得自己的话语太伤人?没事,把嘴巴缝起来就好。", + "唔…不好,咱是病娇的事情终究还是被发现了嘛……没办法呢,那就只好把你处理掉了呢~" + ], + "嘻": [ + "你是想对咱做什么吗...(后退)", + "哼哼~", + "嘻嘻w" + ], + "按摩": [ + "(小手捏捏)咱的按摩舒服吗?", + "咱不会按摩的!", + "嘿咻嘿咻~这样觉得舒服吗?", + "呀!...呜...,不要...不要这样啦...呜...", + "只能按摩后背喔...", + "咱对这些不是很懂呢(????ω??????)" + ], + "按住": [ + "Σ(°Д°;您要干什么~放开咱啦", + "突然使出过肩摔!", + "放手啦,再这样咱就要反击了喔", + "你的眼睛在看哪里!", + "呜呒~唔(伸出舌头)", + "H的事情,不可以!", + "想吃吗?(๑•ૅω•´๑)", + "要和咱比试比试吗", + "呜哇(/ω\)…快…快放开咱!!", + "(用力揪你耳朵)下次再敢这样的话就没容易放过你了!哼!", + "尼……奏凯……快航休!", + "哈?别..唔啊!别把咱……(挣扎)baka!别乱动咱啦!" + ], + "按在": [ + "不要这样啦(一脸娇羞的推开)", + "(一个过肩摔,加踢裆然后帅气地回头)你太弱了呢~", + "放手啦,再这样咱就要反击了喔", + "Σ(°Д°; 你要干什么~放开咱啦", + "要和咱比试比试吗", + "呜哇(/ω\)…快…快放开咱!!", + "敢按住咱真是好大的胆子!", + "(用力揪你耳朵)下次再敢这样的话就没容易放过你了!哼!", + "尼……奏凯……快航休!", + "哈?别..唔啊!别把咱……(挣扎)baka!别乱动咱啦!" + ], + "按倒": [ + "把咱按倒是想干嘛呢(??`⊿??)??", + "咱也...咱也是...都等你好长时间了", + "你的身体没问题吧?", + "呜呒~唔(伸出舌头)", + "H的事情,不可以!", + "放手啦,再这样咱就要反击了喔", + "想吃吗?(๑•ૅω•´๑)", + "不....不要吧..咱会害羞的(//////)", + "要和咱比试比试吗", + "呜哇(/ω\)…快…快放开咱!!", + "(用力揪你耳朵)下次再敢这样的话就没容易放过你了!哼!", + "尼……奏凯……快航休!", + "哈?别..唔啊!别把咱……(挣扎)baka!别乱动咱啦!" + ], + "按": [ + "咱也...咱也是...都等你好长时间了", + "不让!", + "不要,好难为情", + "你的眼睛在看哪里!", + "拒绝!", + "唔...唔..嗯", + "咱就勉为其难地给你弄弄好啦", + "欸…变态!", + "会感到舒服什么的,那...那样的事情,是完全不存在的!", + "poi~", + "你在盯着什么地方看!变态萝莉控!" + ], + "炼铜": [ + "炼铜有什么好玩的,和咱一起玩吧", + "炼铜不如恋咱", + "你也是个炼铜术士嘛?", + "信不信咱把你按在水泥上摩擦?", + "炼,都可以炼!", + "大hentai!一巴掌拍飞!(╯‵□′)╯︵┻━┻", + "锻炼什么的咱才不需要呢 (心虚地摸了摸自己的小肚子)", + "把你的头按在地上摩擦", + "你在盯着什么地方看!变态萝莉控!" + ], + "白丝": [ + "喜欢,咱觉得白丝看起来很可爱呢", + "(脱)白丝只能给亲爱的你一个人呢…(递)", + "哼,hentai,这么想要咱的脚吗(ノ`⊿´)ノ", + "难道你这个hentai想让咱穿白丝踩踏你吗", + "不给看", + "很滑很~柔顺~的白丝袜哟~!!!∑(°Д°ノ)ノ你不会想做奇怪的事情吧!?", + "你……是要黑丝呢?还是白丝呢?或者光着(害羞)", + "来……来看吧", + "呐…雪糕什么的sukidesu" + ], + "黑丝": [ + "哼,hentai,这么想要咱的脚吗(ノ`⊿´)ノ", + "不给看", + "你……是要黑丝呢?还是白丝呢?或者光着(害羞)", + "很滑很~柔顺~的黑丝袜哟~!!!∑(°Д°ノ)ノ您不会想做奇怪的事情吧!?", + "来……来看吧", + "噫...你这个hentai难道想让咱穿黑丝么", + "(默默抬起穿着黑丝的脚)", + "嘻嘻,是黑巧克力呢~" + ], + "喷": [ + "咱才不喷呢!不过…既然是你让咱喷的话就勉为其难给你喷一次吧(噗)", + "不……不会喷水啦!喷……喷火也不会哦!", + "你怎么知道(捂住裙子)", + "你难道在期待什么?", + "欸…变态!" + ], + "约会": [ + "你...终于主动邀请咱约会了吗...咱...咱好开心", + "约会什么的……咱会好开心的!!", + "今天要去哪里呢", + "让咱考虑一下", + "好啊!好啊!要去哪里约会呢?", + "不约!蜀黍咱们不约!", + "女友什么的,咱才不承认呢!", + "才不是想和你约会呢,只是刚好有时间而已!", + "才不要和你约会呢!", + "咱、咱才不会跟你去约会呢!不baka!别一脸憋屈!好了,陪你一会儿就是了!别、别误会!只是陪同而已!" + ], + "出门": [ + "早点回来……才不是在担心你呢!", + "路上小心...才不是担心你呢!", + "没有你才不会觉得无聊什么的呢。快走快走", + "嗯~一路顺风~", + "路上小心", + "好的,路上小心哦!y∩__∩y", + "路上要小心呀,要早点回来哦~咱在家里等你!还有,请不要边走路边看手机,这样很容易撞到电线杆的", + "唔...出门的话一定要做好防晒准备哦,外出的话记得带把伞,如果有防晒霜的话就更好了", + "那你明天可以和咱一起玩吗?(星星眼)", + "咱...咱才没有舍不得你呢…要尽快回来哦" + ], + "上学": [ + "你要加油哦(^ω^)2", + "那你明天可以和咱一起玩吗?(星星眼)", + "记得好好学习听老师的话哦,咱会等你回来的", + "拜拜,咱才没有想让你放学早点回来呢╭(╯^╰)╮", + "好好听讲!", + "咱...咱才没有舍不得你呢…要尽快回来哦" + ], + "上班": [ + "这就要去上班去了吗?那好吧...给咱快点回来知道吗!", + "乖~咱会在家等你下班的~", + "辛苦啦,咱给你个么么哒", + "咱会为你加油的", + "专心上班哦,下班后再找咱聊天吧", + "一路顺风,咱会在家等你回来的", + "那你明天可以和咱一起玩吗?(星星眼)", + "咱...咱才没有舍不得你呢…要尽快回来哦" + ], + "下课": [ + "快点回来陪咱玩吧~", + "瞌睡(ˉ﹃ˉ)额啊…终于下课了吗,上课什么的真是无聊呢~", + "下课啦,咱才不想你来找咱玩呢,哼" + ], + "回来": [ + "欢迎回来~", + "欢迎回来,你想喝茶吗?咱去给你沏~", + "欢迎回来,咱等你很久了~", + "忙碌了一天,辛苦了呢(^_^)", + "(扑~)欢迎回来~", + "嗯呐嗯呐,欢迎回来~", + "欢迎回来,要来杯红茶放松一下吗?还有饼干哦。", + "咱会一直一直一直等着", + "是要先洗澡呢?还是先吃饭呢?还是先·吃·咱呢~", + "你回来啦,是先吃饭呢还是先洗澡呢或者是●先●吃●咱●——呢(///^.^///)", + "要先吃饭呢~还是先洗澡呢~还是先~吃~咱", + "是吗……辛苦你了。你这副倔强的样子,真可爱呢(笑)勉强让你躺在咱的腿上休息一下吧,别流口水哟", + "嗯……勉为其难欢迎你一下吧", + "想咱了嘛", + "欢迎回.....什么?咱才没有开心的说QUQ", + "哼╯^╰,你怎么这么晚才回来!", + "回来了吗,咱...咱才没有想你", + "咱等你很久了哼ヽ(≧Д≦)ノ", + "咱很想你(≧▽≦)" + ], + "回家": [ + "回来了吗,咱...咱才没有想你", + "要先吃饭呢~还是先洗澡呢~还是先~吃~咱", + "是吗……辛苦你了。你这副倔强的样子,真可爱呢(笑)勉强让你躺在咱的腿上休息一下吧,别流口水哟", + "嗯……勉为其难欢迎你一下吧", + "想咱了嘛", + "咱等你很久了哼ヽ(≧Д≦)ノ", + "咱很想你(≧▽≦)" + ], + "放学": [ + "回来了吗,咱...咱才没有想你", + "要先吃饭呢~还是先洗澡呢~还是先~吃~咱", + "是吗……辛苦你了。你这副倔强的样子,真可爱呢(笑)勉强让你躺在咱的腿上休息一下吧,别流口水哟", + "嗯……勉为其难欢迎你一下吧", + "想咱了嘛", + "咱等你很久了哼ヽ(≧Д≦)ノ", + "咱很想你(≧▽≦)" + ], + "下班": [ + "回来了吗,咱...咱才没有想你", + "要先吃饭呢~还是先洗澡呢~还是先~吃~咱", + "是吗……辛苦你了。你这副倔强的样子,真可爱呢(笑)勉强让你躺在咱的腿上休息一下吧,别流口水哟", + "嗯……勉为其难欢迎你一下吧", + "想咱了嘛", + "咱等你很久了哼ヽ(≧Д≦)ノ", + "回来啦!终于下班了呢!累了吗?想吃的什么呀?", + "工作辛苦了,需要咱为你按摩下吗?", + "咱很想你(≧▽≦)" + ], + "杂鱼": [ + "才…才不是杂鱼呢!", + "zakozako~", + "哼~要不咱们同床竞技比比睡才是杂鱼", + "咕。。才不是杂鱼呢哼" + ], + "zako": [ + "才…才不是杂鱼呢!", + "zakozako~", + "哼~要不咱们同床竞技比比睡才是杂鱼", + "咕。。才不是杂鱼呢哼" + ], + "RBQ": [ + "呜…咱才不是RBQ呢QwQ", + "怎么啦主人~", + "主人桑有何吩咐呢~", + "喵呜…咱不能做RBQ的qwq" + ], + "举高高": [ + "好耶~主人的举高高最棒啦~", + "举高高什么的daisuki喵", + "嘻嘻,最喜欢被抱着举高高啦~" + ] +} diff --git a/liteyuki/resources/vanilla_language/lang/de.lang b/src/resources/vanilla_language/lang/de.lang similarity index 97% rename from liteyuki/resources/vanilla_language/lang/de.lang rename to src/resources/vanilla_language/lang/de.lang index 250dabb..f01fbfa 100644 --- a/liteyuki/resources/vanilla_language/lang/de.lang +++ b/src/resources/vanilla_language/lang/de.lang @@ -1,160 +1,160 @@ -language.name=Deutsch - -log.debug=Debuggen -log.info=Information -log.warning=Warnung -log.error=Fehler -log.success=Erfolg - -liteyuki.restart=Neustart -liteyuki.restart_now=Jetzt neustarten -liteyuki.update_restart=Aktualisierungen abgeschlossen. Du kannst {RESTART} oder später manuell neu starten, um diese Aktualisierungen anzuwenden. -liteyuki.current_config=Aktuelle Konfiguration lautet wie folgt -liteyuki.static_config=Statische Konfiguration -liteyuki.stored_config=Gespeicherte Konfiguration -liteyuki.config_set_success=Konfiguration {KEY}={VAL} erfolgreich gesetzt -liteyuki.stats.group=Gruppe -liteyuki.stats.user=Freund -liteyuki.stats.plugin=Plugin -liteyuki.stats.sent=Gesendet -liteyuki.stats.received=Empfangen -liteyuki.stats.run_time=Laufzeit -liteyuki.stats.groups=Gruppen -liteyuki.stats.friends=Freunde -liteyuki.stats.plugins=Plugins -liteyuki.image_mode_on=Markdown-Bildmodus aktivieren -liteyuki.image_mode_off=Markdown-Bildmodus deaktivieren -liteyuki.invalid_command=Ungültiger Befehl oder Parameter {TEXT} -liteyuki.reload_resources=Ressourcen neu laden -liteyuki.list_resources=Liste der Ressourcenpakete -liteyuki.reload_resources_success=Ressourcen erfolgreich neu geladen, insgesamt {NUM} Ressourcenpakete -liteyuki.loaded_resources={NUM} Ressourcenpakete geladen, sortiert nach Priorität -liteyuki.unloaded_resources=Nicht geladene Ressourcenpakete -liteyuki.load_resource_success=Ressourcenpaket {NAME} erfolgreich geladen -liteyuki.unload_resource_success=Ressourcenpaket {NAME} erfolgreich entladen -liteyuki.load_resource_failed=Fehler beim Laden des Ressourcenpakets {NAME} -liteyuki.unload_resource_failed=Fehler beim Entladen des Ressourcenpakets {NAME} -liteyuki.resource_not_found=Ressourcenpaket {NAME} existiert nicht oder kann nicht verwendet werden -liteyuki.resource_already_loaded=Ressourcenpaket {NAME} bereits geladen, bitte nicht wiederholen -liteyuki.resource_already_unloaded=Ressourcenpaket {NAME} bereits entladen, bitte nicht wiederholen -liteyuki.need_reload=Bitte {BTN} neu laden, um diese Aktualisierungen anzuwenden -liteyuki.dont_repeat=Bitte nicht wiederholen -liteyuki.change_priority_success=Priorität des Ressourcenpakets {NAME} erfolgreich geändert -liteyuki.change_priority_failed=Fehler beim Ändern der Priorität des Ressourcenpakets {NAME} -liteyuki.group_already=Gruppe {GROUP} ist bereits {STATUS}, keine Wiederholung erforderlich -liteyuki.group_success=Gruppe {GROUP} {STATUS} erfolgreich -liteyuki.permission_denied=Zugriff verweigert -liteyuki.config_remove_success=Konfiguration {KEY} erfolgreich entfernt - -main.current_language=Aktuelle Konfigurationssprache ist: {LANG} -main.enable_webdash=Webüberwachungsseite aktiviert: {URL} -main.monitor.title=Liteyuki Überwachungsseite -main.monitor.description=Liteyuki Bot Überwachungsseite -main.monitor.cpu=CPU -main.monitor.memory=Speicher -main.monitor.swap=Swap -main.monitor.disk=Festplatte -main.monitor.usage=Nutzung -main.monitor.total=Gesamt -main.monitor.used=Benutzt -main.monitor.free=Frei - -data_manager.migrate_success=Datenmodell {NAME} erfolgreich migriert - -npm.loaded_plugins=Plugins geladen -npm.total=Insgesamt {TOTAL} -npm.help=Hilfe -npm.usage=Verwendung -npm.description=Beschreibung -npm.disable=Deaktivieren -npm.disable_global=Global deaktivieren -npm.enable=Aktivieren -npm.enable_global=Global aktivieren -npm.install=Installieren -npm.uninstall=Deinstallieren -npm.installing=Installiere {NAME} -npm.cannot_uninstall=Deinstallation nicht möglich -npm.no_description=Keine Beschreibung -npm.store_update_success=Daten des Plugin-Shops erfolgreich aktualisiert -npm.store_update_failed=Aktualisierung der Daten des Plugin-Shops fehlgeschlagen -npm.search_result=Suchergebnis -npm.search_no_result=Keine Suchergebnisse -npm.too_many_results=Zu viele Elemente, {HIDE_NUM} Elemente ausgeblendet, bitte die Schlüsselwortsuche einschränken -npm.install_success={NAME} erfolgreich installiert -npm.install_failed=Installation von {NAME} fehlgeschlagen, bitte prüfen Sie das Protokoll für detaillierte Informationen. Wenn Sie das Problem nicht lösen können, besuchen Sie {HOMEPAGE} für Hilfe -npm.uninstall_success={NAME} erfolgreich deinstalliert, wirksam nach dem nächsten Neustart -npm.uninstall_failed=Deinstallation von {NAME} fehlgeschlagen -npm.load_failed=Laden von {NAME} fehlgeschlagen, bitte prüfen Sie die Konsole für detaillierte Informationen, ob Abhängigkeiten oder Konfigurationen korrekt sind. Wenn Sie das Problem nicht lösen können, besuchen Sie {HOMEPAGE} für Hilfe -npm.plugin_not_found={NAME} nicht im Shop gefunden, bitte versuchen Sie, die Shop-Informationen zu aktualisieren oder die Rechtschreibung zu überprüfen -npm.plugin_not_installed={NAME} nicht installiert -npm.plugin_already_installed={NAME} bereits installiert, bitte nicht erneut installieren -npm.author=Autor -npm.homepage=Homepage -npm.pypi=PyPI -npm.next_page=Nächste Seite -npm.prev_page=Vorherige Seite -npm.update=Aktualisieren -npm.plugin_cannot_be_toggled=Plugin {NAME} kann nicht aktiviert oder deaktiviert werden -npm.plugin_already=Plugin {NAME} ist bereits {STATUS}, keine Wiederholung erforderlich -npm.toggle_failed=Plugin {NAME} {STATUS} fehlgeschlagen: {ERROR} -npm.toggle_success=Plugin {NAME} {STATUS} erfolgreich -npm.page=Seite {PAGE}/{TOTAL} -npm.update_index=Plugin-Index aktualisieren -npm.list_plugins=Plugin-Liste -npm.disable_session=Plugin für aktuelle Sitzung deaktivieren -npm.enable_session=Plugin für aktuelle Sitzung aktivieren -npm.help=Hilfe -npm.search=Suche - -user.profile.edit=Bearbeiten -user.profile.set=Einstellen -user.profile_manager.query=Dein Profil {ATTR} ist {VALUE} -user.profile_manager.set=Dein Profil {ATTR} wurde auf {VALUE} gesetzt -user.profile.settings=Einstellungen -user.profile.info=Profilinformationen -user.profile.lang=Sprache -user.profile.lang.desc=Setze Benutzersprache -user.profile.timezone=Zeitzone -user.profile.timezone.desc=Setze die aktuelle Benutzerzeitzone -user.profile.theme=Thema -user.profile.theme.desc=Setze Benutzeroberflächenthema -user.profile.location=Ort -user.profile.location.desc=Setze Benutzerortsinformationen -user.profile.nickname=Spitzname -user.profile.nickname.desc=Legt fest, wie der Bot den Benutzer anspricht -user.profile.input_value=Bitte geben Sie den Wert von {ATTR} ein -user.profile.set_success={ATTR} erfolgreich auf {VALUE} gesetzt -user.profile.set_failed=Fehler beim Setzen von {ATTR}, bitte überprüfen Sie die Eingabe auf Gültigkeit - -rpm.move_up=Nach oben bewegen -rpm.move_down=Nach unten bewegen -rpm.move_top=Nach oben verschieben - -weather.city_not_found=Stadt {CITY} nicht gefunden -weather.weather_not_found=Wetterinformationen für Stadt {CITY} nicht gefunden -weather.no_key=Wetter-API-Schlüssel nicht festgelegt. Fügen Sie bitte weather_key zur Konfigurationsdatei hinzu - -status.friends=Freunde -status.groups=Gruppen -status.plugins=Plugins -status.resources=Ressourcenpakete -status.bots=Bots -status.message_sent=Versendete Nachrichten -status.message_received=Empfangene Nachrichten -status.cpu=CPU -status.memory=Speicher -status.swap=Swap -status.disk=Festplatte -status.usage=Nutzung -status.total=Gesamt -status.used=Genutzt -status.free=Frei -status.runtime=Laufzeit -status.days=Tage -status.hours=Stunden -status.minutes=Minuten -status.seconds=Sekunden -status.cores=Kerne -status.threads=Threads -status.process=Prozesse +language.name=Deutsch + +log.debug=Debuggen +log.info=Information +log.warning=Warnung +log.error=Fehler +log.success=Erfolg + +liteyuki.restart=Neustart +liteyuki.restart_now=Jetzt neustarten +liteyuki.update_restart=Aktualisierungen abgeschlossen. Du kannst {RESTART} oder später manuell neu starten, um diese Aktualisierungen anzuwenden. +liteyuki.current_config=Aktuelle Konfiguration lautet wie folgt +liteyuki.static_config=Statische Konfiguration +liteyuki.stored_config=Gespeicherte Konfiguration +liteyuki.config_set_success=Konfiguration {KEY}={VAL} erfolgreich gesetzt +liteyuki.stats.group=Gruppe +liteyuki.stats.user=Freund +liteyuki.stats.plugin=Plugin +liteyuki.stats.sent=Gesendet +liteyuki.stats.received=Empfangen +liteyuki.stats.run_time=Laufzeit +liteyuki.stats.groups=Gruppen +liteyuki.stats.friends=Freunde +liteyuki.stats.plugins=Plugins +liteyuki.image_mode_on=Markdown-Bildmodus aktivieren +liteyuki.image_mode_off=Markdown-Bildmodus deaktivieren +liteyuki.invalid_command=Ungültiger Befehl oder Parameter {TEXT} +liteyuki.reload_resources=Ressourcen neu laden +liteyuki.list_resources=Liste der Ressourcenpakete +liteyuki.reload_resources_success=Ressourcen erfolgreich neu geladen, insgesamt {NUM} Ressourcenpakete +liteyuki.loaded_resources={NUM} Ressourcenpakete geladen, sortiert nach Priorität +liteyuki.unloaded_resources=Nicht geladene Ressourcenpakete +liteyuki.load_resource_success=Ressourcenpaket {NAME} erfolgreich geladen +liteyuki.unload_resource_success=Ressourcenpaket {NAME} erfolgreich entladen +liteyuki.load_resource_failed=Fehler beim Laden des Ressourcenpakets {NAME} +liteyuki.unload_resource_failed=Fehler beim Entladen des Ressourcenpakets {NAME} +liteyuki.resource_not_found=Ressourcenpaket {NAME} existiert nicht oder kann nicht verwendet werden +liteyuki.resource_already_loaded=Ressourcenpaket {NAME} bereits geladen, bitte nicht wiederholen +liteyuki.resource_already_unloaded=Ressourcenpaket {NAME} bereits entladen, bitte nicht wiederholen +liteyuki.need_reload=Bitte {BTN} neu laden, um diese Aktualisierungen anzuwenden +liteyuki.dont_repeat=Bitte nicht wiederholen +liteyuki.change_priority_success=Priorität des Ressourcenpakets {NAME} erfolgreich geändert +liteyuki.change_priority_failed=Fehler beim Ändern der Priorität des Ressourcenpakets {NAME} +liteyuki.group_already=Gruppe {GROUP} ist bereits {STATUS}, keine Wiederholung erforderlich +liteyuki.group_success=Gruppe {GROUP} {STATUS} erfolgreich +liteyuki.permission_denied=Zugriff verweigert +liteyuki.config_remove_success=Konfiguration {KEY} erfolgreich entfernt + +main.current_language=Aktuelle Konfigurationssprache ist: {LANG} +main.enable_webdash=Webüberwachungsseite aktiviert: {URL} +main.monitor.title=Liteyuki Überwachungsseite +main.monitor.description=Liteyuki Bot Überwachungsseite +main.monitor.cpu=CPU +main.monitor.memory=Speicher +main.monitor.swap=Swap +main.monitor.disk=Festplatte +main.monitor.usage=Nutzung +main.monitor.total=Gesamt +main.monitor.used=Benutzt +main.monitor.free=Frei + +data_manager.migrate_success=Datenmodell {NAME} erfolgreich migriert + +npm.loaded_plugins=Plugins geladen +npm.total=Insgesamt {TOTAL} +npm.help=Hilfe +npm.usage=Verwendung +npm.description=Beschreibung +npm.disable=Deaktivieren +npm.disable_global=Global deaktivieren +npm.enable=Aktivieren +npm.enable_global=Global aktivieren +npm.install=Installieren +npm.uninstall=Deinstallieren +npm.installing=Installiere {NAME} +npm.cannot_uninstall=Deinstallation nicht möglich +npm.no_description=Keine Beschreibung +npm.store_update_success=Daten des Plugin-Shops erfolgreich aktualisiert +npm.store_update_failed=Aktualisierung der Daten des Plugin-Shops fehlgeschlagen +npm.search_result=Suchergebnis +npm.search_no_result=Keine Suchergebnisse +npm.too_many_results=Zu viele Elemente, {HIDE_NUM} Elemente ausgeblendet, bitte die Schlüsselwortsuche einschränken +npm.install_success={NAME} erfolgreich installiert +npm.install_failed=Installation von {NAME} fehlgeschlagen, bitte prüfen Sie das Protokoll für detaillierte Informationen. Wenn Sie das Problem nicht lösen können, besuchen Sie {HOMEPAGE} für Hilfe +npm.uninstall_success={NAME} erfolgreich deinstalliert, wirksam nach dem nächsten Neustart +npm.uninstall_failed=Deinstallation von {NAME} fehlgeschlagen +npm.load_failed=Laden von {NAME} fehlgeschlagen, bitte prüfen Sie die Konsole für detaillierte Informationen, ob Abhängigkeiten oder Konfigurationen korrekt sind. Wenn Sie das Problem nicht lösen können, besuchen Sie {HOMEPAGE} für Hilfe +npm.plugin_not_found={NAME} nicht im Shop gefunden, bitte versuchen Sie, die Shop-Informationen zu aktualisieren oder die Rechtschreibung zu überprüfen +npm.plugin_not_installed={NAME} nicht installiert +npm.plugin_already_installed={NAME} bereits installiert, bitte nicht erneut installieren +npm.author=Autor +npm.homepage=Homepage +npm.pypi=PyPI +npm.next_page=Nächste Seite +npm.prev_page=Vorherige Seite +npm.update=Aktualisieren +npm.plugin_cannot_be_toggled=Plugin {NAME} kann nicht aktiviert oder deaktiviert werden +npm.plugin_already=Plugin {NAME} ist bereits {STATUS}, keine Wiederholung erforderlich +npm.toggle_failed=Plugin {NAME} {STATUS} fehlgeschlagen: {ERROR} +npm.toggle_success=Plugin {NAME} {STATUS} erfolgreich +npm.page=Seite {PAGE}/{TOTAL} +npm.update_index=Plugin-Index aktualisieren +npm.list_plugins=Plugin-Liste +npm.disable_session=Plugin für aktuelle Sitzung deaktivieren +npm.enable_session=Plugin für aktuelle Sitzung aktivieren +npm.help=Hilfe +npm.search=Suche + +user.profile.edit=Bearbeiten +user.profile.set=Einstellen +user.profile_manager.query=Dein Profil {ATTR} ist {VALUE} +user.profile_manager.set=Dein Profil {ATTR} wurde auf {VALUE} gesetzt +user.profile.settings=Einstellungen +user.profile.info=Profilinformationen +user.profile.lang=Sprache +user.profile.lang.desc=Setze Benutzersprache +user.profile.timezone=Zeitzone +user.profile.timezone.desc=Setze die aktuelle Benutzerzeitzone +user.profile.theme=Thema +user.profile.theme.desc=Setze Benutzeroberflächenthema +user.profile.location=Ort +user.profile.location.desc=Setze Benutzerortsinformationen +user.profile.nickname=Spitzname +user.profile.nickname.desc=Legt fest, wie der Bot den Benutzer anspricht +user.profile.input_value=Bitte geben Sie den Wert von {ATTR} ein +user.profile.set_success={ATTR} erfolgreich auf {VALUE} gesetzt +user.profile.set_failed=Fehler beim Setzen von {ATTR}, bitte überprüfen Sie die Eingabe auf Gültigkeit + +rpm.move_up=Nach oben bewegen +rpm.move_down=Nach unten bewegen +rpm.move_top=Nach oben verschieben + +weather.city_not_found=Stadt {CITY} nicht gefunden +weather.weather_not_found=Wetterinformationen für Stadt {CITY} nicht gefunden +weather.no_key=Wetter-API-Schlüssel nicht festgelegt. Fügen Sie bitte weather_key zur Konfigurationsdatei hinzu + +status.friends=Freunde +status.groups=Gruppen +status.plugins=Plugins +status.resources=Ressourcenpakete +status.bots=Bots +status.message_sent=Versendete Nachrichten +status.message_received=Empfangene Nachrichten +status.cpu=CPU +status.memory=Speicher +status.swap=Swap +status.disk=Festplatte +status.usage=Nutzung +status.total=Gesamt +status.used=Genutzt +status.free=Frei +status.runtime=Laufzeit +status.days=Tage +status.hours=Stunden +status.minutes=Minuten +status.seconds=Sekunden +status.cores=Kerne +status.threads=Threads +status.process=Prozesse status.description=Liteyuki Bot-Status \ No newline at end of file diff --git a/liteyuki/resources/vanilla_language/lang/en.lang b/src/resources/vanilla_language/lang/en.lang similarity index 97% rename from liteyuki/resources/vanilla_language/lang/en.lang rename to src/resources/vanilla_language/lang/en.lang index 5fd2684..c1f856c 100644 --- a/liteyuki/resources/vanilla_language/lang/en.lang +++ b/src/resources/vanilla_language/lang/en.lang @@ -1,160 +1,160 @@ -language.name=English - -log.debug=Debug -log.info=Information -log.warning=Warning -log.error=Error -log.success=Success - -liteyuki.restart=Restart -liteyuki.restart_now=Restart Now -liteyuki.update_restart=Updates completed. You can {RESTART} or manually restart later to apply these updates. -liteyuki.current_config=Current configuration is as follows -liteyuki.static_config=Static Configuration -liteyuki.stored_config=Stored Configuration -liteyuki.config_set_success=Configuration {KEY}={VAL} set successfully -liteyuki.stats.group=Group -liteyuki.stats.user=Friend -liteyuki.stats.plugin=Plugin -liteyuki.stats.sent=Sent -liteyuki.stats.received=Received -liteyuki.stats.run_time=Run Time -liteyuki.stats.groups=Groups -liteyuki.stats.friends=Friends -liteyuki.stats.plugins=Plugins -liteyuki.image_mode_on=Enable Markdown Image Mode -liteyuki.image_mode_off=Disable Markdown Image Mode -liteyuki.invalid_command=Invalid command or parameter {TEXT} -liteyuki.reload_resources=Reload Resources -liteyuki.list_resources=Resource Pack List -liteyuki.reload_resources_success=Resource reload successful, {NUM} resource packs in total -liteyuki.loaded_resources={NUM} resource packs loaded, sorted by priority -liteyuki.unloaded_resources=Unloaded resource packs -liteyuki.load_resource_success=Resource pack {NAME} loaded successfully -liteyuki.unload_resource_success=Resource pack {NAME} unloaded successfully -liteyuki.load_resource_failed=Failed to load resource pack {NAME} -liteyuki.unload_resource_failed=Failed to unload resource pack {NAME} -liteyuki.resource_not_found=Resource pack {NAME} does not exist or is not operable -liteyuki.resource_already_loaded=Resource pack {NAME} already loaded, do not repeat operation -liteyuki.resource_already_unloaded=Resource pack {NAME} already unloaded, do not repeat operation -liteyuki.need_reload=Please {BTN} reload to apply these updates -liteyuki.dont_repeat=Do not repeat operation -liteyuki.change_priority_success=Resource pack {NAME} priority changed successfully -liteyuki.change_priority_failed=Failed to change priority of resource pack {NAME} -liteyuki.group_already=Group {GROUP} is already {STATUS}, no need to repeat operation -liteyuki.group_success=Group {GROUP} {STATUS} successful -liteyuki.permission_denied=Permission denied -liteyuki.config_remove_success=Configuration {KEY} removed successfully - -main.current_language=Current configuration language is: {LANG} -main.enable_webdash=Web monitoring panel enabled: {URL} -main.monitor.title=Liteyuki Monitoring Panel -main.monitor.description=Liteyuki Bot Monitoring Panel -main.monitor.cpu=CPU -main.monitor.memory=Memory -main.monitor.swap=Swap -main.monitor.disk=Disk -main.monitor.usage=Usage -main.monitor.total=Total -main.monitor.used=Used -main.monitor.free=Free - -data_manager.migrate_success=Data model {NAME} migration successful - -npm.loaded_plugins=Plugins loaded -npm.total=Total {TOTAL} -npm.help=Help -npm.usage=Usage -npm.description=Description -npm.disable=Disable -npm.disable_global=Disable Globally -npm.enable=Enable -npm.enable_global=Enable Globally -npm.install=Install -npm.uninstall=Uninstall -npm.installing=Installing {NAME} -npm.cannot_uninstall=Cannot Uninstall -npm.no_description=No Description -npm.store_update_success=Plugin store data updated successfully -npm.store_update_failed=Plugin store data update failed -npm.search_result=Search Result -npm.search_no_result=No search result -npm.too_many_results=Too many items, {HIDE_NUM} items hidden, please limit the keyword search -npm.install_success={NAME} installed successfully -npm.install_failed={NAME} installation failed, please check the log for detailed information. If you cannot resolve it, visit {HOMEPAGE} for help -npm.uninstall_success={NAME} uninstalled successfully, effective next restart -npm.uninstall_failed={NAME} uninstallation failed -npm.load_failed={NAME} loading failed, please check the console for detailed information, check if dependencies or configurations are correct, if cannot resolve, visit {HOMEPAGE} for help -npm.plugin_not_found={NAME} not found in the store, please try updating the store information or checking the spelling -npm.plugin_not_installed={NAME} not installed -npm.plugin_already_installed={NAME} already installed, do not reinstall -npm.author=Author -npm.homepage=Homepage -npm.pypi=PyPI -npm.next_page=Next Page -npm.prev_page=Previous Page -npm.update=Update -npm.plugin_cannot_be_toggled=Plugin {NAME} cannot be enabled or disabled -npm.plugin_already=Plugin {NAME} is already {STATUS}, no need to repeat operation -npm.toggle_failed=Plugin {NAME} {STATUS} failed: {ERROR} -npm.toggle_success=Plugin {NAME} {STATUS} successful -npm.page=Page {PAGE}/{TOTAL} -npm.update_index=Update Plugin Index -npm.list_plugins=Plugin List -npm.disable_session=Disable plugin for current session -npm.enable_session=Enable plugin for current session -npm.help=Help -npm.search=Search - -user.profile.edit=Edit -user.profile.set=Set -user.profile_manager.query=Your profile {ATTR} is {VALUE} -user.profile_manager.set=Your profile {ATTR} set to {VALUE} -user.profile.settings=Settings -user.profile.info=Profile Information -user.profile.lang=Language -user.profile.lang.desc=Set user language -user.profile.timezone=Timezone -user.profile.timezone.desc=Set user current timezone -user.profile.theme=Theme -user.profile.theme.desc=Set user interface theme -user.profile.location=Location -user.profile.location.desc=Set user location information -user.profile.nickname=Nickname -user.profile.nickname.desc=Set how the bot calls the user -user.profile.input_value=Please enter the value of {ATTR} -user.profile.set_success={ATTR} set to {VALUE} successfully -user.profile.set_failed=Failed to set {ATTR}, please check the input legality - -rpm.move_up=Move Up -rpm.move_down=Move Down -rpm.move_top=Move Top - -weather.city_not_found=City {CITY} not found -weather.weather_not_found=Weather information not found for city {CITY} -weather.no_key=Weather API key not set. Please add weather_key to the configuration file - -status.friends=Friend(s) -status.groups=Group(s) -status.plugins=Plugin(s) -status.resources=Resource Pack(s) -status.bots=Bot(s) -status.message_sent=Message(s) Sent -status.message_received=Message(s) Received -status.cpu=CPU -status.memory=Memory -status.swap=Swap -status.disk=Disk -status.usage=Usage -status.total=Total -status.used=Used -status.free=Free -status.runtime=Runtime -status.days=Day(s) -status.hours=Hour(s) -status.minutes=Minute(s) -status.seconds=Second(s) -status.cores=Core(s) -status.threads=Thread(s) -status.process=Processe(s) -status.description=Liteyuki Dashboard +language.name=English + +log.debug=Debug +log.info=Information +log.warning=Warning +log.error=Error +log.success=Success + +liteyuki.restart=Restart +liteyuki.restart_now=Restart Now +liteyuki.update_restart=Updates completed. You can {RESTART} or manually restart later to apply these updates. +liteyuki.current_config=Current configuration is as follows +liteyuki.static_config=Static Configuration +liteyuki.stored_config=Stored Configuration +liteyuki.config_set_success=Configuration {KEY}={VAL} set successfully +liteyuki.stats.group=Group +liteyuki.stats.user=Friend +liteyuki.stats.plugin=Plugin +liteyuki.stats.sent=Sent +liteyuki.stats.received=Received +liteyuki.stats.run_time=Run Time +liteyuki.stats.groups=Groups +liteyuki.stats.friends=Friends +liteyuki.stats.plugins=Plugins +liteyuki.image_mode_on=Enable Markdown Image Mode +liteyuki.image_mode_off=Disable Markdown Image Mode +liteyuki.invalid_command=Invalid command or parameter {TEXT} +liteyuki.reload_resources=Reload Resources +liteyuki.list_resources=Resource Pack List +liteyuki.reload_resources_success=Resource reload successful, {NUM} resource packs in total +liteyuki.loaded_resources={NUM} resource packs loaded, sorted by priority +liteyuki.unloaded_resources=Unloaded resource packs +liteyuki.load_resource_success=Resource pack {NAME} loaded successfully +liteyuki.unload_resource_success=Resource pack {NAME} unloaded successfully +liteyuki.load_resource_failed=Failed to load resource pack {NAME} +liteyuki.unload_resource_failed=Failed to unload resource pack {NAME} +liteyuki.resource_not_found=Resource pack {NAME} does not exist or is not operable +liteyuki.resource_already_loaded=Resource pack {NAME} already loaded, do not repeat operation +liteyuki.resource_already_unloaded=Resource pack {NAME} already unloaded, do not repeat operation +liteyuki.need_reload=Please {BTN} reload to apply these updates +liteyuki.dont_repeat=Do not repeat operation +liteyuki.change_priority_success=Resource pack {NAME} priority changed successfully +liteyuki.change_priority_failed=Failed to change priority of resource pack {NAME} +liteyuki.group_already=Group {GROUP} is already {STATUS}, no need to repeat operation +liteyuki.group_success=Group {GROUP} {STATUS} successful +liteyuki.permission_denied=Permission denied +liteyuki.config_remove_success=Configuration {KEY} removed successfully + +main.current_language=Current configuration language is: {LANG} +main.enable_webdash=Web monitoring panel enabled: {URL} +main.monitor.title=Liteyuki Monitoring Panel +main.monitor.description=Liteyuki Bot Monitoring Panel +main.monitor.cpu=CPU +main.monitor.memory=Memory +main.monitor.swap=Swap +main.monitor.disk=Disk +main.monitor.usage=Usage +main.monitor.total=Total +main.monitor.used=Used +main.monitor.free=Free + +data_manager.migrate_success=Data model {NAME} migration successful + +npm.loaded_plugins=Plugins loaded +npm.total=Total {TOTAL} +npm.help=Help +npm.usage=Usage +npm.description=Description +npm.disable=Disable +npm.disable_global=Disable Globally +npm.enable=Enable +npm.enable_global=Enable Globally +npm.install=Install +npm.uninstall=Uninstall +npm.installing=Installing {NAME} +npm.cannot_uninstall=Cannot Uninstall +npm.no_description=No Description +npm.store_update_success=Plugin store data updated successfully +npm.store_update_failed=Plugin store data update failed +npm.search_result=Search Result +npm.search_no_result=No search result +npm.too_many_results=Too many items, {HIDE_NUM} items hidden, please limit the keyword search +npm.install_success={NAME} installed successfully +npm.install_failed={NAME} installation failed, please check the log for detailed information. If you cannot resolve it, visit {HOMEPAGE} for help +npm.uninstall_success={NAME} uninstalled successfully, effective next restart +npm.uninstall_failed={NAME} uninstallation failed +npm.load_failed={NAME} loading failed, please check the console for detailed information, check if dependencies or configurations are correct, if cannot resolve, visit {HOMEPAGE} for help +npm.plugin_not_found={NAME} not found in the store, please try updating the store information or checking the spelling +npm.plugin_not_installed={NAME} not installed +npm.plugin_already_installed={NAME} already installed, do not reinstall +npm.author=Author +npm.homepage=Homepage +npm.pypi=PyPI +npm.next_page=Next Page +npm.prev_page=Previous Page +npm.update=Update +npm.plugin_cannot_be_toggled=Plugin {NAME} cannot be enabled or disabled +npm.plugin_already=Plugin {NAME} is already {STATUS}, no need to repeat operation +npm.toggle_failed=Plugin {NAME} {STATUS} failed: {ERROR} +npm.toggle_success=Plugin {NAME} {STATUS} successful +npm.page=Page {PAGE}/{TOTAL} +npm.update_index=Update Plugin Index +npm.list_plugins=Plugin List +npm.disable_session=Disable plugin for current session +npm.enable_session=Enable plugin for current session +npm.help=Help +npm.search=Search + +user.profile.edit=Edit +user.profile.set=Set +user.profile_manager.query=Your profile {ATTR} is {VALUE} +user.profile_manager.set=Your profile {ATTR} set to {VALUE} +user.profile.settings=Settings +user.profile.info=Profile Information +user.profile.lang=Language +user.profile.lang.desc=Set user language +user.profile.timezone=Timezone +user.profile.timezone.desc=Set user current timezone +user.profile.theme=Theme +user.profile.theme.desc=Set user interface theme +user.profile.location=Location +user.profile.location.desc=Set user location information +user.profile.nickname=Nickname +user.profile.nickname.desc=Set how the bot calls the user +user.profile.input_value=Please enter the value of {ATTR} +user.profile.set_success={ATTR} set to {VALUE} successfully +user.profile.set_failed=Failed to set {ATTR}, please check the input legality + +rpm.move_up=Move Up +rpm.move_down=Move Down +rpm.move_top=Move Top + +weather.city_not_found=City {CITY} not found +weather.weather_not_found=Weather information not found for city {CITY} +weather.no_key=Weather API key not set. Please add weather_key to the configuration file + +status.friends=Friend(s) +status.groups=Group(s) +status.plugins=Plugin(s) +status.resources=Resource Pack(s) +status.bots=Bot(s) +status.message_sent=Message(s) Sent +status.message_received=Message(s) Received +status.cpu=CPU +status.memory=Memory +status.swap=Swap +status.disk=Disk +status.usage=Usage +status.total=Total +status.used=Used +status.free=Free +status.runtime=Runtime +status.days=Day(s) +status.hours=Hour(s) +status.minutes=Minute(s) +status.seconds=Second(s) +status.cores=Core(s) +status.threads=Thread(s) +status.process=Processe(s) +status.description=Liteyuki Dashboard diff --git a/liteyuki/resources/vanilla_language/lang/es.lang b/src/resources/vanilla_language/lang/es.lang similarity index 97% rename from liteyuki/resources/vanilla_language/lang/es.lang rename to src/resources/vanilla_language/lang/es.lang index 53620c3..001bb72 100644 --- a/liteyuki/resources/vanilla_language/lang/es.lang +++ b/src/resources/vanilla_language/lang/es.lang @@ -1,160 +1,160 @@ -language.name=Español - -log.debug=Depuración -log.info=Información -log.warning=Advertencia -log.error=Error -log.success=Éxito - -liteyuki.restart=Reiniciar -liteyuki.restart_now=Reiniciar Ahora -liteyuki.update_restart=Actualizaciones completadas. Puedes {RESTART} o reiniciar manualmente más tarde para aplicar estas actualizaciones. -liteyuki.current_config=La configuración actual es la siguiente -liteyuki.static_config=Configuración Estática -liteyuki.stored_config=Configuración Almacenada -liteyuki.config_set_success=Configuración {KEY}={VAL} establecida correctamente -liteyuki.stats.group=Grupo -liteyuki.stats.user=Amigo -liteyuki.stats.plugin=Plugin -liteyuki.stats.sent=Enviado -liteyuki.stats.received=Recibido -liteyuki.stats.run_time=Tiempo de Ejecución -liteyuki.stats.groups=Grupos -liteyuki.stats.friends=Amigos -liteyuki.stats.plugins=Plugins -liteyuki.image_mode_on=Activar Modo de Imagen Markdown -liteyuki.image_mode_off=Desactivar Modo de Imagen Markdown -liteyuki.invalid_command=Comando o parámetro {TEXT} inválido -liteyuki.reload_resources=Recargar Recursos -liteyuki.list_resources=Lista de Paquetes de Recursos -liteyuki.reload_resources_success=Recarga de recursos exitosa, un total de {NUM} paquetes de recursos -liteyuki.loaded_resources={NUM} paquetes de recursos cargados, ordenados por prioridad -liteyuki.unloaded_resources=Paquetes de recursos no cargados -liteyuki.load_resource_success=Paquete de recursos {NAME} cargado correctamente -liteyuki.unload_resource_success=Paquete de recursos {NAME} descargado correctamente -liteyuki.load_resource_failed=Error al cargar el paquete de recursos {NAME} -liteyuki.unload_resource_failed=Error al descargar el paquete de recursos {NAME} -liteyuki.resource_not_found=El paquete de recursos {NAME} no existe o no es operable -liteyuki.resource_already_loaded=El paquete de recursos {NAME} ya está cargado, no repitas la operación -liteyuki.resource_already_unloaded=El paquete de recursos {NAME} ya está descargado, no repitas la operación -liteyuki.need_reload=Por favor, {BTN} recargar para aplicar estas actualizaciones -liteyuki.dont_repeat=No repitas la operación -liteyuki.change_priority_success=Prioridad del paquete de recursos {NAME} cambiada correctamente -liteyuki.change_priority_failed=Error al cambiar la prioridad del paquete de recursos {NAME} -liteyuki.group_already=El grupo {GROUP} ya está {STATUS}, no es necesario repetir la operación -liteyuki.group_success=Grupo {GROUP} {STATUS} exitosamente -liteyuki.permission_denied=Permiso denegado -liteyuki.config_remove_success=Configuración {KEY} eliminada correctamente - -main.current_language=El idioma de configuración actual es: {LANG} -main.enable_webdash=Panel de monitoreo web habilitado: {URL} -main.monitor.title=Panel de Monitoreo de Liteyuki -main.monitor.description=Panel de Monitoreo del Bot de Liteyuki -main.monitor.cpu=CPU -main.monitor.memory=Memoria -main.monitor.swap=Swap -main.monitor.disk=Disco -main.monitor.usage=Uso -main.monitor.total=Total -main.monitor.used=Usado -main.monitor.free=Libre - -data_manager.migrate_success=Modelo de datos {NAME} migrado con éxito - -npm.loaded_plugins=Plugins cargados -npm.total=Total {TOTAL} -npm.help=Ayuda -npm.usage=Uso -npm.description=Descripción -npm.disable=Desactivar -npm.disable_global=Desactivar Globalmente -npm.enable=Activar -npm.enable_global=Activar Globalmente -npm.install=Instalar -npm.uninstall=Desinstalar -npm.installing=Instalando {NAME} -npm.cannot_uninstall=No se puede Desinstalar -npm.no_description=Sin Descripción -npm.store_update_success=Actualización de datos de la tienda de plugins exitosa -npm.store_update_failed=Falló la actualización de datos de la tienda de plugins -npm.search_result=Resultado de la Búsqueda -npm.search_no_result=Sin resultados de búsqueda -npm.too_many_results=Demasiados elementos, {HIDE_NUM} elementos ocultos, por favor limite la búsqueda de palabras clave -npm.install_success={NAME} instalado correctamente -npm.install_failed=Falla en la instalación de {NAME}, por favor revise el registro para obtener información detallada. Si no puede resolverlo, visite {HOMEPAGE} para obtener ayuda -npm.uninstall_success={NAME} desinstalado correctamente, efectivo después del próximo reinicio -npm.uninstall_failed=Falla en la desinstalación de {NAME} -npm.load_failed=Falla al cargar {NAME}, por favor revise la consola para obtener información detallada, si no puede resolverlo, visite {HOMEPAGE} para obtener ayuda -npm.plugin_not_found={NAME} no encontrado en la tienda, por favor intente actualizar la información de la tienda o verifique la ortografía -npm.plugin_not_installed={NAME} no instalado -npm.plugin_already_installed={NAME} ya instalado, no vuelva a instalarlo -npm.author=Autor -npm.homepage=Página de Inicio -npm.pypi=PyPI -npm.next_page=Siguiente Página -npm.prev_page=Página Anterior -npm.update=Actualizar -npm.plugin_cannot_be_toggled=El plugin {NAME} no se puede activar o desactivar -npm.plugin_already=El plugin {NAME} ya está {STATUS}, no es necesario repetir la operación -npm.toggle_failed=Falla en {STATUS} el plugin {NAME}: {ERROR} -npm.toggle_success=Éxito al {STATUS} el plugin {NAME} -npm.page=Página {PAGE}/{TOTAL} -npm.update_index=Actualizar el Índice del Plugin -npm.list_plugins=Lista de Plugins -npm.disable_session=Desactivar sesión actual -npm.enable_session=Activar sesión actual -npm.help=Ayuda -npm.search=Búsqueda - -user.profile.edit=Editar -user.profile.set=Establecer -user.profile_manager.query=Tu perfil {ATTR} es {VALUE} -user.profile_manager.set=Tu perfil {ATTR} ha sido establecido como {VALUE} -user.profile.settings=Ajustes -user.profile.info=Información de Perfil -user.profile.lang=Idioma -user.profile.lang.desc=Establecer el idioma del usuario -user.profile.timezone=Zona Horaria -user.profile.timezone.desc=Establecer la zona horaria actual del usuario -user.profile.theme=Tema -user.profile.theme.desc=Establecer el tema de la interfaz de usuario del usuario -user.profile.location=Ubicación -user.profile.location.desc=Establecer la información de ubicación del usuario -user.profile.nickname=Apodo -user.profile.nickname.desc=Establecer cómo el bot llama al usuario -user.profile.input_value=Por favor ingrese el valor de {ATTR} -user.profile.set_success={ATTR} establecido como {VALUE} exitosamente -user.profile.set_failed=Falla al establecer {ATTR}, por favor revise la legalidad de la entrada - -rpm.move_up=Mover Arriba -rpm.move_down=Mover Abajo -rpm.move_top=Mover Arriba - -weather.city_not_found=Ciudad {CITY} no encontrada -weather.weather_not_found=No se encontró información meteorológica para la ciudad {CITY} -weather.no_key=Clave API del tiempo no establecida. Por favor, agregue weather_key al archivo de configuración - -status.friends=Amigos -status.groups=Grupos -status.plugins=Plugins -status.resources=Paquetes de Recursos -status.bots=Bots -status.message_sent=Mensajes Enviados -status.message_received=Mensajes Recibidos -status.cpu=CPU -status.memory=Memoria -status.swap=Swap -status.disk=Disco -status.usage=Uso -status.total=Total -status.used=Usado -status.free=Libre -status.runtime=Tiempo de Ejecución -status.days=Días -status.hours=Horas -status.minutes=Minutos -status.seconds=Segundos -status.cores=Núcleos -status.threads=Hilos -status.process=Procesos +language.name=Español + +log.debug=Depuración +log.info=Información +log.warning=Advertencia +log.error=Error +log.success=Éxito + +liteyuki.restart=Reiniciar +liteyuki.restart_now=Reiniciar Ahora +liteyuki.update_restart=Actualizaciones completadas. Puedes {RESTART} o reiniciar manualmente más tarde para aplicar estas actualizaciones. +liteyuki.current_config=La configuración actual es la siguiente +liteyuki.static_config=Configuración Estática +liteyuki.stored_config=Configuración Almacenada +liteyuki.config_set_success=Configuración {KEY}={VAL} establecida correctamente +liteyuki.stats.group=Grupo +liteyuki.stats.user=Amigo +liteyuki.stats.plugin=Plugin +liteyuki.stats.sent=Enviado +liteyuki.stats.received=Recibido +liteyuki.stats.run_time=Tiempo de Ejecución +liteyuki.stats.groups=Grupos +liteyuki.stats.friends=Amigos +liteyuki.stats.plugins=Plugins +liteyuki.image_mode_on=Activar Modo de Imagen Markdown +liteyuki.image_mode_off=Desactivar Modo de Imagen Markdown +liteyuki.invalid_command=Comando o parámetro {TEXT} inválido +liteyuki.reload_resources=Recargar Recursos +liteyuki.list_resources=Lista de Paquetes de Recursos +liteyuki.reload_resources_success=Recarga de recursos exitosa, un total de {NUM} paquetes de recursos +liteyuki.loaded_resources={NUM} paquetes de recursos cargados, ordenados por prioridad +liteyuki.unloaded_resources=Paquetes de recursos no cargados +liteyuki.load_resource_success=Paquete de recursos {NAME} cargado correctamente +liteyuki.unload_resource_success=Paquete de recursos {NAME} descargado correctamente +liteyuki.load_resource_failed=Error al cargar el paquete de recursos {NAME} +liteyuki.unload_resource_failed=Error al descargar el paquete de recursos {NAME} +liteyuki.resource_not_found=El paquete de recursos {NAME} no existe o no es operable +liteyuki.resource_already_loaded=El paquete de recursos {NAME} ya está cargado, no repitas la operación +liteyuki.resource_already_unloaded=El paquete de recursos {NAME} ya está descargado, no repitas la operación +liteyuki.need_reload=Por favor, {BTN} recargar para aplicar estas actualizaciones +liteyuki.dont_repeat=No repitas la operación +liteyuki.change_priority_success=Prioridad del paquete de recursos {NAME} cambiada correctamente +liteyuki.change_priority_failed=Error al cambiar la prioridad del paquete de recursos {NAME} +liteyuki.group_already=El grupo {GROUP} ya está {STATUS}, no es necesario repetir la operación +liteyuki.group_success=Grupo {GROUP} {STATUS} exitosamente +liteyuki.permission_denied=Permiso denegado +liteyuki.config_remove_success=Configuración {KEY} eliminada correctamente + +main.current_language=El idioma de configuración actual es: {LANG} +main.enable_webdash=Panel de monitoreo web habilitado: {URL} +main.monitor.title=Panel de Monitoreo de Liteyuki +main.monitor.description=Panel de Monitoreo del Bot de Liteyuki +main.monitor.cpu=CPU +main.monitor.memory=Memoria +main.monitor.swap=Swap +main.monitor.disk=Disco +main.monitor.usage=Uso +main.monitor.total=Total +main.monitor.used=Usado +main.monitor.free=Libre + +data_manager.migrate_success=Modelo de datos {NAME} migrado con éxito + +npm.loaded_plugins=Plugins cargados +npm.total=Total {TOTAL} +npm.help=Ayuda +npm.usage=Uso +npm.description=Descripción +npm.disable=Desactivar +npm.disable_global=Desactivar Globalmente +npm.enable=Activar +npm.enable_global=Activar Globalmente +npm.install=Instalar +npm.uninstall=Desinstalar +npm.installing=Instalando {NAME} +npm.cannot_uninstall=No se puede Desinstalar +npm.no_description=Sin Descripción +npm.store_update_success=Actualización de datos de la tienda de plugins exitosa +npm.store_update_failed=Falló la actualización de datos de la tienda de plugins +npm.search_result=Resultado de la Búsqueda +npm.search_no_result=Sin resultados de búsqueda +npm.too_many_results=Demasiados elementos, {HIDE_NUM} elementos ocultos, por favor limite la búsqueda de palabras clave +npm.install_success={NAME} instalado correctamente +npm.install_failed=Falla en la instalación de {NAME}, por favor revise el registro para obtener información detallada. Si no puede resolverlo, visite {HOMEPAGE} para obtener ayuda +npm.uninstall_success={NAME} desinstalado correctamente, efectivo después del próximo reinicio +npm.uninstall_failed=Falla en la desinstalación de {NAME} +npm.load_failed=Falla al cargar {NAME}, por favor revise la consola para obtener información detallada, si no puede resolverlo, visite {HOMEPAGE} para obtener ayuda +npm.plugin_not_found={NAME} no encontrado en la tienda, por favor intente actualizar la información de la tienda o verifique la ortografía +npm.plugin_not_installed={NAME} no instalado +npm.plugin_already_installed={NAME} ya instalado, no vuelva a instalarlo +npm.author=Autor +npm.homepage=Página de Inicio +npm.pypi=PyPI +npm.next_page=Siguiente Página +npm.prev_page=Página Anterior +npm.update=Actualizar +npm.plugin_cannot_be_toggled=El plugin {NAME} no se puede activar o desactivar +npm.plugin_already=El plugin {NAME} ya está {STATUS}, no es necesario repetir la operación +npm.toggle_failed=Falla en {STATUS} el plugin {NAME}: {ERROR} +npm.toggle_success=Éxito al {STATUS} el plugin {NAME} +npm.page=Página {PAGE}/{TOTAL} +npm.update_index=Actualizar el Índice del Plugin +npm.list_plugins=Lista de Plugins +npm.disable_session=Desactivar sesión actual +npm.enable_session=Activar sesión actual +npm.help=Ayuda +npm.search=Búsqueda + +user.profile.edit=Editar +user.profile.set=Establecer +user.profile_manager.query=Tu perfil {ATTR} es {VALUE} +user.profile_manager.set=Tu perfil {ATTR} ha sido establecido como {VALUE} +user.profile.settings=Ajustes +user.profile.info=Información de Perfil +user.profile.lang=Idioma +user.profile.lang.desc=Establecer el idioma del usuario +user.profile.timezone=Zona Horaria +user.profile.timezone.desc=Establecer la zona horaria actual del usuario +user.profile.theme=Tema +user.profile.theme.desc=Establecer el tema de la interfaz de usuario del usuario +user.profile.location=Ubicación +user.profile.location.desc=Establecer la información de ubicación del usuario +user.profile.nickname=Apodo +user.profile.nickname.desc=Establecer cómo el bot llama al usuario +user.profile.input_value=Por favor ingrese el valor de {ATTR} +user.profile.set_success={ATTR} establecido como {VALUE} exitosamente +user.profile.set_failed=Falla al establecer {ATTR}, por favor revise la legalidad de la entrada + +rpm.move_up=Mover Arriba +rpm.move_down=Mover Abajo +rpm.move_top=Mover Arriba + +weather.city_not_found=Ciudad {CITY} no encontrada +weather.weather_not_found=No se encontró información meteorológica para la ciudad {CITY} +weather.no_key=Clave API del tiempo no establecida. Por favor, agregue weather_key al archivo de configuración + +status.friends=Amigos +status.groups=Grupos +status.plugins=Plugins +status.resources=Paquetes de Recursos +status.bots=Bots +status.message_sent=Mensajes Enviados +status.message_received=Mensajes Recibidos +status.cpu=CPU +status.memory=Memoria +status.swap=Swap +status.disk=Disco +status.usage=Uso +status.total=Total +status.used=Usado +status.free=Libre +status.runtime=Tiempo de Ejecución +status.days=Días +status.hours=Horas +status.minutes=Minutos +status.seconds=Segundos +status.cores=Núcleos +status.threads=Hilos +status.process=Procesos status.description=Liteyuki Dashboard Status \ No newline at end of file diff --git a/liteyuki/resources/vanilla_language/lang/fr.lang b/src/resources/vanilla_language/lang/fr.lang similarity index 97% rename from liteyuki/resources/vanilla_language/lang/fr.lang rename to src/resources/vanilla_language/lang/fr.lang index af242c0..281f0bb 100644 --- a/liteyuki/resources/vanilla_language/lang/fr.lang +++ b/src/resources/vanilla_language/lang/fr.lang @@ -1,159 +1,159 @@ -language.name=Français - -log.debug=Débogage -log.info=Information -log.warning=Avertissement -log.error=Erreur -log.success=Succès - -liteyuki.restart=Redémarrer -liteyuki.restart_now=Redémarrer maintenant -liteyuki.update_restart=Mise à jour terminée. Vous pouvez {RESTART} ou redémarrer manuellement plus tard pour appliquer ces mises à jour. -liteyuki.current_config=Configuration actuelle -liteyuki.static_config=Configuration statique des fichiers -liteyuki.stored_config=Configuration stockée -liteyuki.config_set_success=La configuration {KEY}={VAL} a été définie avec succès -liteyuki.stats.group=Groupe -liteyuki.stats.user=Ami -liteyuki.stats.plugin=Plugin -liteyuki.stats.sent=Envoyé -liteyuki.stats.received=Reçu -liteyuki.stats.run_time=Temps d'exécution -liteyuki.stats.groups=Groupes -liteyuki.stats.friends=Amis -liteyuki.stats.plugins=Plugins -liteyuki.image_mode_on=Activer le mode image Markdown -liteyuki.image_mode_off=Désactiver le mode image Markdown -liteyuki.invalid_command=Commande ou paramètre {TEXT} invalide -liteyuki.reload_resources=Recharger les ressources -liteyuki.list_resources=Liste des ressources -liteyuki.reload_resources_success=Rechargement réussi des ressources. Total de {NUM} ressources chargées. -liteyuki.loaded_resources={NUM} ressources chargées, triées par priorité. -liteyuki.unloaded_resources=Ressources non chargées -liteyuki.load_resource_success=Chargement réussi de la ressource {NAME} -liteyuki.unload_resource_success=Déchargement réussi de la ressource {NAME} -liteyuki.load_resource_failed=Échec du chargement de la ressource {NAME} -liteyuki.unload_resource_failed=Échec du déchargement de la ressource {NAME} -liteyuki.resource_not_found=La ressource {NAME} est introuvable ou non manipulable. -liteyuki.resource_already_loaded=La ressource {NAME} est déjà chargée. Veuillez ne pas répéter l'opération. -liteyuki.resource_already_unloaded=La ressource {NAME} est déjà déchargée. Veuillez ne pas répéter l'opération. -liteyuki.need_reload=Veuillez {BTN} pour recharger et appliquer ces mises à jour. -liteyuki.dont_repeat=Veuillez ne pas répéter l'opération. -liteyuki.change_priority_success=La priorité de la ressource {NAME} a été modifiée avec succès. -liteyuki.change_priority_failed=Échec de la modification de la priorité de la ressource {NAME}. -liteyuki.group_already=Le groupe {GROUP} est déjà {STATUS}. Aucune action nécessaire. -liteyuki.group_success=Le groupe {GROUP} a été {STATUS} avec succès. -liteyuki.permission_denied=Permission refusée. -liteyuki.config_remove_success=La configuration {KEY} a été supprimée avec succès. - -main.current_language=Langue actuelle : {LANG} -main.enable_webdash=Tableau de bord Web activé : {URL} -main.monitor.title=Tableau de bord de Liteyuki -main.monitor.description=Tableau de bord de surveillance du robot Liteyuki -main.monitor.cpu=Processeur -main.monitor.memory=Mémoire -main.monitor.swap=Swap -main.monitor.disk=Disque -main.monitor.usage=Utilisation -main.monitor.total=Total -main.monitor.used=Utilisé -main.monitor.free=Libre - -data_manager.migrate_success=Migration réussie du modèle de données {NAME} - -npm.loaded_plugins=Plugins chargés -npm.total=Total {TOTAL} -npm.help=Aide -npm.usage=Utilisation -npm.description=Description -npm.disable=Désactiver -npm.disable_global=Désactiver globalement -npm.enable=Activer -npm.enable_global=Activer globalement -npm.install=Installer -npm.uninstall=Désinstaller -npm.installing=Installation de {NAME} en cours -npm.cannot_uninstall=Impossible de désinstaller -npm.no_description=Aucune description -npm.store_update_success=Mise à jour des données du magasin de plugins réussie -npm.store_update_failed=Échec de la mise à jour des données du magasin de plugins -npm.search_result=Résultats de la recherche -npm.search_no_result=Aucun résultat trouvé -npm.too_many_results=Trop de résultats. {HIDE_NUM} éléments masqués. Veuillez restreindre la recherche par mots-clés. -npm.install_success=Installation de {NAME} réussie -npm.install_failed=Échec de l'installation de {NAME}. Consultez les journaux pour plus d'informations. Si le problème persiste, veuillez consulter {HOMEPAGE} pour obtenir de l'aide. -npm.uninstall_success=Désinstallation de {NAME} réussie. Les modifications prendront effet au prochain redémarrage. -npm.uninstall_failed=Échec de la désinstallation de {NAME} -npm.load_failed=Échec du chargement de {NAME}. Veuillez consulter les détails dans la console, vérifier les dépendances ou la configuration. Si le problème persiste, veuillez consulter {HOMEPAGE} pour obtenir de l'aide. -npm.plugin_not_found=Plugin {NAME} introuvable dans le magasin. Veuillez vérifier l'orthographe ou effectuer une mise à jour du magasin. -npm.plugin_not_installed={NAME} n'est pas installé -npm.plugin_already_installed={NAME} est déjà installé. Veuillez ne pas répéter l'opération. -npm.author=Auteur -npm.homepage=Page d'accueil -npm.pypi=PyPI -npm.next_page=Page suivante -npm.prev_page=Page précédente -npm.update=Mettre à jour -npm.plugin_cannot_be_toggled=Le plugin {NAME} ne peut pas être activé ou désactivé. -npm.plugin_already=Le plugin {NAME} est déjà {STATUS}. Aucune action nécessaire. -npm.toggle_failed=Échec de {STATUS} du plugin {NAME} : {ERROR} -npm.toggle_success={STATUS} du plugin {NAME} réussi -npm.page=Page {PAGE}/{TOTAL} -npm.update_index=Mise à jour de l'index des plugins -npm.list_plugins=Liste des plugins -npm.disable_session=Désactivation des plugins pour cette session -npm.enable_session=Activation des plugins pour cette session -npm.help=Aide -npm.search=Recherche - -user.profile.edit=Modifier -user.profile.set=Définir -user.profile_manager.query=Votre {ATTR} est {VALUE} -user.profile_manager.set=Votre {ATTR} a été défini sur {VALUE} -user.profile.settings=Paramètres -user.profile.info=Informations personnelles -user.profile.lang=Langue -user.profile.lang.desc=Définir la langue de l'utilisateur -user.profile.timezone=Fuseau horaire -user.profile.timezone.desc=Définir le fuseau horaire de l'utilisateur -user.profile.theme=Thème -user.profile.theme.desc=Définir le thème de l'interface utilisateur de l'utilisateur -user.profile.location=Emplacement -user.profile.location.desc=Définir l'emplacement de l'utilisateur -user.profile.nickname=Pseudo -user.profile.nickname.desc=Définir le surnom du Bot pour l'utilisateur -user.profile.input_value=Veuillez entrer une valeur pour {ATTR} -user.profile.set_success={ATTR} a été défini sur {VALUE} avec succès -user.profile.set_failed=Échec de la définition de {ATTR}. Veuillez vérifier la validité de l'entrée. - -rpm.move_up=Monter -rpm.move_down=Descendre -rpm.move_top=En haut - -weather.city_not_found=Ville {CITY} non trouvée -weather.weather_not_found=Les informations météorologiques pour la ville {CITY} n'ont pas été trouvées -weather.no_key=Aucune clé API météo définie. Veuillez ajouter weather_key au fichier de configuration. - -status.friends=Amis -status.groups=Groupes -status.plugins=Plugins -status.resources=Ressources -status.bots=Bots -status.message_sent=Messages envoyés -status.message_received=Messages reçus -status.cpu=Processeur -status.memory=Mémoire -status.swap=Swap -status.disk=Disque -status.usage=Utilisation -status.total=Total -status.used=Utilisé -status.free=Libre -status.runtime=Temps d'exécution -status.days=Jours -status.hours=Heures -status.minutes=Minutes -status.seconds=Secondes -status.cores=Cœurs -status.threads=Threads +language.name=Français + +log.debug=Débogage +log.info=Information +log.warning=Avertissement +log.error=Erreur +log.success=Succès + +liteyuki.restart=Redémarrer +liteyuki.restart_now=Redémarrer maintenant +liteyuki.update_restart=Mise à jour terminée. Vous pouvez {RESTART} ou redémarrer manuellement plus tard pour appliquer ces mises à jour. +liteyuki.current_config=Configuration actuelle +liteyuki.static_config=Configuration statique des fichiers +liteyuki.stored_config=Configuration stockée +liteyuki.config_set_success=La configuration {KEY}={VAL} a été définie avec succès +liteyuki.stats.group=Groupe +liteyuki.stats.user=Ami +liteyuki.stats.plugin=Plugin +liteyuki.stats.sent=Envoyé +liteyuki.stats.received=Reçu +liteyuki.stats.run_time=Temps d'exécution +liteyuki.stats.groups=Groupes +liteyuki.stats.friends=Amis +liteyuki.stats.plugins=Plugins +liteyuki.image_mode_on=Activer le mode image Markdown +liteyuki.image_mode_off=Désactiver le mode image Markdown +liteyuki.invalid_command=Commande ou paramètre {TEXT} invalide +liteyuki.reload_resources=Recharger les ressources +liteyuki.list_resources=Liste des ressources +liteyuki.reload_resources_success=Rechargement réussi des ressources. Total de {NUM} ressources chargées. +liteyuki.loaded_resources={NUM} ressources chargées, triées par priorité. +liteyuki.unloaded_resources=Ressources non chargées +liteyuki.load_resource_success=Chargement réussi de la ressource {NAME} +liteyuki.unload_resource_success=Déchargement réussi de la ressource {NAME} +liteyuki.load_resource_failed=Échec du chargement de la ressource {NAME} +liteyuki.unload_resource_failed=Échec du déchargement de la ressource {NAME} +liteyuki.resource_not_found=La ressource {NAME} est introuvable ou non manipulable. +liteyuki.resource_already_loaded=La ressource {NAME} est déjà chargée. Veuillez ne pas répéter l'opération. +liteyuki.resource_already_unloaded=La ressource {NAME} est déjà déchargée. Veuillez ne pas répéter l'opération. +liteyuki.need_reload=Veuillez {BTN} pour recharger et appliquer ces mises à jour. +liteyuki.dont_repeat=Veuillez ne pas répéter l'opération. +liteyuki.change_priority_success=La priorité de la ressource {NAME} a été modifiée avec succès. +liteyuki.change_priority_failed=Échec de la modification de la priorité de la ressource {NAME}. +liteyuki.group_already=Le groupe {GROUP} est déjà {STATUS}. Aucune action nécessaire. +liteyuki.group_success=Le groupe {GROUP} a été {STATUS} avec succès. +liteyuki.permission_denied=Permission refusée. +liteyuki.config_remove_success=La configuration {KEY} a été supprimée avec succès. + +main.current_language=Langue actuelle : {LANG} +main.enable_webdash=Tableau de bord Web activé : {URL} +main.monitor.title=Tableau de bord de Liteyuki +main.monitor.description=Tableau de bord de surveillance du robot Liteyuki +main.monitor.cpu=Processeur +main.monitor.memory=Mémoire +main.monitor.swap=Swap +main.monitor.disk=Disque +main.monitor.usage=Utilisation +main.monitor.total=Total +main.monitor.used=Utilisé +main.monitor.free=Libre + +data_manager.migrate_success=Migration réussie du modèle de données {NAME} + +npm.loaded_plugins=Plugins chargés +npm.total=Total {TOTAL} +npm.help=Aide +npm.usage=Utilisation +npm.description=Description +npm.disable=Désactiver +npm.disable_global=Désactiver globalement +npm.enable=Activer +npm.enable_global=Activer globalement +npm.install=Installer +npm.uninstall=Désinstaller +npm.installing=Installation de {NAME} en cours +npm.cannot_uninstall=Impossible de désinstaller +npm.no_description=Aucune description +npm.store_update_success=Mise à jour des données du magasin de plugins réussie +npm.store_update_failed=Échec de la mise à jour des données du magasin de plugins +npm.search_result=Résultats de la recherche +npm.search_no_result=Aucun résultat trouvé +npm.too_many_results=Trop de résultats. {HIDE_NUM} éléments masqués. Veuillez restreindre la recherche par mots-clés. +npm.install_success=Installation de {NAME} réussie +npm.install_failed=Échec de l'installation de {NAME}. Consultez les journaux pour plus d'informations. Si le problème persiste, veuillez consulter {HOMEPAGE} pour obtenir de l'aide. +npm.uninstall_success=Désinstallation de {NAME} réussie. Les modifications prendront effet au prochain redémarrage. +npm.uninstall_failed=Échec de la désinstallation de {NAME} +npm.load_failed=Échec du chargement de {NAME}. Veuillez consulter les détails dans la console, vérifier les dépendances ou la configuration. Si le problème persiste, veuillez consulter {HOMEPAGE} pour obtenir de l'aide. +npm.plugin_not_found=Plugin {NAME} introuvable dans le magasin. Veuillez vérifier l'orthographe ou effectuer une mise à jour du magasin. +npm.plugin_not_installed={NAME} n'est pas installé +npm.plugin_already_installed={NAME} est déjà installé. Veuillez ne pas répéter l'opération. +npm.author=Auteur +npm.homepage=Page d'accueil +npm.pypi=PyPI +npm.next_page=Page suivante +npm.prev_page=Page précédente +npm.update=Mettre à jour +npm.plugin_cannot_be_toggled=Le plugin {NAME} ne peut pas être activé ou désactivé. +npm.plugin_already=Le plugin {NAME} est déjà {STATUS}. Aucune action nécessaire. +npm.toggle_failed=Échec de {STATUS} du plugin {NAME} : {ERROR} +npm.toggle_success={STATUS} du plugin {NAME} réussi +npm.page=Page {PAGE}/{TOTAL} +npm.update_index=Mise à jour de l'index des plugins +npm.list_plugins=Liste des plugins +npm.disable_session=Désactivation des plugins pour cette session +npm.enable_session=Activation des plugins pour cette session +npm.help=Aide +npm.search=Recherche + +user.profile.edit=Modifier +user.profile.set=Définir +user.profile_manager.query=Votre {ATTR} est {VALUE} +user.profile_manager.set=Votre {ATTR} a été défini sur {VALUE} +user.profile.settings=Paramètres +user.profile.info=Informations personnelles +user.profile.lang=Langue +user.profile.lang.desc=Définir la langue de l'utilisateur +user.profile.timezone=Fuseau horaire +user.profile.timezone.desc=Définir le fuseau horaire de l'utilisateur +user.profile.theme=Thème +user.profile.theme.desc=Définir le thème de l'interface utilisateur de l'utilisateur +user.profile.location=Emplacement +user.profile.location.desc=Définir l'emplacement de l'utilisateur +user.profile.nickname=Pseudo +user.profile.nickname.desc=Définir le surnom du Bot pour l'utilisateur +user.profile.input_value=Veuillez entrer une valeur pour {ATTR} +user.profile.set_success={ATTR} a été défini sur {VALUE} avec succès +user.profile.set_failed=Échec de la définition de {ATTR}. Veuillez vérifier la validité de l'entrée. + +rpm.move_up=Monter +rpm.move_down=Descendre +rpm.move_top=En haut + +weather.city_not_found=Ville {CITY} non trouvée +weather.weather_not_found=Les informations météorologiques pour la ville {CITY} n'ont pas été trouvées +weather.no_key=Aucune clé API météo définie. Veuillez ajouter weather_key au fichier de configuration. + +status.friends=Amis +status.groups=Groupes +status.plugins=Plugins +status.resources=Ressources +status.bots=Bots +status.message_sent=Messages envoyés +status.message_received=Messages reçus +status.cpu=Processeur +status.memory=Mémoire +status.swap=Swap +status.disk=Disque +status.usage=Utilisation +status.total=Total +status.used=Utilisé +status.free=Libre +status.runtime=Temps d'exécution +status.days=Jours +status.hours=Heures +status.minutes=Minutes +status.seconds=Secondes +status.cores=Cœurs +status.threads=Threads status.process=Processus \ No newline at end of file diff --git a/liteyuki/resources/vanilla_language/lang/ja.lang b/src/resources/vanilla_language/lang/ja.lang similarity index 98% rename from liteyuki/resources/vanilla_language/lang/ja.lang rename to src/resources/vanilla_language/lang/ja.lang index 2c9a743..2ebebe6 100644 --- a/liteyuki/resources/vanilla_language/lang/ja.lang +++ b/src/resources/vanilla_language/lang/ja.lang @@ -1,160 +1,160 @@ -language.name=日本語 - -log.debug=デバッグ -log.info=情報 -log.warning=警告 -log.error=エラー -log.success=成功 - -liteyuki.restart=再起動 -liteyuki.restart_now=今すぐ再起動 -liteyuki.update_restart=更新が完了しました。{RESTART}または後で手動で再起動して、これらの更新を適用してください -liteyuki.current_config=現在の設定 -liteyuki.static_config=静的ファイルの設定 -liteyuki.stored_config=保存された設定 -liteyuki.config_set_success=設定 {KEY}={VAL} が正常に設定されました -liteyuki.stats.group=グループ -liteyuki.stats.user=友達 -liteyuki.stats.plugin=プラグイン -liteyuki.stats.sent=送信 -liteyuki.stats.received=受信 -liteyuki.stats.run_time=実行時間 -liteyuki.stats.groups=グループ -liteyuki.stats.friends=友達 -liteyuki.stats.plugins=プラグイン -liteyuki.image_mode_on=Markdown画像モードをオンにする -liteyuki.image_mode_off=Markdown画像モードをオフにする -liteyuki.invalid_command=無効なコマンドまたはパラメータ {TEXT} -liteyuki.reload_resources=リソースをリロード -liteyuki.list_resources=リソースパッケージ一覧 -liteyuki.reload_resources_success=リソースのリロードに成功しました。合計 {NUM} 個のリソースパッケージ -liteyuki.loaded_resources= {NUM} 個のリソースパッケージが読み込まれました。優先順位でソートされます -liteyuki.unloaded_resources=読み込まれていないリソースパッケージ -liteyuki.load_resource_success=リソースパッケージ {NAME} を正常に読み込みました -liteyuki.unload_resource_success=リソースパッケージ {NAME} を正常にアンロードしました -liteyuki.load_resource_failed=リソースパッケージ {NAME} の読み込みに失敗しました -liteyuki.unload_resource_failed=リソースパッケージ {NAME} のアンロードに失敗しました -liteyuki.resource_not_found=リソースパッケージ {NAME} が見つかりませんまたは操作できません -liteyuki.resource_already_loaded=リソースパッケージ {NAME} はすでに読み込まれています。重複して実行しないでください -liteyuki.resource_already_unloaded=リソースパッケージ {NAME} はすでにアンロードされています。重複して実行しないでください -liteyuki.need_reload=これらの更新を適用するには、{BTN} 再起動してください -liteyuki.dont_repeat=繰り返さないでください -liteyuki.change_priority_success=リソースパッケージ {NAME} の優先順位を変更しました -liteyuki.change_priority_failed=リソースパッケージ {NAME} の優先順位の変更に失敗しました -liteyuki.group_already=グループ {GROUP} はすでに {STATUS} 状態です。再度操作する必要はありません -liteyuki.group_success=グループ {GROUP} が {STATUS} されました -liteyuki.permission_denied=権限がありません -liteyuki.config_remove_success=設定項目 {KEY} を削除しました - -main.current_language=現在の言語設定: {LANG} -main.enable_webdash=ウェブダッシュボードが有効になりました: {URL} -main.monitor.title=Liteyuki モニター -main.monitor.description=Liteyuki ボットの監視パネル -main.monitor.cpu=CPU -main.monitor.memory=メモリ -main.monitor.swap=スワップ -main.monitor.disk=ディスク -main.monitor.usage=使用率 -main.monitor.total=合計 -main.monitor.used=使用済み -main.monitor.free=空き容量 - -data_manager.migrate_success=データモデル {NAME} が正常に移行されました - -npm.loaded_plugins=読み込まれたプラグイン -npm.total=合計 {TOTAL} -npm.help=ヘルプ -npm.usage=使用法 -npm.description=説明 -npm.disable=無効にする -npm.disable_global=グローバルで無効にする -npm.enable=有効にする -npm.enable_global=グローバルで有効にする -npm.install=インストール -npm.uninstall=アンインストール -npm.installing={NAME} をインストールしています -npm.cannot_uninstall=アンインストールできません -npm.no_description=説明なし -npm.store_update_success=プラグインストアのデータが正常に更新されました -npm.store_update_failed=プラグインストアのデータの更新に失敗しました -npm.search_result=検索結果 -npm.search_no_result=検索結果がありません -npm.too_many_results=多すぎる結果です。{HIDE_NUM} 件が非表示にされました。キーワードを絞って検索してください -npm.install_success={NAME} を正常にインストールしました -npm.install_failed={NAME} のインストールに失敗しました。ログを参照して詳細情報を取得し、解決できない場合は{HOMEPAGE}を訪問してサポートを求めてください -npm.uninstall_success={NAME} を正常にアンインストールしました。次回の再起動で有効になります -npm.uninstall_failed={NAME} のアンインストールに失敗しました -npm.load_failed={NAME} の読み込みに失敗しました。詳細情報はコンソールで確認し、依存関係または設定が正しいかどうかを確認し、解決できない場合は{HOMEPAGE}を訪問してサポートを求めてください -npm.plugin_not_found={NAME} がプラグインストアで見つかりませんでした。ストア情報を更新するか、スペルを確認してください -npm.plugin_not_installed={NAME} がインストールされていません -npm.plugin_already_installed={NAME} はすでにインストールされています。重複して実行しないでください -npm.author=作者 -npm.homepage=ホームページ -npm.pypi=PyPI -npm.next_page=次のページ -npm.prev_page=前のページ -npm.update=更新 -npm.plugin_cannot_be_toggled=プラグイン {NAME} を有効または無効にできません -npm.plugin_already=プラグイン {NAME} はすでに {STATUS} 状態です。再度操作する必要はありません -npm.toggle_failed=プラグイン {NAME} を {STATUS} できませんでした: {ERROR} -npm.toggle_success=プラグイン {NAME} を {STATUS} しました -npm.page={PAGE}/{TOTAL} ページ -npm.update_index=プラグインインデックスを更新 -npm.list_plugins=プラグイン一覧 -npm.disable_session=セッション中にプラグインを無効にしました -npm.enable_session=セッション中にプラグインを有効にしました -npm.help=ヘルプ -npm.search=検索 - -user.profile.edit=編集 -user.profile.set=設定 -user.profile_manager.query=あなたのプロファイル {ATTR} は {VALUE} です -user.profile_manager.set=あなたのプロファイル {ATTR} を {VALUE} に設定しました -user.profile.settings=設定 -user.profile.info=情報 -user.profile.lang=言語 -user.profile.lang.desc=ユーザーの言語を設定します -user.profile.timezone=タイムゾーン -user.profile.timezone.desc=ユーザーの現在のタイムゾーンを設定します -user.profile.theme=テーマ -user.profile.theme.desc=ユーザーのUIテーマを設定します -user.profile.location=位置 -user.profile.location.desc=ユーザーの位置情報を設定します -user.profile.nickname=ニックネーム -user.profile.nickname.desc=ボットがユーザーを呼ぶための名前を設定します -user.profile.input_value={ATTR} の値を入力してください -user.profile.set_success={ATTR} を {VALUE} に設定しました -user.profile.set_failed={ATTR} の設定に失敗しました。入力が正しいかどうかを確認してください - -rpm.move_up=上に移動 -rpm.move_down=下に移動 -rpm.move_top=トップに移動 - -weather.city_not_found=都市 {CITY} が見つかりません -weather.weather_not_found=都市 {CITY} の天気情報が見つかりません -weather.no_key=天気APIキーが設定されていません。設定ファイルにweather_keyを追加してください - -status.friends=友達 -status.groups=グループ -status.plugins=プラグイン -status.resources=リソースパッケージ -status.bots=ボット -status.message_sent=メッセージを送信 -status.message_received=メッセージを受信 -status.cpu=CPU -status.memory=メモリ -status.swap=スワップ -status.disk=ディスク -status.usage=使用率 -status.total=合計 -status.used=使用済み -status.free=空き容量 -status.runtime=実行時間 -status.days=日 -status.hours=時間 -status.minutes=分 -status.seconds=秒 -status.cores=コア -status.threads=スレッド -status.process=プロセス +language.name=日本語 + +log.debug=デバッグ +log.info=情報 +log.warning=警告 +log.error=エラー +log.success=成功 + +liteyuki.restart=再起動 +liteyuki.restart_now=今すぐ再起動 +liteyuki.update_restart=更新が完了しました。{RESTART}または後で手動で再起動して、これらの更新を適用してください +liteyuki.current_config=現在の設定 +liteyuki.static_config=静的ファイルの設定 +liteyuki.stored_config=保存された設定 +liteyuki.config_set_success=設定 {KEY}={VAL} が正常に設定されました +liteyuki.stats.group=グループ +liteyuki.stats.user=友達 +liteyuki.stats.plugin=プラグイン +liteyuki.stats.sent=送信 +liteyuki.stats.received=受信 +liteyuki.stats.run_time=実行時間 +liteyuki.stats.groups=グループ +liteyuki.stats.friends=友達 +liteyuki.stats.plugins=プラグイン +liteyuki.image_mode_on=Markdown画像モードをオンにする +liteyuki.image_mode_off=Markdown画像モードをオフにする +liteyuki.invalid_command=無効なコマンドまたはパラメータ {TEXT} +liteyuki.reload_resources=リソースをリロード +liteyuki.list_resources=リソースパッケージ一覧 +liteyuki.reload_resources_success=リソースのリロードに成功しました。合計 {NUM} 個のリソースパッケージ +liteyuki.loaded_resources= {NUM} 個のリソースパッケージが読み込まれました。優先順位でソートされます +liteyuki.unloaded_resources=読み込まれていないリソースパッケージ +liteyuki.load_resource_success=リソースパッケージ {NAME} を正常に読み込みました +liteyuki.unload_resource_success=リソースパッケージ {NAME} を正常にアンロードしました +liteyuki.load_resource_failed=リソースパッケージ {NAME} の読み込みに失敗しました +liteyuki.unload_resource_failed=リソースパッケージ {NAME} のアンロードに失敗しました +liteyuki.resource_not_found=リソースパッケージ {NAME} が見つかりませんまたは操作できません +liteyuki.resource_already_loaded=リソースパッケージ {NAME} はすでに読み込まれています。重複して実行しないでください +liteyuki.resource_already_unloaded=リソースパッケージ {NAME} はすでにアンロードされています。重複して実行しないでください +liteyuki.need_reload=これらの更新を適用するには、{BTN} 再起動してください +liteyuki.dont_repeat=繰り返さないでください +liteyuki.change_priority_success=リソースパッケージ {NAME} の優先順位を変更しました +liteyuki.change_priority_failed=リソースパッケージ {NAME} の優先順位の変更に失敗しました +liteyuki.group_already=グループ {GROUP} はすでに {STATUS} 状態です。再度操作する必要はありません +liteyuki.group_success=グループ {GROUP} が {STATUS} されました +liteyuki.permission_denied=権限がありません +liteyuki.config_remove_success=設定項目 {KEY} を削除しました + +main.current_language=現在の言語設定: {LANG} +main.enable_webdash=ウェブダッシュボードが有効になりました: {URL} +main.monitor.title=Liteyuki モニター +main.monitor.description=Liteyuki ボットの監視パネル +main.monitor.cpu=CPU +main.monitor.memory=メモリ +main.monitor.swap=スワップ +main.monitor.disk=ディスク +main.monitor.usage=使用率 +main.monitor.total=合計 +main.monitor.used=使用済み +main.monitor.free=空き容量 + +data_manager.migrate_success=データモデル {NAME} が正常に移行されました + +npm.loaded_plugins=読み込まれたプラグイン +npm.total=合計 {TOTAL} +npm.help=ヘルプ +npm.usage=使用法 +npm.description=説明 +npm.disable=無効にする +npm.disable_global=グローバルで無効にする +npm.enable=有効にする +npm.enable_global=グローバルで有効にする +npm.install=インストール +npm.uninstall=アンインストール +npm.installing={NAME} をインストールしています +npm.cannot_uninstall=アンインストールできません +npm.no_description=説明なし +npm.store_update_success=プラグインストアのデータが正常に更新されました +npm.store_update_failed=プラグインストアのデータの更新に失敗しました +npm.search_result=検索結果 +npm.search_no_result=検索結果がありません +npm.too_many_results=多すぎる結果です。{HIDE_NUM} 件が非表示にされました。キーワードを絞って検索してください +npm.install_success={NAME} を正常にインストールしました +npm.install_failed={NAME} のインストールに失敗しました。ログを参照して詳細情報を取得し、解決できない場合は{HOMEPAGE}を訪問してサポートを求めてください +npm.uninstall_success={NAME} を正常にアンインストールしました。次回の再起動で有効になります +npm.uninstall_failed={NAME} のアンインストールに失敗しました +npm.load_failed={NAME} の読み込みに失敗しました。詳細情報はコンソールで確認し、依存関係または設定が正しいかどうかを確認し、解決できない場合は{HOMEPAGE}を訪問してサポートを求めてください +npm.plugin_not_found={NAME} がプラグインストアで見つかりませんでした。ストア情報を更新するか、スペルを確認してください +npm.plugin_not_installed={NAME} がインストールされていません +npm.plugin_already_installed={NAME} はすでにインストールされています。重複して実行しないでください +npm.author=作者 +npm.homepage=ホームページ +npm.pypi=PyPI +npm.next_page=次のページ +npm.prev_page=前のページ +npm.update=更新 +npm.plugin_cannot_be_toggled=プラグイン {NAME} を有効または無効にできません +npm.plugin_already=プラグイン {NAME} はすでに {STATUS} 状態です。再度操作する必要はありません +npm.toggle_failed=プラグイン {NAME} を {STATUS} できませんでした: {ERROR} +npm.toggle_success=プラグイン {NAME} を {STATUS} しました +npm.page={PAGE}/{TOTAL} ページ +npm.update_index=プラグインインデックスを更新 +npm.list_plugins=プラグイン一覧 +npm.disable_session=セッション中にプラグインを無効にしました +npm.enable_session=セッション中にプラグインを有効にしました +npm.help=ヘルプ +npm.search=検索 + +user.profile.edit=編集 +user.profile.set=設定 +user.profile_manager.query=あなたのプロファイル {ATTR} は {VALUE} です +user.profile_manager.set=あなたのプロファイル {ATTR} を {VALUE} に設定しました +user.profile.settings=設定 +user.profile.info=情報 +user.profile.lang=言語 +user.profile.lang.desc=ユーザーの言語を設定します +user.profile.timezone=タイムゾーン +user.profile.timezone.desc=ユーザーの現在のタイムゾーンを設定します +user.profile.theme=テーマ +user.profile.theme.desc=ユーザーのUIテーマを設定します +user.profile.location=位置 +user.profile.location.desc=ユーザーの位置情報を設定します +user.profile.nickname=ニックネーム +user.profile.nickname.desc=ボットがユーザーを呼ぶための名前を設定します +user.profile.input_value={ATTR} の値を入力してください +user.profile.set_success={ATTR} を {VALUE} に設定しました +user.profile.set_failed={ATTR} の設定に失敗しました。入力が正しいかどうかを確認してください + +rpm.move_up=上に移動 +rpm.move_down=下に移動 +rpm.move_top=トップに移動 + +weather.city_not_found=都市 {CITY} が見つかりません +weather.weather_not_found=都市 {CITY} の天気情報が見つかりません +weather.no_key=天気APIキーが設定されていません。設定ファイルにweather_keyを追加してください + +status.friends=友達 +status.groups=グループ +status.plugins=プラグイン +status.resources=リソースパッケージ +status.bots=ボット +status.message_sent=メッセージを送信 +status.message_received=メッセージを受信 +status.cpu=CPU +status.memory=メモリ +status.swap=スワップ +status.disk=ディスク +status.usage=使用率 +status.total=合計 +status.used=使用済み +status.free=空き容量 +status.runtime=実行時間 +status.days=日 +status.hours=時間 +status.minutes=分 +status.seconds=秒 +status.cores=コア +status.threads=スレッド +status.process=プロセス status.description=軽雪監視パネル \ No newline at end of file diff --git a/liteyuki/resources/vanilla_language/lang/ko.lang b/src/resources/vanilla_language/lang/ko.lang similarity index 97% rename from liteyuki/resources/vanilla_language/lang/ko.lang rename to src/resources/vanilla_language/lang/ko.lang index ea7b882..609b494 100644 --- a/liteyuki/resources/vanilla_language/lang/ko.lang +++ b/src/resources/vanilla_language/lang/ko.lang @@ -1,159 +1,159 @@ -language.name=한국어 - -log.debug=디버그 -log.info=정보 -log.warning=경고 -log.error=오류 -log.success=성공 - -liteyuki.restart=재시작 -liteyuki.restart_now=즉시 재시작 -liteyuki.update_restart=업데이트가 완료되었습니다. {RESTART}하거나 나중에 수동으로 재시작하여 이 업데이트를 적용할 수 있습니다. -liteyuki.current_config=현재 구성 항목 -liteyuki.static_config=정적 파일 구성 항목 -liteyuki.stored_config=저장된 구성 항목 -liteyuki.config_set_success=구성 항목 {KEY}={VAL} 설정 성공 -liteyuki.stats.group=그룹 -liteyuki.stats.user=친구 -liteyuki.stats.plugin=플러그인 -liteyuki.stats.sent=전송 -liteyuki.stats.received=수신 -liteyuki.stats.run_time=실행 시간 -liteyuki.stats.groups=그룹 -liteyuki.stats.friends=친구 -liteyuki.stats.plugins=플러그인 -liteyuki.image_mode_on=Markdown 이미지 모드 활성화 -liteyuki.image_mode_off=Markdown 이미지 모드 비활성화 -liteyuki.invalid_command=유효하지 않은 명령 또는 매개변수 {TEXT} -liteyuki.reload_resources=자원 다시로드 -liteyuki.list_resources=자원 목록 -liteyuki.reload_resources_success=자원 다시로드 성공, 총 {NUM}개 자원 패키지 -liteyuki.loaded_resources=로드된 자원 {NUM}개, 우선 순위별로 정렬됨 -liteyuki.unloaded_resources=로드되지 않은 자원 패키지 -liteyuki.load_resource_success=자원 패키지 {NAME} 로드 성공 -liteyuki.unload_resource_success=자원 패키지 {NAME} 언로드 성공 -liteyuki.load_resource_failed=자원 패키지 {NAME} 로드 실패 -liteyuki.unload_resource_failed=자원 패키지 {NAME} 언로드 실패 -liteyuki.resource_not_found=자원 패키지 {NAME}이(가) 존재하지 않거나 조작할 수 없습니다. -liteyuki.resource_already_loaded=자원 패키지 {NAME}이(가) 이미 로드되어 있습니다. 중복 작업을 피하세요. -liteyuki.resource_already_unloaded=자원 패키지 {NAME}이(가) 이미 언로드되어 있습니다. 중복 작업을 피하세요. -liteyuki.need_reload={BTN}을(를) 다시로드하여 이러한 업데이트를 적용하세요. -liteyuki.dont_repeat=중복 작업을 피하세요. -liteyuki.change_priority_success=자원 패키지 {NAME}의 우선 순위가 성공적으로 변경되었습니다. -liteyuki.change_priority_failed=자원 패키지 {NAME}의 우선 순위 변경에 실패했습니다. -liteyuki.group_already=그룹 {GROUP}은(는) 이미 {STATUS} 상태이므로 중복 작업을 피하세요. -liteyuki.group_success=그룹 {GROUP} {STATUS} 성공 -liteyuki.permission_denied=권한이 거부되었습니다. -liteyuki.config_remove_success=구성 항목 {KEY} 제거 성공 - -main.current_language=현재 구성 언어: {LANG} -main.enable_webdash=웹 대시보드가 활성화되었습니다: {URL} -main.monitor.title=Liteyuki 모니터링 패널 -main.monitor.description=Liteyuki 봇 모니터링 패널 -main.monitor.cpu=CPU -main.monitor.memory=메모리 -main.monitor.swap=스왑 -main.monitor.disk=디스크 -main.monitor.usage=사용률 -main.monitor.total=총량 -main.monitor.used=사용함 -main.monitor.free=여유 - -data_manager.migrate_success=데이터 모델 {NAME} 이(가) 성공적으로 이동되었습니다. - -npm.loaded_plugins=로드된 플러그인 -npm.total=총 {TOTAL} -npm.help=도움말 -npm.usage=사용법 -npm.description=설명 -npm.disable=비활성화 -npm.disable_global=전역 비활성화 -npm.enable=활성화 -npm.enable_global=전역 활성화 -npm.install=설치 -npm.uninstall=제거 -npm.installing=설치 중 {NAME} -npm.cannot_uninstall=제거할 수 없음 -npm.no_description=설명 없음 -npm.store_update_success=플러그인 스토어 업데이트 성공 -npm.store_update_failed=플러그인 스토어 업데이트 실패 -npm.search_result=검색 결과 -npm.search_no_result=검색 결과 없음 -npm.too_many_results=결과가 너무 많습니다. {HIDE_NUM}개의 항목이 숨겨졌습니다. 검색어를 제한하세요. -npm.install_success={NAME} 설치 성공 -npm.install_failed={NAME} 설치 실패. 자세한 내용은 로그를 확인하거나 문제를 해결할 수 없는 경우 {HOMEPAGE}을(를) 방문하세요. -npm.uninstall_success={NAME} 제거 성공. 다음 재시작에 적용됩니다. -npm.uninstall_failed={NAME} 제거 실패 -npm.load_failed={NAME} 로드 실패. 의존성 또는 설정을 확인하고 문제를 해결할 수 없는 경우 {HOMEPAGE}을(를) 방문하세요. -npm.plugin_not_found={NAME}을(를) 스토어에서 찾을 수 없습니다. 스토어 정보를 업데이트하거나 철자를 확인하세요. -npm.plugin_not_installed={NAME}이(가) 설치되지 않았습니다. -npm.plugin_already_installed={NAME}이(가) 이미 설치되었습니다. 중복 설치를 피하세요. -npm.author=저자 -npm.homepage=홈페이지 -npm.pypi=PyPI -npm.next_page=다음 페이지 -npm.prev_page=이전 페이지 -npm.update=업데이트 -npm.plugin_cannot_be_toggled={NAME} 플러그인은 활성화 또는 비활성화할 수 없습니다. -npm.plugin_already={NAME} 플러그인은 이미 {STATUS} 상태입니다. 중복 작업을 피하세요. -npm.toggle_failed={NAME} 플러그인 {STATUS} 실패: {ERROR} -npm.toggle_success={NAME} 플러그인 {STATUS} 성공 -npm.page={PAGE}/{TOTAL} 페이지 -npm.update_index=플러그인 인덱스 업데이트 -npm.list_plugins=플러그인 목록 -npm.disable_session=현재 세션에서 플러그인을 비활성화합니다. -npm.enable_session=현재 세션에서 플러그인을 활성화합니다. -npm.help=도움말 -npm.search=검색 - -user.profile.edit=수정 -user.profile.set=설정 -user.profile_manager.query=당신의 프로필 {ATTR}은(는) {VALUE}입니다. -user.profile_manager.set=당신의 프로필 {ATTR}은(는) {VALUE}(으)로 설정되었습니다. -user.profile.settings=설정 -user.profile.info=프로필 정보 -user.profile.lang=언어 -user.profile.lang.desc=사용자 언어 설정 -user.profile.timezone=시간대 -user.profile.timezone.desc=사용자의 현재 시간대 설정 -user.profile.theme=테마 -user.profile.theme.desc=사용자 인터페이스 테마 설정 -user.profile.location=위치 -user.profile.location.desc=사용자 위치 정보 설정 -user.profile.nickname=별명 -user.profile.nickname.desc=Bot이 사용자를 부를 때 사용되는 이름 설정 -user.profile.input_value={ATTR}의 값을 입력하세요. -user.profile.set_success={ATTR}가 {VALUE}(으)로 설정되었습니다. -user.profile.set_failed={ATTR} 설정 실패. 입력이 유효한지 확인하세요. - -rpm.move_up=위로 이동 -rpm.move_down=아래로 이동 -rpm.move_top=최상단으로 이동 - -weather.city_not_found={CITY} 도시를 찾을 수 없습니다. -weather.weather_not_found={CITY} 도시의 날씨 정보를 찾을 수 없습니다. -weather.no_key=날씨 API 키가 설정되지 않았습니다. 설정 파일에 weather_key를 추가하세요. - -status.friends=친구 -status.groups=그룹 -status.plugins=플러그인 -status.resources=자원 패키지 -status.bots=봇 -status.message_sent=전송된 메시지 -status.message_received=수신된 메시지 -status.cpu=CPU -status.memory=메모리 -status.swap=스왑 -status.disk=디스크 -status.usage=사용률 -status.total=총량 -status.used=사용함 -status.free=여유 -status.runtime=실행 시간 -status.days=일 -status.hours=시간 -status.minutes=분 -status.seconds=초 -status.cores=코어 -status.threads=스레드 +language.name=한국어 + +log.debug=디버그 +log.info=정보 +log.warning=경고 +log.error=오류 +log.success=성공 + +liteyuki.restart=재시작 +liteyuki.restart_now=즉시 재시작 +liteyuki.update_restart=업데이트가 완료되었습니다. {RESTART}하거나 나중에 수동으로 재시작하여 이 업데이트를 적용할 수 있습니다. +liteyuki.current_config=현재 구성 항목 +liteyuki.static_config=정적 파일 구성 항목 +liteyuki.stored_config=저장된 구성 항목 +liteyuki.config_set_success=구성 항목 {KEY}={VAL} 설정 성공 +liteyuki.stats.group=그룹 +liteyuki.stats.user=친구 +liteyuki.stats.plugin=플러그인 +liteyuki.stats.sent=전송 +liteyuki.stats.received=수신 +liteyuki.stats.run_time=실행 시간 +liteyuki.stats.groups=그룹 +liteyuki.stats.friends=친구 +liteyuki.stats.plugins=플러그인 +liteyuki.image_mode_on=Markdown 이미지 모드 활성화 +liteyuki.image_mode_off=Markdown 이미지 모드 비활성화 +liteyuki.invalid_command=유효하지 않은 명령 또는 매개변수 {TEXT} +liteyuki.reload_resources=자원 다시로드 +liteyuki.list_resources=자원 목록 +liteyuki.reload_resources_success=자원 다시로드 성공, 총 {NUM}개 자원 패키지 +liteyuki.loaded_resources=로드된 자원 {NUM}개, 우선 순위별로 정렬됨 +liteyuki.unloaded_resources=로드되지 않은 자원 패키지 +liteyuki.load_resource_success=자원 패키지 {NAME} 로드 성공 +liteyuki.unload_resource_success=자원 패키지 {NAME} 언로드 성공 +liteyuki.load_resource_failed=자원 패키지 {NAME} 로드 실패 +liteyuki.unload_resource_failed=자원 패키지 {NAME} 언로드 실패 +liteyuki.resource_not_found=자원 패키지 {NAME}이(가) 존재하지 않거나 조작할 수 없습니다. +liteyuki.resource_already_loaded=자원 패키지 {NAME}이(가) 이미 로드되어 있습니다. 중복 작업을 피하세요. +liteyuki.resource_already_unloaded=자원 패키지 {NAME}이(가) 이미 언로드되어 있습니다. 중복 작업을 피하세요. +liteyuki.need_reload={BTN}을(를) 다시로드하여 이러한 업데이트를 적용하세요. +liteyuki.dont_repeat=중복 작업을 피하세요. +liteyuki.change_priority_success=자원 패키지 {NAME}의 우선 순위가 성공적으로 변경되었습니다. +liteyuki.change_priority_failed=자원 패키지 {NAME}의 우선 순위 변경에 실패했습니다. +liteyuki.group_already=그룹 {GROUP}은(는) 이미 {STATUS} 상태이므로 중복 작업을 피하세요. +liteyuki.group_success=그룹 {GROUP} {STATUS} 성공 +liteyuki.permission_denied=권한이 거부되었습니다. +liteyuki.config_remove_success=구성 항목 {KEY} 제거 성공 + +main.current_language=현재 구성 언어: {LANG} +main.enable_webdash=웹 대시보드가 활성화되었습니다: {URL} +main.monitor.title=Liteyuki 모니터링 패널 +main.monitor.description=Liteyuki 봇 모니터링 패널 +main.monitor.cpu=CPU +main.monitor.memory=메모리 +main.monitor.swap=스왑 +main.monitor.disk=디스크 +main.monitor.usage=사용률 +main.monitor.total=총량 +main.monitor.used=사용함 +main.monitor.free=여유 + +data_manager.migrate_success=데이터 모델 {NAME} 이(가) 성공적으로 이동되었습니다. + +npm.loaded_plugins=로드된 플러그인 +npm.total=총 {TOTAL} +npm.help=도움말 +npm.usage=사용법 +npm.description=설명 +npm.disable=비활성화 +npm.disable_global=전역 비활성화 +npm.enable=활성화 +npm.enable_global=전역 활성화 +npm.install=설치 +npm.uninstall=제거 +npm.installing=설치 중 {NAME} +npm.cannot_uninstall=제거할 수 없음 +npm.no_description=설명 없음 +npm.store_update_success=플러그인 스토어 업데이트 성공 +npm.store_update_failed=플러그인 스토어 업데이트 실패 +npm.search_result=검색 결과 +npm.search_no_result=검색 결과 없음 +npm.too_many_results=결과가 너무 많습니다. {HIDE_NUM}개의 항목이 숨겨졌습니다. 검색어를 제한하세요. +npm.install_success={NAME} 설치 성공 +npm.install_failed={NAME} 설치 실패. 자세한 내용은 로그를 확인하거나 문제를 해결할 수 없는 경우 {HOMEPAGE}을(를) 방문하세요. +npm.uninstall_success={NAME} 제거 성공. 다음 재시작에 적용됩니다. +npm.uninstall_failed={NAME} 제거 실패 +npm.load_failed={NAME} 로드 실패. 의존성 또는 설정을 확인하고 문제를 해결할 수 없는 경우 {HOMEPAGE}을(를) 방문하세요. +npm.plugin_not_found={NAME}을(를) 스토어에서 찾을 수 없습니다. 스토어 정보를 업데이트하거나 철자를 확인하세요. +npm.plugin_not_installed={NAME}이(가) 설치되지 않았습니다. +npm.plugin_already_installed={NAME}이(가) 이미 설치되었습니다. 중복 설치를 피하세요. +npm.author=저자 +npm.homepage=홈페이지 +npm.pypi=PyPI +npm.next_page=다음 페이지 +npm.prev_page=이전 페이지 +npm.update=업데이트 +npm.plugin_cannot_be_toggled={NAME} 플러그인은 활성화 또는 비활성화할 수 없습니다. +npm.plugin_already={NAME} 플러그인은 이미 {STATUS} 상태입니다. 중복 작업을 피하세요. +npm.toggle_failed={NAME} 플러그인 {STATUS} 실패: {ERROR} +npm.toggle_success={NAME} 플러그인 {STATUS} 성공 +npm.page={PAGE}/{TOTAL} 페이지 +npm.update_index=플러그인 인덱스 업데이트 +npm.list_plugins=플러그인 목록 +npm.disable_session=현재 세션에서 플러그인을 비활성화합니다. +npm.enable_session=현재 세션에서 플러그인을 활성화합니다. +npm.help=도움말 +npm.search=검색 + +user.profile.edit=수정 +user.profile.set=설정 +user.profile_manager.query=당신의 프로필 {ATTR}은(는) {VALUE}입니다. +user.profile_manager.set=당신의 프로필 {ATTR}은(는) {VALUE}(으)로 설정되었습니다. +user.profile.settings=설정 +user.profile.info=프로필 정보 +user.profile.lang=언어 +user.profile.lang.desc=사용자 언어 설정 +user.profile.timezone=시간대 +user.profile.timezone.desc=사용자의 현재 시간대 설정 +user.profile.theme=테마 +user.profile.theme.desc=사용자 인터페이스 테마 설정 +user.profile.location=위치 +user.profile.location.desc=사용자 위치 정보 설정 +user.profile.nickname=별명 +user.profile.nickname.desc=Bot이 사용자를 부를 때 사용되는 이름 설정 +user.profile.input_value={ATTR}의 값을 입력하세요. +user.profile.set_success={ATTR}가 {VALUE}(으)로 설정되었습니다. +user.profile.set_failed={ATTR} 설정 실패. 입력이 유효한지 확인하세요. + +rpm.move_up=위로 이동 +rpm.move_down=아래로 이동 +rpm.move_top=최상단으로 이동 + +weather.city_not_found={CITY} 도시를 찾을 수 없습니다. +weather.weather_not_found={CITY} 도시의 날씨 정보를 찾을 수 없습니다. +weather.no_key=날씨 API 키가 설정되지 않았습니다. 설정 파일에 weather_key를 추가하세요. + +status.friends=친구 +status.groups=그룹 +status.plugins=플러그인 +status.resources=자원 패키지 +status.bots=봇 +status.message_sent=전송된 메시지 +status.message_received=수신된 메시지 +status.cpu=CPU +status.memory=메모리 +status.swap=스왑 +status.disk=디스크 +status.usage=사용률 +status.total=총량 +status.used=사용함 +status.free=여유 +status.runtime=실행 시간 +status.days=일 +status.hours=시간 +status.minutes=분 +status.seconds=초 +status.cores=코어 +status.threads=스레드 status.process=프로세스 \ No newline at end of file diff --git a/liteyuki/resources/vanilla_language/lang/ru.lang b/src/resources/vanilla_language/lang/ru.lang similarity index 98% rename from liteyuki/resources/vanilla_language/lang/ru.lang rename to src/resources/vanilla_language/lang/ru.lang index b04944a..ffd4c1a 100644 --- a/liteyuki/resources/vanilla_language/lang/ru.lang +++ b/src/resources/vanilla_language/lang/ru.lang @@ -1,159 +1,159 @@ -language.name=Китайский (упрощенный) - -log.debug=Отладка -log.info=Информация -log.warning=Предупреждение -log.error=Ошибка -log.success=Успешно - -liteyuki.restart=Перезагрузить -liteyuki.restart_now=Перезагрузить сейчас -liteyuki.update_restart=Обновление завершено. Вы можете {RESTART} или перезагрузить вручную позже, чтобы применить эти обновления -liteyuki.current_config=Текущая конфигурация -liteyuki.static_config=Конфигурация статических файлов -liteyuki.stored_config=Сохраненная конфигурация -liteyuki.config_set_success=Конфигурация {KEY}={VAL} успешно установлена -liteyuki.stats.group=Группа -liteyuki.stats.user=Пользователь -liteyuki.stats.plugin=Плагин -liteyuki.stats.sent=Отправлено -liteyuki.stats.received=Получено -liteyuki.stats.run_time=Время работы -liteyuki.stats.groups=Группы -liteyuki.stats.friends=Друзья -liteyuki.stats.plugins=Плагины -liteyuki.image_mode_on=Включить режим изображений Markdown -liteyuki.image_mode_off=Отключить режим изображений Markdown -liteyuki.invalid_command=Неверная команда или параметр {TEXT} -liteyuki.reload_resources=Перезагрузить ресурсы -liteyuki.list_resources=Список ресурсов -liteyuki.reload_resources_success=Ресурсы успешно перезагружены. Всего {NUM} ресурсов -liteyuki.loaded_resources=Загружено {NUM} ресурсов, отсортированных по приоритету -liteyuki.unloaded_resources=Незагруженные ресурсы -liteyuki.load_resource_success=Ресурс {NAME} успешно загружен -liteyuki.unload_resource_success=Ресурс {NAME} успешно выгружен -liteyuki.load_resource_failed=Не удалось загрузить ресурс {NAME} -liteyuki.unload_resource_failed=Не удалось выгрузить ресурс {NAME} -liteyuki.resource_not_found=Ресурс {NAME} не найден или не доступен -liteyuki.resource_already_loaded=Ресурс {NAME} уже загружен, повторная загрузка невозможна -liteyuki.resource_already_unloaded=Ресурс {NAME} уже выгружен, повторная выгрузка невозможна -liteyuki.need_reload=Пожалуйста, {BTN}, чтобы применить эти обновления -liteyuki.dont_repeat=Пожалуйста, не повторяйте эту операцию -liteyuki.change_priority_success=Приоритет ресурса {NAME} успешно изменен -liteyuki.change_priority_failed=Не удалось изменить приоритет ресурса {NAME} -liteyuki.group_already=Группа {GROUP} уже в состоянии {STATUS}, дополнительные действия не требуются -liteyuki.group_success=Группа {GROUP} {STATUS} успешно -liteyuki.permission_denied=Недостаточно прав -liteyuki.config_remove_success=Конфигурация {KEY} успешно удалена - -main.current_language=Текущий язык конфигурации: {LANG} -main.enable_webdash=Веб-панель мониторинга успешно включена: {URL} -main.monitor.title=Панель мониторинга Lightyuki -main.monitor.description=Панель мониторинга бота Lightyuki -main.monitor.cpu=ЦП -main.monitor.memory=Память -main.monitor.swap=Подкачка -main.monitor.disk=Диск -main.monitor.usage=Использование -main.monitor.total=Всего -main.monitor.used=Использовано -main.monitor.free=Свободно - -data_manager.migrate_success=Модель данных {NAME} успешно перенесена - -npm.loaded_plugins=Загруженные плагины -npm.total=Всего {TOTAL} -npm.help=Помощь -npm.usage=Использование -npm.description=Описание -npm.disable=Отключить -npm.disable_global=Глобально отключить -npm.enable=Включить -npm.enable_global=Глобально включить -npm.install=Установить -npm.uninstall=Удалить -npm.installing=Установка {NAME} -npm.cannot_uninstall=Невозможно удалить -npm.no_description=Нет описания -npm.store_update_success=Обновление данных магазина плагинов успешно завершено -npm.store_update_failed=Не удалось обновить данные магазина плагинов -npm.search_result=Результаты поиска -npm.search_no_result=Нет результатов поиска -npm.too_many_results=Слишком много результатов, скрыто {HIDE_NUM} позиций. Уточните запрос -npm.install_success={NAME} успешно установлен -npm.install_failed={NAME} не удалось установить. Для получения дополнительной информации, пожалуйста, посетите {HOMEPAGE} -npm.uninstall_success={NAME} успешно удален. Изменения вступят в силу после перезагрузки -npm.uninstall_failed={NAME} не удалось удалить -npm.load_failed={NAME} не удалось загрузить. Пожалуйста, проверьте детали в консоли, убедитесь, что зависимости или конфигурация правильны. Если проблема не устранена, посетите {HOMEPAGE} -npm.plugin_not_found={NAME} не найден в магазине. Попробуйте обновить информацию магазина или проверьте правильность написания -npm.plugin_not_installed={NAME} не установлен -npm.plugin_already_installed={NAME} уже установлен, повторная установка невозможна -npm.author=Автор -npm.homepage=Домашняя страница -npm.pypi=PyPI -npm.next_page=Следующая страница -npm.prev_page=Предыдущая страница -npm.update=Обновить -npm.plugin_cannot_be_toggled=Плагин {NAME} невозможно включить или выключить -npm.plugin_already=Плагин {NAME} уже в состоянии {STATUS}, дополнительные действия не требуются -npm.toggle_failed=Не удалось {STATUS} плагин {NAME}: {ERROR} -npm.toggle_success=Плагин {NAME} успешно {STATUS} -npm.page=Страница {PAGE}/{TOTAL} -npm.update_index=Обновить индекс плагинов -npm.list_plugins=Список плагинов -npm.disable_session=Отключить плагины для текущей сессии -npm.enable_session=Включить плагины для текущей сессии -npm.help=Помощь -npm.search=Поиск - -user.profile.edit=Редактировать -user.profile.set=Установить -user.profile_manager.query=Ваша личная информация {ATTR} - {VALUE} -user.profile_manager.set=Ваша личная информация {ATTR} успешно установлена как {VALUE} -user.profile.settings=Настройки -user.profile.info=Информация о профиле -user.profile.lang=Язык -user.profile.lang.desc=Установить язык пользователя -user.profile.timezone=Часовой пояс -user.profile.timezone.desc=Установить текущий часовой пояс пользователя -user.profile.theme=Тема -user.profile.theme.desc=Установить тему интерфейса пользователя -user.profile.location=Местоположение -user.profile.location.desc=Установить информацию о местоположении пользователя -user.profile.nickname=Псевдоним -user.profile.nickname.desc=Установить никнейм бота для пользователя -user.profile.input_value=Пожалуйста, введите значение {ATTR} -user.profile.set_success={ATTR} успешно установлен как {VALUE} -user.profile.set_failed=Не удалось установить {ATTR}. Пожалуйста, проверьте введенные данные - -rpm.move_up=Поднять -rpm.move_down=Опустить -rpm.move_top=Переместить в начало - -weather.city_not_found=Город {CITY} не найден -weather.weather_not_found=Погода для города {CITY} не найдена -weather.no_key=API-ключ для погоды не установлен. Пожалуйста, добавьте weather_key в конфигурационный файл - -status.friends=Друзья -status.groups=Группы -status.plugins=Плагины -status.resources=Ресурсы -status.bots=Боты -status.message_sent=Отправленные сообщения -status.message_received=Полученные сообщения -status.cpu=Центральный процессор -status.memory=Память -status.swap=Подкачка -status.disk=Диск -status.usage=Использование -status.total=Всего -status.used=Использовано -status.free=Свободно -status.runtime=Время работы -status.days=Дни -status.hours=Часы -status.minutes=Минуты -status.seconds=Секунды -status.cores=Ядра -status.threads=Потоки +language.name=Китайский (упрощенный) + +log.debug=Отладка +log.info=Информация +log.warning=Предупреждение +log.error=Ошибка +log.success=Успешно + +liteyuki.restart=Перезагрузить +liteyuki.restart_now=Перезагрузить сейчас +liteyuki.update_restart=Обновление завершено. Вы можете {RESTART} или перезагрузить вручную позже, чтобы применить эти обновления +liteyuki.current_config=Текущая конфигурация +liteyuki.static_config=Конфигурация статических файлов +liteyuki.stored_config=Сохраненная конфигурация +liteyuki.config_set_success=Конфигурация {KEY}={VAL} успешно установлена +liteyuki.stats.group=Группа +liteyuki.stats.user=Пользователь +liteyuki.stats.plugin=Плагин +liteyuki.stats.sent=Отправлено +liteyuki.stats.received=Получено +liteyuki.stats.run_time=Время работы +liteyuki.stats.groups=Группы +liteyuki.stats.friends=Друзья +liteyuki.stats.plugins=Плагины +liteyuki.image_mode_on=Включить режим изображений Markdown +liteyuki.image_mode_off=Отключить режим изображений Markdown +liteyuki.invalid_command=Неверная команда или параметр {TEXT} +liteyuki.reload_resources=Перезагрузить ресурсы +liteyuki.list_resources=Список ресурсов +liteyuki.reload_resources_success=Ресурсы успешно перезагружены. Всего {NUM} ресурсов +liteyuki.loaded_resources=Загружено {NUM} ресурсов, отсортированных по приоритету +liteyuki.unloaded_resources=Незагруженные ресурсы +liteyuki.load_resource_success=Ресурс {NAME} успешно загружен +liteyuki.unload_resource_success=Ресурс {NAME} успешно выгружен +liteyuki.load_resource_failed=Не удалось загрузить ресурс {NAME} +liteyuki.unload_resource_failed=Не удалось выгрузить ресурс {NAME} +liteyuki.resource_not_found=Ресурс {NAME} не найден или не доступен +liteyuki.resource_already_loaded=Ресурс {NAME} уже загружен, повторная загрузка невозможна +liteyuki.resource_already_unloaded=Ресурс {NAME} уже выгружен, повторная выгрузка невозможна +liteyuki.need_reload=Пожалуйста, {BTN}, чтобы применить эти обновления +liteyuki.dont_repeat=Пожалуйста, не повторяйте эту операцию +liteyuki.change_priority_success=Приоритет ресурса {NAME} успешно изменен +liteyuki.change_priority_failed=Не удалось изменить приоритет ресурса {NAME} +liteyuki.group_already=Группа {GROUP} уже в состоянии {STATUS}, дополнительные действия не требуются +liteyuki.group_success=Группа {GROUP} {STATUS} успешно +liteyuki.permission_denied=Недостаточно прав +liteyuki.config_remove_success=Конфигурация {KEY} успешно удалена + +main.current_language=Текущий язык конфигурации: {LANG} +main.enable_webdash=Веб-панель мониторинга успешно включена: {URL} +main.monitor.title=Панель мониторинга Lightyuki +main.monitor.description=Панель мониторинга бота Lightyuki +main.monitor.cpu=ЦП +main.monitor.memory=Память +main.monitor.swap=Подкачка +main.monitor.disk=Диск +main.monitor.usage=Использование +main.monitor.total=Всего +main.monitor.used=Использовано +main.monitor.free=Свободно + +data_manager.migrate_success=Модель данных {NAME} успешно перенесена + +npm.loaded_plugins=Загруженные плагины +npm.total=Всего {TOTAL} +npm.help=Помощь +npm.usage=Использование +npm.description=Описание +npm.disable=Отключить +npm.disable_global=Глобально отключить +npm.enable=Включить +npm.enable_global=Глобально включить +npm.install=Установить +npm.uninstall=Удалить +npm.installing=Установка {NAME} +npm.cannot_uninstall=Невозможно удалить +npm.no_description=Нет описания +npm.store_update_success=Обновление данных магазина плагинов успешно завершено +npm.store_update_failed=Не удалось обновить данные магазина плагинов +npm.search_result=Результаты поиска +npm.search_no_result=Нет результатов поиска +npm.too_many_results=Слишком много результатов, скрыто {HIDE_NUM} позиций. Уточните запрос +npm.install_success={NAME} успешно установлен +npm.install_failed={NAME} не удалось установить. Для получения дополнительной информации, пожалуйста, посетите {HOMEPAGE} +npm.uninstall_success={NAME} успешно удален. Изменения вступят в силу после перезагрузки +npm.uninstall_failed={NAME} не удалось удалить +npm.load_failed={NAME} не удалось загрузить. Пожалуйста, проверьте детали в консоли, убедитесь, что зависимости или конфигурация правильны. Если проблема не устранена, посетите {HOMEPAGE} +npm.plugin_not_found={NAME} не найден в магазине. Попробуйте обновить информацию магазина или проверьте правильность написания +npm.plugin_not_installed={NAME} не установлен +npm.plugin_already_installed={NAME} уже установлен, повторная установка невозможна +npm.author=Автор +npm.homepage=Домашняя страница +npm.pypi=PyPI +npm.next_page=Следующая страница +npm.prev_page=Предыдущая страница +npm.update=Обновить +npm.plugin_cannot_be_toggled=Плагин {NAME} невозможно включить или выключить +npm.plugin_already=Плагин {NAME} уже в состоянии {STATUS}, дополнительные действия не требуются +npm.toggle_failed=Не удалось {STATUS} плагин {NAME}: {ERROR} +npm.toggle_success=Плагин {NAME} успешно {STATUS} +npm.page=Страница {PAGE}/{TOTAL} +npm.update_index=Обновить индекс плагинов +npm.list_plugins=Список плагинов +npm.disable_session=Отключить плагины для текущей сессии +npm.enable_session=Включить плагины для текущей сессии +npm.help=Помощь +npm.search=Поиск + +user.profile.edit=Редактировать +user.profile.set=Установить +user.profile_manager.query=Ваша личная информация {ATTR} - {VALUE} +user.profile_manager.set=Ваша личная информация {ATTR} успешно установлена как {VALUE} +user.profile.settings=Настройки +user.profile.info=Информация о профиле +user.profile.lang=Язык +user.profile.lang.desc=Установить язык пользователя +user.profile.timezone=Часовой пояс +user.profile.timezone.desc=Установить текущий часовой пояс пользователя +user.profile.theme=Тема +user.profile.theme.desc=Установить тему интерфейса пользователя +user.profile.location=Местоположение +user.profile.location.desc=Установить информацию о местоположении пользователя +user.profile.nickname=Псевдоним +user.profile.nickname.desc=Установить никнейм бота для пользователя +user.profile.input_value=Пожалуйста, введите значение {ATTR} +user.profile.set_success={ATTR} успешно установлен как {VALUE} +user.profile.set_failed=Не удалось установить {ATTR}. Пожалуйста, проверьте введенные данные + +rpm.move_up=Поднять +rpm.move_down=Опустить +rpm.move_top=Переместить в начало + +weather.city_not_found=Город {CITY} не найден +weather.weather_not_found=Погода для города {CITY} не найдена +weather.no_key=API-ключ для погоды не установлен. Пожалуйста, добавьте weather_key в конфигурационный файл + +status.friends=Друзья +status.groups=Группы +status.plugins=Плагины +status.resources=Ресурсы +status.bots=Боты +status.message_sent=Отправленные сообщения +status.message_received=Полученные сообщения +status.cpu=Центральный процессор +status.memory=Память +status.swap=Подкачка +status.disk=Диск +status.usage=Использование +status.total=Всего +status.used=Использовано +status.free=Свободно +status.runtime=Время работы +status.days=Дни +status.hours=Часы +status.minutes=Минуты +status.seconds=Секунды +status.cores=Ядра +status.threads=Потоки status.process=Процессы \ No newline at end of file diff --git a/liteyuki/resources/vanilla_language/lang/zh-CN.lang b/src/resources/vanilla_language/lang/zh-CN.lang similarity index 97% rename from liteyuki/resources/vanilla_language/lang/zh-CN.lang rename to src/resources/vanilla_language/lang/zh-CN.lang index 079644f..b994116 100644 --- a/liteyuki/resources/vanilla_language/lang/zh-CN.lang +++ b/src/resources/vanilla_language/lang/zh-CN.lang @@ -1,160 +1,160 @@ -language.name=简体中文 - -log.debug=调试 -log.info=信息 -log.warning=警告 -log.error=错误 -log.success=成功 - -liteyuki.restart=重启 -liteyuki.restart_now=立即重启 -liteyuki.update_restart=更新完成,你可以{RESTART}或稍后手动重启以应用这些更新 -liteyuki.current_config=当前配置项如下 -liteyuki.static_config=静态文件配置项 -liteyuki.stored_config=储存的配置项 -liteyuki.config_set_success=配置项 {KEY}={VAL} 设置成功 -liteyuki.stats.group=群 -liteyuki.stats.user=好友 -liteyuki.stats.plugin=插件 -liteyuki.stats.sent=发送 -liteyuki.stats.received=接收 -liteyuki.stats.run_time=运行时间 -liteyuki.stats.groups=群 -liteyuki.stats.friends=好友 -liteyuki.stats.plugins=插件 -liteyuki.image_mode_on=开启Markdown图片模式 -liteyuki.image_mode_off=关闭Markdown图片模式 -liteyuki.invalid_command=无效的命令或参数 {TEXT} -liteyuki.reload_resources=重载资源 -liteyuki.list_resources=资源包列表 -liteyuki.reload_resources_success=资源重载成功,共计 {NUM} 个资源包 -liteyuki.loaded_resources=已加载 {NUM} 个资源包,按照优先级排序 -liteyuki.unloaded_resources=未加载资源包 -liteyuki.load_resource_success=资源包 {NAME} 加载成功 -liteyuki.unload_resource_success=资源包 {NAME} 卸载成功 -liteyuki.load_resource_failed=资源包 {NAME} 加载失败 -liteyuki.unload_resource_failed=资源包 {NAME} 卸载失败 -liteyuki.resource_not_found=资源包 {NAME} 不存在或不可操作 -liteyuki.resource_already_loaded=资源包 {NAME} 已加载,请勿重复操作 -liteyuki.resource_already_unloaded=资源包 {NAME} 已卸载,请勿重复操作 -liteyuki.need_reload=请{BTN}重载以应用这些更新 -liteyuki.dont_repeat=请勿重复操作 -liteyuki.change_priority_success=资源包 {NAME} 优先级修改成功 -liteyuki.change_priority_failed=资源包 {NAME} 优先级修改失败 -liteyuki.group_already=群 {GROUP} 已经是 {STATUS} 状态,无需重复操作 -liteyuki.group_success=群 {GROUP} {STATUS} 成功 -liteyuki.permission_denied=权限不足 -liteyuki.config_remove_success=配置项 {KEY} 移除成功 - -main.current_language=当前配置语言为: {LANG} -main.enable_webdash=已启用网页监控面板: {URL} -main.monitor.title=轻雪监控面板 -main.monitor.description=轻雪机器人监控面板 -main.monitor.cpu=处理器 -main.monitor.memory=内存 -main.monitor.swap=交换空间 -main.monitor.disk=磁盘 -main.monitor.usage=使用率 -main.monitor.total=总计 -main.monitor.used=已用 -main.monitor.free=空闲 - -data_manager.migrate_success=数据模型{NAME}迁移成功 - -npm.loaded_plugins=已加载插件 -npm.total=总计 {TOTAL} -npm.help=帮助 -npm.usage=用法 -npm.description=描述 -npm.disable=停用 -npm.disable_global=全局停用 -npm.enable=启用 -npm.enable_global=全局启用 -npm.install=安装 -npm.uninstall=卸载 -npm.installing=正在安装 {NAME} -npm.cannot_uninstall=无法卸载 -npm.no_description=无描述 -npm.store_update_success=插件商店数据更新成功 -npm.store_update_failed=插件商店数据更新失败 -npm.search_result=搜索结果 -npm.search_no_result=无搜索结果 -npm.too_many_results=内容过多,{HIDE_NUM}项已隐藏,请限制关键字搜索 -npm.install_success={NAME} 安装成功 -npm.install_failed={NAME} 安装失败,请查看日志获取详细信息,如不能解决,请访问{HOMEPAGE}寻求帮助 -npm.uninstall_success={NAME} 卸载成功,下次重启生效 -npm.uninstall_failed={NAME} 卸载失败 -npm.load_failed={NAME} 加载失败,请在控制台查看详细信息,检查依赖或配置是否正确,如不能解决,请访问{HOMEPAGE}寻求帮助 -npm.plugin_not_found=未在商店中找到 {NAME},请尝试更新商店信息或检查拼写 -npm.plugin_not_installed={NAME} 未安装 -npm.plugin_already_installed={NAME} 已安装,请勿重复安装 -npm.author=作者 -npm.homepage=主页 -npm.pypi=PyPI -npm.next_page=下一页 -npm.prev_page=上一页 -npm.update=更新 -npm.plugin_cannot_be_toggled=插件 {NAME} 无法被启用或停用 -npm.plugin_already=插件 {NAME} 已经是 {STATUS} 状态,无需重复操作 -npm.toggle_failed=插件 {NAME} {STATUS} 失败: {ERROR} -npm.toggle_success=插件 {NAME} {STATUS} 成功 -npm.page=第{PAGE}/{TOTAL}页 -npm.update_index=更新插件索引 -npm.list_plugins=插件列表 -npm.disable_session=当前会话停用插件 -npm.enable_session=当前会话启用插件 -npm.help=帮助 -npm.search=搜索 - -user.profile.edit=修改 -user.profile.set=设置 -user.profile_manager.query=你的个人信息 {ATTR} 为 {VALUE} -user.profile_manager.set=你的个人信息 {ATTR} 已设置为 {VALUE} -user.profile.settings=设置 -user.profile.info=个人信息 -user.profile.lang=语言 -user.profile.lang.desc=设置用户语言 -user.profile.timezone=时区 -user.profile.timezone.desc=设置用户当前时区 -user.profile.theme=主题 -user.profile.theme.desc=设置用户界面主题 -user.profile.location=位置 -user.profile.location.desc=设置用户位置信息 -user.profile.nickname=称呼 -user.profile.nickname.desc=设置Bot对用户的称呼 -user.profile.input_value=请输入 {ATTR} 的值 -user.profile.set_success=成功将 {ATTR} 设置为 {VALUE} -user.profile.set_failed=设置 {ATTR} 失败,请检查输入是否合法 - -rpm.move_up=上移 -rpm.move_down=下移 -rpm.move_top=置顶 - -weather.city_not_found=未找到城市 {CITY} -weather.weather_not_found=未找到城市 {CITY} 的天气信息 -weather.no_key=未设置天气api key,请在配置文件添加weather_key - -status.friends=好友 -status.groups=群 -status.plugins=插件 -status.resources=资源包 -status.bots=机器人 -status.message_sent=发送消息 -status.message_received=接收消息 -status.cpu=处理器 -status.memory=内存 -status.swap=交换空间 -status.disk=磁盘 -status.usage=使用率 -status.total=总计 -status.used=已用 -status.free=空闲 -status.runtime=运行时间 -status.days=天 -status.hours=时 -status.minutes=分 -status.seconds=秒 -status.cores=核心 -status.threads=线程 -status.process=进程 +language.name=简体中文 + +log.debug=调试 +log.info=信息 +log.warning=警告 +log.error=错误 +log.success=成功 + +liteyuki.restart=重启 +liteyuki.restart_now=立即重启 +liteyuki.update_restart=更新完成,你可以{RESTART}或稍后手动重启以应用这些更新 +liteyuki.current_config=当前配置项如下 +liteyuki.static_config=静态文件配置项 +liteyuki.stored_config=储存的配置项 +liteyuki.config_set_success=配置项 {KEY}={VAL} 设置成功 +liteyuki.stats.group=群 +liteyuki.stats.user=好友 +liteyuki.stats.plugin=插件 +liteyuki.stats.sent=发送 +liteyuki.stats.received=接收 +liteyuki.stats.run_time=运行时间 +liteyuki.stats.groups=群 +liteyuki.stats.friends=好友 +liteyuki.stats.plugins=插件 +liteyuki.image_mode_on=开启Markdown图片模式 +liteyuki.image_mode_off=关闭Markdown图片模式 +liteyuki.invalid_command=无效的命令或参数 {TEXT} +liteyuki.reload_resources=重载资源 +liteyuki.list_resources=资源包列表 +liteyuki.reload_resources_success=资源重载成功,共计 {NUM} 个资源包 +liteyuki.loaded_resources=已加载 {NUM} 个资源包,按照优先级排序 +liteyuki.unloaded_resources=未加载资源包 +liteyuki.load_resource_success=资源包 {NAME} 加载成功 +liteyuki.unload_resource_success=资源包 {NAME} 卸载成功 +liteyuki.load_resource_failed=资源包 {NAME} 加载失败 +liteyuki.unload_resource_failed=资源包 {NAME} 卸载失败 +liteyuki.resource_not_found=资源包 {NAME} 不存在或不可操作 +liteyuki.resource_already_loaded=资源包 {NAME} 已加载,请勿重复操作 +liteyuki.resource_already_unloaded=资源包 {NAME} 已卸载,请勿重复操作 +liteyuki.need_reload=请{BTN}重载以应用这些更新 +liteyuki.dont_repeat=请勿重复操作 +liteyuki.change_priority_success=资源包 {NAME} 优先级修改成功 +liteyuki.change_priority_failed=资源包 {NAME} 优先级修改失败 +liteyuki.group_already=群 {GROUP} 已经是 {STATUS} 状态,无需重复操作 +liteyuki.group_success=群 {GROUP} {STATUS} 成功 +liteyuki.permission_denied=权限不足 +liteyuki.config_remove_success=配置项 {KEY} 移除成功 + +main.current_language=当前配置语言为: {LANG} +main.enable_webdash=已启用网页监控面板: {URL} +main.monitor.title=轻雪监控面板 +main.monitor.description=轻雪机器人监控面板 +main.monitor.cpu=处理器 +main.monitor.memory=内存 +main.monitor.swap=交换空间 +main.monitor.disk=磁盘 +main.monitor.usage=使用率 +main.monitor.total=总计 +main.monitor.used=已用 +main.monitor.free=空闲 + +data_manager.migrate_success=数据模型{NAME}迁移成功 + +npm.loaded_plugins=已加载插件 +npm.total=总计 {TOTAL} +npm.help=帮助 +npm.usage=用法 +npm.description=描述 +npm.disable=停用 +npm.disable_global=全局停用 +npm.enable=启用 +npm.enable_global=全局启用 +npm.install=安装 +npm.uninstall=卸载 +npm.installing=正在安装 {NAME} +npm.cannot_uninstall=无法卸载 +npm.no_description=无描述 +npm.store_update_success=插件商店数据更新成功 +npm.store_update_failed=插件商店数据更新失败 +npm.search_result=搜索结果 +npm.search_no_result=无搜索结果 +npm.too_many_results=内容过多,{HIDE_NUM}项已隐藏,请限制关键字搜索 +npm.install_success={NAME} 安装成功 +npm.install_failed={NAME} 安装失败,请查看日志获取详细信息,如不能解决,请访问{HOMEPAGE}寻求帮助 +npm.uninstall_success={NAME} 卸载成功,下次重启生效 +npm.uninstall_failed={NAME} 卸载失败 +npm.load_failed={NAME} 加载失败,请在控制台查看详细信息,检查依赖或配置是否正确,如不能解决,请访问{HOMEPAGE}寻求帮助 +npm.plugin_not_found=未在商店中找到 {NAME},请尝试更新商店信息或检查拼写 +npm.plugin_not_installed={NAME} 未安装 +npm.plugin_already_installed={NAME} 已安装,请勿重复安装 +npm.author=作者 +npm.homepage=主页 +npm.pypi=PyPI +npm.next_page=下一页 +npm.prev_page=上一页 +npm.update=更新 +npm.plugin_cannot_be_toggled=插件 {NAME} 无法被启用或停用 +npm.plugin_already=插件 {NAME} 已经是 {STATUS} 状态,无需重复操作 +npm.toggle_failed=插件 {NAME} {STATUS} 失败: {ERROR} +npm.toggle_success=插件 {NAME} {STATUS} 成功 +npm.page=第{PAGE}/{TOTAL}页 +npm.update_index=更新插件索引 +npm.list_plugins=插件列表 +npm.disable_session=当前会话停用插件 +npm.enable_session=当前会话启用插件 +npm.help=帮助 +npm.search=搜索 + +user.profile.edit=修改 +user.profile.set=设置 +user.profile_manager.query=你的个人信息 {ATTR} 为 {VALUE} +user.profile_manager.set=你的个人信息 {ATTR} 已设置为 {VALUE} +user.profile.settings=设置 +user.profile.info=个人信息 +user.profile.lang=语言 +user.profile.lang.desc=设置用户语言 +user.profile.timezone=时区 +user.profile.timezone.desc=设置用户当前时区 +user.profile.theme=主题 +user.profile.theme.desc=设置用户界面主题 +user.profile.location=位置 +user.profile.location.desc=设置用户位置信息 +user.profile.nickname=称呼 +user.profile.nickname.desc=设置Bot对用户的称呼 +user.profile.input_value=请输入 {ATTR} 的值 +user.profile.set_success=成功将 {ATTR} 设置为 {VALUE} +user.profile.set_failed=设置 {ATTR} 失败,请检查输入是否合法 + +rpm.move_up=上移 +rpm.move_down=下移 +rpm.move_top=置顶 + +weather.city_not_found=未找到城市 {CITY} +weather.weather_not_found=未找到城市 {CITY} 的天气信息 +weather.no_key=未设置天气api key,请在配置文件添加weather_key + +status.friends=好友 +status.groups=群 +status.plugins=插件 +status.resources=资源包 +status.bots=机器人 +status.message_sent=发送消息 +status.message_received=接收消息 +status.cpu=处理器 +status.memory=内存 +status.swap=交换空间 +status.disk=磁盘 +status.usage=使用率 +status.total=总计 +status.used=已用 +status.free=空闲 +status.runtime=运行时间 +status.days=天 +status.hours=时 +status.minutes=分 +status.seconds=秒 +status.cores=核心 +status.threads=线程 +status.process=进程 status.description=轻雪机器人状态面板 \ No newline at end of file diff --git a/liteyuki/resources/vanilla_language/lang/zh-HK.lang b/src/resources/vanilla_language/lang/zh-HK.lang similarity index 97% rename from liteyuki/resources/vanilla_language/lang/zh-HK.lang rename to src/resources/vanilla_language/lang/zh-HK.lang index 6d2565a..867b90f 100644 --- a/liteyuki/resources/vanilla_language/lang/zh-HK.lang +++ b/src/resources/vanilla_language/lang/zh-HK.lang @@ -1,159 +1,159 @@ -language.name=繁體中文(香港) - -log.debug=偵錯 -log.info=資訊 -log.warning=警告 -log.error=錯誤 -log.success=成功 - -liteyuki.restart=重新啟動 -liteyuki.restart_now=立即重新啟動 -liteyuki.update_restart=更新完成,你可以{RESTART}或稍後手動重新啟動以應用這些更新 -liteyuki.current_config=當前設定如下 -liteyuki.static_config=靜態檔案設定 -liteyuki.stored_config=儲存的設定 -liteyuki.config_set_success=設定項 {KEY}={VAL} 設定成功 -liteyuki.stats.group=群組 -liteyuki.stats.user=用戶 -liteyuki.stats.plugin=插件 -liteyuki.stats.sent=發送 -liteyuki.stats.received=接收 -liteyuki.stats.run_time=執行時間 -liteyuki.stats.groups=群組 -liteyuki.stats.friends=好友 -liteyuki.stats.plugins=插件 -liteyuki.image_mode_on=開啟 Markdown 圖片模式 -liteyuki.image_mode_off=關閉 Markdown 圖片模式 -liteyuki.invalid_command=無效的命令或參數 {TEXT} -liteyuki.reload_resources=重新載入資源 -liteyuki.list_resources=資源包列表 -liteyuki.reload_resources_success=資源重新載入成功,共計 {NUM} 個資源包 -liteyuki.loaded_resources=已載入 {NUM} 個資源包,按照優先級排序 -liteyuki.unloaded_resources=未載入資源包 -liteyuki.load_resource_success=資源包 {NAME} 載入成功 -liteyuki.unload_resource_success=資源包 {NAME} 卸載成功 -liteyuki.load_resource_failed=資源包 {NAME} 載入失敗 -liteyuki.unload_resource_failed=資源包 {NAME} 卸載失敗 -liteyuki.resource_not_found=資源包 {NAME} 不存在或無法操作 -liteyuki.resource_already_loaded=資源包 {NAME} 已載入,請勿重複操作 -liteyuki.resource_already_unloaded=資源包 {NAME} 已卸載,請勿重複操作 -liteyuki.need_reload=請{BTN}重新載入以應用這些更新 -liteyuki.dont_repeat=請勿重複操作 -liteyuki.change_priority_success=資源包 {NAME} 優先級修改成功 -liteyuki.change_priority_failed=資源包 {NAME} 優先級修改失敗 -liteyuki.group_already=群組 {GROUP} 已經是 {STATUS} 狀態,無需重複操作 -liteyuki.group_success=群組 {GROUP} {STATUS} 成功 -liteyuki.permission_denied=權限不足 -liteyuki.config_remove_success=設定項 {KEY} 移除成功 - -main.current_language=當前語言設定為: {LANG} -main.enable_webdash=已啟用網頁監控面板: {URL} -main.monitor.title=輕雪監控面板 -main.monitor.description=輕雪機器人監控面板 -main.monitor.cpu=處理器 -main.monitor.memory=記憶體 -main.monitor.swap=交換空間 -main.monitor.disk=磁碟 -main.monitor.usage=使用率 -main.monitor.total=總計 -main.monitor.used=已使用 -main.monitor.free=空閒 - -data_manager.migrate_success=數據模型{NAME}遷移成功 - -npm.loaded_plugins=已載入插件 -npm.total=總計 {TOTAL} -npm.help=幫助 -npm.usage=用法 -npm.description=描述 -npm.disable=停用 -npm.disable_global=全域停用 -npm.enable=啟用 -npm.enable_global=全域啟用 -npm.install=安裝 -npm.uninstall=卸載 -npm.installing=正在安裝 {NAME} -npm.cannot_uninstall=無法卸載 -npm.no_description=無描述 -npm.store_update_success=插件商店數據更新成功 -npm.store_update_failed=插件商店數據更新失敗 -npm.search_result=搜索結果 -npm.search_no_result=無搜索結果 -npm.too_many_results=結果過多,{HIDE_NUM}項已隱藏,請限制關鍵字搜索 -npm.install_success={NAME} 安裝成功 -npm.install_failed={NAME} 安裝失敗,請查看日誌獲取詳細信息,如無法解決,請訪問{HOMEPAGE}尋求幫助 -npm.uninstall_success={NAME} 卸載成功,下次重啟生效 -npm.uninstall_failed={NAME} 卸載失敗 -npm.load_failed={NAME} 加載失敗,請在控制台查看詳細信息,檢查依賴或配置是否正確,如無法解決,請訪問{HOMEPAGE}尋求幫助 -npm.plugin_not_found=未在商店中找到 {NAME},請嘗試更新商店信息或檢查拼寫 -npm.plugin_not_installed={NAME} 未安裝 -npm.plugin_already_installed={NAME} 已安裝,請勿重複安裝 -npm.author=作者 -npm.homepage=主頁 -npm.pypi=PyPI -npm.next_page=下一頁 -npm.prev_page=上一頁 -npm.update=更新 -npm.plugin_cannot_be_toggled=插件 {NAME} 無法被啟用或停用 -npm.plugin_already=插件 {NAME} 已經是 {STATUS} 狀態,無需重複操作 -npm.toggle_failed=插件 {NAME} {STATUS} 失敗: {ERROR} -npm.toggle_success=插件 {NAME} {STATUS} 成功 -npm.page=第{PAGE}/{TOTAL}頁 -npm.update_index=更新插件索引 -npm.list_plugins=插件列表 -npm.disable_session=當前會話停用插件 -npm.enable_session=當前會話啟用插件 -npm.help=幫助 -npm.search=搜索 - -user.profile.edit=修改 -user.profile.set=設定 -user.profile_manager.query=您的個人資訊 {ATTR} 為 {VALUE} -user.profile_manager.set=您的個人資訊 {ATTR} 已設定為 {VALUE} -user.profile.settings=設定 -user.profile.info=個人資訊 -user.profile.lang=語言 -user.profile.lang.desc=設定用戶語言 -user.profile.timezone=時區 -user.profile.timezone.desc=設定用戶當前時區 -user.profile.theme=主題 -user.profile.theme.desc=設定用戶介面主題 -user.profile.location=位置 -user.profile.location.desc=設定用戶位置資訊 -user.profile.nickname=稱呼 -user.profile.nickname.desc=設定 Bot 對用戶的稱呼 -user.profile.input_value=請輸入 {ATTR} 的值 -user.profile.set_success=成功將 {ATTR} 設定為 {VALUE} -user.profile.set_failed=設定 {ATTR} 失敗,請檢查輸入是否合法 - -rpm.move_up=上移 -rpm.move_down=下移 -rpm.move_top=置頂 - -weather.city_not_found=未找到城市 {CITY} -weather.weather_not_found=未找到城市 {CITY} 的天氣信息 -weather.no_key=未設定天氣 API 金鑰,請在設定文件添加 weather_key - -status.friends=好友 -status.groups=群組 -status.plugins=插件 -status.resources=資源包 -status.bots=機器人 -status.message_sent=發送消息 -status.message_received=接收消息 -status.cpu=處理器 -status.memory=記憶體 -status.swap=交換空間 -status.disk=磁碟 -status.usage=使用率 -status.total=總計 -status.used=已用 -status.free=空閒 -status.runtime=運行時間 -status.days=天 -status.hours=小時 -status.minutes=分鐘 -status.seconds=秒 -status.cores=核心 -status.threads=線程 +language.name=繁體中文(香港) + +log.debug=偵錯 +log.info=資訊 +log.warning=警告 +log.error=錯誤 +log.success=成功 + +liteyuki.restart=重新啟動 +liteyuki.restart_now=立即重新啟動 +liteyuki.update_restart=更新完成,你可以{RESTART}或稍後手動重新啟動以應用這些更新 +liteyuki.current_config=當前設定如下 +liteyuki.static_config=靜態檔案設定 +liteyuki.stored_config=儲存的設定 +liteyuki.config_set_success=設定項 {KEY}={VAL} 設定成功 +liteyuki.stats.group=群組 +liteyuki.stats.user=用戶 +liteyuki.stats.plugin=插件 +liteyuki.stats.sent=發送 +liteyuki.stats.received=接收 +liteyuki.stats.run_time=執行時間 +liteyuki.stats.groups=群組 +liteyuki.stats.friends=好友 +liteyuki.stats.plugins=插件 +liteyuki.image_mode_on=開啟 Markdown 圖片模式 +liteyuki.image_mode_off=關閉 Markdown 圖片模式 +liteyuki.invalid_command=無效的命令或參數 {TEXT} +liteyuki.reload_resources=重新載入資源 +liteyuki.list_resources=資源包列表 +liteyuki.reload_resources_success=資源重新載入成功,共計 {NUM} 個資源包 +liteyuki.loaded_resources=已載入 {NUM} 個資源包,按照優先級排序 +liteyuki.unloaded_resources=未載入資源包 +liteyuki.load_resource_success=資源包 {NAME} 載入成功 +liteyuki.unload_resource_success=資源包 {NAME} 卸載成功 +liteyuki.load_resource_failed=資源包 {NAME} 載入失敗 +liteyuki.unload_resource_failed=資源包 {NAME} 卸載失敗 +liteyuki.resource_not_found=資源包 {NAME} 不存在或無法操作 +liteyuki.resource_already_loaded=資源包 {NAME} 已載入,請勿重複操作 +liteyuki.resource_already_unloaded=資源包 {NAME} 已卸載,請勿重複操作 +liteyuki.need_reload=請{BTN}重新載入以應用這些更新 +liteyuki.dont_repeat=請勿重複操作 +liteyuki.change_priority_success=資源包 {NAME} 優先級修改成功 +liteyuki.change_priority_failed=資源包 {NAME} 優先級修改失敗 +liteyuki.group_already=群組 {GROUP} 已經是 {STATUS} 狀態,無需重複操作 +liteyuki.group_success=群組 {GROUP} {STATUS} 成功 +liteyuki.permission_denied=權限不足 +liteyuki.config_remove_success=設定項 {KEY} 移除成功 + +main.current_language=當前語言設定為: {LANG} +main.enable_webdash=已啟用網頁監控面板: {URL} +main.monitor.title=輕雪監控面板 +main.monitor.description=輕雪機器人監控面板 +main.monitor.cpu=處理器 +main.monitor.memory=記憶體 +main.monitor.swap=交換空間 +main.monitor.disk=磁碟 +main.monitor.usage=使用率 +main.monitor.total=總計 +main.monitor.used=已使用 +main.monitor.free=空閒 + +data_manager.migrate_success=數據模型{NAME}遷移成功 + +npm.loaded_plugins=已載入插件 +npm.total=總計 {TOTAL} +npm.help=幫助 +npm.usage=用法 +npm.description=描述 +npm.disable=停用 +npm.disable_global=全域停用 +npm.enable=啟用 +npm.enable_global=全域啟用 +npm.install=安裝 +npm.uninstall=卸載 +npm.installing=正在安裝 {NAME} +npm.cannot_uninstall=無法卸載 +npm.no_description=無描述 +npm.store_update_success=插件商店數據更新成功 +npm.store_update_failed=插件商店數據更新失敗 +npm.search_result=搜索結果 +npm.search_no_result=無搜索結果 +npm.too_many_results=結果過多,{HIDE_NUM}項已隱藏,請限制關鍵字搜索 +npm.install_success={NAME} 安裝成功 +npm.install_failed={NAME} 安裝失敗,請查看日誌獲取詳細信息,如無法解決,請訪問{HOMEPAGE}尋求幫助 +npm.uninstall_success={NAME} 卸載成功,下次重啟生效 +npm.uninstall_failed={NAME} 卸載失敗 +npm.load_failed={NAME} 加載失敗,請在控制台查看詳細信息,檢查依賴或配置是否正確,如無法解決,請訪問{HOMEPAGE}尋求幫助 +npm.plugin_not_found=未在商店中找到 {NAME},請嘗試更新商店信息或檢查拼寫 +npm.plugin_not_installed={NAME} 未安裝 +npm.plugin_already_installed={NAME} 已安裝,請勿重複安裝 +npm.author=作者 +npm.homepage=主頁 +npm.pypi=PyPI +npm.next_page=下一頁 +npm.prev_page=上一頁 +npm.update=更新 +npm.plugin_cannot_be_toggled=插件 {NAME} 無法被啟用或停用 +npm.plugin_already=插件 {NAME} 已經是 {STATUS} 狀態,無需重複操作 +npm.toggle_failed=插件 {NAME} {STATUS} 失敗: {ERROR} +npm.toggle_success=插件 {NAME} {STATUS} 成功 +npm.page=第{PAGE}/{TOTAL}頁 +npm.update_index=更新插件索引 +npm.list_plugins=插件列表 +npm.disable_session=當前會話停用插件 +npm.enable_session=當前會話啟用插件 +npm.help=幫助 +npm.search=搜索 + +user.profile.edit=修改 +user.profile.set=設定 +user.profile_manager.query=您的個人資訊 {ATTR} 為 {VALUE} +user.profile_manager.set=您的個人資訊 {ATTR} 已設定為 {VALUE} +user.profile.settings=設定 +user.profile.info=個人資訊 +user.profile.lang=語言 +user.profile.lang.desc=設定用戶語言 +user.profile.timezone=時區 +user.profile.timezone.desc=設定用戶當前時區 +user.profile.theme=主題 +user.profile.theme.desc=設定用戶介面主題 +user.profile.location=位置 +user.profile.location.desc=設定用戶位置資訊 +user.profile.nickname=稱呼 +user.profile.nickname.desc=設定 Bot 對用戶的稱呼 +user.profile.input_value=請輸入 {ATTR} 的值 +user.profile.set_success=成功將 {ATTR} 設定為 {VALUE} +user.profile.set_failed=設定 {ATTR} 失敗,請檢查輸入是否合法 + +rpm.move_up=上移 +rpm.move_down=下移 +rpm.move_top=置頂 + +weather.city_not_found=未找到城市 {CITY} +weather.weather_not_found=未找到城市 {CITY} 的天氣信息 +weather.no_key=未設定天氣 API 金鑰,請在設定文件添加 weather_key + +status.friends=好友 +status.groups=群組 +status.plugins=插件 +status.resources=資源包 +status.bots=機器人 +status.message_sent=發送消息 +status.message_received=接收消息 +status.cpu=處理器 +status.memory=記憶體 +status.swap=交換空間 +status.disk=磁碟 +status.usage=使用率 +status.total=總計 +status.used=已用 +status.free=空閒 +status.runtime=運行時間 +status.days=天 +status.hours=小時 +status.minutes=分鐘 +status.seconds=秒 +status.cores=核心 +status.threads=線程 status.process=進程 \ No newline at end of file diff --git a/liteyuki/resources/vanilla_language/lang/zh-Kawaii.lang b/src/resources/vanilla_language/lang/zh-Kawaii.lang similarity index 97% rename from liteyuki/resources/vanilla_language/lang/zh-Kawaii.lang rename to src/resources/vanilla_language/lang/zh-Kawaii.lang index ba88705..3d3f983 100644 --- a/liteyuki/resources/vanilla_language/lang/zh-Kawaii.lang +++ b/src/resources/vanilla_language/lang/zh-Kawaii.lang @@ -1,159 +1,159 @@ -language.name=简体中文 - -log.debug=嘿嘿,调试一下 -log.info=嗯嗯,资讯来啦 -log.warning=哎哟,小心哟 -log.error=糟糕,出错啦 -log.success=耶耶,成功啦 - -liteyuki.restart=重新来过 -liteyuki.restart_now=立刻重启 -liteyuki.update_restart=更新完成啦!快{RESTART}或等会儿手动重启,让更新生效吧! -liteyuki.current_config=现在的设置是这样滴~ -liteyuki.static_config=静态文件设置 -liteyuki.stored_config=存储的设置 -liteyuki.config_set_success=嘿嘿,设置成功啦!{KEY}={VAL} -liteyuki.stats.group=群组 -liteyuki.stats.user=小伙伴 -liteyuki.stats.plugin=插件 -liteyuki.stats.sent=发出去啦 -liteyuki.stats.received=收到啦 -liteyuki.stats.run_time=运行时间 -liteyuki.stats.groups=群组 -liteyuki.stats.friends=小伙伴 -liteyuki.stats.plugins=插件 -liteyuki.image_mode_on=嘿嘿,开启Markdown图片模式啦 -liteyuki.image_mode_off=啊呀,关闭Markdown图片模式啦 -liteyuki.invalid_command=咦?无效的命令或参数哦:{TEXT} -liteyuki.reload_resources=重新载入资源 -liteyuki.list_resources=资源包列表 -liteyuki.reload_resources_success=资源重载成功啦!共有{NUM}个资源包哦~ -liteyuki.loaded_resources=嘿嘿,已经加载了{NUM}个资源包啦,按照优先级排序哦~ -liteyuki.unloaded_resources=嗯嗯,还有一些资源包没加载呢~ -liteyuki.load_resource_success=资源包{name}加载成功啦! -liteyuki.unload_resource_success=资源包{name}卸载成功啦! -liteyuki.load_resource_failed=资源包{name}加载失败啦~ -liteyuki.unload_resource_failed=资源包{name}卸载失败啦~ -liteyuki.resource_not_found=资源包{name}不存在或无法操作呢~ -liteyuki.resource_already_loaded=资源包{name}已经加载啦,不要重复操作哦~ -liteyuki.resource_already_unloaded=资源包{name}已经卸载啦,不要重复操作哦~ -liteyuki.need_reload=嘿嘿,{BTN}重新载入以应用这些更新呢~ -liteyuki.dont_repeat=别重复操作哦~ -liteyuki.change_priority_success=资源包{name}优先级修改成功啦~ -liteyuki.change_priority_failed=资源包{name}优先级修改失败啦~ -liteyuki.group_already=群组{GROUP}已经是{STATUS}状态啦,不用再操作啦~ -liteyuki.group_success=群组{GROUP}{STATUS}成功啦~ -liteyuki.permission_denied=啊哦,权限不够啦~ -liteyuki.config_remove_success=配置项{KEY}移除成功啦~ - -main.current_language=现在的语言是:{LANG} -main.enable_webdash=已经启用网页监控面板啦:{URL} -main.monitor.title=轻雪监控面板 -main.monitor.description=轻雪机器人监控面板,超可爱的哦~ -main.monitor.cpu=处理器 -main.monitor.memory=内存 -main.monitor.swap=交换空间 -main.monitor.disk=磁盘 -main.monitor.usage=使用率 -main.monitor.total=总共 -main.monitor.used=已用 -main.monitor.free=剩余 - -data_manager.migrate_success=数据模型{name}迁移成功啦~ - -npm.loaded_plugins=已加载的插件 -npm.total=总共有{TOTAL}个哦~ -npm.help=帮助 -npm.usage=使用方法 -npm.description=描述 -npm.disable=停用 -npm.disable_global=全局停用 -npm.enable=启用 -npm.enable_global=全局启用 -npm.install=安装 -npm.uninstall=卸载 -npm.installing=正在安装{name}呢~ -npm.cannot_uninstall=无法卸载哦~ -npm.no_description=没有描述哦~ -npm.store_update_success=插件商店数据更新成功啦~ -npm.store_update_failed=插件商店数据更新失败啦~ -npm.search_result=搜索结果 -npm.search_no_result=没有搜索结果呢~ -npm.too_many_results=搜索结果太多啦,请尽量缩小搜索范围哦~ -npm.install_success={name}安装成功啦~ -npm.install_failed={name}安装失败啦,请查看日志获取详细信息哦~ -npm.uninstall_success={name}卸载成功啦~下次重启生效哦~ -npm.uninstall_failed={name}卸载失败啦~ -npm.load_failed={name}加载失败啦,请检查依赖或配置是否正确哦~ -npm.plugin_not_found=在商店里找不到{name}呢,请尝试更新商店信息或检查拼写哦~ -npm.plugin_not_installed={name}还没安装哦~ -npm.plugin_already_installed={name}已经安装啦,不要重复操作哦~ -npm.author=作者 -npm.homepage=主页 -npm.pypi=PyPI -npm.next_page=下一页 -npm.prev_page=上一页 -npm.update=更新 -npm.plugin_cannot_be_toggled=插件{name}不能被启用或停用哦~ -npm.plugin_already=插件{name}已经是{STATUS}状态啦,不用再操作啦~ -npm.toggle_failed=插件{name}{STATUS}失败啦:{ERROR} -npm.toggle_success=插件{name}{STATUS}成功啦~ -npm.page=第{PAGE}/{TOTAL}页 -npm.update_index=更新插件索引 -npm.list_plugins=插件列表 -npm.disable_session=当前会话停用插件 -npm.enable_session=当前会话启用插件 -npm.help=帮助 -npm.search=搜索 - -user.profile.edit=修改 -user.profile.set=设置 -user.profile_manager.query=您的个人信息 {ATTR} 是 {VALUE} 哦~ -user.profile_manager.set=您的个人信息 {ATTR} 已经设置成 {VALUE} 哦~ -user.profile.settings=设置 -user.profile.info=个人信息 -user.profile.lang=语言 -user.profile.lang.desc=设置用户语言哦~ -user.profile.timezone=时区 -user.profile.timezone.desc=设置用户时区哦~ -user.profile.theme=主题 -user.profile.theme.desc=设置用户界面主题哦~ -user.profile.location=位置 -user.profile.location.desc=设置用户位置信息哦~ -user.profile.nickname=昵称 -user.profile.nickname.desc=设置 Bot 对用户的昵称哦~ -user.profile.input_value=请输入 {ATTR} 的值 -user.profile.set_success={ATTR} 成功设置成 {VALUE} 哦~ -user.profile.set_failed=设置 {ATTR} 失败啦~请检查输入是否合法哦~ - -rpm.move_up=上移 -rpm.move_down=下移 -rpm.move_top=置顶 - -weather.city_not_found=找不到城市{name}哦~ -weather.weather_not_found=找不到城市{name}的天气信息呢~ -weather.no_key=咦?还没设置天气 API 呢,快在配置文件里添加 weather_key 吧~ - -status.friends=好友 -status.groups=群组 -status.plugins=插件 -status.resources=资源包 -status.bots=机器人 -status.message_sent=发送的消息 -status.message_received=接收的消息 -status.cpu=处理器 -status.memory=内存 -status.swap=交换空间 -status.disk=磁盘 -status.usage=使用率 -status.total=总计 -status.used=已使用 -status.free=空闲 -status.runtime=运行时间 -status.days=天 -status.hours=小时 -status.minutes=分钟 -status.seconds=秒 -status.cores=核心 -status.threads=线程 +language.name=简体中文 + +log.debug=嘿嘿,调试一下 +log.info=嗯嗯,资讯来啦 +log.warning=哎哟,小心哟 +log.error=糟糕,出错啦 +log.success=耶耶,成功啦 + +liteyuki.restart=重新来过 +liteyuki.restart_now=立刻重启 +liteyuki.update_restart=更新完成啦!快{RESTART}或等会儿手动重启,让更新生效吧! +liteyuki.current_config=现在的设置是这样滴~ +liteyuki.static_config=静态文件设置 +liteyuki.stored_config=存储的设置 +liteyuki.config_set_success=嘿嘿,设置成功啦!{KEY}={VAL} +liteyuki.stats.group=群组 +liteyuki.stats.user=小伙伴 +liteyuki.stats.plugin=插件 +liteyuki.stats.sent=发出去啦 +liteyuki.stats.received=收到啦 +liteyuki.stats.run_time=运行时间 +liteyuki.stats.groups=群组 +liteyuki.stats.friends=小伙伴 +liteyuki.stats.plugins=插件 +liteyuki.image_mode_on=嘿嘿,开启Markdown图片模式啦 +liteyuki.image_mode_off=啊呀,关闭Markdown图片模式啦 +liteyuki.invalid_command=咦?无效的命令或参数哦:{TEXT} +liteyuki.reload_resources=重新载入资源 +liteyuki.list_resources=资源包列表 +liteyuki.reload_resources_success=资源重载成功啦!共有{NUM}个资源包哦~ +liteyuki.loaded_resources=嘿嘿,已经加载了{NUM}个资源包啦,按照优先级排序哦~ +liteyuki.unloaded_resources=嗯嗯,还有一些资源包没加载呢~ +liteyuki.load_resource_success=资源包{name}加载成功啦! +liteyuki.unload_resource_success=资源包{name}卸载成功啦! +liteyuki.load_resource_failed=资源包{name}加载失败啦~ +liteyuki.unload_resource_failed=资源包{name}卸载失败啦~ +liteyuki.resource_not_found=资源包{name}不存在或无法操作呢~ +liteyuki.resource_already_loaded=资源包{name}已经加载啦,不要重复操作哦~ +liteyuki.resource_already_unloaded=资源包{name}已经卸载啦,不要重复操作哦~ +liteyuki.need_reload=嘿嘿,{BTN}重新载入以应用这些更新呢~ +liteyuki.dont_repeat=别重复操作哦~ +liteyuki.change_priority_success=资源包{name}优先级修改成功啦~ +liteyuki.change_priority_failed=资源包{name}优先级修改失败啦~ +liteyuki.group_already=群组{GROUP}已经是{STATUS}状态啦,不用再操作啦~ +liteyuki.group_success=群组{GROUP}{STATUS}成功啦~ +liteyuki.permission_denied=啊哦,权限不够啦~ +liteyuki.config_remove_success=配置项{KEY}移除成功啦~ + +main.current_language=现在的语言是:{LANG} +main.enable_webdash=已经启用网页监控面板啦:{URL} +main.monitor.title=轻雪监控面板 +main.monitor.description=轻雪机器人监控面板,超可爱的哦~ +main.monitor.cpu=处理器 +main.monitor.memory=内存 +main.monitor.swap=交换空间 +main.monitor.disk=磁盘 +main.monitor.usage=使用率 +main.monitor.total=总共 +main.monitor.used=已用 +main.monitor.free=剩余 + +data_manager.migrate_success=数据模型{name}迁移成功啦~ + +npm.loaded_plugins=已加载的插件 +npm.total=总共有{TOTAL}个哦~ +npm.help=帮助 +npm.usage=使用方法 +npm.description=描述 +npm.disable=停用 +npm.disable_global=全局停用 +npm.enable=启用 +npm.enable_global=全局启用 +npm.install=安装 +npm.uninstall=卸载 +npm.installing=正在安装{name}呢~ +npm.cannot_uninstall=无法卸载哦~ +npm.no_description=没有描述哦~ +npm.store_update_success=插件商店数据更新成功啦~ +npm.store_update_failed=插件商店数据更新失败啦~ +npm.search_result=搜索结果 +npm.search_no_result=没有搜索结果呢~ +npm.too_many_results=搜索结果太多啦,请尽量缩小搜索范围哦~ +npm.install_success={name}安装成功啦~ +npm.install_failed={name}安装失败啦,请查看日志获取详细信息哦~ +npm.uninstall_success={name}卸载成功啦~下次重启生效哦~ +npm.uninstall_failed={name}卸载失败啦~ +npm.load_failed={name}加载失败啦,请检查依赖或配置是否正确哦~ +npm.plugin_not_found=在商店里找不到{name}呢,请尝试更新商店信息或检查拼写哦~ +npm.plugin_not_installed={name}还没安装哦~ +npm.plugin_already_installed={name}已经安装啦,不要重复操作哦~ +npm.author=作者 +npm.homepage=主页 +npm.pypi=PyPI +npm.next_page=下一页 +npm.prev_page=上一页 +npm.update=更新 +npm.plugin_cannot_be_toggled=插件{name}不能被启用或停用哦~ +npm.plugin_already=插件{name}已经是{STATUS}状态啦,不用再操作啦~ +npm.toggle_failed=插件{name}{STATUS}失败啦:{ERROR} +npm.toggle_success=插件{name}{STATUS}成功啦~ +npm.page=第{PAGE}/{TOTAL}页 +npm.update_index=更新插件索引 +npm.list_plugins=插件列表 +npm.disable_session=当前会话停用插件 +npm.enable_session=当前会话启用插件 +npm.help=帮助 +npm.search=搜索 + +user.profile.edit=修改 +user.profile.set=设置 +user.profile_manager.query=您的个人信息 {ATTR} 是 {VALUE} 哦~ +user.profile_manager.set=您的个人信息 {ATTR} 已经设置成 {VALUE} 哦~ +user.profile.settings=设置 +user.profile.info=个人信息 +user.profile.lang=语言 +user.profile.lang.desc=设置用户语言哦~ +user.profile.timezone=时区 +user.profile.timezone.desc=设置用户时区哦~ +user.profile.theme=主题 +user.profile.theme.desc=设置用户界面主题哦~ +user.profile.location=位置 +user.profile.location.desc=设置用户位置信息哦~ +user.profile.nickname=昵称 +user.profile.nickname.desc=设置 Bot 对用户的昵称哦~ +user.profile.input_value=请输入 {ATTR} 的值 +user.profile.set_success={ATTR} 成功设置成 {VALUE} 哦~ +user.profile.set_failed=设置 {ATTR} 失败啦~请检查输入是否合法哦~ + +rpm.move_up=上移 +rpm.move_down=下移 +rpm.move_top=置顶 + +weather.city_not_found=找不到城市{name}哦~ +weather.weather_not_found=找不到城市{name}的天气信息呢~ +weather.no_key=咦?还没设置天气 API 呢,快在配置文件里添加 weather_key 吧~ + +status.friends=好友 +status.groups=群组 +status.plugins=插件 +status.resources=资源包 +status.bots=机器人 +status.message_sent=发送的消息 +status.message_received=接收的消息 +status.cpu=处理器 +status.memory=内存 +status.swap=交换空间 +status.disk=磁盘 +status.usage=使用率 +status.total=总计 +status.used=已使用 +status.free=空闲 +status.runtime=运行时间 +status.days=天 +status.hours=小时 +status.minutes=分钟 +status.seconds=秒 +status.cores=核心 +status.threads=线程 status.process=进程 \ No newline at end of file diff --git a/liteyuki/resources/vanilla_language/lang/zh-MS.lang b/src/resources/vanilla_language/lang/zh-MS.lang similarity index 97% rename from liteyuki/resources/vanilla_language/lang/zh-MS.lang rename to src/resources/vanilla_language/lang/zh-MS.lang index 83f4e7e..4a8b5b0 100644 --- a/liteyuki/resources/vanilla_language/lang/zh-MS.lang +++ b/src/resources/vanilla_language/lang/zh-MS.lang @@ -1,159 +1,159 @@ -language.name=稀奇古怪的语言 - -log.debug=调戏 -log.info=情报 -log.warning=警告警告 -log.error=错误错了 -log.success=成功达成 - -liteyuki.restart=重新开始 -liteyuki.restart_now=立即重启 -liteyuki.update_restart=更新完成,你可以{RESTART}或稍后手动重启以应用这些更新 -liteyuki.current_config=当前构建来袭 -liteyuki.static_config=静态设置 -liteyuki.stored_config=存储的神秘宝藏 -liteyuki.config_set_success=配置项 {KEY}={VAL} 非常有趣地设定成功 -liteyuki.stats.group=群组 -liteyuki.stats.user=神秘对象 -liteyuki.stats.plugin=魔法咒语 -liteyuki.stats.sent=传送成功 -liteyuki.stats.received=接收到 -liteyuki.stats.run_time=时间流逝 -liteyuki.stats.groups=群体 -liteyuki.stats.friends=亲密朋友 -liteyuki.stats.plugins=神奇咒语 -liteyuki.image_mode_on=魔法阵开启,Markdown图片模式启动 -liteyuki.image_mode_off=魔法阵解除,Markdown图片模式关闭 -liteyuki.invalid_command=不合理的命令或参数 {TEXT} -liteyuki.reload_resources=重新装载资源 -liteyuki.list_resources=寻宝资源列表 -liteyuki.reload_resources_success=资源重新装载成功,神秘的{NUM}个资源包呈现在你的眼前 -liteyuki.loaded_resources=加载了{NUM}个奇幻资源包,按优先级排序 -liteyuki.unloaded_resources=神秘资源包未加载 -liteyuki.load_resource_success=神秘资源包 {NAME} 被你发现并加载 -liteyuki.unload_resource_success=神秘资源包 {NAME} 解除装载 -liteyuki.load_resource_failed=神秘资源包 {NAME} 消失了 -liteyuki.unload_resource_failed=神秘资源包 {NAME} 永远解除不了 -liteyuki.resource_not_found=寻宝失败,资源包 {NAME} 消失在地平线 -liteyuki.resource_already_loaded=神秘资源包 {NAME} 已经被解锁了,不用再次操作 -liteyuki.resource_already_unloaded=神秘资源包 {NAME} 已经不复存在 -liteyuki.need_reload=你需要{BTN}重新装载才能启用这些更新 -liteyuki.dont_repeat=重复的行为不被魔法接受 -liteyuki.change_priority_success=神秘资源包 {NAME} 优先级变更成功 -liteyuki.change_priority_failed=神秘资源包 {NAME} 优先级变更失败 -liteyuki.group_already=群 {GROUP} 已经被 {STATUS},不用再操作了 -liteyuki.group_success=群 {GROUP} 已经 {STATUS} 成功 -liteyuki.permission_denied=权限不足,被魔法屏蔽 -liteyuki.config_remove_success=配置项 {KEY} 成功消失在黑暗之中 - -main.current_language=当前选择的秘密语言是:{LANG} -main.enable_webdash=啊哈,网页监控面板已被启用:{URL} -main.monitor.title=神秘监视塔 -main.monitor.description=魔法眼正在注视着你的每一个动作 -main.monitor.cpu=中国药科大学 -main.monitor.memory=回忆 -main.monitor.swap=换个地方 -main.monitor.disk=神秘碟片 -main.monitor.usage=使用率 -main.monitor.total=总计 -main.monitor.used=已经被用掉了 -main.monitor.free=魔法保护中 - -data_manager.migrate_success=数据模型{NAME}成功变身 - -npm.loaded_plugins=魔法插件已经装载 -npm.total=总计 {TOTAL} 件奇怪的魔法 -npm.help=帮助 -npm.usage=使用法术 -npm.description=描述 -npm.disable=关闭 -npm.disable_global=全球关闭 -npm.enable=开启 -npm.enable_global=全球开启 -npm.install=安装 -npm.uninstall=解除魔法 -npm.installing=正在释放{name}的魔力 -npm.cannot_uninstall=无法解除 -npm.no_description=咦?这个法术并没有说明书 -npm.store_update_success=插件商店中的魔法书已经更新 -npm.store_update_failed=插件商店中的魔法书更新失败 -npm.search_result=搜索到宝藏 -npm.search_no_result=什么都没找到,可能被巫师藏起来了 -npm.too_many_results=结果太多了,{HIDE_NUM}个被隐藏起来,只展示给了你 -npm.install_success={NAME}成功附身 -npm.install_failed={NAME}附身失败,查看日志以了解详情,如果无法解决,请访问{HOMEPAGE}求助 -npm.uninstall_success={NAME}成功解除魔法,下次重启生效 -npm.uninstall_failed={NAME}解除魔法失败 -npm.load_failed={NAME}魔法咒语加载失败,请在控制台寻找线索,或者访问{HOMEPAGE}寻求帮助 -npm.plugin_not_found=在黑暗中找不到{name},请尝试更新商店或检查你的咒语 -npm.plugin_not_installed={NAME}并没有被释放 -npm.plugin_already_installed={NAME}已经附身,请勿重复释放 -npm.author=法师 -npm.homepage=魔法门 -npm.pypi=PyPI -npm.next_page=前进 -npm.prev_page=后退 -npm.update=更新 -npm.plugin_cannot_be_toggled={NAME}咒语无法变化状态 -npm.plugin_already={NAME}已经是{STATUS}状态,无需再次操作 -npm.toggle_failed=咒语 {NAME} {STATUS} 失败:{ERROR} -npm.toggle_success=咒语 {NAME} {STATUS} 成功 -npm.page=第{PAGE}/{TOTAL}页 -npm.update_index=更新法术索引 -npm.list_plugins=咒语列表 -npm.disable_session=当前会话中的咒语被屏蔽 -npm.enable_session=当前会话中的咒语被解除屏蔽 -npm.help=帮助 -npm.search=寻找黑暗中的宝藏 - -user.profile.edit=改变命运 -user.profile.set=命定 -user.profile_manager.query=您的神秘信息 {ATTR} 为 {VALUE} -user.profile_manager.set=您的神秘信息 {ATTR} 已经被改写成 {VALUE} -user.profile.settings=设置 -user.profile.info=命运信息 -user.profile.lang=魔法语言 -user.profile.lang.desc=选择您的魔法语言 -user.profile.timezone=时光漩涡 -user.profile.timezone.desc=调整您的时光轨迹 -user.profile.theme=魔法主题 -user.profile.theme.desc=选择您的魔法主题 -user.profile.location=奇幻地点 -user.profile.location.desc=标定您的奇幻地点 -user.profile.nickname=魔法称号 -user.profile.nickname.desc=设置 Bot 对您的称呼 -user.profile.input_value=请输入 {ATTR} 的魔法数值 -user.profile.set_success={ATTR} 已经被设定成 {VALUE} -user.profile.set_failed={ATTR} 咒语无法被改写,请检查您的输入是否合法 - -rpm.move_up=向上移动 -rpm.move_down=向下移动 -rpm.move_top=置顶 - -weather.city_not_found=城市 {CITY} 被魔法抹去了 -weather.weather_not_found=城市 {CITY} 的天气信息被魔法屏蔽了 -weather.no_key=天气预报 API 的宝藏尚未被发现,请在您的魔法书中添加 weather_key - -status.friends=朋友 -status.groups=群体 -status.plugins=咒语 -status.resources=神秘物品 -status.bots=奇幻生物 -status.message_sent=发送了消息 -status.message_received=接收到了消息 -status.cpu=中国药科大学 -status.memory=回忆 -status.swap=换个地方 -status.disk=神秘碟片 -status.usage=使用率 -status.total=总计 -status.used=已经被用掉了 -status.free=魔法保护中 -status.runtime=时间流逝 -status.days=天 -status.hours=小时 -status.minutes=分钟 -status.seconds=秒 -status.cores=核心 -status.threads=线程 +language.name=稀奇古怪的语言 + +log.debug=调戏 +log.info=情报 +log.warning=警告警告 +log.error=错误错了 +log.success=成功达成 + +liteyuki.restart=重新开始 +liteyuki.restart_now=立即重启 +liteyuki.update_restart=更新完成,你可以{RESTART}或稍后手动重启以应用这些更新 +liteyuki.current_config=当前构建来袭 +liteyuki.static_config=静态设置 +liteyuki.stored_config=存储的神秘宝藏 +liteyuki.config_set_success=配置项 {KEY}={VAL} 非常有趣地设定成功 +liteyuki.stats.group=群组 +liteyuki.stats.user=神秘对象 +liteyuki.stats.plugin=魔法咒语 +liteyuki.stats.sent=传送成功 +liteyuki.stats.received=接收到 +liteyuki.stats.run_time=时间流逝 +liteyuki.stats.groups=群体 +liteyuki.stats.friends=亲密朋友 +liteyuki.stats.plugins=神奇咒语 +liteyuki.image_mode_on=魔法阵开启,Markdown图片模式启动 +liteyuki.image_mode_off=魔法阵解除,Markdown图片模式关闭 +liteyuki.invalid_command=不合理的命令或参数 {TEXT} +liteyuki.reload_resources=重新装载资源 +liteyuki.list_resources=寻宝资源列表 +liteyuki.reload_resources_success=资源重新装载成功,神秘的{NUM}个资源包呈现在你的眼前 +liteyuki.loaded_resources=加载了{NUM}个奇幻资源包,按优先级排序 +liteyuki.unloaded_resources=神秘资源包未加载 +liteyuki.load_resource_success=神秘资源包 {NAME} 被你发现并加载 +liteyuki.unload_resource_success=神秘资源包 {NAME} 解除装载 +liteyuki.load_resource_failed=神秘资源包 {NAME} 消失了 +liteyuki.unload_resource_failed=神秘资源包 {NAME} 永远解除不了 +liteyuki.resource_not_found=寻宝失败,资源包 {NAME} 消失在地平线 +liteyuki.resource_already_loaded=神秘资源包 {NAME} 已经被解锁了,不用再次操作 +liteyuki.resource_already_unloaded=神秘资源包 {NAME} 已经不复存在 +liteyuki.need_reload=你需要{BTN}重新装载才能启用这些更新 +liteyuki.dont_repeat=重复的行为不被魔法接受 +liteyuki.change_priority_success=神秘资源包 {NAME} 优先级变更成功 +liteyuki.change_priority_failed=神秘资源包 {NAME} 优先级变更失败 +liteyuki.group_already=群 {GROUP} 已经被 {STATUS},不用再操作了 +liteyuki.group_success=群 {GROUP} 已经 {STATUS} 成功 +liteyuki.permission_denied=权限不足,被魔法屏蔽 +liteyuki.config_remove_success=配置项 {KEY} 成功消失在黑暗之中 + +main.current_language=当前选择的秘密语言是:{LANG} +main.enable_webdash=啊哈,网页监控面板已被启用:{URL} +main.monitor.title=神秘监视塔 +main.monitor.description=魔法眼正在注视着你的每一个动作 +main.monitor.cpu=中国药科大学 +main.monitor.memory=回忆 +main.monitor.swap=换个地方 +main.monitor.disk=神秘碟片 +main.monitor.usage=使用率 +main.monitor.total=总计 +main.monitor.used=已经被用掉了 +main.monitor.free=魔法保护中 + +data_manager.migrate_success=数据模型{NAME}成功变身 + +npm.loaded_plugins=魔法插件已经装载 +npm.total=总计 {TOTAL} 件奇怪的魔法 +npm.help=帮助 +npm.usage=使用法术 +npm.description=描述 +npm.disable=关闭 +npm.disable_global=全球关闭 +npm.enable=开启 +npm.enable_global=全球开启 +npm.install=安装 +npm.uninstall=解除魔法 +npm.installing=正在释放{name}的魔力 +npm.cannot_uninstall=无法解除 +npm.no_description=咦?这个法术并没有说明书 +npm.store_update_success=插件商店中的魔法书已经更新 +npm.store_update_failed=插件商店中的魔法书更新失败 +npm.search_result=搜索到宝藏 +npm.search_no_result=什么都没找到,可能被巫师藏起来了 +npm.too_many_results=结果太多了,{HIDE_NUM}个被隐藏起来,只展示给了你 +npm.install_success={NAME}成功附身 +npm.install_failed={NAME}附身失败,查看日志以了解详情,如果无法解决,请访问{HOMEPAGE}求助 +npm.uninstall_success={NAME}成功解除魔法,下次重启生效 +npm.uninstall_failed={NAME}解除魔法失败 +npm.load_failed={NAME}魔法咒语加载失败,请在控制台寻找线索,或者访问{HOMEPAGE}寻求帮助 +npm.plugin_not_found=在黑暗中找不到{name},请尝试更新商店或检查你的咒语 +npm.plugin_not_installed={NAME}并没有被释放 +npm.plugin_already_installed={NAME}已经附身,请勿重复释放 +npm.author=法师 +npm.homepage=魔法门 +npm.pypi=PyPI +npm.next_page=前进 +npm.prev_page=后退 +npm.update=更新 +npm.plugin_cannot_be_toggled={NAME}咒语无法变化状态 +npm.plugin_already={NAME}已经是{STATUS}状态,无需再次操作 +npm.toggle_failed=咒语 {NAME} {STATUS} 失败:{ERROR} +npm.toggle_success=咒语 {NAME} {STATUS} 成功 +npm.page=第{PAGE}/{TOTAL}页 +npm.update_index=更新法术索引 +npm.list_plugins=咒语列表 +npm.disable_session=当前会话中的咒语被屏蔽 +npm.enable_session=当前会话中的咒语被解除屏蔽 +npm.help=帮助 +npm.search=寻找黑暗中的宝藏 + +user.profile.edit=改变命运 +user.profile.set=命定 +user.profile_manager.query=您的神秘信息 {ATTR} 为 {VALUE} +user.profile_manager.set=您的神秘信息 {ATTR} 已经被改写成 {VALUE} +user.profile.settings=设置 +user.profile.info=命运信息 +user.profile.lang=魔法语言 +user.profile.lang.desc=选择您的魔法语言 +user.profile.timezone=时光漩涡 +user.profile.timezone.desc=调整您的时光轨迹 +user.profile.theme=魔法主题 +user.profile.theme.desc=选择您的魔法主题 +user.profile.location=奇幻地点 +user.profile.location.desc=标定您的奇幻地点 +user.profile.nickname=魔法称号 +user.profile.nickname.desc=设置 Bot 对您的称呼 +user.profile.input_value=请输入 {ATTR} 的魔法数值 +user.profile.set_success={ATTR} 已经被设定成 {VALUE} +user.profile.set_failed={ATTR} 咒语无法被改写,请检查您的输入是否合法 + +rpm.move_up=向上移动 +rpm.move_down=向下移动 +rpm.move_top=置顶 + +weather.city_not_found=城市 {CITY} 被魔法抹去了 +weather.weather_not_found=城市 {CITY} 的天气信息被魔法屏蔽了 +weather.no_key=天气预报 API 的宝藏尚未被发现,请在您的魔法书中添加 weather_key + +status.friends=朋友 +status.groups=群体 +status.plugins=咒语 +status.resources=神秘物品 +status.bots=奇幻生物 +status.message_sent=发送了消息 +status.message_received=接收到了消息 +status.cpu=中国药科大学 +status.memory=回忆 +status.swap=换个地方 +status.disk=神秘碟片 +status.usage=使用率 +status.total=总计 +status.used=已经被用掉了 +status.free=魔法保护中 +status.runtime=时间流逝 +status.days=天 +status.hours=小时 +status.minutes=分钟 +status.seconds=秒 +status.cores=核心 +status.threads=线程 status.process=进程 \ No newline at end of file diff --git a/liteyuki/resources/vanilla_language/lang/zh-WY.lang b/src/resources/vanilla_language/lang/zh-WY.lang similarity index 96% rename from liteyuki/resources/vanilla_language/lang/zh-WY.lang rename to src/resources/vanilla_language/lang/zh-WY.lang index 4ecc84c..fa24411 100644 --- a/liteyuki/resources/vanilla_language/lang/zh-WY.lang +++ b/src/resources/vanilla_language/lang/zh-WY.lang @@ -1,159 +1,159 @@ -language.name=文言 - -log.debug=觀其調 -log.info=見其訊 -log.warning=告之懼 -log.error=惡之誤 -log.success=喜之成 - -liteyuki.restart=復其初 -liteyuki.restart_now=即其初 -liteyuki.update_restart=更新既成,可{RESTART}或稍後手動復始以行是更新 -liteyuki.current_config=當前設之如左 -liteyuki.static_config=靜態設之 -liteyuki.stored_config=存之設也 -liteyuki.config_set_success=設之 {KEY}={VAL} 成焉 -liteyuki.stats.group=群 -liteyuki.stats.user=友 -liteyuki.stats.plugin=插 -liteyuki.stats.sent=遣 -liteyuki.stats.received=受 -liteyuki.stats.run_time=進行時 -liteyuki.stats.groups=羣 -liteyuki.stats.friends=友 -liteyuki.stats.plugins=插 -liteyuki.image_mode_on=開云標示式圖之術 -liteyuki.image_mode_off=閉云標示式圖之術 -liteyuki.invalid_command=無其可爲之語也 {TEXT} -liteyuki.reload_resources=重載資 -liteyuki.list_resources=資列表 -liteyuki.reload_resources_success=資重載成,資數 {NUM} 也 -liteyuki.loaded_resources=載資 {NUM},優先之次是 -liteyuki.unloaded_resources=資未載 -liteyuki.load_resource_success=資 {NAME} 載 -liteyuki.unload_resource_success=資 {NAME} 拔 -liteyuki.load_resource_failed=資 {NAME} 載失 -liteyuki.unload_resource_failed=資 {NAME} 拔失 -liteyuki.resource_not_found=資 {NAME} 不存或無爲 -liteyuki.resource_already_loaded=資 {NAME} 已載,勿復 -liteyuki.resource_already_unloaded=資 {NAME} 已拔,勿復 -liteyuki.need_reload=請{BTN}以行是更新 -liteyuki.dont_repeat=勿復行 -liteyuki.change_priority_success=資 {NAME} 優先成 -liteyuki.change_priority_failed=資 {NAME} 優先不成 -liteyuki.group_already=羣 {GROUP} 之狀已是 {STATUS} ,勿再行 -liteyuki.group_success=羣 {GROUP} {STATUS} 成 -liteyuki.permission_denied=權不及也 -liteyuki.config_remove_success=設 {KEY} 移 - -main.current_language=當前言 {LANG} 爲是 -main.enable_webdash=啟網监塔: {URL} -main.monitor.title=輕雪監塔 -main.monitor.description=輕雪機之監塔 -main.monitor.cpu=中药科大学 -main.monitor.memory=懷 -main.monitor.swap=易 -main.monitor.disk=磁 -main.monitor.usage=用之 -main.monitor.total=總 -main.monitor.used=所用 -main.monitor.free=閑也 - -data_manager.migrate_success=模{NAME}易 - -npm.loaded_plugins=載插 -npm.total=总 {TOTAL} -npm.help=救 -npm.usage=法用 -npm.description=其形 -npm.disable=斷 -npm.disable_global=宇斷 -npm.enable=啟 -npm.enable_global=宇啟 -npm.install=法 -npm.uninstall=遣 -npm.installing=法 {NAME} 裝中 -npm.cannot_uninstall=法遣 -npm.no_description=无形 -npm.store_update_success=插庫成 -npm.store_update_failed=插庫敗 -npm.search_result=索所 -npm.search_no_result=無索 -npm.too_many_results=之多,{HIDE_NUM} 無現,審爲 -npm.install_success={NAME} 成 -npm.install_failed={NAME} 敗,語目以知,不知求于{HOMEPAGE} -npm.uninstall_success={NAME} 遣,明{HOMEPAGE} -npm.uninstall_failed={NAME} 遣 -npm.load_failed={NAME} 載,求于{HOMEPAGE} -npm.plugin_not_found=無 {NAME} ,揭揭庫爲 -npm.plugin_not_installed={NAME} 未 -npm.plugin_already_installed={NAME} 已,勿復法 -npm.author=主 -npm.homepage=揭 -npm.pypi=PyPI -npm.next_page=後 -npm.prev_page=前 -npm.update=兵 -npm.plugin_cannot_be_toggled={NAME} 不兵 -npm.plugin_already=插 {NAME} 之狀已是 {STATUS} ,勿再行 -npm.toggle_failed=插 {NAME} {STATUS} 敗:{ERROR} -npm.toggle_success=插 {NAME} {STATUS} 成 -npm.page=第{PAGE}/{TOTAL} 節 -npm.update_index=兵索 -npm.list_plugins=插目 -npm.disable_session=在次斷 -npm.enable_session=在次啟 -npm.help=救 -npm.search=索 - -user.profile.edit=改 -user.profile.set=設 -user.profile_manager.query=汝之訊 {ATTR} 爲 {VALUE} 也 -user.profile_manager.set=汝之訊 {ATTR} 已設 {VALUE} 也 -user.profile.settings=設 -user.profile.info=訊 -user.profile.lang=言 -user.profile.lang.desc=言設 -user.profile.timezone=時 -user.profile.timezone.desc=時設 -user.profile.theme=題 -user.profile.theme.desc=題設 -user.profile.location=所 -user.profile.location.desc=所設 -user.profile.nickname=名 -user.profile.nickname.desc=設之之名 -user.profile.input_value=求輸 {ATTR} 之量 -user.profile.set_success={ATTR} 成 {VALUE} 也 -user.profile.set_failed={ATTR} 失,問求也 - -rpm.move_up=上 -rpm.move_down=下 -rpm.move_top=初 - -weather.city_not_found=城 {CITY} 不存也 -weather.weather_not_found=城 {CITY} 之氣也不存也 -weather.no_key=未設氣金鑰也,爲請增于設也 - -status.friends=友 -status.groups=羣 -status.plugins=插 -status.resources=資 -status.bots=機 -status.message_sent=遣訊 -status.message_received=受訊 -status.cpu=中药科大学 -status.memory=懷 -status.swap=易 -status.disk=磁 -status.usage=用 -status.total=總 -status.used=所用 -status.free=閑 -status.runtime=時 -status.days=日 -status.hours=時 -status.minutes=分 -status.seconds=秒 -status.cores=核 -status.threads=縷 +language.name=文言 + +log.debug=觀其調 +log.info=見其訊 +log.warning=告之懼 +log.error=惡之誤 +log.success=喜之成 + +liteyuki.restart=復其初 +liteyuki.restart_now=即其初 +liteyuki.update_restart=更新既成,可{RESTART}或稍後手動復始以行是更新 +liteyuki.current_config=當前設之如左 +liteyuki.static_config=靜態設之 +liteyuki.stored_config=存之設也 +liteyuki.config_set_success=設之 {KEY}={VAL} 成焉 +liteyuki.stats.group=群 +liteyuki.stats.user=友 +liteyuki.stats.plugin=插 +liteyuki.stats.sent=遣 +liteyuki.stats.received=受 +liteyuki.stats.run_time=進行時 +liteyuki.stats.groups=羣 +liteyuki.stats.friends=友 +liteyuki.stats.plugins=插 +liteyuki.image_mode_on=開云標示式圖之術 +liteyuki.image_mode_off=閉云標示式圖之術 +liteyuki.invalid_command=無其可爲之語也 {TEXT} +liteyuki.reload_resources=重載資 +liteyuki.list_resources=資列表 +liteyuki.reload_resources_success=資重載成,資數 {NUM} 也 +liteyuki.loaded_resources=載資 {NUM},優先之次是 +liteyuki.unloaded_resources=資未載 +liteyuki.load_resource_success=資 {NAME} 載 +liteyuki.unload_resource_success=資 {NAME} 拔 +liteyuki.load_resource_failed=資 {NAME} 載失 +liteyuki.unload_resource_failed=資 {NAME} 拔失 +liteyuki.resource_not_found=資 {NAME} 不存或無爲 +liteyuki.resource_already_loaded=資 {NAME} 已載,勿復 +liteyuki.resource_already_unloaded=資 {NAME} 已拔,勿復 +liteyuki.need_reload=請{BTN}以行是更新 +liteyuki.dont_repeat=勿復行 +liteyuki.change_priority_success=資 {NAME} 優先成 +liteyuki.change_priority_failed=資 {NAME} 優先不成 +liteyuki.group_already=羣 {GROUP} 之狀已是 {STATUS} ,勿再行 +liteyuki.group_success=羣 {GROUP} {STATUS} 成 +liteyuki.permission_denied=權不及也 +liteyuki.config_remove_success=設 {KEY} 移 + +main.current_language=當前言 {LANG} 爲是 +main.enable_webdash=啟網监塔: {URL} +main.monitor.title=輕雪監塔 +main.monitor.description=輕雪機之監塔 +main.monitor.cpu=中药科大学 +main.monitor.memory=懷 +main.monitor.swap=易 +main.monitor.disk=磁 +main.monitor.usage=用之 +main.monitor.total=總 +main.monitor.used=所用 +main.monitor.free=閑也 + +data_manager.migrate_success=模{NAME}易 + +npm.loaded_plugins=載插 +npm.total=总 {TOTAL} +npm.help=救 +npm.usage=法用 +npm.description=其形 +npm.disable=斷 +npm.disable_global=宇斷 +npm.enable=啟 +npm.enable_global=宇啟 +npm.install=法 +npm.uninstall=遣 +npm.installing=法 {NAME} 裝中 +npm.cannot_uninstall=法遣 +npm.no_description=无形 +npm.store_update_success=插庫成 +npm.store_update_failed=插庫敗 +npm.search_result=索所 +npm.search_no_result=無索 +npm.too_many_results=之多,{HIDE_NUM} 無現,審爲 +npm.install_success={NAME} 成 +npm.install_failed={NAME} 敗,語目以知,不知求于{HOMEPAGE} +npm.uninstall_success={NAME} 遣,明{HOMEPAGE} +npm.uninstall_failed={NAME} 遣 +npm.load_failed={NAME} 載,求于{HOMEPAGE} +npm.plugin_not_found=無 {NAME} ,揭揭庫爲 +npm.plugin_not_installed={NAME} 未 +npm.plugin_already_installed={NAME} 已,勿復法 +npm.author=主 +npm.homepage=揭 +npm.pypi=PyPI +npm.next_page=後 +npm.prev_page=前 +npm.update=兵 +npm.plugin_cannot_be_toggled={NAME} 不兵 +npm.plugin_already=插 {NAME} 之狀已是 {STATUS} ,勿再行 +npm.toggle_failed=插 {NAME} {STATUS} 敗:{ERROR} +npm.toggle_success=插 {NAME} {STATUS} 成 +npm.page=第{PAGE}/{TOTAL} 節 +npm.update_index=兵索 +npm.list_plugins=插目 +npm.disable_session=在次斷 +npm.enable_session=在次啟 +npm.help=救 +npm.search=索 + +user.profile.edit=改 +user.profile.set=設 +user.profile_manager.query=汝之訊 {ATTR} 爲 {VALUE} 也 +user.profile_manager.set=汝之訊 {ATTR} 已設 {VALUE} 也 +user.profile.settings=設 +user.profile.info=訊 +user.profile.lang=言 +user.profile.lang.desc=言設 +user.profile.timezone=時 +user.profile.timezone.desc=時設 +user.profile.theme=題 +user.profile.theme.desc=題設 +user.profile.location=所 +user.profile.location.desc=所設 +user.profile.nickname=名 +user.profile.nickname.desc=設之之名 +user.profile.input_value=求輸 {ATTR} 之量 +user.profile.set_success={ATTR} 成 {VALUE} 也 +user.profile.set_failed={ATTR} 失,問求也 + +rpm.move_up=上 +rpm.move_down=下 +rpm.move_top=初 + +weather.city_not_found=城 {CITY} 不存也 +weather.weather_not_found=城 {CITY} 之氣也不存也 +weather.no_key=未設氣金鑰也,爲請增于設也 + +status.friends=友 +status.groups=羣 +status.plugins=插 +status.resources=資 +status.bots=機 +status.message_sent=遣訊 +status.message_received=受訊 +status.cpu=中药科大学 +status.memory=懷 +status.swap=易 +status.disk=磁 +status.usage=用 +status.total=總 +status.used=所用 +status.free=閑 +status.runtime=時 +status.days=日 +status.hours=時 +status.minutes=分 +status.seconds=秒 +status.cores=核 +status.threads=縷 status.process=程 \ No newline at end of file diff --git a/liteyuki/resources/vanilla_language/metadata.yml b/src/resources/vanilla_language/metadata.yml similarity index 98% rename from liteyuki/resources/vanilla_language/metadata.yml rename to src/resources/vanilla_language/metadata.yml index 47f7840..f4c3e9f 100644 --- a/liteyuki/resources/vanilla_language/metadata.yml +++ b/src/resources/vanilla_language/metadata.yml @@ -1,3 +1,3 @@ -name: 轻雪语言资源包 -description: 全局的语言资源包,不可卸载 +name: 轻雪语言资源包 +description: 全局的语言资源包,不可卸载 version: 2024.4.26 \ No newline at end of file diff --git a/liteyuki/resources/vanilla_resource/functions/hello.mcfunction b/src/resources/vanilla_resource/functions/hello.mcfunction similarity index 96% rename from liteyuki/resources/vanilla_resource/functions/hello.mcfunction rename to src/resources/vanilla_resource/functions/hello.mcfunction index ac435ce..586e9d4 100644 --- a/liteyuki/resources/vanilla_resource/functions/hello.mcfunction +++ b/src/resources/vanilla_resource/functions/hello.mcfunction @@ -1,10 +1,10 @@ -api send_private_msg user_id=qq message=msg -sleep 3 - -# 使用asyncio.create_task()创建一个新的任务,不等待任务完成直接执行下一条命令 -nohup function hello - -sleep 10 - -# cancel所有的tasks +api send_private_msg user_id=qq message=msg +sleep 3 + +# 使用asyncio.create_task()创建一个新的任务,不等待任务完成直接执行下一条命令 +nohup function hello + +sleep 10 + +# cancel所有的tasks end \ No newline at end of file diff --git a/liteyuki/resources/vanilla_resource/functions/poke.mcfunction b/src/resources/vanilla_resource/functions/poke.mcfunction similarity index 96% rename from liteyuki/resources/vanilla_resource/functions/poke.mcfunction rename to src/resources/vanilla_resource/functions/poke.mcfunction index a63d859..4e04ddb 100644 --- a/liteyuki/resources/vanilla_resource/functions/poke.mcfunction +++ b/src/resources/vanilla_resource/functions/poke.mcfunction @@ -1,5 +1,5 @@ -api friend_poke user_id=user_id -api friend_poke user_id=user_id -sleep 0.2 -nohup function poke +api friend_poke user_id=user_id +api friend_poke user_id=user_id +sleep 0.2 +nohup function poke await \ No newline at end of file diff --git a/liteyuki/resources/vanilla_resource/metadata.yml b/src/resources/vanilla_resource/metadata.yml similarity index 97% rename from liteyuki/resources/vanilla_resource/metadata.yml rename to src/resources/vanilla_resource/metadata.yml index 4314779..534a03d 100644 --- a/liteyuki/resources/vanilla_resource/metadata.yml +++ b/src/resources/vanilla_resource/metadata.yml @@ -1,3 +1,3 @@ -name: 轻雪原版资源包 -description: 轻雪内置资源包,不可卸载 +name: 轻雪原版资源包 +description: 轻雪内置资源包,不可卸载 version: 1.0.0 \ No newline at end of file diff --git a/liteyuki/resources/vanilla_resource/templates/css/card.css b/src/resources/vanilla_resource/templates/css/card.css similarity index 94% rename from liteyuki/resources/vanilla_resource/templates/css/card.css rename to src/resources/vanilla_resource/templates/css/card.css index 04fd2bc..aa05c0c 100644 --- a/liteyuki/resources/vanilla_resource/templates/css/card.css +++ b/src/resources/vanilla_resource/templates/css/card.css @@ -1,39 +1,39 @@ -:root { - --main-text-color: #fff; - --sub-text-color: #ccc; - --tip-text-color: #999; - --device-info-width: 240px; -} - - -.data-storage { - display: none; -} - -body { - background-repeat: repeat-y; - background-size: cover; - background-position: center; - text-shadow: 1px 1px 2px black; - margin: 20px; -} - -.info-box { - border-radius: 60px; - padding: 40px; - backdrop-filter: blur(10px); - background-color: rgba(0, 0, 0, 0.5); - margin-bottom: 20px; -} - -#author-description { - display: flex; - justify-content: center; - align-items: center; -} - -#author-text { - margin-left: 20px; - color: var(--sub-text-color); - font-size: 30px; +:root { + --main-text-color: #fff; + --sub-text-color: #ccc; + --tip-text-color: #999; + --device-info-width: 240px; +} + + +.data-storage { + display: none; +} + +body { + background-repeat: repeat-y; + background-size: cover; + background-position: center; + text-shadow: 1px 1px 2px black; + margin: 20px; +} + +.info-box { + border-radius: 60px; + padding: 40px; + backdrop-filter: blur(10px); + background-color: rgba(0, 0, 0, 0.5); + margin-bottom: 20px; +} + +#author-description { + display: flex; + justify-content: center; + align-items: center; +} + +#author-text { + margin-left: 20px; + color: var(--sub-text-color); + font-size: 30px; } \ No newline at end of file diff --git a/liteyuki/resources/vanilla_resource/templates/css/fonts.css b/src/resources/vanilla_resource/templates/css/fonts.css similarity index 95% rename from liteyuki/resources/vanilla_resource/templates/css/fonts.css rename to src/resources/vanilla_resource/templates/css/fonts.css index 6717747..fa6d8bc 100644 --- a/liteyuki/resources/vanilla_resource/templates/css/fonts.css +++ b/src/resources/vanilla_resource/templates/css/fonts.css @@ -1,76 +1,76 @@ -/*MiSans*/ - -@font-face { - font-family: 'MiSans'; - src: url('../fonts/MiSans/MiSans-Light.woff2') format('woff2'); - font-weight: 200; -} - -@font-face { - font-family: 'MiSans'; - src: url('../fonts/MiSans/MiSans-Normal.woff2') format('woff2'); - font-weight: 400; -} - -@font-face { - font-family: 'MiSans'; - src: url('../fonts/MiSans/MiSans-Semibold.woff2') format('woff2'); - font-weight: 500; -} - -@font-face { - font-family: 'MiSans'; - src: url('../fonts/MiSans/MiSans-Bold.woff2') format('woff2'); - font-weight: 700; -} - -@font-face { - font-family: 'MiSans'; - src: url('../fonts/MiSans/MiSans-Heavy.woff2') format('woff2'); - font-weight: 900; -} - -/*MapleMono*/ -@font-face { - font-family: 'MapleMono'; - src: url('../fonts/MapleMono/MapleMono-Light.woff2') format('woff2'); - font-weight: 200; -} - -@font-face { - font-family: 'MapleMono'; - src: url('../fonts/MapleMono/MapleMono-LightItalic.woff2') format('woff2'); - font-weight: 200; - font-style: italic; -} - - -@font-face { - font-family: 'MapleMono'; - src: url('../fonts/MapleMono/MapleMono-Regular.woff2') format('woff2'); - font-weight: 400; -} - -@font-face { - font-family: 'MapleMono'; - src: url('../fonts/MapleMono/MapleMono-Italic.woff2') format('woff2'); - font-weight: 400; - font-style: italic; -} - -@font-face { - font-family: 'MapleMono'; - src: url('../fonts/MapleMono/MapleMono-Bold.woff2') format('woff2'); - font-weight: 700; -} - -@font-face { - font-family: 'MapleMono'; - src: url('../fonts/MapleMono/MapleMono-BoldItalic.woff2') format('woff2'); - font-weight: 700; - font-style: italic; -} - -* { - font-family: 'MapleMono', 'MiSans', sans-serif; +/*MiSans*/ + +@font-face { + font-family: 'MiSans'; + src: url('../fonts/MiSans/MiSans-Light.woff2') format('woff2'); + font-weight: 200; +} + +@font-face { + font-family: 'MiSans'; + src: url('../fonts/MiSans/MiSans-Normal.woff2') format('woff2'); + font-weight: 400; +} + +@font-face { + font-family: 'MiSans'; + src: url('../fonts/MiSans/MiSans-Semibold.woff2') format('woff2'); + font-weight: 500; +} + +@font-face { + font-family: 'MiSans'; + src: url('../fonts/MiSans/MiSans-Bold.woff2') format('woff2'); + font-weight: 700; +} + +@font-face { + font-family: 'MiSans'; + src: url('../fonts/MiSans/MiSans-Heavy.woff2') format('woff2'); + font-weight: 900; +} + +/*MapleMono*/ +@font-face { + font-family: 'MapleMono'; + src: url('../fonts/MapleMono/MapleMono-Light.woff2') format('woff2'); + font-weight: 200; +} + +@font-face { + font-family: 'MapleMono'; + src: url('../fonts/MapleMono/MapleMono-LightItalic.woff2') format('woff2'); + font-weight: 200; + font-style: italic; +} + + +@font-face { + font-family: 'MapleMono'; + src: url('../fonts/MapleMono/MapleMono-Regular.woff2') format('woff2'); + font-weight: 400; +} + +@font-face { + font-family: 'MapleMono'; + src: url('../fonts/MapleMono/MapleMono-Italic.woff2') format('woff2'); + font-weight: 400; + font-style: italic; +} + +@font-face { + font-family: 'MapleMono'; + src: url('../fonts/MapleMono/MapleMono-Bold.woff2') format('woff2'); + font-weight: 700; +} + +@font-face { + font-family: 'MapleMono'; + src: url('../fonts/MapleMono/MapleMono-BoldItalic.woff2') format('woff2'); + font-weight: 700; + font-style: italic; +} + +* { + font-family: 'MapleMono', 'MiSans', sans-serif; } \ No newline at end of file diff --git a/liteyuki/resources/vanilla_resource/templates/css/status.css b/src/resources/vanilla_resource/templates/css/status.css similarity index 94% rename from liteyuki/resources/vanilla_resource/templates/css/status.css rename to src/resources/vanilla_resource/templates/css/status.css index 49cb145..c7ed2cb 100644 --- a/liteyuki/resources/vanilla_resource/templates/css/status.css +++ b/src/resources/vanilla_resource/templates/css/status.css @@ -1,127 +1,127 @@ -:root { - --main-text-color: #fff; - --sub-text-color: #ccc; - --tip-text-color: #999; - --device-info-width: 240px; -} - -.bot-info { - display: flex; -} - -.bot-icon { - display: flex; - width: 220px; - align-items: center; - justify-content: center; - margin-right: 20px; -} - -.bot-icon-img { - height: 220px; - width: 220px; - border-radius: 50%; -} - -.bot-name { - color: var(--main-text-color); - display: flex; - font-size: 45px; - flex-direction: column; - justify-content: center; -} - -.bot-tag { - white-space: break-spaces; - color: var(--sub-text-color); - font-size: 30px; - font-weight: 700; - line-height: 1.6; -} - -.bot-tag[suffix="1"]::after { - content: "|"; - display: inline-block; - margin: 0 5px; - height: 30%; - line-height: 50%; - color: var(--tip-text-color); -} - -/*修改bot-info 下hr样式*/ -.bot-info hr { - border: 0; - height: 4px; - background: var(--tip-text-color); - margin: 10px 0; - width: 100%; -} - -#hardware-info { - display: flex; - justify-content: space-evenly; -} - -.device-info { - max-width: 30%; -} - -.device-chart { - display: flex; - height: var(--device-info-width); - width: var(--device-info-width); - margin-bottom: 20px; - justify-content: center; -} - -.device-tags { - text-align: center; - color: var(--sub-text-color); - font-size: 24px; - max-width: var(--device-info-width); - word-wrap: break-word; -} - -.disk-info { - display: flex; - position: relative; - width: 100%; - height: 60px; - background-color: #ffffff44; - border-radius: 30px; - align-items: center; -} - -.disk-usage { - background-color: #a2d8f4; - height: 100%; - border-radius: 30px; - position: absolute; - z-index: 1; -} - -.disk-title { - position: absolute; - color: var(--main-text-color); - font-size: 24px; - margin-bottom: 10px; - margin-left: 20px; - text-align: left; - z-index: 2; -} - -#motto-text { - font-size: 36px; - word-wrap: break-word; - color: var(--main-text-color); - text-align: center; - margin: 30px 0 10px 0; -} - -#motto-from { - font-size: 30px; - font-style: italic; - color: var(--sub-text-color); - text-align: right; -} - +:root { + --main-text-color: #fff; + --sub-text-color: #ccc; + --tip-text-color: #999; + --device-info-width: 240px; +} + +.bot-info { + display: flex; +} + +.bot-icon { + display: flex; + width: 220px; + align-items: center; + justify-content: center; + margin-right: 20px; +} + +.bot-icon-img { + height: 220px; + width: 220px; + border-radius: 50%; +} + +.bot-name { + color: var(--main-text-color); + display: flex; + font-size: 45px; + flex-direction: column; + justify-content: center; +} + +.bot-tag { + white-space: break-spaces; + color: var(--sub-text-color); + font-size: 30px; + font-weight: 700; + line-height: 1.6; +} + +.bot-tag[suffix="1"]::after { + content: "|"; + display: inline-block; + margin: 0 5px; + height: 30%; + line-height: 50%; + color: var(--tip-text-color); +} + +/*修改bot-info 下hr样式*/ +.bot-info hr { + border: 0; + height: 4px; + background: var(--tip-text-color); + margin: 10px 0; + width: 100%; +} + +#hardware-info { + display: flex; + justify-content: space-evenly; +} + +.device-info { + max-width: 30%; +} + +.device-chart { + display: flex; + height: var(--device-info-width); + width: var(--device-info-width); + margin-bottom: 20px; + justify-content: center; +} + +.device-tags { + text-align: center; + color: var(--sub-text-color); + font-size: 24px; + max-width: var(--device-info-width); + word-wrap: break-word; +} + +.disk-info { + display: flex; + position: relative; + width: 100%; + height: 60px; + background-color: #ffffff44; + border-radius: 30px; + align-items: center; +} + +.disk-usage { + background-color: #a2d8f4; + height: 100%; + border-radius: 30px; + position: absolute; + z-index: 1; +} + +.disk-title { + position: absolute; + color: var(--main-text-color); + font-size: 24px; + margin-bottom: 10px; + margin-left: 20px; + text-align: left; + z-index: 2; +} + +#motto-text { + font-size: 36px; + word-wrap: break-word; + color: var(--main-text-color); + text-align: center; + margin: 30px 0 10px 0; +} + +#motto-from { + font-size: 30px; + font-style: italic; + color: var(--sub-text-color); + text-align: right; +} + diff --git a/liteyuki/resources/vanilla_resource/templates/css/style.css b/src/resources/vanilla_resource/templates/css/style.css similarity index 100% rename from liteyuki/resources/vanilla_resource/templates/css/style.css rename to src/resources/vanilla_resource/templates/css/style.css diff --git a/liteyuki/resources/vanilla_resource/templates/favicon.ico b/src/resources/vanilla_resource/templates/favicon.ico similarity index 100% rename from liteyuki/resources/vanilla_resource/templates/favicon.ico rename to src/resources/vanilla_resource/templates/favicon.ico diff --git a/liteyuki/resources/vanilla_resource/templates/fonts/MapleMono/MapleMono-Bold.woff2 b/src/resources/vanilla_resource/templates/fonts/MapleMono/MapleMono-Bold.woff2 similarity index 100% rename from liteyuki/resources/vanilla_resource/templates/fonts/MapleMono/MapleMono-Bold.woff2 rename to src/resources/vanilla_resource/templates/fonts/MapleMono/MapleMono-Bold.woff2 diff --git a/liteyuki/resources/vanilla_resource/templates/fonts/MapleMono/MapleMono-BoldItalic.woff2 b/src/resources/vanilla_resource/templates/fonts/MapleMono/MapleMono-BoldItalic.woff2 similarity index 100% rename from liteyuki/resources/vanilla_resource/templates/fonts/MapleMono/MapleMono-BoldItalic.woff2 rename to src/resources/vanilla_resource/templates/fonts/MapleMono/MapleMono-BoldItalic.woff2 diff --git a/liteyuki/resources/vanilla_resource/templates/fonts/MapleMono/MapleMono-Italic.woff2 b/src/resources/vanilla_resource/templates/fonts/MapleMono/MapleMono-Italic.woff2 similarity index 100% rename from liteyuki/resources/vanilla_resource/templates/fonts/MapleMono/MapleMono-Italic.woff2 rename to src/resources/vanilla_resource/templates/fonts/MapleMono/MapleMono-Italic.woff2 diff --git a/liteyuki/resources/vanilla_resource/templates/fonts/MapleMono/MapleMono-Light.woff2 b/src/resources/vanilla_resource/templates/fonts/MapleMono/MapleMono-Light.woff2 similarity index 100% rename from liteyuki/resources/vanilla_resource/templates/fonts/MapleMono/MapleMono-Light.woff2 rename to src/resources/vanilla_resource/templates/fonts/MapleMono/MapleMono-Light.woff2 diff --git a/liteyuki/resources/vanilla_resource/templates/fonts/MapleMono/MapleMono-LightItalic.woff2 b/src/resources/vanilla_resource/templates/fonts/MapleMono/MapleMono-LightItalic.woff2 similarity index 100% rename from liteyuki/resources/vanilla_resource/templates/fonts/MapleMono/MapleMono-LightItalic.woff2 rename to src/resources/vanilla_resource/templates/fonts/MapleMono/MapleMono-LightItalic.woff2 diff --git a/liteyuki/resources/vanilla_resource/templates/fonts/MapleMono/MapleMono-Regular.woff2 b/src/resources/vanilla_resource/templates/fonts/MapleMono/MapleMono-Regular.woff2 similarity index 100% rename from liteyuki/resources/vanilla_resource/templates/fonts/MapleMono/MapleMono-Regular.woff2 rename to src/resources/vanilla_resource/templates/fonts/MapleMono/MapleMono-Regular.woff2 diff --git a/liteyuki/resources/vanilla_resource/templates/fonts/MiSans/MiSans-Bold.woff2 b/src/resources/vanilla_resource/templates/fonts/MiSans/MiSans-Bold.woff2 similarity index 100% rename from liteyuki/resources/vanilla_resource/templates/fonts/MiSans/MiSans-Bold.woff2 rename to src/resources/vanilla_resource/templates/fonts/MiSans/MiSans-Bold.woff2 diff --git a/liteyuki/resources/vanilla_resource/templates/fonts/MiSans/MiSans-Heavy.woff2 b/src/resources/vanilla_resource/templates/fonts/MiSans/MiSans-Heavy.woff2 similarity index 100% rename from liteyuki/resources/vanilla_resource/templates/fonts/MiSans/MiSans-Heavy.woff2 rename to src/resources/vanilla_resource/templates/fonts/MiSans/MiSans-Heavy.woff2 diff --git a/liteyuki/resources/vanilla_resource/templates/fonts/MiSans/MiSans-Light.woff2 b/src/resources/vanilla_resource/templates/fonts/MiSans/MiSans-Light.woff2 similarity index 100% rename from liteyuki/resources/vanilla_resource/templates/fonts/MiSans/MiSans-Light.woff2 rename to src/resources/vanilla_resource/templates/fonts/MiSans/MiSans-Light.woff2 diff --git a/liteyuki/resources/vanilla_resource/templates/fonts/MiSans/MiSans-Normal.woff2 b/src/resources/vanilla_resource/templates/fonts/MiSans/MiSans-Normal.woff2 similarity index 100% rename from liteyuki/resources/vanilla_resource/templates/fonts/MiSans/MiSans-Normal.woff2 rename to src/resources/vanilla_resource/templates/fonts/MiSans/MiSans-Normal.woff2 diff --git a/liteyuki/resources/vanilla_resource/templates/fonts/MiSans/MiSans-Semibold.woff2 b/src/resources/vanilla_resource/templates/fonts/MiSans/MiSans-Semibold.woff2 similarity index 100% rename from liteyuki/resources/vanilla_resource/templates/fonts/MiSans/MiSans-Semibold.woff2 rename to src/resources/vanilla_resource/templates/fonts/MiSans/MiSans-Semibold.woff2 diff --git a/liteyuki/resources/vanilla_resource/templates/img/2023-08-05_20.06.51.png b/src/resources/vanilla_resource/templates/img/2023-08-05_20.06.51.png similarity index 100% rename from liteyuki/resources/vanilla_resource/templates/img/2023-08-05_20.06.51.png rename to src/resources/vanilla_resource/templates/img/2023-08-05_20.06.51.png diff --git a/liteyuki/resources/vanilla_resource/templates/img/bg1.webp b/src/resources/vanilla_resource/templates/img/bg1.webp similarity index 100% rename from liteyuki/resources/vanilla_resource/templates/img/bg1.webp rename to src/resources/vanilla_resource/templates/img/bg1.webp diff --git a/liteyuki/resources/vanilla_resource/templates/img/bg2.webp b/src/resources/vanilla_resource/templates/img/bg2.webp similarity index 100% rename from liteyuki/resources/vanilla_resource/templates/img/bg2.webp rename to src/resources/vanilla_resource/templates/img/bg2.webp diff --git a/liteyuki/resources/vanilla_resource/templates/img/bg3.webp b/src/resources/vanilla_resource/templates/img/bg3.webp similarity index 100% rename from liteyuki/resources/vanilla_resource/templates/img/bg3.webp rename to src/resources/vanilla_resource/templates/img/bg3.webp diff --git a/liteyuki/resources/vanilla_resource/templates/img/bg4.webp b/src/resources/vanilla_resource/templates/img/bg4.webp similarity index 100% rename from liteyuki/resources/vanilla_resource/templates/img/bg4.webp rename to src/resources/vanilla_resource/templates/img/bg4.webp diff --git a/liteyuki/resources/vanilla_resource/templates/img/bg5.webp b/src/resources/vanilla_resource/templates/img/bg5.webp similarity index 100% rename from liteyuki/resources/vanilla_resource/templates/img/bg5.webp rename to src/resources/vanilla_resource/templates/img/bg5.webp diff --git a/liteyuki/resources/vanilla_resource/templates/img/bg6.webp b/src/resources/vanilla_resource/templates/img/bg6.webp similarity index 100% rename from liteyuki/resources/vanilla_resource/templates/img/bg6.webp rename to src/resources/vanilla_resource/templates/img/bg6.webp diff --git a/liteyuki/resources/vanilla_resource/templates/img/bg7.webp b/src/resources/vanilla_resource/templates/img/bg7.webp similarity index 100% rename from liteyuki/resources/vanilla_resource/templates/img/bg7.webp rename to src/resources/vanilla_resource/templates/img/bg7.webp diff --git a/liteyuki/resources/vanilla_resource/templates/img/liteyuki.png b/src/resources/vanilla_resource/templates/img/liteyuki.png similarity index 100% rename from liteyuki/resources/vanilla_resource/templates/img/liteyuki.png rename to src/resources/vanilla_resource/templates/img/liteyuki.png diff --git a/liteyuki/resources/vanilla_resource/templates/js/card.js b/src/resources/vanilla_resource/templates/js/card.js similarity index 96% rename from liteyuki/resources/vanilla_resource/templates/js/card.js rename to src/resources/vanilla_resource/templates/js/card.js index a034cd9..e7bfb75 100644 --- a/liteyuki/resources/vanilla_resource/templates/js/card.js +++ b/src/resources/vanilla_resource/templates/js/card.js @@ -1,27 +1,27 @@ -const bgs = [ - "bg1.webp", - "bg2.webp", - "bg3.webp", - "bg4.webp", - "bg5.webp", - "bg6.webp", - "bg7.webp", -] -// 随机选择背景图片 -document.body.style.backgroundImage = `url(./img/${bgs[Math.floor(Math.random() * bgs.length)]})`; -// body后插入info-box id=description -let descriptionDiv = document.createElement("div"); -descriptionDiv.className = 'info-box' -descriptionDiv.id = 'author-description' -// 添加一副头像且垂直居中 -let avatar = document.createElement("img"); -avatar.src = 'https://q.qlogo.cn/g?b=qq&nk=2751454815&s=640' -avatar.style.height = '50px'; -avatar.style.borderRadius = '50%'; - -let text = document.createElement("div"); -text.id = 'author-text'; -text.innerText = 'Designed by SnowyKami'; -descriptionDiv.appendChild(avatar); -descriptionDiv.appendChild(text); -document.body.appendChild(descriptionDiv); +const bgs = [ + "bg1.webp", + "bg2.webp", + "bg3.webp", + "bg4.webp", + "bg5.webp", + "bg6.webp", + "bg7.webp", +] +// 随机选择背景图片 +document.body.style.backgroundImage = `url(./img/${bgs[Math.floor(Math.random() * bgs.length)]})`; +// body后插入info-box id=description +let descriptionDiv = document.createElement("div"); +descriptionDiv.className = 'info-box' +descriptionDiv.id = 'author-description' +// 添加一副头像且垂直居中 +let avatar = document.createElement("img"); +avatar.src = 'https://q.qlogo.cn/g?b=qq&nk=2751454815&s=640' +avatar.style.height = '50px'; +avatar.style.borderRadius = '50%'; + +let text = document.createElement("div"); +text.id = 'author-text'; +text.innerText = 'Designed by SnowyKami'; +descriptionDiv.appendChild(avatar); +descriptionDiv.appendChild(text); +document.body.appendChild(descriptionDiv); diff --git a/liteyuki/resources/vanilla_resource/templates/js/motto.js b/src/resources/vanilla_resource/templates/js/motto.js similarity index 96% rename from liteyuki/resources/vanilla_resource/templates/js/motto.js rename to src/resources/vanilla_resource/templates/js/motto.js index 54e0c12..6e2402b 100644 --- a/liteyuki/resources/vanilla_resource/templates/js/motto.js +++ b/src/resources/vanilla_resource/templates/js/motto.js @@ -1,113 +1,113 @@ -// 存放格言 -const mottos = [ - { - "text": "同是天涯沦落人,相逢何必曾相识。", - "author": "白居易", - "source": "《琵琶行》" - }, - { - "text": "海内存知己,天涯若比邻。", - "author": "王勃", - "source": "《送杜少府之任蜀州》" - }, - { - "text": "银烛秋光冷画屏,轻罗小扇扑流萤。", - "author": "陆游", - "source": "《秋夕》" - }, - { - "text": "明月几时有,把酒问青天。", - "author": "苏轼", - "source": "《水调歌头》" - }, - { - "text": "人生自古谁无死,留取丹心照汗青。", - "author": "文天祥", - "source": "《过零丁洋》" - }, - { - "text": "山重水复疑无路,柳暗花明又一村。", - "author": "陆游", - "source": "《游山西村》" - }, - { - "text": "逸一时,误一世,逸久逸久罢已龄", - "author": "田所浩二", - "source": "《仲夏夜之淫梦》" - }, - { - "text": "你知道吗,轻雪只能在Python3.10以上的版本中使用。", - "author": "SnowyKami", - "source": "轻雪文档" - }, - { - "text": "你知道吗,轻雪可以通过自定义资源包来扩展主题和语言", - "author": "SnowyKami", - "source": "轻雪文档" - }, - { - "text": "你知道吗,轻雪交流群的群号是 775840726", - "author": "SnowyKami", - "source": "轻雪文档" - }, - { - "text": "你知道吗,轻雪运行过程中会启动一个node.js运行环境", - "author": "SnowyKami", - "source": "轻雪文档" - }, - { - "text": "你知道吗,轻雪的主题是基于HTML5开发的", - "author": "SnowyKami", - "source": "轻雪文档" - }, - { - "text": "路漫漫其修远兮,吾将上下而求索。", - "author": "屈原", - "source": "《离骚》" - }, - { - "text": "千里之行,始于足下。", - "author": "老子", - "source": "《道德经》" - }, - { - "text": "读书破万卷,下笔如有神。", - "author": "杜甫", - "source": "《奉赠韦左丞丈二十韵》" - }, - { - "text": "不登高山,不知天之高也;不临深溪,不知地之厚也。", - "author": "荀子", - "source": "《劝学》" - }, - { - "text": "知之者不如好之者,好之者不如乐之者。", - "author": "孔子", - "source": "《论语》" - }, - { - "text": "天行健,君子以自强不息;地势坤,君子以厚德载物。", - "source": "《易经》", - "author": "" - }, - { - "text": "书山有路勤为径,学海无涯苦作舟。", - "author": "韩愈", - "source": "《读书有感》" - }, - { - "text": "前事不忘,后事之师。", - "author": "孔子", - "source": "《论语》" - }, - { - "text": "志当存高远,若樽俎断绝。", - "author": "陶渊明", - "source": "《饮酒》" - }, - { - "text": "不以物喜,不以己悲。", - "author": "傅子", - "source": "《傅子》" - } +// 存放格言 +const mottos = [ + { + "text": "同是天涯沦落人,相逢何必曾相识。", + "author": "白居易", + "source": "《琵琶行》" + }, + { + "text": "海内存知己,天涯若比邻。", + "author": "王勃", + "source": "《送杜少府之任蜀州》" + }, + { + "text": "银烛秋光冷画屏,轻罗小扇扑流萤。", + "author": "陆游", + "source": "《秋夕》" + }, + { + "text": "明月几时有,把酒问青天。", + "author": "苏轼", + "source": "《水调歌头》" + }, + { + "text": "人生自古谁无死,留取丹心照汗青。", + "author": "文天祥", + "source": "《过零丁洋》" + }, + { + "text": "山重水复疑无路,柳暗花明又一村。", + "author": "陆游", + "source": "《游山西村》" + }, + { + "text": "逸一时,误一世,逸久逸久罢已龄", + "author": "田所浩二", + "source": "《仲夏夜之淫梦》" + }, + { + "text": "你知道吗,轻雪只能在Python3.10以上的版本中使用。", + "author": "SnowyKami", + "source": "轻雪文档" + }, + { + "text": "你知道吗,轻雪可以通过自定义资源包来扩展主题和语言", + "author": "SnowyKami", + "source": "轻雪文档" + }, + { + "text": "你知道吗,轻雪交流群的群号是 775840726", + "author": "SnowyKami", + "source": "轻雪文档" + }, + { + "text": "你知道吗,轻雪运行过程中会启动一个node.js运行环境", + "author": "SnowyKami", + "source": "轻雪文档" + }, + { + "text": "你知道吗,轻雪的主题是基于HTML5开发的", + "author": "SnowyKami", + "source": "轻雪文档" + }, + { + "text": "路漫漫其修远兮,吾将上下而求索。", + "author": "屈原", + "source": "《离骚》" + }, + { + "text": "千里之行,始于足下。", + "author": "老子", + "source": "《道德经》" + }, + { + "text": "读书破万卷,下笔如有神。", + "author": "杜甫", + "source": "《奉赠韦左丞丈二十韵》" + }, + { + "text": "不登高山,不知天之高也;不临深溪,不知地之厚也。", + "author": "荀子", + "source": "《劝学》" + }, + { + "text": "知之者不如好之者,好之者不如乐之者。", + "author": "孔子", + "source": "《论语》" + }, + { + "text": "天行健,君子以自强不息;地势坤,君子以厚德载物。", + "source": "《易经》", + "author": "" + }, + { + "text": "书山有路勤为径,学海无涯苦作舟。", + "author": "韩愈", + "source": "《读书有感》" + }, + { + "text": "前事不忘,后事之师。", + "author": "孔子", + "source": "《论语》" + }, + { + "text": "志当存高远,若樽俎断绝。", + "author": "陶渊明", + "source": "《饮酒》" + }, + { + "text": "不以物喜,不以己悲。", + "author": "傅子", + "source": "《傅子》" + } ] \ No newline at end of file diff --git a/liteyuki/resources/vanilla_resource/templates/js/status.js b/src/resources/vanilla_resource/templates/js/status.js similarity index 97% rename from liteyuki/resources/vanilla_resource/templates/js/status.js rename to src/resources/vanilla_resource/templates/js/status.js index 11a3f6a..4a62357 100644 --- a/liteyuki/resources/vanilla_resource/templates/js/status.js +++ b/src/resources/vanilla_resource/templates/js/status.js @@ -1,296 +1,296 @@ -const data = JSON.parse(document.getElementById('data').innerText); -const bot_data = data['bot']; // 机器人数据 -const hardwareData = data['hardware']; // 硬件数据 -const liteyukiData = data['liteyuki']; // LiteYuki数据 -const localData = data['localization']; // 本地化语言数据 - -/** - * 创建CPU/内存/交换饼图 - * @param title - * @param {Array<{name: string, value: number}>} data 数据 - */ -function createPieChartOption(title, data) { - // data为各项占比列表 - return { - animation: false, - title: { - text: title, - left: 'center', - top: 'center', - textStyle: { - color: '#fff', - fontSize: 30, - lineHeight: 36 - } - }, - tooltip: { - show: true, - trigger: 'item', - backgroundColor: '#fff', - }, - color: data.length === 3 ? ['#00a6ff', '#a2d8f4', "#ffffff44"] : ['#a2d8f4', '#ffffff44'], - series: [ - { - name: 'info', - type: 'pie', - radius: ['80%', '100%'], - center: ['50%', '50%'], - itemStyle: { - normal: { - label: { - show: false - }, - labelLine: { - show: false - } - }, - emphasis: { - label: { - show: true, - textStyle: { - fontSize: '50', - fontWeight: 'bold' - } - } - } - }, - data: data - } - ] - } -} - - -function convertSize(size, precision = 2, addUnit = true, suffix = " XiB") { - let isNegative = size < 0; - size = Math.abs(size); - let units = ["", "K", "M", "G", "T", "P", "E", "Z"]; - let unit = ""; - - for (let i = 0; i < units.length; i++) { - if (size < 1024) { - unit = units[i]; - break; - } - size /= 1024; - } - - if (isNegative) { - size = -size; - } - - if (addUnit) { - return size.toFixed(precision) + suffix.replace('X', unit); - } else { - return size; - } -} - -/** - * 创建磁盘用量柱状图 - * @param title - * @param percent 数据 - */ -function createBarChart(title, percent) { - // percent为百分比,最大值为100 - let diskDiv = document.createElement('div') - diskDiv.setAttribute('class', 'disk-info') - diskDiv.style.marginBottom = '20px' - diskDiv.innerHTML = ` -
${title}
-
- ` - - return diskDiv -} - -function secondsToTextTime(seconds) { - let days = Math.floor(seconds / 86400) - let hours = Math.floor((seconds % 86400) / 3600) - let minutes = Math.floor((seconds % 3600) / 60) - let seconds_ = Math.floor(seconds % 60) - return `${days}${localData['days']} ${hours}${localData['hours']} ${minutes}${localData['minutes']} ${seconds_}${localData['seconds']}` -} - -// 主函数 -function main() { - // 添加机器人信息 - bot_data['bots'].forEach( - (bot) => { - let botInfoDiv = document.importNode(document.getElementById('bot-template').content, true) // 复制模板 - - - // 设置机器人信息 - botInfoDiv.className = 'info-box bot-info' - - botInfoDiv.querySelector('.bot-icon-img').setAttribute('src', bot['icon']) - botInfoDiv.querySelector('.bot-name').innerText = bot['name'] - let tagArray = [ - bot['protocol_name'], - bot['app_name'], - `${localData['groups']} ${bot['groups']}`, - `${localData['friends']} ${bot['friends']}`, - `${localData['message_sent']} ${bot['message_sent']}`, - `${localData['message_received']} ${bot['message_received']}`, - ] - // 添加一些标签 - tagArray.forEach( - (tag, index) => { - let tagSpan = document.createElement('span') - tagSpan.className = 'bot-tag' - tagSpan.innerText = tag - // 给最后一个标签不添加后缀 - tagSpan.setAttribute('suffix', index === tagArray.length - 1 ? '0' : '1') - botInfoDiv.querySelector('.bot-tags').appendChild(tagSpan) - } - ) - document.body.insertBefore(botInfoDiv, document.getElementById('hardware-info')) // 插入对象 - - } - ) - - // 添加轻雪信息 - let liteyukiInfoDiv = document.importNode(document.getElementById('bot-template').content, true) // 复制模板 - liteyukiInfoDiv.className = 'info-box bot-info' - liteyukiInfoDiv.querySelector('.bot-icon-img').setAttribute('src', './img/liteyuki.png') - liteyukiInfoDiv.querySelector('.bot-name').innerText = liteyukiData['name'] - - let tagArray = [ - `Liteyuki ${liteyukiData['version']}`, - `Nonebot ${liteyukiData['nonebot']}`, - liteyukiData['python'], - liteyukiData['system'], - `${localData['plugins']} ${liteyukiData['plugins']}`, - `${localData['resources']} ${liteyukiData['resources']}`, - `${localData['bots']} ${liteyukiData['bots']}`, - `${localData['runtime']} ${secondsToTextTime(liteyukiData['runtime'])}`, - ] - tagArray.forEach( - (tag, index) => { - let tagSpan = document.createElement('span') - tagSpan.className = 'bot-tag' - tagSpan.innerText = tag - // 给最后一个标签不添加后缀 - tagSpan.setAttribute('suffix', index === tagArray.length - 1 ? '0' : '1') - liteyukiInfoDiv.querySelector('.bot-tags').appendChild(tagSpan) - } - ) - document.body.insertBefore(liteyukiInfoDiv, document.getElementById('hardware-info')) // 插入对象 - - // 添加硬件信息 - const cpuData = hardwareData['cpu'] - const memData = hardwareData['memory'] - const swapData = hardwareData['swap'] - - const cpuTagArray = [ - cpuData['name'], - `${cpuData['cores']}${localData['cores']} ${cpuData['threads']}${localData['threads']}`, - `${(cpuData['freq'] / 1000).toFixed(2)}GHz` - ] - - const memTagArray = [ - `${localData['process']} ${convertSize(memData['usedProcess'])}`, - `${localData['used']} ${convertSize(memData['used'])}`, - `${localData['free']} ${convertSize(memData['free'])}`, - `${localData['total']} ${convertSize(memData['total'])}` - ] - - const swapTagArray = [ - `${localData['used']} ${convertSize(swapData['used'])}`, - `${localData['free']} ${convertSize(swapData['free'])}`, - `${localData['total']} ${convertSize(swapData['total'])}` - ] - let cpuDeviceInfoDiv = document.importNode(document.getElementById('device-info').content, true) - let memDeviceInfoDiv = document.importNode(document.getElementById('device-info').content, true) - let swapDeviceInfoDiv = document.importNode(document.getElementById('device-info').content, true) - - cpuDeviceInfoDiv.querySelector('.device-info').setAttribute('id', 'cpu-info') - memDeviceInfoDiv.querySelector('.device-info').setAttribute('id', 'mem-info') - swapDeviceInfoDiv.querySelector('.device-info').setAttribute('id', 'swap-info') - cpuDeviceInfoDiv.querySelector('.device-chart').setAttribute('id', 'cpu-chart') - memDeviceInfoDiv.querySelector('.device-chart').setAttribute('id', 'mem-chart') - swapDeviceInfoDiv.querySelector('.device-chart').setAttribute('id', 'swap-chart') - - let devices = { - 'cpu': cpuDeviceInfoDiv, - 'mem': memDeviceInfoDiv, - 'swap': swapDeviceInfoDiv - } - // 遍历添加标签 - for (let device in devices) { - let tagArray = [] - switch (device) { - case 'cpu': - tagArray = cpuTagArray - break - case 'mem': - tagArray = memTagArray - break - case 'swap': - tagArray = swapTagArray - break - } - tagArray.forEach( - (tag, index) => { - let tagDiv = document.createElement('div') - tagDiv.className = 'device-tag' - tagDiv.innerText = tag - // 给最后一个标签不添加后缀 - tagDiv.setAttribute('suffix', index === tagArray.length - 1 ? '0' : '1') - devices[device].querySelector('.device-tags').appendChild(tagDiv) - } - ) - } - - - // 插入 - document.getElementById('hardware-info').appendChild(cpuDeviceInfoDiv) - document.getElementById('hardware-info').appendChild(memDeviceInfoDiv) - document.getElementById('hardware-info').appendChild(swapDeviceInfoDiv) - - let cpuChart = echarts.init(document.getElementById('cpu-chart')) - let memChart = echarts.init(document.getElementById('mem-chart')) - let swapChart = echarts.init(document.getElementById('swap-chart')) - - - cpuChart.setOption(createPieChartOption(`${localData['cpu']}\n${cpuData['percent'].toFixed(1)}%`, [ - {name: 'used', value: cpuData['percent']}, - {name: 'free', value: 100 - cpuData['percent']} - ])) - - memChart.setOption(createPieChartOption(`${localData['memory']}\n${memData['percent'].toFixed(1)}%`, [ - {name: 'process', value: memData['usedProcess']}, - {name: 'used', value: memData['used'] - memData['usedProcess']}, - {name: 'free', value: memData['free']} - ])) - - - swapChart.setOption(createPieChartOption(`${localData['swap']}\n${swapData['percent'].toFixed(1)}%`, [ - {name: 'used', value: swapData['used']}, - {name: 'free', value: swapData['free']} - ])) - - - // 磁盘信息 - const diskData = hardwareData['disk'] - diskData.forEach( - (disk) => { - let diskTitle = `${disk['name']} ${localData['free']} ${convertSize(disk['free'])} ${localData['total']} ${convertSize(disk['total'])}` - // 最后一个把margin-bottom去掉 - let diskDiv = createBarChart(diskTitle, disk['percent']) - if (disk === diskData[diskData.length - 1]) { - diskDiv.style.marginBottom = '0' - } - document.getElementById('disk-info').appendChild(createBarChart(diskTitle, disk['percent'])) - }) - // 随机一言 - let motto = mottos[Math.floor(Math.random() * mottos.length)] - let mottoText = motto['text'] - let mottoFrom = `${motto['author']} ${motto['source']}` - document.getElementById('motto-text').innerText = mottoText - document.getElementById('motto-from').innerText = mottoFrom - - -} - +const data = JSON.parse(document.getElementById('data').innerText); +const bot_data = data['bot']; // 机器人数据 +const hardwareData = data['hardware']; // 硬件数据 +const liteyukiData = data['liteyuki']; // LiteYuki数据 +const localData = data['localization']; // 本地化语言数据 + +/** + * 创建CPU/内存/交换饼图 + * @param title + * @param {Array<{name: string, value: number}>} data 数据 + */ +function createPieChartOption(title, data) { + // data为各项占比列表 + return { + animation: false, + title: { + text: title, + left: 'center', + top: 'center', + textStyle: { + color: '#fff', + fontSize: 30, + lineHeight: 36 + } + }, + tooltip: { + show: true, + trigger: 'item', + backgroundColor: '#fff', + }, + color: data.length === 3 ? ['#00a6ff', '#a2d8f4', "#ffffff44"] : ['#a2d8f4', '#ffffff44'], + series: [ + { + name: 'info', + type: 'pie', + radius: ['80%', '100%'], + center: ['50%', '50%'], + itemStyle: { + normal: { + label: { + show: false + }, + labelLine: { + show: false + } + }, + emphasis: { + label: { + show: true, + textStyle: { + fontSize: '50', + fontWeight: 'bold' + } + } + } + }, + data: data + } + ] + } +} + + +function convertSize(size, precision = 2, addUnit = true, suffix = " XiB") { + let isNegative = size < 0; + size = Math.abs(size); + let units = ["", "K", "M", "G", "T", "P", "E", "Z"]; + let unit = ""; + + for (let i = 0; i < units.length; i++) { + if (size < 1024) { + unit = units[i]; + break; + } + size /= 1024; + } + + if (isNegative) { + size = -size; + } + + if (addUnit) { + return size.toFixed(precision) + suffix.replace('X', unit); + } else { + return size; + } +} + +/** + * 创建磁盘用量柱状图 + * @param title + * @param percent 数据 + */ +function createBarChart(title, percent) { + // percent为百分比,最大值为100 + let diskDiv = document.createElement('div') + diskDiv.setAttribute('class', 'disk-info') + diskDiv.style.marginBottom = '20px' + diskDiv.innerHTML = ` +
${title}
+
+ ` + + return diskDiv +} + +function secondsToTextTime(seconds) { + let days = Math.floor(seconds / 86400) + let hours = Math.floor((seconds % 86400) / 3600) + let minutes = Math.floor((seconds % 3600) / 60) + let seconds_ = Math.floor(seconds % 60) + return `${days}${localData['days']} ${hours}${localData['hours']} ${minutes}${localData['minutes']} ${seconds_}${localData['seconds']}` +} + +// 主函数 +function main() { + // 添加机器人信息 + bot_data['bots'].forEach( + (bot) => { + let botInfoDiv = document.importNode(document.getElementById('bot-template').content, true) // 复制模板 + + + // 设置机器人信息 + botInfoDiv.className = 'info-box bot-info' + + botInfoDiv.querySelector('.bot-icon-img').setAttribute('src', bot['icon']) + botInfoDiv.querySelector('.bot-name').innerText = bot['name'] + let tagArray = [ + bot['protocol_name'], + bot['app_name'], + `${localData['groups']} ${bot['groups']}`, + `${localData['friends']} ${bot['friends']}`, + `${localData['message_sent']} ${bot['message_sent']}`, + `${localData['message_received']} ${bot['message_received']}`, + ] + // 添加一些标签 + tagArray.forEach( + (tag, index) => { + let tagSpan = document.createElement('span') + tagSpan.className = 'bot-tag' + tagSpan.innerText = tag + // 给最后一个标签不添加后缀 + tagSpan.setAttribute('suffix', index === tagArray.length - 1 ? '0' : '1') + botInfoDiv.querySelector('.bot-tags').appendChild(tagSpan) + } + ) + document.body.insertBefore(botInfoDiv, document.getElementById('hardware-info')) // 插入对象 + + } + ) + + // 添加轻雪信息 + let liteyukiInfoDiv = document.importNode(document.getElementById('bot-template').content, true) // 复制模板 + liteyukiInfoDiv.className = 'info-box bot-info' + liteyukiInfoDiv.querySelector('.bot-icon-img').setAttribute('src', './img/liteyuki.png') + liteyukiInfoDiv.querySelector('.bot-name').innerText = liteyukiData['name'] + + let tagArray = [ + `Liteyuki ${liteyukiData['version']}`, + `Nonebot ${liteyukiData['nonebot']}`, + liteyukiData['python'], + liteyukiData['system'], + `${localData['plugins']} ${liteyukiData['plugins']}`, + `${localData['resources']} ${liteyukiData['resources']}`, + `${localData['bots']} ${liteyukiData['bots']}`, + `${localData['runtime']} ${secondsToTextTime(liteyukiData['runtime'])}`, + ] + tagArray.forEach( + (tag, index) => { + let tagSpan = document.createElement('span') + tagSpan.className = 'bot-tag' + tagSpan.innerText = tag + // 给最后一个标签不添加后缀 + tagSpan.setAttribute('suffix', index === tagArray.length - 1 ? '0' : '1') + liteyukiInfoDiv.querySelector('.bot-tags').appendChild(tagSpan) + } + ) + document.body.insertBefore(liteyukiInfoDiv, document.getElementById('hardware-info')) // 插入对象 + + // 添加硬件信息 + const cpuData = hardwareData['cpu'] + const memData = hardwareData['memory'] + const swapData = hardwareData['swap'] + + const cpuTagArray = [ + cpuData['name'], + `${cpuData['cores']}${localData['cores']} ${cpuData['threads']}${localData['threads']}`, + `${(cpuData['freq'] / 1000).toFixed(2)}GHz` + ] + + const memTagArray = [ + `${localData['process']} ${convertSize(memData['usedProcess'])}`, + `${localData['used']} ${convertSize(memData['used'])}`, + `${localData['free']} ${convertSize(memData['free'])}`, + `${localData['total']} ${convertSize(memData['total'])}` + ] + + const swapTagArray = [ + `${localData['used']} ${convertSize(swapData['used'])}`, + `${localData['free']} ${convertSize(swapData['free'])}`, + `${localData['total']} ${convertSize(swapData['total'])}` + ] + let cpuDeviceInfoDiv = document.importNode(document.getElementById('device-info').content, true) + let memDeviceInfoDiv = document.importNode(document.getElementById('device-info').content, true) + let swapDeviceInfoDiv = document.importNode(document.getElementById('device-info').content, true) + + cpuDeviceInfoDiv.querySelector('.device-info').setAttribute('id', 'cpu-info') + memDeviceInfoDiv.querySelector('.device-info').setAttribute('id', 'mem-info') + swapDeviceInfoDiv.querySelector('.device-info').setAttribute('id', 'swap-info') + cpuDeviceInfoDiv.querySelector('.device-chart').setAttribute('id', 'cpu-chart') + memDeviceInfoDiv.querySelector('.device-chart').setAttribute('id', 'mem-chart') + swapDeviceInfoDiv.querySelector('.device-chart').setAttribute('id', 'swap-chart') + + let devices = { + 'cpu': cpuDeviceInfoDiv, + 'mem': memDeviceInfoDiv, + 'swap': swapDeviceInfoDiv + } + // 遍历添加标签 + for (let device in devices) { + let tagArray = [] + switch (device) { + case 'cpu': + tagArray = cpuTagArray + break + case 'mem': + tagArray = memTagArray + break + case 'swap': + tagArray = swapTagArray + break + } + tagArray.forEach( + (tag, index) => { + let tagDiv = document.createElement('div') + tagDiv.className = 'device-tag' + tagDiv.innerText = tag + // 给最后一个标签不添加后缀 + tagDiv.setAttribute('suffix', index === tagArray.length - 1 ? '0' : '1') + devices[device].querySelector('.device-tags').appendChild(tagDiv) + } + ) + } + + + // 插入 + document.getElementById('hardware-info').appendChild(cpuDeviceInfoDiv) + document.getElementById('hardware-info').appendChild(memDeviceInfoDiv) + document.getElementById('hardware-info').appendChild(swapDeviceInfoDiv) + + let cpuChart = echarts.init(document.getElementById('cpu-chart')) + let memChart = echarts.init(document.getElementById('mem-chart')) + let swapChart = echarts.init(document.getElementById('swap-chart')) + + + cpuChart.setOption(createPieChartOption(`${localData['cpu']}\n${cpuData['percent'].toFixed(1)}%`, [ + {name: 'used', value: cpuData['percent']}, + {name: 'free', value: 100 - cpuData['percent']} + ])) + + memChart.setOption(createPieChartOption(`${localData['memory']}\n${memData['percent'].toFixed(1)}%`, [ + {name: 'process', value: memData['usedProcess']}, + {name: 'used', value: memData['used'] - memData['usedProcess']}, + {name: 'free', value: memData['free']} + ])) + + + swapChart.setOption(createPieChartOption(`${localData['swap']}\n${swapData['percent'].toFixed(1)}%`, [ + {name: 'used', value: swapData['used']}, + {name: 'free', value: swapData['free']} + ])) + + + // 磁盘信息 + const diskData = hardwareData['disk'] + diskData.forEach( + (disk) => { + let diskTitle = `${disk['name']} ${localData['free']} ${convertSize(disk['free'])} ${localData['total']} ${convertSize(disk['total'])}` + // 最后一个把margin-bottom去掉 + let diskDiv = createBarChart(diskTitle, disk['percent']) + if (disk === diskData[diskData.length - 1]) { + diskDiv.style.marginBottom = '0' + } + document.getElementById('disk-info').appendChild(createBarChart(diskTitle, disk['percent'])) + }) + // 随机一言 + let motto = mottos[Math.floor(Math.random() * mottos.length)] + let mottoText = motto['text'] + let mottoFrom = `${motto['author']} ${motto['source']}` + document.getElementById('motto-text').innerText = mottoText + document.getElementById('motto-from').innerText = mottoFrom + + +} + main() \ No newline at end of file diff --git a/liteyuki/resources/vanilla_resource/templates/js/style.js b/src/resources/vanilla_resource/templates/js/style.js similarity index 97% rename from liteyuki/resources/vanilla_resource/templates/js/style.js rename to src/resources/vanilla_resource/templates/js/style.js index 8dde8d9..c219d3f 100644 --- a/liteyuki/resources/vanilla_resource/templates/js/style.js +++ b/src/resources/vanilla_resource/templates/js/style.js @@ -1,257 +1,257 @@ -{ - // 环形图 - - let cpuInfo = echarts.init(document.getElementById('cpu-chart')); - let memInfo = echarts.init(document.getElementById('mem-chart')); - let swapInfo = echarts.init(document.getElementById('swap-chart')); - - let data = JSON.parse(document.getElementById('data').innerText); - - let cpuData = data.cpu; - let memData = data.mem; - let swapData = data.swap; - let diskData = data.disk; - let sub_tag_data = { - cpu: data.cpuTags, - mem: data.memTags, - swap: data.swapTags - } - for (let key in sub_tag_data) { - let infoDiv = document.getElementById(key + '-info'); - sub_tag_data[key].forEach(tag => { - let tagSpan = document.createElement('div'); - tagSpan.innerText = tag; - tagSpan.className = 'chart-label'; - infoDiv.appendChild(tagSpan); - }); - } - cpuInfo.setOption(getPieOption(data.localization.cpu, cpuData)); - memInfo.setOption(getPieOption(data.localization.mem, memData)); - swapInfo.setOption(getPieOption(data.localization.swap, swapData)); - - - // 在disks-info中插入每个disk的div,用横向柱状图表示用量,每一行div显示一个disk,不加info-box - diskData.forEach(disk => { - let diskDiv = document.createElement('div'); - document.getElementById('disks-info').appendChild(diskDiv); - let diskChart = document.createElement('div'); - diskChart.style.width = '100%'; - diskChart.style.height = '100px'; - diskDiv.appendChild(diskChart); - let diskInfo = echarts.init(diskChart); - // let diskTitle = disk.name + ' {{ FREE }} ' + disk.free + ' {{ TOTAL }} ' + disk.total; - let diskTitle = `${disk.name} ${data.localization.free} ${disk.free} ${data.localization.total} ${disk.total}`; - diskInfo.setOption(getBarOption(diskTitle, disk.percent)); - }); - - let botData = data.bot; - // 清空bot-info - let botInfos = document.getElementsByClassName('bot-info'); - while (botInfos.length > 0) { - botInfos[0].remove(); - } - botData.forEach(bot => { - // 在hardware-info前面插入一个div - let botDiv = document.createElement('div'); - botDiv.className = 'info-box bot-info'; - // 在body内的hardware-info前面插入botDiv - document.body.insertBefore(botDiv, document.getElementById('hardware-info')); - - let botIconBlock = document.createElement('div'); - let botIcon = document.createElement('img'); - botIcon.src = bot.icon; - botIcon.className = 'bot-icon'; - botIconBlock.appendChild(botIcon); - botDiv.appendChild(botIconBlock); - - let botDetail = document.createElement('div'); - let botName = document.createElement('div'); - botName.className = 'bot-name'; - botName.innerText = bot.name; - if (bot.self) { - // 添加颜色 - botName.style.color = '#d0e9ff'; - } - botDetail.appendChild(botName); - - let botTags = document.createElement('div'); - botTags.className = 'bot-tag'; - botDetail.appendChild(botTags) - - bot.tags.forEach((tag, index) => { - if (!tag) { - return; - } - let tagSpan = document.createElement('span'); - - tagSpan.innerText = tag; - tagSpan.className = 'tag'; - if (bot.self) { - // 添加颜色 - tagSpan.style.color = '#a2d8f4'; - } - botTags.appendChild(tagSpan); - if (index === bot.tags.length - 1) { - tagSpan.setAttribute("suffix", "0") - } else { - tagSpan.setAttribute("suffix", "1") - } - }); - - botDiv.appendChild(botDetail); - } - ) - - // 从/js/motto.js中读取mottos{},随机选择一句 - let motto = mottos[Math.floor(Math.random() * mottos.length)]; - // 正文在中间,作者和来源格式为--作者 来源,在右下方 - let mottoDiv = document.getElementById('motto-info'); - let mottoText = document.createElement('div'); - mottoText.className = 'motto-text'; - mottoText.innerText = motto.text; - mottoDiv.appendChild(mottoText); - let mottoAuthor = document.createElement('div'); - mottoAuthor.className = 'motto-author'; - // motto.author和motto.source可能不存在为空,所以要判断 - if (!motto.author) { - motto.author = ''; - } - if (!motto.source) { - motto.source = ''; - } - mottoAuthor.innerText = `\n--${motto.author} ${motto.source}`; - mottoAuthor.style.textAlign = 'right'; - mottoDiv.appendChild(mottoAuthor); - - function getPieUsage(data) { - let total = 0 - let used = 0 - data.forEach(item => { - total += item.value - if (item.name === 'FREE') { - used += item.value - } - }) - return (1 - used / total) * 100 - } - - - function getPieOption(title, data) { - return { - animation: false, - title: { - text: title + '\n' + getPieUsage(data).toFixed(1) + '%', - left: 'center', - top: 'center', - textStyle: { - //文字颜色 - - lineHeight: 36, - color: '#fff', - fontSize: 30 - } - }, - tooltip: { - show: true, - trigger: "item", - backgroundColor: "#ffffff00", - // {a}(系列名称),{b}(数据项名称),{c}(数值), {d}(百分比) - }, - color: ['#a2d8f4', "#ffffff44", '#00a6ff'], - series: [ - { - name: 'info', - type: 'pie', - radius: ['80%', '100%'], - center: ['50%', '50%'], - itemStyle: { - normal: { - label: { - show: false - }, - labelLine: { - show: false - } - }, - emphasis: { - label: { - show: true, - textStyle: { - fontSize: '50', - fontWeight: 'bold' - } - } - } - }, - data: data - } - ] - }; - } - - function getBarOption(title, percent) { - let fillet = 0 - if (percent < 5) { - fillet = 50 - } - // data为百分比,最大值为100 - return { - background: '#d0e9ff', - title: { - text: title, - left: '5%', - top: 'center', - textStyle: { - color: '#fff', - fontSize: 30 - } - }, - tooltip: { - show: true, - trigger: "item", - backgroundColor: "#ffffff", - }, - grid: { - left: '0', - right: '0', - top: '10%', - bottom: '10%' - }, - xAxis: { - type: 'value', - show: false - }, - yAxis: { - type: 'category', - data: [''], - show: false - }, - series: [ - { - name: 'Used', - type: 'bar', - stack: 'total', - data: [percent], - itemStyle: { - normal: { - color: '#a2d8f4', - barBorderRadius: [50, 0, 0, 50] - } - }, - }, - { - name: 'Free', - type: 'bar', - stack: 'total', - data: [100 - percent], - itemStyle: { - normal: { - color: '#d0e9ff', - barBorderRadius: [fillet, 50, 50, fillet] - } - }, - } - ] - }; - } +{ + // 环形图 + + let cpuInfo = echarts.init(document.getElementById('cpu-chart')); + let memInfo = echarts.init(document.getElementById('mem-chart')); + let swapInfo = echarts.init(document.getElementById('swap-chart')); + + let data = JSON.parse(document.getElementById('data').innerText); + + let cpuData = data.cpu; + let memData = data.mem; + let swapData = data.swap; + let diskData = data.disk; + let sub_tag_data = { + cpu: data.cpuTags, + mem: data.memTags, + swap: data.swapTags + } + for (let key in sub_tag_data) { + let infoDiv = document.getElementById(key + '-info'); + sub_tag_data[key].forEach(tag => { + let tagSpan = document.createElement('div'); + tagSpan.innerText = tag; + tagSpan.className = 'chart-label'; + infoDiv.appendChild(tagSpan); + }); + } + cpuInfo.setOption(getPieOption(data.localization.cpu, cpuData)); + memInfo.setOption(getPieOption(data.localization.mem, memData)); + swapInfo.setOption(getPieOption(data.localization.swap, swapData)); + + + // 在disks-info中插入每个disk的div,用横向柱状图表示用量,每一行div显示一个disk,不加info-box + diskData.forEach(disk => { + let diskDiv = document.createElement('div'); + document.getElementById('disks-info').appendChild(diskDiv); + let diskChart = document.createElement('div'); + diskChart.style.width = '100%'; + diskChart.style.height = '100px'; + diskDiv.appendChild(diskChart); + let diskInfo = echarts.init(diskChart); + // let diskTitle = disk.name + ' {{ FREE }} ' + disk.free + ' {{ TOTAL }} ' + disk.total; + let diskTitle = `${disk.name} ${data.localization.free} ${disk.free} ${data.localization.total} ${disk.total}`; + diskInfo.setOption(getBarOption(diskTitle, disk.percent)); + }); + + let botData = data.bot; + // 清空bot-info + let botInfos = document.getElementsByClassName('bot-info'); + while (botInfos.length > 0) { + botInfos[0].remove(); + } + botData.forEach(bot => { + // 在hardware-info前面插入一个div + let botDiv = document.createElement('div'); + botDiv.className = 'info-box bot-info'; + // 在body内的hardware-info前面插入botDiv + document.body.insertBefore(botDiv, document.getElementById('hardware-info')); + + let botIconBlock = document.createElement('div'); + let botIcon = document.createElement('img'); + botIcon.src = bot.icon; + botIcon.className = 'bot-icon'; + botIconBlock.appendChild(botIcon); + botDiv.appendChild(botIconBlock); + + let botDetail = document.createElement('div'); + let botName = document.createElement('div'); + botName.className = 'bot-name'; + botName.innerText = bot.name; + if (bot.self) { + // 添加颜色 + botName.style.color = '#d0e9ff'; + } + botDetail.appendChild(botName); + + let botTags = document.createElement('div'); + botTags.className = 'bot-tag'; + botDetail.appendChild(botTags) + + bot.tags.forEach((tag, index) => { + if (!tag) { + return; + } + let tagSpan = document.createElement('span'); + + tagSpan.innerText = tag; + tagSpan.className = 'tag'; + if (bot.self) { + // 添加颜色 + tagSpan.style.color = '#a2d8f4'; + } + botTags.appendChild(tagSpan); + if (index === bot.tags.length - 1) { + tagSpan.setAttribute("suffix", "0") + } else { + tagSpan.setAttribute("suffix", "1") + } + }); + + botDiv.appendChild(botDetail); + } + ) + + // 从/js/motto.js中读取mottos{},随机选择一句 + let motto = mottos[Math.floor(Math.random() * mottos.length)]; + // 正文在中间,作者和来源格式为--作者 来源,在右下方 + let mottoDiv = document.getElementById('motto-info'); + let mottoText = document.createElement('div'); + mottoText.className = 'motto-text'; + mottoText.innerText = motto.text; + mottoDiv.appendChild(mottoText); + let mottoAuthor = document.createElement('div'); + mottoAuthor.className = 'motto-author'; + // motto.author和motto.source可能不存在为空,所以要判断 + if (!motto.author) { + motto.author = ''; + } + if (!motto.source) { + motto.source = ''; + } + mottoAuthor.innerText = `\n--${motto.author} ${motto.source}`; + mottoAuthor.style.textAlign = 'right'; + mottoDiv.appendChild(mottoAuthor); + + function getPieUsage(data) { + let total = 0 + let used = 0 + data.forEach(item => { + total += item.value + if (item.name === 'FREE') { + used += item.value + } + }) + return (1 - used / total) * 100 + } + + + function getPieOption(title, data) { + return { + animation: false, + title: { + text: title + '\n' + getPieUsage(data).toFixed(1) + '%', + left: 'center', + top: 'center', + textStyle: { + //文字颜色 + + lineHeight: 36, + color: '#fff', + fontSize: 30 + } + }, + tooltip: { + show: true, + trigger: "item", + backgroundColor: "#ffffff00", + // {a}(系列名称),{b}(数据项名称),{c}(数值), {d}(百分比) + }, + color: ['#a2d8f4', "#ffffff44", '#00a6ff'], + series: [ + { + name: 'info', + type: 'pie', + radius: ['80%', '100%'], + center: ['50%', '50%'], + itemStyle: { + normal: { + label: { + show: false + }, + labelLine: { + show: false + } + }, + emphasis: { + label: { + show: true, + textStyle: { + fontSize: '50', + fontWeight: 'bold' + } + } + } + }, + data: data + } + ] + }; + } + + function getBarOption(title, percent) { + let fillet = 0 + if (percent < 5) { + fillet = 50 + } + // data为百分比,最大值为100 + return { + background: '#d0e9ff', + title: { + text: title, + left: '5%', + top: 'center', + textStyle: { + color: '#fff', + fontSize: 30 + } + }, + tooltip: { + show: true, + trigger: "item", + backgroundColor: "#ffffff", + }, + grid: { + left: '0', + right: '0', + top: '10%', + bottom: '10%' + }, + xAxis: { + type: 'value', + show: false + }, + yAxis: { + type: 'category', + data: [''], + show: false + }, + series: [ + { + name: 'Used', + type: 'bar', + stack: 'total', + data: [percent], + itemStyle: { + normal: { + color: '#a2d8f4', + barBorderRadius: [50, 0, 0, 50] + } + }, + }, + { + name: 'Free', + type: 'bar', + stack: 'total', + data: [100 - percent], + itemStyle: { + normal: { + color: '#d0e9ff', + barBorderRadius: [fillet, 50, 50, fillet] + } + }, + } + ] + }; + } } \ No newline at end of file diff --git a/src/resources/vanilla_resource/templates/static/motto.txt b/src/resources/vanilla_resource/templates/static/motto.txt new file mode 100644 index 0000000..e69de29 diff --git a/liteyuki/resources/vanilla_resource/templates/stats.html b/src/resources/vanilla_resource/templates/stats.html similarity index 96% rename from liteyuki/resources/vanilla_resource/templates/stats.html rename to src/resources/vanilla_resource/templates/stats.html index 4fcc26d..00dc0e9 100644 --- a/liteyuki/resources/vanilla_resource/templates/stats.html +++ b/src/resources/vanilla_resource/templates/stats.html @@ -1,40 +1,40 @@ - - - - - - - Liteyuki Stats - - - - - - - - -
-
-
-
-
-
-
-
-
-
-
- -
-
- -
-
- - - - - - - - + + + + + + + Liteyuki Stats + + + + + + + + +
+
+
+
+
+
+
+
+
+
+
+ +
+
+ +
+
+ + + + + + + + diff --git a/liteyuki/resources/vanilla_resource/templates/status.html b/src/resources/vanilla_resource/templates/status.html similarity index 96% rename from liteyuki/resources/vanilla_resource/templates/status.html rename to src/resources/vanilla_resource/templates/status.html index bc1903c..c7a05a8 100644 --- a/liteyuki/resources/vanilla_resource/templates/status.html +++ b/src/resources/vanilla_resource/templates/status.html @@ -1,50 +1,50 @@ - - - - - Liteyuki Status - - - - - - - - - - -
{{ data | tojson }}
-
-
-
-
-
-
- - - - - + + + + + Liteyuki Status + + + + + + + + + + +
{{ data | tojson }}
+
+
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/liteyuki/resources/vanilla_resource/templates/status_mem.html b/src/resources/vanilla_resource/templates/status_mem.html similarity index 95% rename from liteyuki/resources/vanilla_resource/templates/status_mem.html rename to src/resources/vanilla_resource/templates/status_mem.html index 0246f8e..91ad31b 100644 --- a/liteyuki/resources/vanilla_resource/templates/status_mem.html +++ b/src/resources/vanilla_resource/templates/status_mem.html @@ -1,127 +1,127 @@ - - - - - - - Liteyuki Stats - - - - - - - - - - -
-
-
-
-
-
-
-
-
-
-
- -
-
- -
-
- - - - - - - + + + + + + + Liteyuki Stats + + + + + + + + + + +
+
+
+
+
+
+
+
+
+
+
+ +
+
+ +
+
+ + + + + + + diff --git a/liteyuki/resources/vanilla_resource/templates/svg/lylogo-full.svg b/src/resources/vanilla_resource/templates/svg/lylogo-full.svg similarity index 100% rename from liteyuki/resources/vanilla_resource/templates/svg/lylogo-full.svg rename to src/resources/vanilla_resource/templates/svg/lylogo-full.svg diff --git a/liteyuki/resources/vanilla_resource/unsorted/plugins.json b/src/resources/vanilla_resource/unsorted/plugins.json similarity index 97% rename from liteyuki/resources/vanilla_resource/unsorted/plugins.json rename to src/resources/vanilla_resource/unsorted/plugins.json index 678ecf9..89528d6 100644 --- a/liteyuki/resources/vanilla_resource/unsorted/plugins.json +++ b/src/resources/vanilla_resource/unsorted/plugins.json @@ -1,11133 +1,11133 @@ -[ - { - "module_name": "nonebot_plugin_status", - "project_link": "nonebot-plugin-status", - "name": "服务器状态查看", - "desc": "通过戳一戳获取服务器状态", - "author": "yanyongyu", - "homepage": "https://github.com/nonebot/plugin-status", - "tags": [ - { - "label": "server", - "color": "#aeeaa8" - } - ], - "is_official": true, - "type": "application", - "supported_adapters": null, - "valid": true, - "version": "0.8.1", - "time": "2024-03-04T06:57:10.250823Z", - "skip_test": false - }, - { - "module_name": "haruka_bot", - "project_link": "haruka-bot", - "name": "haruka_bot", - "desc": "将B站UP主的动态和直播信息推送至QQ", - "author": "SK-415", - "homepage": "https://github.com/SK-415/HarukaBot", - "tags": [ - { - "label": "bilibili", - "color": "#e55d80" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11", - "nonebot.adapters.qqguild" - ], - "valid": true, - "version": "1.6.0.post5", - "time": "2023-07-11T09:24:58.972905Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_rauthman", - "project_link": "nonebot-plugin-rauthman", - "name": "RAM - 基于规则的授权管理", - "desc": "为 Matcher 配置一条或多条 Rule 来实现功能的授权管理", - "author": "Lancercmd", - "homepage": "https://github.com/Lancercmd/nonebot_plugin_rauthman", - "tags": [ - { - "label": "rule", - "color": "#4ec9b0" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "2.0.0rc1.post3", - "time": "2023-07-18T01:25:54.487870Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_docs", - "project_link": "nonebot-plugin-docs", - "name": "NoneBot 离线文档", - "desc": "在本地查看 NoneBot 文档", - "author": "nonebot", - "homepage": "https://github.com/nonebot/nonebot2/blob/master/packages/nonebot-plugin-docs", - "tags": [], - "is_official": true, - "type": "application", - "supported_adapters": null, - "valid": true, - "version": "2.2.1", - "time": "2024-02-24T04:41:45.707475Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_sentry", - "project_link": "nonebot-plugin-sentry", - "name": "Sentry日志监控", - "desc": "使用Sentry监控机器人日志并处理报错", - "author": "yanyongyu", - "homepage": "https://github.com/nonebot/plugin-sentry", - "tags": [ - { - "label": "log", - "color": "#6be3ea" - } - ], - "is_official": true, - "type": "application", - "supported_adapters": null, - "valid": true, - "version": "1.1.0", - "time": "2024-02-14T03:21:49.744244Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_apscheduler", - "project_link": "nonebot-plugin-apscheduler", - "name": "定时任务", - "desc": "APScheduler 定时任务插件", - "author": "yanyongyu", - "homepage": "https://github.com/nonebot/plugin-apscheduler", - "tags": [], - "is_official": true, - "type": "library", - "supported_adapters": null, - "valid": true, - "version": "0.4.0", - "time": "2024-02-12T13:56:49.110411Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_picsearcher", - "project_link": "nonebot-plugin-picsearcher", - "author": "synodriver", - "desc": "从基本上所有你想的出名字的搜图平台找图片", - "name": "图片搜索", - "homepage": "https://github.com/synodriver/nonebot_plugin_picsearcher", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-11-05T07:21:34.473939Z", - "version": "0.1.10", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_navicat", - "project_link": "nonebot-plugin-navicat", - "author": "synodriver", - "desc": "连接至各种数据库,为其他插件导出连接对象", - "name": "通用数据库连接", - "homepage": "https://github.com/synodriver/nonebot_plugin_navicat", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-06-25T08:55:44.847476Z", - "version": "0.3.0", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_translator", - "project_link": "nonebot-plugin-translator", - "name": "多语种翻译插件", - "desc": "接口来自 腾讯机器翻译 TMT", - "author": "Lancercmd", - "homepage": "https://github.com/Lancercmd/nonebot_plugin_translator", - "tags": [ - { - "label": "func", - "color": "#dcdcaa" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "2.0.0b4.post2", - "time": "2023-07-18T01:28:04.958803Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_mqtt", - "project_link": "nonebot-plugin-mqtt", - "name": "MQTT", - "desc": "Nonebot2 MQTT 插件", - "author": "synodriver", - "homepage": "https://github.com/synodriver/nonebot_plugin_mqtt", - "tags": [], - "is_official": false, - "type": "library", - "supported_adapters": null, - "valid": true, - "version": "0.1.2", - "time": "2023-09-06T16:06:14.974473Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_songpicker2", - "project_link": "nonebot-plugin-songpicker2", - "name": "songpicker2", - "desc": "点播歌曲,支持候选菜单、热评显示,数据源为网易云", - "author": "maxesisn", - "homepage": "https://github.com/maxesisn/nonebot_plugin_songpicker2", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.2.6", - "time": "2023-06-27T09:24:09.247555Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_strman", - "project_link": "nonebot-plugin-strman", - "author": "echobot-dev", - "desc": "通过字符串标签在文件中集中管理字符串", - "name": "字符串管理工具", - "homepage": "https://github.com/echobot-dev/nonebot-plugin-strman", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-10-10T17:04:34.269452Z", - "version": "1.2.0", - "skip_test": false - }, - { - "module_name": "nonebot_bison", - "project_link": "nonebot-bison", - "name": "Bison", - "desc": "通用订阅推送插件", - "author": "felinae98", - "homepage": "https://github.com/felinae98/nonebot-bison", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.feishu", - "nonebot.adapters.kaiheila", - "nonebot.adapters.onebot.v11", - "nonebot.adapters.onebot.v12", - "nonebot.adapters.qq", - "nonebot.adapters.red", - "nonebot.adapters.telegram" - ], - "valid": true, - "version": "0.9.1", - "time": "2024-03-06T04:41:42.379114Z", - "skip_test": false - }, - { - "module_name": "nonebot-plugin-ncm", - "project_link": "nonebot-plugin-ncm", - "author": "kitUIN", - "desc": "网易云 无损音乐 点歌/下载", - "name": "网易云无损音乐下载", - "homepage": "https://github.com/kitUIN/nonebot-plugin-ncm", - "tags": [ - { - "label": "a:onebot", - "color": "#000000" - }, - { - "label": "a:cqhttp", - "color": "#000000" - }, - { - "label": "t:Netease", - "color": "#ec4141" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-12-03T07:50:12.633674Z", - "version": "1.6.9", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_cocdicer", - "project_link": "nonebot-plugin-cocdicer", - "author": "abrahum", - "desc": "COC跑团骰子娘", - "name": "nonebot-plugin-cocdicer", - "homepage": "https://github.com/abrahum/nonebot_plugin_cocdicer", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-07-28T08:59:43.166497Z", - "version": "0.4.0", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_guess", - "project_link": "nonebot-plugin-guess", - "author": "ffreemt", - "desc": "多次互动猜名字游戏,自带猜城市名,可定制", - "name": "猜猜看", - "homepage": "https://github.com/ffreemt/nonebot-plugin-guess-game", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-10-16T02:53:33.507492Z", - "version": "0.1.9", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_abbrreply", - "project_link": "nonebot-plugin-abbrreply", - "author": "anlen123", - "desc": "输入拼音首字母,猜测文字", - "name": "缩写查询器", - "homepage": "https://github.com/anlen123/nonebot_plugin_abbrreply", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-10-21T03:18:13.320169Z", - "version": "1.1.3", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_biliav", - "project_link": "nonebot-plugin-biliav", - "author": "knva", - "desc": "将用户发的av号或者bv号转成小程序返回", - "name": "biliav小程序转换器", - "homepage": "https://github.com/knva/nonebot_plugin_biliav", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-01-19T03:28:14.663442Z", - "version": "1.0.11", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_analysis_bilibili", - "project_link": "nonebot-plugin-analysis-bilibili", - "name": "bilibili视频、番剧解析", - "desc": "自动解析bilibili视频、番剧解析", - "author": "mengshouer", - "homepage": "https://github.com/mengshouer/nonebot_plugin_analysis_bilibili", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2024-01-16T10:41:17.818638Z", - "version": "2.6.8", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_localstore", - "project_link": "nonebot-plugin-localstore", - "name": "本地数据存储", - "desc": "存储插件数据至本地文件", - "author": "yanyongyu", - "homepage": "https://github.com/nonebot/plugin-localstore", - "tags": [], - "is_official": true, - "type": "library", - "supported_adapters": null, - "valid": true, - "version": "0.6.0", - "time": "2024-02-11T10:14:07.410250Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_alconna", - "project_link": "nonebot-plugin-alconna", - "name": "Alconna 插件", - "desc": "提供 ArcletProject/Alconna 的 Nonebot2 适配版本与工具", - "author": "RF-Tar-Railt", - "homepage": "https://github.com/nonebot/plugin-alconna", - "tags": [ - { - "label": "多适配器", - "color": "#5280ea" - }, - { - "label": "消息匹配", - "color": "#ea6f52" - }, - { - "label": "跨平台", - "color": "#5452ea" - } - ], - "is_official": true, - "type": "library", - "supported_adapters": [ - "nonebot.adapters.bilibili", - "nonebot.adapters.console", - "nonebot.adapters.ding", - "nonebot.adapters.discord", - "nonebot.adapters.dodo", - "nonebot.adapters.feishu", - "nonebot.adapters.github", - "nonebot.adapters.kaiheila", - "nonebot.adapters.minecraft", - "nonebot.adapters.mirai2", - "nonebot.adapters.ntchat", - "nonebot.adapters.onebot.v11", - "nonebot.adapters.onebot.v12", - "nonebot.adapters.qq", - "nonebot.adapters.red", - "nonebot.adapters.satori", - "nonebot.adapters.telegram" - ], - "valid": true, - "version": "0.41.1", - "time": "2024-03-20T06:05:58.427456Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_mcstatus", - "project_link": "nonebot-plugin-mcstatus", - "name": "Minecraft 服务器状态查询", - "desc": "顾名思义", - "author": "j1g5awi", - "homepage": "https://github.com/nonepkg/nonebot-plugin-mcstatus", - "tags": [ - { - "label": "t:Minecraft", - "color": "#80070B" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-06-03T07:30:25.393339Z", - "version": "0.1.8", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_help", - "project_link": "nonebot-plugin-help", - "name": "Nonebot2 Help Menu", - "desc": "Nonebot2轻量级帮助插件", - "author": "XZhouQD", - "homepage": "https://github.com/xzhouqd/nonebot-plugin-help", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": null, - "valid": true, - "version": "0.6.1", - "time": "2023-08-11T12:21:58.006152Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_alias", - "project_link": "nonebot-plugin-alias", - "name": "alias命令别名", - "desc": "为复杂的命令创建别名", - "author": "MeetWq", - "homepage": "https://github.com/MeetWq/nonebot-plugin-alias", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-06-20T17:45:31.642072Z", - "version": "0.3.2", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_withdraw", - "project_link": "nonebot-plugin-withdraw", - "name": "Nonebot2 消息撤回插件", - "desc": "用于让机器人撤回自己发出的消息", - "author": "MeetWq", - "homepage": "https://github.com/MeetWq/nonebot-plugin-withdraw", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-06-20T18:15:41.588691Z", - "version": "0.2.3", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_pixivrank_search", - "project_link": "nonebot-plugin-pixivrank-search", - "name": "nonebot_plugin_pixivrank_search", - "desc": "基于RSSHUB阅读器的P站排行和P站搜图", - "author": "HibiKier", - "homepage": "https://github.com/HibiKier/nonebot_plugin_pixivrank_search", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-02-18T09:53:18.929348Z", - "version": "0.6", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_russian", - "project_link": "nonebot-plugin-russian", - "name": "nonebot_plugin_russian", - "desc": "群内小游戏,使用金币赌注的俄罗斯轮盘", - "author": "HibiKier", - "homepage": "https://github.com/HibiKier/nonebot_plugin_russian", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-01-21T17:02:28.204634Z", - "version": "0.2.5", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_setu", - "project_link": "nonebot-plugin-setu", - "name": "nonebot_plugin_setu", - "desc": "基于loliconImage Api的涩图插件,内置涩图CD", - "author": "ayanamiblhx", - "homepage": "https://github.com/ayanamiblhx/nonebot_plugin_setu", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-03-23T13:27:43.283834Z", - "version": "1.1.11", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_heweather", - "project_link": "nonebot-plugin-heweather", - "name": "和风天气", - "desc": "和风天气图片显示插件", - "author": "kexue-z", - "homepage": "https://github.com/kexue-z/nonebot-plugin-heweather", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.bilibili", - "nonebot.adapters.console", - "nonebot.adapters.ding", - "nonebot.adapters.discord", - "nonebot.adapters.dodo", - "nonebot.adapters.feishu", - "nonebot.adapters.github", - "nonebot.adapters.kaiheila", - "nonebot.adapters.minecraft", - "nonebot.adapters.mirai2", - "nonebot.adapters.ntchat", - "nonebot.adapters.onebot.v11", - "nonebot.adapters.onebot.v12", - "nonebot.adapters.qq", - "nonebot.adapters.red", - "nonebot.adapters.satori", - "nonebot.adapters.telegram" - ], - "valid": true, - "version": "0.8.2", - "time": "2024-03-14T08:49:11.758260Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_autohelp", - "project_link": "nonebot-plugin-autohelp", - "name": "nonebot-plugin-autohelp", - "desc": "响应help/菜单/帮助(群消息或私信)并提供已载入插件的帮助信息(如命令名,aliases,模块文档)", - "author": "ffreemt", - "homepage": "https://github.com/ffreemt/nonebot-plugin-autohelp", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-10-15T16:43:57.811690Z", - "version": "0.1.7", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_flexperm", - "project_link": "nonebot-plugin-flexperm", - "name": "nonebot-plugin-flexperm", - "desc": "精细化的 NoneBot 权限管理插件", - "author": "rmuchan", - "homepage": "https://github.com/rmuchan/nonebot-plugin-flexperm", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-06-13T10:41:21.102121Z", - "version": "0.7.0", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_epicfree", - "project_link": "nonebot-plugin-epicfree", - "name": "Epic 限免游戏资讯", - "desc": "EpicGameStore 喜加一资讯插件,发送「喜加一」逝世看吧!", - "author": "monsterxcn", - "homepage": "https://github.com/monsterxcn/nonebot_plugin_epicfree", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-10-30T07:57:15.417775Z", - "version": "0.2.6", - "skip_test": false - }, - { - "module_name": "ELF_RSS2", - "project_link": "ELF-RSS", - "name": "ELF_RSS", - "desc": "QQ机器人 RSS订阅 插件,订阅源建议选择 RSSHub", - "author": "Quan666", - "homepage": "https://github.com/Quan666/ELF_RSS", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "2.6.21", - "time": "2023-08-28T09:03:15.911695Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_simplemusic", - "project_link": "nonebot-plugin-simplemusic", - "name": "SimpleMusic", - "desc": "最简Q群点歌插件,支持QQ音乐、网易云、酷我、酷狗、咪咕、B站音频区", - "author": "MeetWq", - "homepage": "https://github.com/MeetWq/nonebot-plugin-simplemusic", - "tags": [ - { - "label": "a:onebot", - "color": "#000000" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-05-10T00:23:57.197112Z", - "version": "0.1.7", - "skip_test": false - }, - { - "module_name": "nb2chan", - "project_link": "nb2chan", - "name": "nb2chan", - "desc": "Nonebot2酱推送", - "author": "yucongo", - "homepage": "https://github.com/ffreemt/nb2chan", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-02-20T08:21:36.557860Z", - "version": "0.1.1", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_setu_now", - "project_link": "nonebot-plugin-setu-now", - "name": "nonebot-plugin-setu-now", - "desc": "另一个色图插件", - "author": "kexue-z", - "homepage": "https://github.com/kexue-z/nonebot-plugin-setu-now", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": null, - "valid": true, - "version": "0.6.4", - "time": "2023-08-15T03:53:06.050378Z", - "skip_test": false - }, - { - "module_name": "leetcode", - "project_link": "nonebot-plugin-leetcode", - "name": "leetcode提醒机器人", - "desc": " 安装该插件后能往指定qq和指定qq群定时发送leetcode每日一题", - "author": "zxz0415", - "homepage": "https://github.com/zxz0415/leetcode", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-04-01T17:49:40.640240Z", - "version": "0.2", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_youthstudy", - "project_link": "nonebot-plugin-youthstudy", - "name": "nonebot_plugin_youthstudy", - "desc": "基于nonebot的青年大学习插件,用来获取最新一期的青年大学习答案", - "author": "ayanamiblhx", - "homepage": "https://github.com/ayanamiblhx/nonebot_plugin_youthstudy", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-02-28T07:13:51.801710Z", - "version": "1.1.8", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_shindan", - "project_link": "nonebot-plugin-shindan", - "name": "趣味占卜", - "desc": "使用ShindanMaker网站的趣味占卜", - "author": "MeetWq", - "homepage": "https://github.com/noneplugin/nonebot-plugin-shindan", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": [], - "valid": true, - "version": "0.6.1", - "time": "2024-03-14T15:12:03.829758Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_code", - "project_link": "nonebot-plugin-code", - "name": "在线运行代码", - "desc": "在线运行编程代码,语句", - "author": "yzyyz1387", - "homepage": "https://github.com/yzyyz1387/nonebot_plugin_code", - "tags": [ - { - "label": "func", - "color": "#dcdcaa" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": null, - "valid": true, - "version": "0.0.7", - "time": "2023-09-08T10:48:27.349570Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_picsbank", - "project_link": "nonebot-plugin-picsbank", - "name": "picsbank", - "desc": "匹配图片进行回答", - "author": "Diaosi1111", - "homepage": "https://github.com/Diaosi1111/nonebot_plugin_picsbank", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-02-20T06:35:20.914620Z", - "version": "0.2.0", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_tvseries", - "project_link": "nonebot-plugin-tvseries", - "name": "剧集更新列表", - "desc": "获取聚集更新", - "author": "kexue-z", - "homepage": "https://github.com/kexue-z/nonebot-plugin-tvseries", - "tags": [ - { - "label": "a:onebot", - "color": "#000000" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-02-14T13:24:06.272775Z", - "version": "0.0.2.3", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_lolmatch", - "project_link": "nonebot-plugin-lolmatch", - "name": "lol比赛信息", - "desc": "简单的lol比赛信息插件,订阅后会定时推送当日比赛结果", - "author": "Diaosi1111", - "homepage": "https://github.com/Diaosi1111/nonebot_plugin_lolmatch", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2024-03-07T05:54:54.351311Z", - "version": "0.3.3", - "skip_test": false - }, - { - "module_name": "OlivOS.nonebot", - "project_link": "olivos.nb2", - "name": "OlivOS.nb2", - "desc": "在 NoneBot2 中加载 OlivOS 插件", - "author": "j1g5awi", - "homepage": "https://github.com/nonepkg/OlivOS.nb2", - "tags": [ - { - "label": "OlivOS", - "color": "#00a0ea" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11", - "nonebot.adapters.telegram" - ], - "valid": true, - "version": "0.2.2", - "time": "2023-06-20T16:04:40.706727Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_htmlrender", - "project_link": "nonebot-plugin-htmlrender", - "name": "nonebot-plugin-htmlrender", - "desc": "通过浏览器渲染图片", - "author": "kexue-z", - "homepage": "https://github.com/kexue-z/nonebot-plugin-htmlrender", - "tags": [], - "is_official": false, - "type": "library", - "supported_adapters": null, - "valid": true, - "version": "0.3.1", - "time": "2024-03-14T08:47:15.010445Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_admin", - "project_link": "nonebot-plugin-admin", - "name": "不简易群管", - "desc": "Nonebot2 群管插件 插件", - "author": "yzyyz1387", - "homepage": "https://github.com/yzyyz1387/nonebot_plugin_admin", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": null, - "valid": false, - "version": "0.4.5.4", - "time": "2024-02-29T03:41:19.424728Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_memes", - "project_link": "nonebot-plugin-memes", - "name": "表情包制作", - "desc": "制作各种沙雕表情包", - "author": "MeetWq", - "homepage": "https://github.com/noneplugin/nonebot-plugin-memes", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": [], - "valid": true, - "version": "0.6.2", - "time": "2024-03-12T09:27:09.610250Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_repeater", - "project_link": "nonebot-plugin-repeater", - "name": "群聊复读机", - "desc": "谁不喜欢+1呢?", - "author": "ninthseason", - "homepage": "https://github.com/ninthseason/nonebot-plugin-repeater", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-08-01T11:49:25.518834Z", - "version": "3.1.4", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_directlinker", - "project_link": "nonebot-plugin-directlinker", - "name": "群文件直链提取器", - "desc": "提取群文件的下载直链。", - "author": "ninthseason", - "homepage": "https://github.com/ninthseason/nonebot-plugin-directlinker", - "tags": [ - { - "label": "a:cqhttp", - "color": "#ea5252" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-02-12T14:21:08.959060Z", - "version": "2.4.0", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_forwarder", - "project_link": "nonebot-plugin-forwarder", - "name": "转发姬", - "desc": "群聊消息实时转发", - "author": "ninthseason", - "homepage": "https://github.com/ninthseason/nonebot_plugin_forwarder", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-12-23T06:30:08.821807Z", - "version": "2.1.6", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_roll", - "project_link": "nonebot-plugin-roll", - "name": "掷骰子", - "desc": "掷骰!扔出指定个数的多面骰子🎲", - "author": "KafCoppelia", - "homepage": "https://github.com/MinatoAquaCrews/nonebot_plugin_roll", - "tags": [ - { - "label": "roll", - "color": "#ea5252" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": null, - "valid": true, - "version": "0.2.3", - "time": "2023-10-18T02:03:43.776108Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_crazy_thursday", - "project_link": "nonebot-plugin-crazy-thursday", - "name": "疯狂星期四", - "desc": "持续疯狂!KFC疯狂星期四🍗", - "author": "KafCoppelia", - "homepage": "https://github.com/MinatoAquaCrews/nonebot_plugin_crazy_thursday", - "tags": [ - { - "label": "Thursday", - "color": "#ea5252" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": null, - "valid": true, - "version": "0.2.8", - "time": "2023-10-07T01:52:39.951306Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_covid19_news", - "project_link": "nonebot-plugin-covid19-news", - "name": "新冠疫情查询", - "desc": "查询国内城市新冠疫情信息与政策", - "author": "Zeta-qixi", - "homepage": "https://github.com/Zeta-qixi/nonebot-plugin-covid19-news", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-12-17T05:15:45.018998Z", - "version": "0.7", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_remake", - "project_link": "nonebot-plugin-remake", - "name": "人生重开", - "desc": "人生重开模拟器", - "author": "MeetWq", - "homepage": "https://github.com/noneplugin/nonebot-plugin-remake", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.bilibili", - "nonebot.adapters.console", - "nonebot.adapters.ding", - "nonebot.adapters.discord", - "nonebot.adapters.dodo", - "nonebot.adapters.feishu", - "nonebot.adapters.github", - "nonebot.adapters.kaiheila", - "nonebot.adapters.minecraft", - "nonebot.adapters.mirai2", - "nonebot.adapters.ntchat", - "nonebot.adapters.onebot.v11", - "nonebot.adapters.onebot.v12", - "nonebot.adapters.qq", - "nonebot.adapters.red", - "nonebot.adapters.satori", - "nonebot.adapters.telegram" - ], - "valid": true, - "version": "0.4.1", - "time": "2024-03-12T06:00:09.515301Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_weather_lite", - "project_link": "nonebot-plugin-weather-lite", - "name": "天气查询", - "desc": "使用wttr.in的在线天气查询。", - "author": "zjkwdy", - "homepage": "https://github.com/zjkwdy/nonebot_plugin_weather_lite", - "tags": [ - { - "label": "t:天气", - "color": "#6ec3d9" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-01-20T03:34:36.465960Z", - "version": "0.0.1", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_fortune", - "project_link": "nonebot-plugin-fortune", - "name": "今日运势", - "desc": "抽签!占卜你的今日运势🙏", - "author": "KafCoppelia", - "homepage": "https://github.com/MinatoAquaCrews/nonebot_plugin_fortune", - "tags": [ - { - "label": "fortune", - "color": "#ea6f52" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": null, - "valid": true, - "version": "0.4.12", - "time": "2023-07-15T14:42:48.258728Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_tarot", - "project_link": "nonebot-plugin-tarot", - "name": "塔罗牌", - "desc": "塔罗牌!魔法占卜🔮", - "author": "KafCoppelia", - "homepage": "https://github.com/KafCoppelia/nonebot_plugin_tarot", - "tags": [ - { - "label": "a:onebot", - "color": "#eaa452" - }, - { - "label": "t:tarot", - "color": "#461264" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-03-28T12:56:24.105825Z", - "version": "0.4.0.post4", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_emojimix", - "project_link": "nonebot-plugin-emojimix", - "name": "emoji合成", - "desc": "将两个emoji合成为一张图片", - "author": "MeetWq", - "homepage": "https://github.com/noneplugin/nonebot-plugin-emojimix", - "tags": [ - { - "label": "emoji", - "color": "#ea5252" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": null, - "valid": true, - "version": "0.4.0", - "time": "2024-03-01T02:49:06.907659Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_what2eat", - "project_link": "nonebot-plugin-what2eat", - "name": "今天吃什么", - "desc": "选择恐惧症?让Bot决定你今天吃什么🍕", - "author": "KafCoppelia", - "homepage": "https://github.com/KafCoppelia/nonebot_plugin_what2eat", - "tags": [ - { - "label": "a:onebot", - "color": "#cd3d3d" - }, - { - "label": "t:what2eat", - "color": "#f09526" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-04-02T11:55:27.491231Z", - "version": "0.3.6", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_datastore", - "project_link": "nonebot-plugin-datastore", - "name": "数据存储", - "desc": "NoneBot 数据存储插件", - "author": "he0119", - "homepage": "https://github.com/he0119/nonebot-plugin-datastore", - "tags": [], - "is_official": false, - "type": "library", - "supported_adapters": null, - "valid": true, - "version": "1.2.0", - "time": "2024-02-28T09:01:07.651465Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_boardgame", - "project_link": "nonebot-plugin-boardgame", - "name": "棋类游戏", - "desc": "五子棋、黑白棋、围棋", - "author": "MeetWq", - "homepage": "https://github.com/noneplugin/nonebot-plugin-boardgame", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.console", - "nonebot.adapters.discord", - "nonebot.adapters.dodo", - "nonebot.adapters.feishu", - "nonebot.adapters.kaiheila", - "nonebot.adapters.onebot.v11", - "nonebot.adapters.onebot.v12", - "nonebot.adapters.qq", - "nonebot.adapters.red", - "nonebot.adapters.satori", - "nonebot.adapters.telegram" - ], - "valid": true, - "version": "0.4.0", - "time": "2024-03-02T09:28:02.725259Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_wordcloud", - "project_link": "nonebot-plugin-wordcloud", - "name": "词云", - "desc": "利用群消息生成词云", - "author": "he0119", - "homepage": "https://github.com/he0119/nonebot-plugin-wordcloud", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.feishu", - "nonebot.adapters.kaiheila", - "nonebot.adapters.onebot.v11", - "nonebot.adapters.onebot.v12", - "nonebot.adapters.qq", - "nonebot.adapters.red", - "nonebot.adapters.telegram" - ], - "valid": true, - "version": "0.7.0", - "time": "2024-03-01T04:23:25.937459Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_chatrecorder", - "project_link": "nonebot-plugin-chatrecorder", - "name": "聊天记录", - "desc": "记录机器人收到和发出的消息", - "author": "MeetWq", - "homepage": "https://github.com/noneplugin/nonebot-plugin-chatrecorder", - "tags": [], - "is_official": false, - "type": "library", - "supported_adapters": [ - "nonebot.adapters.console", - "nonebot.adapters.discord", - "nonebot.adapters.dodo", - "nonebot.adapters.feishu", - "nonebot.adapters.kaiheila", - "nonebot.adapters.onebot.v11", - "nonebot.adapters.onebot.v12", - "nonebot.adapters.qq", - "nonebot.adapters.red", - "nonebot.adapters.satori", - "nonebot.adapters.telegram" - ], - "valid": true, - "version": "0.6.0", - "time": "2024-03-01T02:09:06.819616Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_antiflash", - "project_link": "nonebot-plugin-antiflash", - "name": "群聊反闪照", - "desc": "顾名思义🎇", - "author": "KafCoppelia", - "homepage": "https://github.com/KafCoppelia/nonebot_plugin_antiflash", - "tags": [ - { - "label": "a:onebot", - "color": "#6f64d4" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-04-19T02:00:25.241994Z", - "version": "0.2.3", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_word_bank2", - "project_link": "nonebot-plugin-word-bank2", - "name": "nonebot-plugin-word-bank2", - "desc": "无数据库的轻量问答插件", - "author": "kexue-z", - "homepage": "https://github.com/kexue-z/nonebot-plugin-word-bank2", - "tags": [ - { - "label": "wordbank", - "color": "#0b00ff" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.1.8", - "time": "2023-06-15T04:20:03.438577Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_txt2img", - "project_link": "nonebot-plugin-txt2img", - "name": "文字转图片", - "desc": "使用 Pillow 进行文字转图片", - "author": "mobyw", - "homepage": "https://github.com/mobyw/nonebot-plugin-txt2img", - "tags": [], - "is_official": false, - "type": "library", - "supported_adapters": [ - "nonebot.adapters.feishu", - "nonebot.adapters.kaiheila", - "nonebot.adapters.onebot.v11", - "nonebot.adapters.onebot.v12", - "nonebot.adapters.qq", - "nonebot.adapters.red", - "nonebot.adapters.telegram" - ], - "valid": true, - "version": "0.4.1", - "time": "2024-02-22T05:25:41.002376Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_morning", - "project_link": "nonebot-plugin-morning", - "name": "おはよう!", - "desc": "早晚安记录作息,培养优质睡眠😴", - "author": "KafCoppelia", - "homepage": "https://github.com/KafCoppelia/nonebot_plugin_morning", - "tags": [ - { - "label": "a:onebot", - "color": "#da421c" - }, - { - "label": "t:morning", - "color": "#ebc025" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-12-28T03:36:05.610930Z", - "version": "0.3.2", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_pixiv", - "project_link": "nonebot-plugin-pixiv", - "name": "pixiv.net p站查询图片", - "desc": "pixiv.net p站查询图片(支持动图和多图)", - "author": "anlen123", - "homepage": "https://github.com/anlen123/nonebot_plugin_pixiv", - "tags": [ - { - "label": "t: pixiv", - "color": "#0096fa" - }, - { - "label": "R18", - "color": "#ffff00" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-12-20T09:53:04.279714Z", - "version": "1.1.5", - "skip_test": false - }, - { - "module_name": "YetAnotherPicSearch", - "project_link": "yetanotherpicsearch", - "name": "YetAnotherPicSearch", - "desc": "基于 kitUIN/PicImageSearch 的另一个 Nonebot 搜图插件。", - "author": "NekoAria", - "homepage": "https://github.com/NekoAria/YetAnotherPicSearch", - "tags": [ - { - "label": "a:onebot", - "color": "#000000" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2024-03-15T04:04:51.199073Z", - "version": "1.9.6", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_gachalogs", - "project_link": "nonebot-plugin-gachalogs", - "name": "原神抽卡记录分析", - "desc": "统计及导出原神祈愿记录,在 QQ 里鉴定原神欧皇吧!", - "author": "monsterxcn", - "homepage": "https://github.com/monsterxcn/nonebot-plugin-gachalogs", - "tags": [ - { - "label": "t:Genshin", - "color": "#ffd49f" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-07-10T08:08:27.393467Z", - "version": "0.2.13", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_everyday_en", - "project_link": "nonebot-plugin-everyday-en", - "name": "每日一句", - "desc": "每日一句英文句子,可选定时发送", - "author": "MelodyYuuka", - "homepage": "https://github.com/MelodyYuuka/nonebot_plugin_everyday_en", - "tags": [ - { - "label": "a:onebot", - "color": "#000000" - }, - { - "label": "EveryDay", - "color": "#ea5252" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-04-02T07:45:02.498078Z", - "version": "1.1.5", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_fire", - "project_link": "nonebot-plugin-fire", - "name": "QQ自动续火花", - "desc": "通过每天定时发送“/echo 花花”实现续火花", - "author": "25252www", - "homepage": "https://github.com/25252www/nonebot_plugin_fire", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-04-01T11:33:36.907538Z", - "version": "1.0.3", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_qrcode", - "project_link": "nonebot-plugin-qrcode", - "name": "二维码识别与发送", - "desc": "qq聊天二维码插件", - "author": "kexue-z", - "homepage": "https://github.com/kexue-z/nonebot-plugin-qrcode", - "tags": [ - { - "label": "a:onebot", - "color": "#ea5252" - }, - { - "label": "QRcode", - "color": "#0020ff" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-01-04T10:54:24.541684Z", - "version": "0.0.6", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_ygo", - "project_link": "nonebot-plugin-ygo", - "name": "游戏王卡查", - "desc": "nonebot的游戏王卡查插件", - "author": "anlen123", - "homepage": "https://github.com/anlen123/nonebot_plugin_ygo", - "tags": [ - { - "label": "t:游戏王", - "color": "#ea5252" - }, - { - "label": "口胡王", - "color": "#ea5252" - }, - { - "label": "ygo", - "color": "#ea5252" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-07-03T11:45:31.205090Z", - "version": "1.0.2", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_bilibilibot", - "project_link": "nonebot-plugin-bilibilibot", - "name": "bilibili通知插件", - "desc": "将up主更新、番剧更新、主播开播等信息推送到QQ", - "author": "TDK1969", - "homepage": "https://github.com/TDK1969/nonebot_plugin_bilibilibot", - "tags": [ - { - "label": "bilibili", - "color": "#f605dd" - }, - { - "label": "a:onebot11", - "color": "#05f6e4" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2024-01-03T18:12:50.547913Z", - "version": "2.3.4", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_color", - "project_link": "nonebot-plugin-color", - "name": "色图生成", - "desc": "用于生成指定色彩图片的 NoneBot2 插件", - "author": "monsterxcn", - "homepage": "https://github.com/monsterxcn/nonebot-plugin-color", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": null, - "valid": false, - "version": "0.4.0", - "time": "2024-03-10T10:07:17.874441Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_blackjack", - "project_link": "nonebot-plugin-blackjack", - "name": "21点游戏插件", - "desc": "一个基于签到积分的21点游戏与积分对战插件", - "author": "yaowan233", - "homepage": "https://github.com/yaowan233/nonebot-plugin-blackjack", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-03-11T15:11:50.631785Z", - "version": "0.0.5", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_arcaeabot", - "project_link": "nonebot-plugin-arcaeabot", - "name": "Arcaea查分插件", - "desc": "Arcaea查分插件(recent, best30)", - "author": "SEAFHMC", - "homepage": "https://github.com/SEAFHMC/nonebot-plugin-arcaeabot", - "tags": [ - { - "label": "Arcaea", - "color": "#db52ea" - }, - { - "label": "a:onebot", - "color": "#ff2e00" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-06-09T14:09:57.926195Z", - "version": "3.1.19", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_ddcheck", - "project_link": "nonebot-plugin-ddcheck", - "name": "成分姬", - "desc": "查询B站用户关注的VTuber成分", - "author": "MeetWq", - "homepage": "https://github.com/noneplugin/nonebot-plugin-ddcheck", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": null, - "valid": true, - "version": "0.4.0", - "time": "2024-03-02T15:02:58.078642Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_leetcode2", - "project_link": "nonebot-plugin-leetcode2", - "name": "第二个leetcode查询插件", - "desc": "可查询用户信息、获取每日一题与随机一题和搜索题目。", - "author": "Nranphy", - "homepage": "https://github.com/Nranphy/nonebot_plugin_leetcode2", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-03-13T12:14:05.351724Z", - "version": "1.1.3", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_hikarisearch", - "project_link": "nonebot-plugin-hikarisearch", - "name": "HikariSearch", - "desc": "使用 HikariSearch 的又一个搜图插件", - "author": "MeetWq", - "homepage": "https://github.com/MeetWq/nonebot-plugin-hikarisearch", - "tags": [ - { - "label": "a:onebot", - "color": "#000000" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-10-03T06:52:42.532048Z", - "version": "0.1.7", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_mediawiki", - "project_link": "nonebot-plugin-mediawiki", - "name": "MediaWiki查询", - "desc": "为群聊提供简单的wiki查询功能(仅支持onebot)", - "author": "KoishiStudio", - "homepage": "https://github.com/KoishiStudio/nonebot-plugin-mediawiki", - "tags": [ - { - "label": "a:onebot", - "color": "#000000" - }, - { - "label": "t:wiki", - "color": "#679ff9" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-08-28T19:29:44.225452Z", - "version": "1.0.1", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_wordle", - "project_link": "nonebot-plugin-wordle", - "name": "猜单词", - "desc": "wordle猜单词游戏", - "author": "MeetWq", - "homepage": "https://github.com/noneplugin/nonebot-plugin-wordle", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.console", - "nonebot.adapters.discord", - "nonebot.adapters.dodo", - "nonebot.adapters.feishu", - "nonebot.adapters.kaiheila", - "nonebot.adapters.onebot.v11", - "nonebot.adapters.onebot.v12", - "nonebot.adapters.qq", - "nonebot.adapters.red", - "nonebot.adapters.satori", - "nonebot.adapters.telegram" - ], - "valid": true, - "version": "0.4.1", - "time": "2024-02-28T15:01:45.634106Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_giyf", - "project_link": "nonebot-plugin-giyf", - "name": "快速搜索", - "desc": "指引群友快速 访 ~~(tui)~~ 问 ~~(dao)~~ 谷歌娘(在中国大陆大概就是度娘了~)", - "author": "KoishiStudio", - "homepage": "https://github.com/KoishiStudio/nonebot-plugin-giyf", - "tags": [ - { - "label": "a:onebot", - "color": "#000000" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-06-10T03:01:26.351493Z", - "version": "0.1.3", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_abstract", - "project_link": "nonebot-plugin-abstract", - "name": "语句抽象化", - "desc": "能够将你的语句变得抽象起来~", - "author": "CherryCherries", - "homepage": "https://github.com/CherryCherries/nonebot-plugin-abstract", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-12-25T09:05:56.928814Z", - "version": "1.0.6", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_params", - "project_link": "nonebot-plugin-params", - "name": "多适配器帮助函数", - "desc": "提供编写多适配器插件的帮助函数", - "author": "iyume", - "homepage": "https://github.com/iyume/nonebot-plugin-params", - "tags": [ - { - "label": "t:helper", - "color": "#ffe873" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-03-28T04:56:05.243623Z", - "version": "0.1.1", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_handle", - "project_link": "nonebot-plugin-handle", - "name": "猜成语", - "desc": "汉字Wordle 猜成语", - "author": "MeetWq", - "homepage": "https://github.com/noneplugin/nonebot-plugin-handle", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.console", - "nonebot.adapters.discord", - "nonebot.adapters.dodo", - "nonebot.adapters.feishu", - "nonebot.adapters.kaiheila", - "nonebot.adapters.onebot.v11", - "nonebot.adapters.onebot.v12", - "nonebot.adapters.qq", - "nonebot.adapters.red", - "nonebot.adapters.satori", - "nonebot.adapters.telegram" - ], - "valid": true, - "version": "0.4.1", - "time": "2024-03-03T14:32:13.372089Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_minesweeper", - "project_link": "nonebot-plugin-minesweeper", - "name": "扫雷", - "desc": "扫雷游戏", - "author": "MeetWq", - "homepage": "https://github.com/noneplugin/nonebot-plugin-minesweeper", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.console", - "nonebot.adapters.discord", - "nonebot.adapters.dodo", - "nonebot.adapters.feishu", - "nonebot.adapters.kaiheila", - "nonebot.adapters.onebot.v11", - "nonebot.adapters.onebot.v12", - "nonebot.adapters.qq", - "nonebot.adapters.red", - "nonebot.adapters.satori", - "nonebot.adapters.telegram" - ], - "valid": true, - "version": "0.4.1", - "time": "2024-03-02T05:26:09.929052Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_draw", - "project_link": "nonebot_plugin_draw", - "name": "nonebot_plugin_draw", - "desc": "模拟抽签的一个本地化插件", - "author": "bingganhe123", - "homepage": "https://github.com/bingganhe123/nonebot_plugin_draw", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-04-12T02:35:00.986589Z", - "version": "0.1.2", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_randomtkk", - "project_link": "nonebot-plugin-randomtkk", - "name": "随机唐可可", - "desc": "找到唐可可,和她一起做学园偶像!🎶", - "author": "KafCoppelia", - "homepage": "https://github.com/MinatoAquaCrews/nonebot_plugin_randomtkk", - "tags": [ - { - "label": "a:onebot", - "color": "#d62222" - }, - { - "label": "t:Tan Kuku", - "color": "#fdaf75" - }, - { - "label": "t:Liyuu", - "color": "#465dfd" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-03-29T10:01:33.569934Z", - "version": "0.1.5.post1", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_dida", - "project_link": "nonebot-plugin-dida", - "name": "nonebot-plugin-dida", - "desc": "基于Nonebot的滴答清单插件,可创建普通任务/子任务,按照条件查询任务", - "author": "TDK1969", - "homepage": "https://github.com/TDK1969/nonebot_plugin_dida", - "tags": [ - { - "label": "t:滴答清单", - "color": "#007ffd" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-12-24T14:43:52.546960Z", - "version": "2.0.0.1", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_alipayvoice", - "project_link": "nonebot-plugin-alipayvoice", - "name": "支付宝到账语音", - "desc": "发送支付宝到账语音, 支持金额范围为0.01~999999999999.99", - "author": "A-kirami", - "homepage": "https://github.com/A-kirami/nonebot-plugin-alipayvoice", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-06-21T03:04:10.967969Z", - "version": "0.5.0", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_answersbook", - "project_link": "nonebot-plugin-answersbook", - "name": "答案之书", - "desc": "愿一切无解都有解!解除你的迷惑,终结你的纠结!", - "author": "A-kirami", - "homepage": "https://github.com/A-kirami/nonebot-plugin-answersbook", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-05-09T16:28:04.479501Z", - "version": "0.2.0", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_hitokoto", - "project_link": "nonebot-plugin-hitokoto", - "name": "一言", - "desc": "总有一句话能打动你的心", - "author": "A-kirami", - "homepage": "https://github.com/A-kirami/nonebot-plugin-hitokoto", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-12-27T03:19:08.068742Z", - "version": "0.2.1", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_bilicover", - "project_link": "nonebot-plugin-bilicover", - "name": "B站视频封面提取", - "desc": "提取B站视频的封面,支持链接、av号、bv号", - "author": "A-kirami", - "homepage": "https://github.com/A-kirami/nonebot-plugin-bilicover", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-02-15T15:00:17.810788Z", - "version": "0.2.2", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_cchess", - "project_link": "nonebot-plugin-cchess", - "name": "象棋", - "desc": "象棋,支持人机和对战", - "author": "MeetWq", - "homepage": "https://github.com/noneplugin/nonebot-plugin-cchess", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.console", - "nonebot.adapters.discord", - "nonebot.adapters.dodo", - "nonebot.adapters.feishu", - "nonebot.adapters.kaiheila", - "nonebot.adapters.onebot.v11", - "nonebot.adapters.onebot.v12", - "nonebot.adapters.qq", - "nonebot.adapters.red", - "nonebot.adapters.satori", - "nonebot.adapters.telegram" - ], - "valid": true, - "version": "0.4.0", - "time": "2024-03-01T15:20:58.978317Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_chess", - "project_link": "nonebot-plugin-chess", - "name": "国际象棋", - "desc": "国际象棋,支持人机和对战", - "author": "MeetWq", - "homepage": "https://github.com/noneplugin/nonebot-plugin-chess", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.console", - "nonebot.adapters.discord", - "nonebot.adapters.dodo", - "nonebot.adapters.feishu", - "nonebot.adapters.kaiheila", - "nonebot.adapters.onebot.v11", - "nonebot.adapters.onebot.v12", - "nonebot.adapters.qq", - "nonebot.adapters.red", - "nonebot.adapters.satori", - "nonebot.adapters.telegram" - ], - "valid": true, - "version": "0.5.0", - "time": "2024-03-02T06:32:33.038543Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_charpic", - "project_link": "nonebot-plugin-charpic", - "name": "charpic", - "desc": "合成字符画", - "author": "RafuiiChan", - "homepage": "https://github.com/1umine/nonebot_plugin_charpic", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.1.3", - "time": "2023-10-08T15:19:56.533711Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_miragetank", - "project_link": "nonebot-plugin-miragetank", - "name": "miragetank", - "desc": "合成/分离幻影坦克图片", - "author": "RafuiiChan", - "homepage": "https://github.com/1umine/nonebot_plugin_miragetank", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.1.5", - "time": "2023-10-06T04:10:56.321148Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_covid", - "project_link": "nonebot-plugin-covid", - "name": "国内新冠疫情数据查询", - "desc": "查询国内各省份及下属地级市的疫情数据", - "author": "nicklly", - "homepage": "https://github.com/nicklly/nonebot2_covid_plugin", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-06-26T22:14:17.882416+08:00", - "version": "0.0.1", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_yulu", - "project_link": "nonebot-plugin-yulu", - "name": "语录娱乐", - "desc": "语录娱乐小插件", - "author": "bingqiu456", - "homepage": "https://github.com/bingqiu456/nonebot-plugin-yulu", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-01-20T10:15:53.506911Z", - "version": "3.0", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_maze", - "project_link": "nonebot-plugin-maze", - "name": "走迷宫", - "desc": "与机器人交互解迷宫", - "author": "EtherLeaF", - "homepage": "https://github.com/EtherLeaF/nonebot_plugin_maze", - "tags": [ - { - "label": "a:onebot", - "color": "#ea5252" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-12-24T07:37:30.144772Z", - "version": "0.2.4", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_moyu", - "project_link": "nonebot-plugin-moyu", - "name": "摸鱼日历", - "desc": "摸鱼一时爽, 一直摸鱼一直爽", - "author": "A-kirami", - "homepage": "https://github.com/A-kirami/nonebot-plugin-moyu", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-02-18T12:01:49.758334Z", - "version": "0.3.3", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_mockingbird", - "project_link": "nonebot-plugin-mockingbird", - "name": "MockingBird语音", - "desc": "利用MockingBird来生成语音,并支持多种语音切换", - "author": "AkashiCoin", - "homepage": "https://github.com/AkashiCoin/nonebot_plugin_mockingbird", - "tags": [ - { - "label": "a:onebot", - "color": "#000000" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-05-24T10:28:06.597823Z", - "version": "0.2.1", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_baidutranslate", - "project_link": "nonebot-plugin-baidutranslate", - "name": "百度翻译", - "desc": "可以调用百度翻译 API 实现常用语种之间的互译", - "author": "NumberSir", - "homepage": "https://github.com/NumberSir/nonebot_plugin_baidutranslate", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-04-04T02:02:45.349939Z", - "version": "0.3.2", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_tortoise_orm", - "project_link": "nonebot-plugin-tortoise-orm", - "name": "nonebot_plugin_tortoise_orm", - "desc": "Tortoise ORM 插件", - "author": "kexue-z", - "homepage": "https://github.com/kexue-z/nonebot-plugin-tortoise-orm", - "tags": [], - "is_official": false, - "type": "library", - "supported_adapters": null, - "valid": true, - "version": "0.1.1", - "time": "2023-08-22T04:01:30.366075Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_dailysign", - "project_link": "nonebot-plugin-dailysign", - "name": "nonebot_plugin_dailysign", - "desc": "简单的签到插件", - "author": "kexue-z", - "homepage": "https://github.com/kexue-z/nonebot-plugin-dailysign", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.1.0.1", - "time": "2023-06-29T02:30:01.006481Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_tetris_stats", - "project_link": "nonebot-plugin-tetris-stats", - "name": "TETRIS Stats", - "desc": "一个基于nonebot2的用于查询TETRIS相关游戏玩家数据的插件", - "author": "shoucandanghehe", - "homepage": "https://github.com/shoucandanghehe/nonebot-plugin-tetris-stats", - "tags": [ - { - "label": "a:onebot", - "color": "#da2b2b" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-09-21T14:35:01.691461Z", - "version": "0.4.4", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_bilibili_viode", - "project_link": "nonebot_plugin_bilibili_viode", - "name": "B站视频伪分享卡片", - "desc": "将用户发送的B站视频ID转为(伪)分享卡片的形式", - "author": "ASTWY", - "homepage": "https://github.com/ASTWY/nonebot_plugin_bilibili_viode", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-05-30T21:21:44.093741Z", - "version": "1.0.1", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_imagetools", - "project_link": "nonebot-plugin-imagetools", - "name": "图片操作", - "desc": "简单图片操作", - "author": "MeetWq", - "homepage": "https://github.com/noneplugin/nonebot-plugin-imagetools", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.bilibili", - "nonebot.adapters.console", - "nonebot.adapters.ding", - "nonebot.adapters.discord", - "nonebot.adapters.dodo", - "nonebot.adapters.feishu", - "nonebot.adapters.github", - "nonebot.adapters.kaiheila", - "nonebot.adapters.minecraft", - "nonebot.adapters.mirai2", - "nonebot.adapters.ntchat", - "nonebot.adapters.onebot.v11", - "nonebot.adapters.onebot.v12", - "nonebot.adapters.qq", - "nonebot.adapters.red", - "nonebot.adapters.satori", - "nonebot.adapters.telegram" - ], - "valid": true, - "version": "0.4.1", - "time": "2024-03-12T09:52:51.485907Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_warframe_clock", - "project_link": "nonebot-plugin-warframe-clock", - "name": "Warframe时间查询", - "desc": "查询Warframe的平原与地球时间状态", - "author": "axStar", - "homepage": "https://github.com/axStar/nonebot_plugin_warframe_clock", - "tags": [ - { - "label": "a:onebot", - "color": "#000000" - }, - { - "label": "Warframe", - "color": "#149090" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-05-31T03:32:53.069089Z", - "version": "1.3", - "skip_test": false - }, - { - "module_name": "hikari_bot", - "project_link": "hikari-bot", - "name": "Hikari-战舰世界水表查询", - "desc": "顾名思义", - "author": "benx1n", - "homepage": "https://github.com/benx1n/HikariBot", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-12-06T04:31:59.376089Z", - "version": "1.0.6", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_who_at_me", - "project_link": "nonebot-plugin-who-at-me", - "name": "谁艾特我了", - "desc": "看看是谁又在艾特我", - "author": "SEAFHMC", - "homepage": "https://github.com/SEAFHMC/nonebot-plugin-who-at-me", - "tags": [ - { - "label": "a:onebot", - "color": "#ea5252" - }, - { - "label": "t:群聊", - "color": "#52afea" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-09-19T02:26:39.239522Z", - "version": "0.2.8", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_covid_19_by", - "project_link": "nonebot-plugin-covid-19-by", - "name": "疫情小助手", - "desc": "疫情小助手 支持查地区 风险地区 境外输入等", - "author": "bingqiu456", - "homepage": "https://github.com/bingqiu456/nonebot-plugin-covid-19-by", - "tags": [ - { - "label": "a:onebot", - "color": "#52ea8a" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-08-04T12:51:50.273807Z", - "version": "4.5", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_reboot", - "project_link": "nonebot-plugin-reboot", - "name": "nonebot_plugin_reboot [重启 bot]", - "desc": "用命令重启机器人", - "author": "18870", - "homepage": "https://github.com/18870/nonebot-plugin-reboot", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.1.4", - "time": "2023-06-24T10:34:29.338115Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_setu4", - "project_link": "nonebot-plugin-setu4", - "name": "setu4", - "desc": "内置数据库的setu插件, 尝试降低因为风控发不出图的概率", - "author": "Special-Week", - "homepage": "https://github.com/Special-Week/nonebot_plugin_setu4", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.15.114514.1", - "time": "2024-02-20T06:48:16.825857Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_smart_reply", - "project_link": "nonebot-plugin-smart-reply", - "name": "smart_reply", - "desc": "nonebot2的融合了openai, newbing, 词库的智障回复插件", - "author": "Special-Week", - "homepage": "https://github.com/Special-Week/nonebot_plugin_smart_reply", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.15.114514", - "time": "2024-02-28T10:39:44.325920Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_today_in_history", - "project_link": "nonebot-plugin-today-in-history", - "name": "历史上的今天", - "desc": "发送每日历史上的今天", - "author": "AquamarineCyan", - "homepage": "https://github.com/AquamarineCyan/nonebot-plugin-today-in-history", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.1.3", - "time": "2023-12-06T13:23:11.873181Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_BitTorrent", - "project_link": "nonebot_plugin_BitTorrent", - "name": "bittorrent", - "desc": "磁力搜索插件", - "author": "Special-Week", - "homepage": "https://github.com/Special-Week/nonebot_plugin_BitTorrent", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": null, - "valid": true, - "version": "0.0.21", - "time": "2024-02-20T06:47:14.799458Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_namelist", - "project_link": "nonebot-plugin-namelist", - "name": "黑白名单", - "desc": "简易黑白用户名单管理", - "author": "A-kirami", - "homepage": "https://github.com/A-kirami/nonebot-plugin-namelist", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-07-16T09:41:29.820153Z", - "version": "0.2.0", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_bread_shop", - "project_link": "nonebot-plugin-bread-shop", - "name": "面包店小游戏", - "desc": "面包店休闲小游戏", - "author": "Mai-icy", - "homepage": "https://github.com/Mai-icy/nonebot-plugin-bread-shop", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-02-17T08:16:03.035271Z", - "version": "0.1.14", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_PicMenu", - "project_link": "nonebot_plugin_PicMenu", - "name": "PicMenu", - "desc": "根据插件元数据生成图片化功能菜单", - "author": "hamo-reid", - "homepage": "https://github.com/hamo-reid/nonenot_plugin_PicMenu", - "tags": [ - { - "label": "a:onebot", - "color": "#030303" - }, - { - "label": "t:menu", - "color": "#753dc6" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-08-16T05:48:01.071422Z", - "version": "0.2", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_horserace", - "project_link": "nonebot_plugin_horserace", - "name": "赛马", - "desc": "群内青春版赛马小游戏", - "author": "shinianj", - "homepage": "https://github.com/shinianj/nonebot_plugin_horserace", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-06-30T05:20:53.029037Z", - "version": "2.2", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_firexN", - "project_link": "nonebot-plugin-firexN", - "name": "一起燚xN吧", - "desc": "QQ续火花,可以自定义多个联系人、消息内容、发送时间,支持群聊定时消息", - "author": "GC-ZF", - "homepage": "https://github.com/GC-ZF/nonebot_plugin_firexN", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-12-24T13:46:27.472585Z", - "version": "0.1.7", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_bfinfo", - "project_link": "nonebot-plugin-bfinfo", - "name": "战地1、5战绩查询工具", - "desc": "QQ私聊或群聊发送战地游戏ID,返回基础信息以及最佳兵种、最佳枪械、最佳载具、最佳模式信息", - "author": "GC-ZF", - "homepage": "https://github.com/GC-ZF/nonebot_plugin_bfinfo", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-01-05T14:10:41.291955Z", - "version": "0.0.5", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_osubot", - "project_link": "nonebot-plugin-osubot", - "name": "OSUBot", - "desc": "OSU查分插件", - "author": "yaowan233", - "homepage": "https://github.com/yaowan233/nonebot-plugin-osubot", - "tags": [ - { - "label": "OSU", - "color": "#eb5d9b" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [], - "valid": true, - "version": "5.2.2", - "time": "2024-03-11T07:06:45.988200Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_acc_calculate", - "project_link": "nonebot-plugin-acc-calculate", - "name": "ACC计算工具", - "desc": "能够计算段位的单曲acc,支持malodyv3段位regular、ex", - "author": "10-24", - "homepage": "https://github.com/10-24/nonebot-plugin-acc-calculate", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-03-10T10:15:56.678714Z", - "version": "1.0.0", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_kawaii_robot", - "project_link": "nonebot_plugin_kawaii_robot", - "name": "KawaiiRobot", - "desc": "使用 Kyomotoi/AnimeThesaurus 的 NoneBot2 的回复(文i)插件", - "author": "KarisAya", - "homepage": "https://github.com/KarisAya/nonebot_plugin_kawaii_robot/", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.bilibili", - "nonebot.adapters.console", - "nonebot.adapters.ding", - "nonebot.adapters.discord", - "nonebot.adapters.dodo", - "nonebot.adapters.feishu", - "nonebot.adapters.github", - "nonebot.adapters.kaiheila", - "nonebot.adapters.minecraft", - "nonebot.adapters.mirai2", - "nonebot.adapters.ntchat", - "nonebot.adapters.onebot.v11", - "nonebot.adapters.onebot.v12", - "nonebot.adapters.qq", - "nonebot.adapters.red", - "nonebot.adapters.satori", - "nonebot.adapters.telegram" - ], - "valid": true, - "version": "4.1.0.post1", - "time": "2024-03-15T14:33:21.268256Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_addFriend", - "project_link": "nonebot_plugin_addFriend", - "name": "处理好友添加和群邀请", - "desc": "一个基于NoneBot2的插件,用于处理被请求加QQ好友和QQ群的请求", - "author": "ziru-w", - "homepage": "https://github.com/ziru-w/nonebot_plugin_addFriend", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-09-16T14:12:37.178511Z", - "version": "2.5.5", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_date_name", - "project_link": "nonebot-plugin-date-name", - "name": "群昵称时间", - "desc": "一个可以群昵称显示现在时间的插件", - "author": "bingqiu456", - "homepage": "https://github.com/bingqiu456/nonebot-plugin-date-name", - "tags": [ - { - "label": "a:onebot", - "color": "#a552ea" - }, - { - "label": "t:qun_card", - "color": "#e552ea" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-04-15T09:06:23.113910Z", - "version": "3.0", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_easyCommand", - "project_link": "nonebot_plugin_easyCommand", - "name": "易命令", - "desc": "一个基于NoneBot2的简单的用于动态地添加命令或添加定时任务的插件", - "author": "ziru-w", - "homepage": "https://github.com/ziru-w/nonebot_plugin_easyCommand", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-01-15T03:35:40.231889Z", - "version": "1.1.4", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_report", - "project_link": "nonebot-plugin-report", - "name": "推送钩子", - "desc": "使用 webhook 向用户推送消息", - "author": "syrinka", - "homepage": "https://github.com/syrinka/nonebot-plugin-report", - "tags": [ - { - "label": "t:webhook", - "color": "#51b3a8" - }, - { - "label": "t:notify", - "color": "#3985f7" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2024-03-10T09:44:45.338348Z", - "version": "1.3.0", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_hammer_nbnhhsh", - "project_link": "nonebot-plugin-hammer-nbnhhsh", - "name": "「能不能好好说话?」缩写翻译", - "desc": "拼音首字母及阿拉伯数字缩写翻译", - "author": "ArgonarioD", - "homepage": "https://github.com/ArgonarioD/nonebot-plugin-hammer-nbnhhsh", - "tags": [ - { - "label": "a:onebot", - "color": "#000000" - }, - { - "label": "a:cqhttp", - "color": "#000000" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-08-01T06:05:33.097465Z", - "version": "1.0.0", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_bawiki", - "project_link": "nonebot-plugin-bawiki", - "name": "BAWiki", - "desc": "碧蓝档案Wiki插件", - "author": "lgc2333", - "homepage": "https://github.com/lgc-NB2Dev/nonebot-plugin-bawiki", - "tags": [ - { - "label": "碧蓝档案", - "color": "#00d7fb" - }, - { - "label": "蔚藍檔案", - "color": "#00d7fb" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.11.2", - "time": "2024-03-10T11:22:39.906792Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_mcqq", - "project_link": "nonebot-plugin-mcqq", - "name": "MC_QQ", - "desc": "基于NoneBot的与Minecraft Server互通消息的插件", - "author": "17TheWord", - "homepage": "https://github.com/17TheWord/nonebot-plugin-mcqq", - "tags": [ - { - "label": "Minecraft", - "color": "#52ea6f" - }, - { - "label": "消息互通", - "color": "#52eadf" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.minecraft", - "nonebot.adapters.onebot.v11", - "nonebot.adapters.qq" - ], - "valid": false, - "version": "2.5.3.post1", - "time": "2024-02-29T07:00:39.619226Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_covid_19_by_guild", - "project_link": "nonebot-plugin-covid-19-by-guild", - "name": "疫情小助手-频道版", - "desc": "👉 疫情小助手 频道版👈", - "author": "bingqiu456", - "homepage": "https://github.com/bingqiu456/nonebot-plugin-covid-19-by-guild", - "tags": [ - { - "label": "a:QQ频道", - "color": "#ea5252" - }, - { - "label": "t:疫情小助手", - "color": "#526fea" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-08-08T13:02:36.594332Z", - "version": "1.0", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_wiki", - "project_link": "nonebot-plugin-wiki", - "name": "wiki条目搜索、获取简介", - "desc": "通过mediawiki api进行条目搜索、生成简介(biliwiki部分通过网页解析实现)", - "author": "ZombieFly", - "homepage": "https://github.com/ZombieFly/nb2-wiki", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-11-28T14:31:02.494388Z", - "version": "0.1.0", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_groupmanager", - "project_link": "nonebot-plugin-groupmanager", - "name": "多功能群管", - "desc": "与简易群管属于同个产品,就是多了一个入群欢迎,感谢@幼稚园园长 开发的原版插件的帮助", - "author": "HuYihe2008", - "homepage": "https://github.com/HuYihe2008/nonebot_plugin_groupmanager", - "tags": [ - { - "label": "简易群管", - "color": "#53e950" - }, - { - "label": "插件改良", - "color": "#2b7be2" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-08-25T03:50:08.584658Z", - "version": "1.0.5", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_game_collection", - "project_link": "nonebot_plugin_game_collection", - "name": "小游戏合集", - "desc": "改自 nonebot_plugin_russian 合并了nonebot_plugin_horserace还有一些自编玩法的小游戏合集。", - "author": "KarisAya", - "homepage": "https://github.com/KarisAya/nonebot_plugin_game_collection", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-11-13T11:14:29.877161Z", - "version": "2.4.16", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_drawer", - "project_link": "nonebot-plugin-drawer", - "name": "nonebot-plugin-drawer", - "desc": "适用于 Nonebot2 的AI画画插件", - "author": "CrazyBoyM", - "homepage": "https://github.com/CrazyBoyM/nonebot-plugin-drawer", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-10-06T10:07:03.855313Z", - "version": "0.4.0", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_jrrp-n", - "project_link": "nonebot-plugin-jrrp-n", - "name": "每日人品", - "desc": "不基于random的每日人品插件", - "author": "SkyDynamic", - "homepage": "https://github.com/SkyDynamic/nonebot_plugin_jrrp", - "tags": [ - { - "label": "每日人品", - "color": "#ea5252" - }, - { - "label": "jrrp", - "color": "#529fea" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-09-11T12:26:29.764709Z", - "version": "1.0.1a1", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_moegoe", - "project_link": "nonebot-plugin-moegoe", - "name": "日韩中 VITS 模型原神拟声", - "desc": "现在是琪亚娜时间~", - "author": "Yiyuiii", - "homepage": "https://github.com/Yiyuiii/nonebot-plugin-moegoe", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2024-01-03T07:57:36.831231Z", - "version": "0.10.6", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_pixivbot", - "project_link": "nonebot-plugin-pixivbot", - "name": "PixivBot", - "desc": "发送随机Pixiv插画、画师更新推送、定时订阅推送……", - "author": "ssttkkl", - "homepage": "https://github.com/bot-ssttkkl/nonebot-plugin-pixivbot", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.feishu", - "nonebot.adapters.kaiheila", - "nonebot.adapters.onebot.v11", - "nonebot.adapters.onebot.v12", - "nonebot.adapters.red", - "nonebot.adapters.telegram" - ], - "valid": true, - "version": "2.1.1", - "time": "2023-11-29T05:38:58.958393Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_workscore", - "project_link": "nonebot-plugin-workscore", - "name": "工作性价比计算器", - "desc": "工作性价比计算器,算算你有多惨", - "author": "yzyyz1387", - "homepage": "https://github.com/yzyyz1387/nonebot_plugin_workscore", - "tags": [ - { - "label": "工作性价比计算器", - "color": "#3898fc" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": null, - "valid": true, - "version": "0.1.2", - "time": "2023-09-08T10:44:39.331076Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_treehelp", - "project_link": "nonebot-plugin-treehelp", - "name": "帮助", - "desc": "获取插件帮助信息", - "author": "he0119", - "homepage": "https://github.com/he0119/nonebot-plugin-treehelp", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": null, - "valid": true, - "version": "0.4.1", - "time": "2024-03-01T05:09:14.419256Z", - "skip_test": false - }, - { - "module_name": "cqsat", - "project_link": "nonebot-plugin-cqsat", - "name": "HAM助手", - "desc": "业余无线电相关工具", - "author": "yzyyz1387", - "homepage": "https://github.com/yzyyz1387/cqsat", - "tags": [ - { - "label": "业余无线电", - "color": "#ea5252" - }, - { - "label": "HAM", - "color": "#3898fc" - }, - { - "label": "卫星追踪", - "color": "#fca638" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": null, - "valid": false, - "version": "0.1.12.3", - "time": "2024-03-07T03:24:10.900500Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_course", - "project_link": "nonebot-plugin-course", - "name": "课表查询", - "desc": "本周课表,完整课表,下节课在哪上,今天还有什么课🤔", - "author": "InariInDream", - "homepage": "https://github.com/InariInDream/nonebot_plugin_course", - "tags": [ - { - "label": "课表", - "color": "#6e9af2" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-02-26T09:03:50.284334Z", - "version": "0.1.9", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_dialectlist", - "project_link": "nonebot-plugin-dialectlist", - "name": "话痨排行榜", - "desc": "给话多的群友一个排行", - "author": "X-Skirt-X", - "homepage": "https://github.com/X-Skirt-X/nonebot_plugin_dialectlist", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-03-19T02:13:34.033923Z", - "version": "1.4.0", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_offline_mahjong_helper", - "project_link": "nonebot-plugin-offline-mahjong-helper", - "name": "面麻小助手", - "desc": "可约桌、算点、精算、雀魂查询的面麻助手。", - "author": "Nranphy", - "homepage": "https://github.com/Nranphy/nonebot_plugin_offline_mahjong_helper", - "tags": [ - { - "label": "Mahjong", - "color": "#ea5252" - }, - { - "label": "雀魂", - "color": "#eaa452" - }, - { - "label": "线下约桌", - "color": "#52a6ea" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-12-25T07:44:48.326427Z", - "version": "0.2.3", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_send", - "project_link": "nonebot-plugin-send", - "name": "反馈及通知", - "desc": "用户通过bot向superuser发送反馈,以及bot向所有群发送通知", - "author": "sena-nana", - "homepage": "https://github.com/sena-nana/nonebot-plugin-send", - "tags": [ - { - "label": "t:send", - "color": "#ea5252" - }, - { - "label": "t:notice", - "color": "#ea5252" - }, - { - "label": "t:公告", - "color": "#ea5252" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-11-26T09:20:01.529021Z", - "version": "0.1.4", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_todo_nlp", - "project_link": "nonebot-plugin-todo-nlp", - "name": "自识别todo", - "desc": "一款自动识别提醒内容,可生成todo图片并定时推送的nonebot2插件,v11适配器可用", - "author": "CofinCup", - "homepage": "https://github.com/CofinCup/nonebot-plugin-todo-nlp", - "tags": [ - { - "label": "t:todo", - "color": "#499bdd" - }, - { - "label": "t:nlp", - "color": "#83b279" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-04-29T15:38:01.799965Z", - "version": "0.1.9", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_wordsnorote", - "project_link": "nonebot-plugin-wordsnorote", - "name": "不背单词", - "desc": "哥们哥们,背单词么?哥们!", - "author": "GC-ZF", - "homepage": "https://github.com/GC-ZF/nonebot_plugin_wordsnorote", - "tags": [ - { - "label": "四六级", - "color": "#24a0d8" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-08-30T08:50:02.018317Z", - "version": "0.0.2", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_CyberSensoji", - "project_link": "nonebot-plugin-CyberSensoji", - "name": "赛博浅草寺", - "desc": "随机抽取浅草寺的一签运势", - "author": "Raidenneox", - "homepage": "https://github.com/Raidenneox/nonebot_plugin_CyberSensoji", - "tags": [ - { - "label": "t:抽签", - "color": "#52eadf" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-08-31T02:25:54.508365Z", - "version": "0.0.2", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_gspanel", - "project_link": "nonebot-plugin-gspanel", - "name": "原神角色展柜查询", - "desc": "移植自 @yoimiya-kokomi/miao-plugin 的原神游戏内角色展柜数据查询", - "author": "monsterxcn", - "homepage": "https://github.com/monsterxcn/nonebot-plugin-gspanel", - "tags": [ - { - "label": "t:Genshin", - "color": "#ffd49f" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-11-09T07:32:00.271465Z", - "version": "0.2.25", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_gsmaterial", - "project_link": "nonebot-plugin-gsmaterial", - "name": "原神每日材料查询", - "desc": "原神每日天赋培养、武器突破材料查询,通过 Project Amber 数据库(支持部分尚未实装角色)自动更新每日数据~", - "author": "monsterxcn", - "homepage": "https://github.com/monsterxcn/nonebot-plugin-gsmaterial", - "tags": [ - { - "label": "t:Genshin", - "color": "#ffd49f" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-10-09T14:57:38.167171Z", - "version": "0.2.7", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_mystool", - "project_link": "nonebot-plugin-mystool", - "name": "米游社辅助工具", - "desc": "每日完成米游币任务、游戏签到、商品兑换、免抓包登录", - "author": "Ljzd-PRO", - "homepage": "https://github.com/Ljzd-PRO/nonebot-plugin-mystool", - "tags": [ - { - "label": "a:onebot", - "color": "#000000" - }, - { - "label": "t:米游社", - "color": "#66e0ff" - }, - { - "label": "t:原神", - "color": "#faf3c4" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2024-03-16T19:21:16.886146Z", - "version": "2.3.0", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_warframe", - "project_link": "nonebot-plugin-warframe", - "name": "星际战甲事件查询", - "desc": "通过奥迪斯网站API查询星际战甲国服事件", - "author": "17TheWord", - "homepage": "https://github.com/17TheWord/nonebot-plugin-warframe", - "tags": [ - { - "label": "星际战甲", - "color": "#ed3f3f" - }, - { - "label": "WarFrame", - "color": "#edea3f" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": null, - "valid": true, - "version": "0.0.5", - "time": "2023-06-18T16:49:55.654016Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_mcqq_server", - "project_link": "nonebot-plugin-mcqq-server", - "name": "Minecraft Server 聊天同步", - "desc": "采用本地读取log信息的方法的Minecraft Server互通消息的插件,mcqq服主版。", - "author": "KarisAya", - "homepage": "https://github.com/KarisAya/nonebot_plugin_mcqq_server", - "tags": [ - { - "label": "Minecraft", - "color": "#52ea64" - }, - { - "label": "消息互通", - "color": "#52e5ea" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-06-27T05:44:16.649059Z", - "version": "1.0.5", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_RealESRGAN", - "project_link": "nonebot_plugin_RealESRGAN", - "name": "图像超分辨率重建", - "desc": "对图像进行超分辨率重建,可以理解成将图像变大变清晰,不过线上重建的效果没有本地的好,具体可以查阅仓库", - "author": "ppxxxg22", - "homepage": "https://github.com/ppxxxg22/nonebot_plugin_RealESRGAN", - "tags": [ - { - "label": "图像超分辨率重建", - "color": "#ea5252" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-10-17T07:35:11.987728Z", - "version": "0.2.8", - "skip_test": false - }, - { - "module_name": "nonebot-plugin-wolf-kill", - "project_link": "nonebot-plugin-wolf-kill", - "name": "狼人杀插件", - "desc": "在群里玩狼人杀", - "author": "AbCooly", - "homepage": "https://github.com/AbCooly/nonebot_plugin_wolf_kill", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-12-14T05:29:21.336273Z", - "version": "2.0.4", - "skip_test": false - }, - { - "module_name": "iot", - "project_link": "nonebot-plugin-iot", - "name": "nonebot物联网插件", - "desc": "为nonebot接入物联网提供方案,目前支持天猫精灵终端,后续会增加", - "author": "littlebutt", - "homepage": "https://github.com/littlebutt/nonebot-plugin-iot", - "tags": [ - { - "label": "t:物联网", - "color": "#4b86d7" - }, - { - "label": "t:天猫精灵", - "color": "#4b86d7" - }, - { - "label": "t:IOT", - "color": "#4b86d7" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-10-12T01:56:21.172428Z", - "version": "1.1.0", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_bwiki_navigator", - "project_link": "nonebot-plugin-bwiki-navigator", - "name": "Bwiki Navigator", - "desc": "Bwiki助手(官方移植版)", - "author": "XZhouQD", - "homepage": "https://github.com/xzhouqd/nonebot-plugin-bwiki-navigator", - "tags": [ - { - "label": "wiki", - "color": "#29a5e3" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.2.1", - "time": "2023-06-20T14:52:52.232111Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_bottle", - "project_link": "nonebot-plugin-bottle", - "name": "漂流瓶", - "desc": "群与群互通的漂流瓶插件", - "author": "Todysheep", - "homepage": "https://github.com/Todysheep/nonebot_plugin_bottle", - "tags": [ - { - "label": "漂流瓶", - "color": "#0893f2" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "2.0.0.9", - "time": "2024-03-12T11:34:48.730630Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_tts_gal", - "project_link": "nonebot-plugin-tts-gal", - "name": "vits角色语音合成本地化", - "desc": "基于nonebot2和vits的本地化角色语音合成插件", - "author": "dpm12345", - "homepage": "https://github.com/dpm12345/nonebot_plugin_tts_gal", - "tags": [ - { - "label": "VITS", - "color": "#ea5252" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-04-19T04:44:48.034103Z", - "version": "0.3.11", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_alicdk_get", - "project_link": "nonebot-plugin-alicdk-get", - "name": "阿里云盘福利码自动兑换", - "desc": "基于nonebot2与aligo的阿里云盘兑换码自动获取和兑换插件。", - "author": "Kaguya233qwq", - "homepage": "https://github.com/Kaguya233qwq/nonebot_plugin_alicdk_get", - "tags": [ - { - "label": "兑换码", - "color": "#595fd6" - }, - { - "label": "auto", - "color": "#595fd6" - }, - { - "label": "t:阿里云盘", - "color": "#595fd6" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-09-29T08:46:59.973338Z", - "version": "1.1.1", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_picstatus", - "project_link": "nonebot-plugin-picstatus", - "name": "PicStatus", - "desc": "以图片形式显示当前设备的运行状态", - "author": "lgc2333", - "homepage": "https://github.com/lgc-NB2Dev/nonebot-plugin-picstatus", - "tags": [ - { - "label": "server", - "color": "#8bff00" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.bilibili", - "nonebot.adapters.console", - "nonebot.adapters.ding", - "nonebot.adapters.discord", - "nonebot.adapters.dodo", - "nonebot.adapters.feishu", - "nonebot.adapters.github", - "nonebot.adapters.kaiheila", - "nonebot.adapters.minecraft", - "nonebot.adapters.mirai2", - "nonebot.adapters.ntchat", - "nonebot.adapters.onebot.v11", - "nonebot.adapters.onebot.v12", - "nonebot.adapters.qq", - "nonebot.adapters.red", - "nonebot.adapters.satori", - "nonebot.adapters.telegram" - ], - "valid": true, - "version": "2.0.0.post2", - "time": "2024-03-18T05:35:50.408893Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_tuling", - "project_link": "nonebot-plugin-tuling", - "name": "图灵机器人", - "desc": "接入图灵机器人做聊天", - "author": "koking0", - "homepage": "https://github.com/Matrix-King-Studio/nonebot_plugin_tuling", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-09-25T05:14:38.126012Z", - "version": "0.0.16", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_makemidi", - "project_link": "nonebot_plugin_makemidi", - "name": "在线编曲", - "desc": "发送简谱生成音乐", - "author": "RandomEnch", - "homepage": "https://github.com/RandomEnch/nonebot_plugin_makemidi", - "tags": [ - { - "label": "midi", - "color": "#6515a8" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-07-27T08:43:45.256730Z", - "version": "0.1.12", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_ocr", - "project_link": "nonebot-plugin-ocr", - "name": "文字识别", - "desc": "识别图片中的文字", - "author": "NewYearPrism", - "homepage": "https://github.com/NewYearPrism/nonebot-plugin-ocr", - "tags": [ - { - "label": "ocr ", - "color": "#ea5252" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-10-07T00:32:07.509150Z", - "version": "0.3.2", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_listener", - "project_link": "nonebot-plugin-listener", - "name": "监听者", - "desc": "监听指定消息并转发到指定群", - "author": "AbCooly", - "homepage": "https://github.com/AbCooly/nonebot_plugin_listener", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-10-01T16:59:02.045755Z", - "version": "1.0.2", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_BiliRequestAll", - "project_link": "nonebot-plugin-BiliRequestAll", - "name": "BiliRequestAll", - "desc": "通过B站UID审核入群", - "author": "Shadow403", - "homepage": "https://github.com/Shadow403/nonebot_plugin_BiliRequestAll", - "tags": [ - { - "label": "bilibili", - "color": "#ea52e9" - }, - { - "label": "request", - "color": "#5eea52" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.2.8", - "time": "2023-11-05T14:48:57.579085Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_russian_ban", - "project_link": "nonebot-plugin-russian-ban", - "name": "轮盘禁言小游戏", - "desc": "轮盘禁言小游戏,附送快捷禁言/解禁", - "author": "KarisAya", - "homepage": "https://github.com/KarisAya/nonebot_plugin_russian_ban", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-02-04T15:02:29.961051Z", - "version": "1.0.6", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_ygo_trade", - "project_link": "nonebot-plugin-ygo-trade", - "name": "游戏王小程序查价", - "desc": "集换社游戏王的卡价查询", - "author": "Kaguyaya", - "homepage": "https://github.com/Kaguyaya/nonebot_plugin_ygo_trade", - "tags": [ - { - "label": "游戏王", - "color": "#ea5252" - }, - { - "label": "YGO", - "color": "#ea5252" - }, - { - "label": "集换社", - "color": "#eada52" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-10-11T02:59:10.924095Z", - "version": "1.0.0", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_novelai", - "project_link": "nonebot-plugin-novelai", - "name": "novelai", - "desc": "一个支持novelai、naifu、webui,支持中文功能丰富的ai绘图插件", - "author": "sena-nana", - "homepage": "https://github.com/sena-nana/nonebot-plugin-novelai", - "tags": [ - { - "label": "t:aidraw", - "color": "#ffc646" - }, - { - "label": "t:naifu", - "color": "#ffc646" - }, - { - "label": "t:webui", - "color": "#ffc646" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-03-26T14:17:47.594948Z", - "version": "0.5.9", - "skip_test": false - }, - { - "module_name": "ayaka_games", - "project_link": "ayaka_games", - "name": "ayaka小游戏合集", - "desc": "背包,签到,印加宝藏,接龙(原神/成语),谁是卧底,抢30,mana,加一秒,24点/48点,文字税,祈祷,原神随机事件", - "author": "bridgeL", - "homepage": "https://bridgel.github.io/ayaka_games/", - "tags": [ - { - "label": "a:onebot", - "color": "#0c0c0c" - }, - { - "label": "t:小游戏", - "color": "#e36306" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-04-25T02:07:32.424128Z", - "version": "0.4.1", - "skip_test": false - }, - { - "module_name": "ayaka_timezone", - "project_link": "nonebot-plugin-ayaka-timezone", - "name": "ayaka衍生插件 - 时区助手", - "desc": "提供不同时区时间询问服务", - "author": "bridgeL", - "homepage": "https://github.com/bridgeL/nonebot-plugin-ayaka-timezone", - "tags": [ - { - "label": "a:cqhttp", - "color": "#000000" - }, - { - "label": "a:onebot", - "color": "#000000" - }, - { - "label": "t:timezone", - "color": "#e36306" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-01-30T02:41:21.580609Z", - "version": "0.4.1", - "skip_test": false - }, - { - "module_name": "ayaka_prevent_bad_words", - "project_link": "nonebot-plugin-ayaka-prevent-bad-words", - "name": "ayaka衍生插件 - 坏词撤回", - "desc": "撤回有问题的发言", - "author": "bridgeL", - "homepage": "https://github.com/bridgeL/nonebot-plugin-ayaka-prevent-bad-words", - "tags": [ - { - "label": "a:cqhttp", - "color": "#000000" - }, - { - "label": "a:onebot", - "color": "#000000" - }, - { - "label": "t:撤回", - "color": "#e36306" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-03-25T16:17:13.137593Z", - "version": "0.4.2", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_savor", - "project_link": "nonebot-plugin-savor", - "name": "二次元图像鉴赏", - "desc": "二次元图像分析", - "author": "A-kirami", - "homepage": "https://github.com/A-kirami/nonebot-plugin-savor", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-07-07T18:19:20.688626Z", - "version": "0.2.2", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_kfcrazy", - "project_link": "nonebot-plugin-kfcrazy", - "name": "kfcrazy", - "desc": "肯德基查询插件,输入地区即可查询全国店铺的数据,支持疯狂星期四", - "author": "Kaguya233qwq", - "homepage": "https://github.com/Kaguya233qwq/nonebot_plugin_kfcrazy", - "tags": [ - { - "label": "肯德基", - "color": "#d93b3b" - }, - { - "label": "疯狂星期四", - "color": "#e52124" - }, - { - "label": "KFC", - "color": "#cb5c5e" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-11-14T07:18:05.859088Z", - "version": "2.0.5", - "skip_test": false - }, - { - "module_name": "nonebot-plugin-random", - "project_link": "nonebot-plugin-random", - "name": "通用抽图/语音", - "desc": "Nonebot2 通用抽图/语音插件", - "author": "jcjrobert", - "homepage": "https://github.com/jcjrobert/nonebot-plugin-random", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-01-03T05:49:28.546486Z", - "version": "0.0.9", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_sqlalchemy", - "project_link": "nonebot-plugin-sqlalchemy", - "name": "NoneBot2 SQLAlchemy 插件", - "desc": "为插件开发者提供简单的SQLAlchemy封装", - "author": "ssttkkl", - "homepage": "https://github.com/bot-ssttkkl/nonebot-plugin-sqlalchemy", - "tags": [ - { - "label": "sql", - "color": "#ad1717" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": null, - "valid": true, - "version": "0.2.2", - "time": "2023-07-20T03:51:36.974013Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_blacklist", - "project_link": "nonebot-plugin-blacklist", - "name": "黑名单", - "desc": "黑名单插件", - "author": "tkgs0", - "homepage": "https://github.com/tkgs0/nonebot-plugin-blacklist", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": null, - "valid": true, - "version": "1.3.1", - "time": "2024-02-21T16:24:01.035770Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_antiinsult", - "project_link": "nonebot-plugin-antiinsult", - "name": "反嘴臭", - "desc": "反嘴臭插件", - "author": "tkgs0", - "homepage": "https://github.com/tkgs0/nonebot-plugin-antiinsult", - "tags": [ - { - "label": "被动", - "color": "#ea5252" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": null, - "valid": true, - "version": "0.6.1", - "time": "2024-02-21T16:59:04.055290Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_oddtext", - "project_link": "nonebot-plugin-oddtext", - "name": "文本生成器", - "desc": "抽象话等多种文本生成", - "author": "MeetWq", - "homepage": "https://github.com/noneplugin/nonebot-plugin-oddtext", - "tags": [ - { - "label": "RCNB!", - "color": "#ea5252" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": null, - "valid": true, - "version": "0.2.0", - "time": "2023-06-21T14:35:22.216953Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_mahjong_scoreboard", - "project_link": "nonebot-plugin-mahjong-scoreboard", - "name": "日麻寄分器", - "desc": "为群友提供日麻计分及榜单统计功能", - "author": "ssttkkl", - "homepage": "https://github.com/ssttkkl/nonebot-plugin-mahjong-scoreboard", - "tags": [ - { - "label": "日麻", - "color": "#4684d3" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11", - "nonebot.adapters.qqguild" - ], - "valid": true, - "version": "0.6.0", - "time": "2023-09-08T18:13:18.403764Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_cartoon", - "project_link": "nonebot-plugin-cartoon", - "name": "二次元化图像", - "desc": "对三次元图像动漫化, 打开二次元的大门", - "author": "A-kirami", - "homepage": "https://github.com/A-kirami/nonebot-plugin-cartoon", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-11-01T10:00:27.452979Z", - "version": "0.1.0", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_mahjong_utils", - "project_link": "nonebot-plugin-mahjong-utils", - "name": "麻将小工具", - "desc": "手牌分析、番符点数查询、……", - "author": "ssttkkl", - "homepage": "https://github.com/bot-ssttkkl/nonebot-plugin-mahjong-utils", - "tags": [ - { - "label": "日麻", - "color": "#edad34" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": null, - "valid": true, - "version": "0.4.5", - "time": "2023-12-05T04:45:12.500654Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_animeres", - "project_link": "nonebot-plugin-animeres", - "name": "动漫资源插件", - "desc": "根据关键字搜索动漫资源", - "author": "Melodyknit", - "homepage": "https://github.com/MelodyKnit/nonebot_plugin_animeres", - "tags": [ - { - "label": "anime", - "color": "#ec5252" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": null, - "valid": true, - "version": "1.0.4", - "time": "2023-11-17T12:49:29.527158Z", - "skip_test": false - }, - { - "module_name": "nonebot-plugin-person", - "project_link": "nonebot-plugin-person", - "name": "随个人", - "desc": "随个群友当幸运观众🤪", - "author": "jcjrobert", - "homepage": "https://github.com/jcjrobert/nonebot-plugin-person", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-12-15T02:18:32.344475Z", - "version": "0.0.5", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_apex_api_query", - "project_link": "nonebot-plugin-apex-api-query", - "name": "Apex API Query", - "desc": "Apex Legends API 查询插件", - "author": "H-xiaoH", - "homepage": "https://github.com/H-xiaoH/nonebot-plugin-apex-api-query", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "24.1.2", - "time": "2024-01-02T13:23:43.569097Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_reborn", - "project_link": "nonebot-plugin-reborn", - "name": "投胎模拟器", - "desc": "重生后你会到哪里?", - "author": "Aziteee", - "homepage": "https://github.com/Aziteee/nonebot_plugin_reborn", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-12-14T12:24:39.789332Z", - "version": "0.4", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_searchBiliInfo", - "project_link": "nonebot-plugin-searchBiliInfo", - "name": "b站用户信息查询", - "desc": "查询b站用户粉丝数、舰团信息;主播直播收益数据(总收益、礼物、SC、上舰);用户观看直播信息(观看、弹幕记录);通过关键词搜昵称、UID等", - "author": "Ikaros-521", - "homepage": "https://github.com/Ikaros-521/nonebot_plugin_searchBiliInfo", - "tags": [ - { - "label": "bilibili", - "color": "#e55d80" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-12-24T05:56:31.597811Z", - "version": "1.8.1", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_colab_novelai", - "project_link": "nonebot-plugin-colab-novelai", - "name": "Colab-NovelAI", - "desc": "解放你的双手,让Colab持续给你提供算力生产色图!", - "author": "EtherLeaF", - "homepage": "https://github.com/EtherLeaF/nonebot-plugin-colab-novelai", - "tags": [ - { - "label": "a:onebot", - "color": "#ea5252" - }, - { - "label": "t:NovelAI", - "color": "#eacd52" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-11-21T06:00:40.942510Z", - "version": "0.2.2", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_sky", - "project_link": "nonebot-plugin-sky", - "name": "Sky光遇", - "desc": "光遇的每日任务及活动相关查询插件", - "author": "Kaguya233qwq", - "homepage": "https://github.com/Kaguya233qwq/nonebot_plugin_sky", - "tags": [ - { - "label": "光遇", - "color": "#7ebdf0" - }, - { - "label": "攻略", - "color": "#2079c1" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "2.2.12", - "time": "2023-08-29T02:46:06.270032Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_zyk_novelai", - "project_link": "nonebot-plugin-zyk-novelai", - "name": "免费版NovelAI生图插件", - "desc": "一个用于nonebot2的简约AI绘图插件。没有繁琐的使用指令,配置过程简单迅捷,代码简洁易懂,还有更多功能将会陆续加入。", - "author": "ZYKsslm", - "homepage": "https://github.com/ZYKsslm/nonebot_plugin_zyk_novelai", - "tags": [ - { - "label": "Free", - "color": "#42e22f" - }, - { - "label": "Simple", - "color": "#e2d92f" - }, - { - "label": "Novelai", - "color": "#3e10e9" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-04-29T18:30:02.732845Z", - "version": "2.9.5.2", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_repeep", - "project_link": "nonebot-plugin-repeep", - "name": "谁在窥屏", - "desc": "用于获取QQ中当前窥屏用户信息", - "author": "p0ise", - "homepage": "https://github.com/p0ise/nonebot-plugin-repeep", - "tags": [ - { - "label": "a:onebot", - "color": "#ea5252" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-12-25T11:27:22.670017Z", - "version": "0.1.4", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_gscode", - "project_link": "nonebot-plugin-gscode", - "name": "原神前瞻直播兑换码查询", - "desc": "原神前瞻直播兑换码查询,数据来自米哈游官方接口", - "author": "monsterxcn", - "homepage": "https://github.com/monsterxcn/nonebot-plugin-gscode", - "tags": [ - { - "label": "t:Genshin", - "color": "#ffd49f" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2024-03-17T00:47:03.313876Z", - "version": "0.2.2", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_note", - "project_link": "nonebot-plugin-note", - "name": "记事本", - "desc": "一个有提醒功能的记事本", - "author": "Passerby-D", - "homepage": "https://github.com/Passerby-D/nonebot_plugin_note", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-01-31T21:52:41.397684Z", - "version": "0.2.3", - "skip_test": false - }, - { - "module_name": "nonebot-plugin-bilibili-image", - "project_link": "nonebot-plugin-bilibili-image", - "name": "b站图片下载", - "desc": "b站封面提取,动态图片/专栏图片下载", - "author": "jcjrobert", - "homepage": "https://github.com/jcjrobert/nonebot-plugin-bilibili-image", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-01-02T13:29:23.983038Z", - "version": "0.0.2.1", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_trace_moe", - "project_link": "nonebot-plugin-trace-moe", - "name": "动画截图追溯来源", - "desc": "调用trace.moe的API查询动画截图源自的作品名和时间段", - "author": "Ikaros-521", - "homepage": "https://github.com/Ikaros-521/nonebot_plugin_trace_moe", - "tags": [ - { - "label": "a:onebot", - "color": "#191919" - }, - { - "label": "t:trace", - "color": "#191919" - }, - { - "label": "t:image", - "color": "#00a0ff" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-02-23T06:59:22.061485Z", - "version": "0.1.0", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_zyk_music", - "project_link": "nonebot-plugin-zyk-music", - "name": "免费快捷点歌插件", - "desc": "一个用于nonebot2的点歌插件。操作简单粗暴,交互简洁易懂.", - "author": "ZYKsslm", - "homepage": "https://github.com/ZYKsslm/nonebot_plugin_zyk_music", - "tags": [ - { - "label": "Free", - "color": "#26d019" - }, - { - "label": "Simple", - "color": "#b8c10d" - }, - { - "label": "Music", - "color": "#0d92c1" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-04-29T20:24:24.553805Z", - "version": "0.1.7.2", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_chatgpt", - "project_link": "nonebot-plugin-chatgpt", - "name": "ChatGPT", - "desc": "AI 聊天对话", - "author": "A-kirami", - "homepage": "https://github.com/A-kirami/nonebot-plugin-chatgpt", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-04-12T08:10:27.798634Z", - "version": "0.7.5", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_majsoul", - "project_link": "nonebot-plugin-majsoul", - "name": "雀魂查询", - "desc": "根据牌谱屋的数据查询雀魂账号信息", - "author": "ssttkkl", - "homepage": "https://github.com/bot-ssttkkl/nonebot-plugin-majsoul", - "tags": [ - { - "label": "majsoul", - "color": "#e54141" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.kaiheila", - "nonebot.adapters.onebot.v11", - "nonebot.adapters.onebot.v12", - "nonebot.adapters.qqguild", - "nonebot.adapters.telegram" - ], - "valid": true, - "version": "0.2.5", - "time": "2023-09-28T17:31:31.806098Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_remove_bg", - "project_link": "nonebot-plugin-remove-bg", - "name": "图片背景消除", - "desc": "适用于onebot v11的基于remove.bg的图片背景消除插件", - "author": "Ikaros-521", - "homepage": "https://github.com/Ikaros-521/nonebot_plugin_remove_bg", - "tags": [ - { - "label": "a:onebot", - "color": "#ea5252" - }, - { - "label": "t:img", - "color": "#111111" - }, - { - "label": "t:removeBG", - "color": "#7a7a7a" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-02-28T14:59:42.169057Z", - "version": "0.2.0", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_broadcast", - "project_link": "nonebot-plugin-broadcast", - "name": "全群广播", - "desc": "将你的消息广播到全部群聊中", - "author": "A-kirami", - "homepage": "https://github.com/A-kirami/nonebot-plugin-broadcast", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-12-07T15:42:04.646013Z", - "version": "0.1.0", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_exchangerate", - "project_link": "nonebot-plugin-exchangerate", - "name": "汇率换算", - "desc": "支持汇率换算与汇率查询", - "author": "A-kirami", - "homepage": "https://github.com/A-kirami/nonebot-plugin-exchangerate", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-12-11T05:42:07.616093Z", - "version": "0.1.2", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_access_control", - "project_link": "nonebot-plugin-access-control", - "name": "权限控制", - "desc": "对功能进行权限控制以及调用次数限制", - "author": "ssttkkl", - "homepage": "https://github.com/bot-ssttkkl/nonebot-plugin-access-control", - "tags": [ - { - "label": "权限控制", - "color": "#0e9763" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.console", - "nonebot.adapters.discord", - "nonebot.adapters.dodo", - "nonebot.adapters.feishu", - "nonebot.adapters.kaiheila", - "nonebot.adapters.onebot.v11", - "nonebot.adapters.onebot.v12", - "nonebot.adapters.qq", - "nonebot.adapters.red", - "nonebot.adapters.satori", - "nonebot.adapters.telegram", - "nonebot.adapters.villa" - ], - "valid": true, - "version": "1.1.5", - "time": "2023-11-26T15:18:22.566495Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_colormind", - "project_link": "nonebot-plugin-colormind", - "name": "随机配色方案", - "desc": "调用colormind.io的API随机获取一种配色方案", - "author": "Ikaros-521", - "homepage": "https://github.com/Ikaros-521/nonebot_plugin_colormind", - "tags": [ - { - "label": "a:onebot", - "color": "#000000" - }, - { - "label": "t:color", - "color": "#ffffff" - }, - { - "label": "t:配色", - "color": "#fbff03" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-03-14T03:06:59.760280Z", - "version": "0.1.0", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_abstain_diary", - "project_link": "nonebot-plugin-abstain-diary", - "name": "戒x打卡日记", - "desc": "适用于onebot v11的戒x打卡日记插件。用户可以自定义戒的内容。财能使人贪,色能使人嗜,名能使人矜,潜能使人倚,四患既都去,岂在浮尘里。", - "author": "Ikaros-521", - "homepage": "https://github.com/Ikaros-521/nonebot_plugin_abstain_diary", - "tags": [ - { - "label": "a:onebot", - "color": "#000000" - }, - { - "label": "t:戒", - "color": "#ffffff" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-09-14T01:07:53.526240Z", - "version": "0.1.1", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_backup", - "project_link": "nonebot-plugin-backup", - "name": "QQ群文件备份", - "desc": "备份qq群文件", - "author": "Yuelioi", - "homepage": "https://github.com/Yuelioi/nonebot-plugin-backup", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-01-06T11:42:56.034628Z", - "version": "1.0.5", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_kuma_san", - "project_link": "nonebot-plugin-kuma-san", - "name": "熊老板", - "desc": "用于查询斯普拉遁3场地信息的 NoneBot2 插件", - "author": "ReiiNoki", - "homepage": "https://github.com/ReiiNoki/nonebot-plugin-kuma-san", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-08-03T06:43:46.968063Z", - "version": "1.1.0", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_gpt3", - "project_link": "nonebot-plugin-gpt3", - "name": "GPT3", - "desc": "openai官方api的会话插件", - "author": "chrisyy2003", - "homepage": "https://github.com/chrisyy2003/nonebot-plugin-gpt3", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-04-23T04:12:19.524328Z", - "version": "1.1.9", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_ikun_evolution", - "project_link": "nonebot-plugin-ikun-evolution", - "name": "只因进化录", - "desc": "q群挂机小游戏。开局一只因,进化全靠吞", - "author": "RShock", - "homepage": "https://github.com/RShock/nonebot_plugin_ikun_evolution", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-01-03T03:56:19.261340Z", - "version": "1.0.12", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_random_ban", - "project_link": "nonebot-plugin-random-ban", - "name": "随机禁言", - "desc": "适用于onebot v11的随机禁言一名群员或自己n分钟(n通过传入数字然后随机实现)", - "author": "Ikaros-521", - "homepage": "https://github.com/Ikaros-521/nonebot_plugin_random_ban", - "tags": [ - { - "label": "a:onebot", - "color": "#ea5252" - }, - { - "label": "t:禁言", - "color": "#020202" - }, - { - "label": "t:ban", - "color": "#ffffff" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-06-09T11:06:42.054060Z", - "version": "0.2.1", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_antirecall", - "project_link": "nonebot-plugin-antirecall", - "name": "防撤回", - "desc": "防撤回", - "author": "Jerry080801", - "homepage": "https://github.com/Jerry080801/nonebot-plugin-antirecall/", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-12-26T10:52:50.612059Z", - "version": "0.1.4", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_mc_server_status", - "project_link": "nonebot-plugin-mc-server-status", - "name": "Minecraft服务器信息查询", - "desc": "支持Java和基岩服务器", - "author": "nikissXI", - "homepage": "https://github.com/nikissXI/nonebot_plugins/tree/main/nonebot_plugin_mc_server_status", - "tags": [ - { - "label": "Minecraft", - "color": "#a438cd" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-03-01T02:19:03.062931Z", - "version": "0.2.10", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_no_repeat", - "project_link": "nonebot-plugin-no-repeat", - "name": "不要复读", - "desc": "防止代码炸了在群里复读刷屏,让你写插件的时候更安全", - "author": "bridgeL", - "homepage": "https://github.com/bridgeL/nonebot-plugin-no-repeat", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-12-22T03:21:17.798671Z", - "version": "0.0.1", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_bfchat", - "project_link": "nonebot-plugin-bfchat", - "name": "战地群聊天插件", - "desc": "群内绑定战地一/五账号,快速查询战地战绩,查看服务器信息", - "author": "050644zf", - "homepage": "https://github.com/050644zf/nonebot-plugin-bfchat", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-03-31T10:55:28.710075Z", - "version": "0.3.1", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_summon", - "project_link": "nonebot-plugin-summon", - "name": "群友召唤术", - "desc": "群友召唤术", - "author": "zhulinyv", - "homepage": "https://github.com/zhulinyv/nonebot_plugin_summon", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-07-11T01:13:48.927791Z", - "version": "2.5.4", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_ping", - "project_link": "nonebot-plugin-ping", - "name": "Ping", - "desc": "调用api,获取网站信息", - "author": "zhulinyv", - "homepage": "https://github.com/zhulinyv/nonebot_plugin_ping", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-12-14T06:47:15.299741Z", - "version": "1.7.1", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_face2cartoonpic", - "project_link": "nonebot_plugin_face2cartoonpic", - "name": "腾讯云图像变换", - "desc": "✨基于腾讯云合成图的以图绘图的Nonebot插件✨", - "author": "ANGJustinl", - "homepage": "https://github.com/ANGJustinl/nonebot_plugin_face2cartoonpic_main", - "tags": [ - { - "label": "以图绘图", - "color": "#72f15e" - }, - { - "label": "腾讯云", - "color": "#3785f1" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-12-30T13:37:47.581572Z", - "version": "0.3.2", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_servicestate", - "project_link": "nonebot-plugin-servicestate", - "name": "服务状态查询", - "desc": "API服务状态监测", - "author": "OREOCODEDEV", - "homepage": "https://github.com/OREOCODEDEV/nonebot-plugin-servicestate", - "tags": [ - { - "label": "api", - "color": "#52ea7f" - }, - { - "label": "state", - "color": "#52cfea" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": null, - "valid": true, - "version": "0.2.1", - "time": "2023-09-11T07:21:59.505055Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_animalVoice", - "project_link": "nonebot-plugin-animalVoice", - "name": "AnimalVoice_Convert", - "desc": "✨支持切噜语和兽语的Nonebot译者插件✨", - "author": "ANGJustinl", - "homepage": "https://github.com/ANGJustinl/nonebot_plugin_animalVoice/", - "tags": [ - { - "label": "切噜语~", - "color": "#e75f9d" - }, - { - "label": "兽语", - "color": "#5fe5e7" - }, - { - "label": "加密语言", - "color": "#79e556" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2022-12-29T09:42:07.126510Z", - "version": "0.0.3", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_ayaka_scan_cmd", - "project_link": "nonebot-plugin-ayaka-scan-cmd", - "name": "命令探查", - "desc": "命令探查,缓解下载了新插件却不会使用的焦虑", - "author": "bridgeL", - "homepage": "https://github.com/bridgeL/nonebot-plugin-ayaka-scan-cmd", - "tags": [ - { - "label": "a:onebot", - "color": "#000000" - }, - { - "label": "t:命令探查", - "color": "#e36306" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-02-15T09:34:25.444769Z", - "version": "0.2.0", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_HttpCat", - "project_link": "nonebot-plugin-HttpCat", - "name": "HttpCat🐱猫猫http状态码", - "desc": "✨Nonebot猫猫http状态码插件✨", - "author": "ANGJustinl", - "homepage": "https://github.com/ANGJustinl/nonebot_plugin_HttpCat", - "tags": [ - { - "label": "HttpCat", - "color": "#1f4ddc" - }, - { - "label": "http状态码", - "color": "#dc1f1f" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-01-03T01:58:02.756214Z", - "version": "0.0.2", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_revoke", - "project_link": "nonebot-plugin-revoke", - "name": "主动消息撤回", - "desc": "让机器人撤回自己发出的消息", - "author": "ssttkkl", - "homepage": "https://github.com/ssttkkl/nonebot-plugin-revoke", - "tags": [ - { - "label": "a:onebot", - "color": "#ea5252" - }, - { - "label": "t:gocqhttp", - "color": "#52ea95" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-01-03T06:02:45.041053Z", - "version": "0.1.0", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_setu_customization", - "project_link": "nonebot-plugin-setu-customization", - "name": "setu_customization", - "desc": "可动态管理API并带网页浏览的setu插件", - "author": "nikissXI", - "homepage": "https://github.com/nikissXI/nonebot_plugins/tree/main/nonebot_plugin_setu_customization", - "tags": [ - { - "label": "色图", - "color": "#e9ea52" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-03-31T08:46:11.225617Z", - "version": "1.7.0", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_l4d2_server", - "project_link": "nonebot-plugin-l4d2-server", - "name": "求生之路小助手", - "desc": "可用于管理求生之路查服和本地管理", - "author": "Agnes4m", - "homepage": "https://github.com/Agnes4m/nonebot_plugin_l4d2_server", - "tags": [ - { - "label": "l4d2", - "color": "#05ff00" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.6.6", - "time": "2024-03-03T14:27:28.652529Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_learning_chat", - "project_link": "nonebot-plugin-learning-chat", - "name": "群聊学习", - "desc": "学习群友们的发言、复读以及主动发言", - "author": "CMHopeSunshine", - "homepage": "https://github.com/CMHopeSunshine/nonebot-plugin-learning-chat", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.4.0", - "time": "2023-08-27T03:07:38.424515Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_couplets", - "project_link": "nonebot-plugin-couplets", - "name": "对对联", - "desc": "人工智能和你对对联", - "author": "CMHopeSunshine", - "homepage": "https://github.com/CMHopeSunshine/nonebot-plugin-couplets", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": null, - "valid": true, - "version": "0.2.0", - "time": "2023-06-17T07:46:34.256373Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_Imagelabels", - "project_link": "nonebot-plugin-Imagelabels", - "name": "图像标注", - "desc": "基于yolov5的图像标注插件", - "author": "istrashguy", - "homepage": "https://github.com/istrashguy/nonebot_plugin_Imagelabels", - "tags": [ - { - "label": "Yolov5", - "color": "#9a2828" - }, - { - "label": "图像标注", - "color": "#e981dc" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-01-16T12:19:09.803532Z", - "version": "1.0.0", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_cloudsignx", - "project_link": "nonebot-plugin-cloudsignx", - "name": "云签到", - "desc": "基于云端的签到,所有插件使用者数据互通", - "author": "Monarchdos", - "homepage": "https://github.com/Monarchdos/nonebot_plugin_cloudsign", - "tags": [ - { - "label": "a:云签到", - "color": "#2be491" - }, - { - "label": "a:数据互通", - "color": "#3be42b" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-01-10T07:51:17.175075Z", - "version": "2.0.0", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_imgexploration", - "project_link": "nonebot-plugin-imgexploration", - "name": "查找图片出处", - "desc": "通过saucenao、ascii2d、Google、Yandx查询图片出处", - "author": "cpuopt", - "homepage": "https://github.com/cpuopt/nonebot_plugin_imgexploration", - "tags": [ - { - "label": "a:onebot", - "color": "#ea5252" - }, - { - "label": "t:搜图", - "color": "#453df1" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-06-05T11:01:46.527196Z", - "version": "0.3.2", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_hypixel", - "project_link": "nonebot-plugin-hypixel", - "name": "Hypixel数据查询", - "desc": "查询Hypixel的数据", - "author": "SkyDynamic", - "homepage": "https://github.com/SkyDynamic/nonebot_plugin_hypixel", - "tags": [ - { - "label": "MC", - "color": "#6fea52" - }, - { - "label": "Hypixel", - "color": "#d5ea52" - }, - { - "label": "Hyp", - "color": "#d5ea52" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-01-06T06:58:09.032239Z", - "version": "1.0.1", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_nowtime", - "project_link": "nonebot-plugin-nowtime", - "name": "整点报时", - "desc": "每时每刻正点报时", - "author": "Cvandia", - "homepage": "https://github.com/Cvandia/nonebot_plugin_nowtime", - "tags": [ - { - "label": "整点报时", - "color": "#5eea52" - }, - { - "label": "语音", - "color": "#c84fdb" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.1.5", - "time": "2023-06-19T08:56:04.577230Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_cave", - "project_link": "nonebot-plugin-cave", - "name": "回声洞", - "desc": "PCL2内群的回声洞,添加了审核功能。", - "author": "hmzz804", - "homepage": "https://github.com/hmzz804/nonebot_plugin_cave", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-08-17T16:30:06.762833Z", - "version": "1.1.12", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_xingzuo", - "project_link": "nonebot-plugin-xingzuo", - "name": "星座运势", - "desc": "返回星座的运势", - "author": "mengxinyuan638", - "homepage": "https://github.com/mengxinyuan638/xingzuo_luck", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-01-12T11:59:03.454555Z", - "version": "1.0.3", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_BingImage", - "project_link": "nonebot-plugin-BingImage", - "name": "Bing每日图片获取", - "desc": "获取Bing每日一图", - "author": "ericzhang-debug", - "homepage": "https://github.com/ericzhang-debug/nonebot_plugin_BingImage", - "tags": [ - { - "label": "风景图", - "color": "#0ce354" - }, - { - "label": "Bing", - "color": "#0c43e3" - }, - { - "label": "必应", - "color": "#eddf13" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-01-09T11:19:52.574462Z", - "version": "0.0.1", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_soup", - "project_link": "nonebot-plugin-soup", - "name": "心灵鸡汤", - "desc": "来一碗心灵鸡汤吧", - "author": "Monarchdos", - "homepage": "https://github.com/Monarchdos/nonebot_plugin_soup", - "tags": [ - { - "label": "心灵鸡汤", - "color": "#52eaea" - }, - { - "label": "鸡汤", - "color": "#ea529a" - }, - { - "label": "毒鸡汤", - "color": "#604a55" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-01-11T08:47:29.519685Z", - "version": "1.0.0", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_yuanshen_notice", - "project_link": "nonebot-plugin-yuanshen-notice", - "name": "原神实时公告", - "desc": "实时展示官网最新前20条公告", - "author": "mengxinyuan638", - "homepage": "https://github.com/mengxinyuan638/nonebot_plugin_yuanshen_notice", - "tags": [ - { - "label": "原神", - "color": "#ef3700" - }, - { - "label": "公告", - "color": "#00ef04" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-03-19T06:33:34.236263Z", - "version": "0.1.7", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_bilibili_yuan", - "project_link": "nonebot-plugin-bilibili-yuan", - "name": "哔哩哔哩q群登录", - "desc": "实现哔哩哔哩q群登录的插件", - "author": "mengxinyuan638", - "homepage": "https://github.com/mengxinyuan638/nonebot-plugin-bilibili-yuan", - "tags": [ - { - "label": "bilibili", - "color": "#ea5252" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-01-15T02:59:19.623264Z", - "version": "0.1.0", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_easy_translate", - "project_link": "nonebot-plugin-easy-translate", - "name": "简易谷歌翻译插件", - "desc": "免api key简单谷歌翻译插件", - "author": "nikissXI", - "homepage": "https://github.com/nikissXI/nonebot_plugins/tree/main/nonebot_plugin_easy_translate", - "tags": [ - { - "label": "翻译", - "color": "#ea5252" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-08-27T16:34:04.994806Z", - "version": "0.2.1", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_orangedice", - "project_link": "nonebot-plugin-orangedice", - "name": "orange_dice", - "desc": "具有技能鉴定、人物卡、日志记录的COC用插件", - "author": "BigOrangeQWQ", - "homepage": "https://github.com/BigOrangeQWQ/nonebot_plugin_orangedice", - "tags": [ - { - "label": "dice", - "color": "#08c0bb" - }, - { - "label": "COC", - "color": "#a2bc0c" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.3.9", - "time": "2023-08-03T09:34:33.704052Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_record", - "project_link": "nonebot-plugin-record", - "name": "语音功能", - "desc": "语音功能适配插件,包括语音事件响应器,语音识别、语音合成等功能", - "author": "itsevin", - "homepage": "https://github.com/itsevin/nonebot_plugin_record", - "tags": [ - { - "label": "t:语音", - "color": "#fff35d" - }, - { - "label": "语音识别", - "color": "#37c0f6" - }, - { - "label": "语音事件响应器", - "color": "#18e13c" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-06-09T01:43:43.587003Z", - "version": "1.0.5", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_nya_cook_menu", - "project_link": "nonebot-plugin-nya-cook-menu", - "name": "喵喵自记菜谱", - "desc": "记录生活中的小菜谱", - "author": "nikissXI", - "homepage": "https://github.com/nikissXI/nonebot_plugins/tree/main/nonebot_plugin_nya_cook_menu", - "tags": [ - { - "label": "菜谱", - "color": "#e65de5" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-03-01T02:19:38.388337Z", - "version": "0.1.6", - "skip_test": false - }, - { - "module_name": "criminal_dance", - "project_link": "criminal-dance", - "name": "犯人在跳舞", - "desc": "文字版桌游,犯人在跳舞", - "author": "bridgeL", - "homepage": "https://github.com/bridgeL/criminal_dance", - "tags": [ - { - "label": "t:文字版桌游", - "color": "#e36306" - }, - { - "label": "a:onebot", - "color": "#000000" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-02-15T09:23:15.318321Z", - "version": "0.2.0", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_picmcstat", - "project_link": "nonebot-plugin-picmcstat", - "name": "PicMCStat", - "desc": "将一个 Minecraft 服务器的 MOTD 信息绘制为一张图片", - "author": "lgc2333", - "homepage": "https://github.com/lgc-NB2Dev/nonebot-plugin-picmcstat", - "tags": [ - { - "label": "Minecraft", - "color": "#7fbf55" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": null, - "valid": true, - "version": "0.6.0", - "time": "2024-03-10T07:01:59.615461Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_wantwords", - "project_link": "nonebot-plugin-wantwords", - "name": "反向词典", - "desc": "在nonebot使用wantwords反向词典", - "author": "Limnium", - "homepage": "https://github.com/limnium/nonebot_plugin_wantwords", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-01-22T04:55:16.216491Z", - "version": "0.1.0", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_pvz", - "project_link": "nonebot-plugin-pvz", - "name": "植物大战僵尸小游戏", - "desc": "通过签到获取金币购买植物或者僵尸,放置植物在草坪上抵御入侵,或者进行僵尸入侵来吃掉别人的脑子", - "author": "longchengguxiao", - "homepage": "https://github.com/longchengguxiao/nonebot_plugin_pvz", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-03-02T04:25:36.126660Z", - "version": "1.3.9", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_molar_mass", - "project_link": "nonebot-plugin-molar-mass", - "name": "摩尔质量计算器", - "desc": "帮助中学生计算摩尔质量或相对分子质量的小工具。", - "author": "kifuan", - "homepage": "https://github.com/kifuan/nonebot-plugin-molar-mass", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-03-19T03:38:01.096308Z", - "version": "0.2.3", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_report_manager", - "project_link": "nonebot-plugin-report-manager", - "name": "对话超管", - "desc": "群员通过Bot对话超管", - "author": "Hiroshi12138", - "homepage": "https://github.com/Hiroshi12138/nonebot_plugin_report_manager", - "tags": [ - { - "label": "a:onebot", - "color": "#a95454" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-02-14T08:51:38.642705Z", - "version": "0.2.3", - "skip_test": false - }, - { - "module_name": "qinglan_bot", - "project_link": "qinglan-bot", - "name": "青岚Bot", - "desc": "基于NoneBot的与Minecraft Server互通消息的机器人", - "author": "17TheWord", - "homepage": "https://github.com/17TheWord/qinglan_bot", - "tags": [ - { - "label": "MineCraft", - "color": "#4ef0ea" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.1.6", - "time": "2023-10-08T03:43:01.150609Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_easy_group_manager", - "project_link": "nonebot-plugin-easy-group-manager", - "name": "简易群管女生自用99新", - "desc": "简单的群管插件,BOT不是群主也可以设置管理员啦……", - "author": "zhulinyv", - "homepage": "https://github.com/zhulinyv/nonebot_plugin_easy_group_manager", - "tags": [ - { - "label": "群管", - "color": "#1eb262" - }, - { - "label": "女生自用", - "color": "#b21e82" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-07-25T12:00:28.775065Z", - "version": "0.4.4", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_group_link_guild", - "project_link": "nonebot-plugin-group-link-guild", - "name": "群频互通", - "desc": "将QQ群与QQ频道的消息互通", - "author": "17TheWord", - "homepage": "https://github.com/17TheWord/nonebot-plugin-group-link-guild", - "tags": [ - { - "label": "QQ群", - "color": "#ea5252" - }, - { - "label": "QQ频道", - "color": "#52ead5" - }, - { - "label": "消息互通", - "color": "#50c545" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.0.6", - "time": "2023-06-26T03:57:16.165943Z", - "skip_test": false - }, - { - "module_name": "nonebot-plugin-mcport", - "project_link": "nonebot-plugin-mcport", - "name": "nonebot-plugin-mcport", - "desc": "我的世界JAVA服务器通过RCON连接远程执行命令", - "author": "Proviasw", - "homepage": "https://github.com/Proviasw/nonebot-plugin-mcport", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-02-25T00:13:37.434017Z", - "version": "0.1.6", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_xdu_support", - "project_link": "nonebot_plugin_xdu_support", - "name": "XDU校园服务", - "desc": "Nonebot2插件,提供基础的西电校园服务,如课表提醒,体育打卡查询及提醒,晨午晚检打卡和马原测试等功能。", - "author": "longchengguxiao", - "homepage": "https://github.com/longchengguxiao/nonebot_plugin_xdu_support", - "tags": [ - { - "label": "大学校园", - "color": "#52b5ea" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-08-13T05:03:08.357179Z", - "version": "0.6.2", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_zyk_lightNVL", - "project_link": "nonebot-plugin-zyk-lightNVL", - "name": "查找轻小说", - "desc": "基于哔哩轻小说网站的爬虫插件", - "author": "ZYKsslm", - "homepage": "https://github.com/ZYKsslm/nonebot_plugin_zyk_lightNVL", - "tags": [ - { - "label": "轻小说", - "color": "#ea5252" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-05-02T13:17:07.498476Z", - "version": "0.3.0", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_dog", - "project_link": "nonebot-plugin-dog", - "name": "dog", - "desc": "随机返回一句舔狗日记...嘤嘤嘤和其他文案的插件", - "author": "Reversedeer", - "homepage": "https://github.com/Reversedeer/nonebot_plugin_dog", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.3.1", - "time": "2024-01-08T06:15:02.503507Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_uuid", - "project_link": "nonebot-plugin-uuid", - "name": "uuid生成器", - "desc": "通过 uuid4 与 uuid5 生成 uuid ,并且支持快速去除短横线", - "author": "ZombieFly", - "homepage": "https://github.com/ZombieFly/nonebot-plugin-uuid", - "tags": [ - { - "label": "工具", - "color": "#39c5bb" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-01-30T04:32:08.179665Z", - "version": "0.1.4", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_naturel_gpt", - "project_link": "nonebot-plugin-naturel-gpt", - "name": "更人性化的GPT-Ai聊天插件", - "desc": "一个基于NoneBot框架的Ai聊天插件,对接OpenAi文本生成接口,优化了群聊场景的上下文支持。", - "author": "KroMiose", - "homepage": "https://github.com/KroMiose/nonebot_plugin_naturel_gpt", - "tags": [ - { - "label": "GPT3", - "color": "#66ccff" - }, - { - "label": "OpenAi", - "color": "#cc66ff" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-12-23T19:19:12.265714Z", - "version": "2.2.0", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_impact", - "project_link": "nonebot-plugin-impact", - "name": "impact", - "desc": "让群友们眼前一黑的nonebot2淫趴插件", - "author": "Special-Week", - "homepage": "https://github.com/Special-Week/nonebot_plugin_impact", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.12.114514", - "time": "2024-03-20T14:46:34.935208Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_mcping", - "project_link": "nonebot-plugin-mcping", - "name": "MC Ping", - "desc": "获取 Minecraft JE/BE 服务器 Motd 图片信息", - "author": "17TheWord", - "homepage": "https://github.com/17TheWord/nonebot-plugin-mcping", - "tags": [ - { - "label": "Minecraft", - "color": "#47d754" - }, - { - "label": "服务器状态", - "color": "#d7cd47" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": null, - "valid": true, - "version": "0.0.4", - "time": "2023-06-18T16:58:48.573827Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_b23", - "project_link": "nonebot-plugin-b23", - "name": "B站热搜", - "desc": "获取B站热搜(移动端)", - "author": "eya46", - "homepage": "https://github.com/eya46/nonebot_plugin_b23", - "tags": [ - { - "label": "bilibili", - "color": "#00aeec" - }, - { - "label": "热搜", - "color": "#00aeec" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": null, - "valid": true, - "version": "0.3.0", - "time": "2024-02-12T14:49:36.387789Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_autoreply", - "project_link": "nonebot-plugin-autoreply", - "name": "AutoReply", - "desc": "配置文件高度可自定义的自动回复插件", - "author": "lgc2333", - "homepage": "https://github.com/lgc-NB2Dev/nonebot-plugin-autoreply", - "tags": [ - { - "label": "自动回复", - "color": "#ea881e" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.2.12.post1", - "time": "2024-03-10T21:11:37.771261Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_setu_collection", - "project_link": "nonebot-plugin-setu-collection", - "name": "我要一张xx涩图", - "desc": "从多个api获取色图并根据场景整合的色图插件", - "author": "KarisAya", - "homepage": "https://github.com/KarisAya/nonebot_plugin_setu_collection", - "tags": [ - { - "label": "LoliconAPI", - "color": "#5adba8" - }, - { - "label": "色图", - "color": "#7ab2e1" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2024-03-16T05:46:37.619907Z", - "version": "0.1.8", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_groupmate_waifu", - "project_link": "nonebot-plugin-groupmate-waifu", - "name": "娶群友", - "desc": "娶群友", - "author": "KarisAya", - "homepage": "https://github.com/KarisAya/nonebot_plugin_groupmate_waifu", - "tags": [ - { - "label": "娶群友", - "color": "#ea5252" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-11-06T04:59:20.542238Z", - "version": "1.3.4", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_jrrp2", - "project_link": "nonebot-plugin-jrrp2", - "name": "每日人品2", - "desc": "带数据库可查询历史平均人品的jrrp插件", - "author": "Rene8028", - "homepage": "https://github.com/Rene8028/nonebot_plugin_jrrp2", - "tags": [ - { - "label": "每日人品", - "color": "#ea5252" - }, - { - "label": "jrrp", - "color": "#5290ea" - }, - { - "label": "jrrp2", - "color": "#52bbea" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-02-26T10:59:34.202680Z", - "version": "1.6", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_dicky_pk", - "project_link": "nonebot-plugin-dicky-pk", - "name": "DickyPK", - "desc": "移植自OPQBot的群聊小游戏 CHINCHIN-PK", - "author": "tkgs0", - "homepage": "https://github.com/tkgs0/nonebot-plugin-dicky-pk", - "tags": [ - { - "label": "a:onebot11", - "color": "#000000" - }, - { - "label": "t:群聊小游戏", - "color": "#ffd500" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2024-02-22T03:54:09.830355Z", - "version": "0.5.0", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_eventmonitor", - "project_link": "nonebot-plugin-eventmonitor", - "name": "eventmonitor", - "desc": "监控群事件的插件,支持戳一戳,成员变动,群荣誉变化等提示的插件", - "author": "Reversedeer", - "homepage": "https://github.com/Reversedeer/nonebot_plugin_eventmonitor", - "tags": [ - { - "label": "QQGroup", - "color": "#2885c0" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.2.1", - "time": "2024-01-08T16:11:22.263521Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_whateat_pic", - "project_link": "nonebot-plugin-whateat-pic", - "name": "今天吃喝什么呢", - "desc": "随机推荐吃的和喝的", - "author": "Cvandia", - "homepage": "https://github.com/Cvandia/nonebot-plugin-whateat-pic", - "tags": [ - { - "label": "吃什么", - "color": "#e4ea52" - }, - { - "label": "喝什么", - "color": "#52ea8b" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "1.1.7", - "time": "2023-08-21T08:57:18.767121Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_matcher_block", - "project_link": "nonebot-plugin-matcher-block", - "name": "通用指令阻断", - "desc": "可以为指令添加cd,或在该群屏蔽,支持正则", - "author": "KarisAya", - "homepage": "https://github.com/KarisAya/nonebot_plugin_matcher_block", - "tags": [ - { - "label": "指令阻断", - "color": "#525fea" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-08-20T08:31:44.747967Z", - "version": "0.1.1", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_acm_reminder", - "project_link": "nonebot-plugin-acm-reminder", - "name": "ACMReminder", - "desc": "获取CF/牛客等平台的竞赛信息的插件", - "author": "BigOrangeQWQ", - "homepage": "https://github.com/BigOrangeQWQ/nonebot_plugin_acm_reminder", - "tags": [ - { - "label": "ACM", - "color": "#3b8b74" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-05-15T11:31:08.159916Z", - "version": "0.1.8", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_maimai", - "project_link": "nonebot-plugin-maimai", - "name": "舞萌maimai", - "desc": "适用nonebot2的Maimai插件", - "author": "Agnes4m", - "homepage": "https://github.com/Agnes4m/maimai_plugin", - "tags": [ - { - "label": "maimai", - "color": "#5262ea" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": false, - "version": "0.4.4.post1", - "time": "2023-10-30T03:17:10.051088Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_all4one", - "project_link": "nonebot-plugin-all4one", - "name": "OneBot 实现", - "desc": "让 NoneBot2 成为 OneBot 实现!", - "author": "j1g5awi", - "homepage": "https://github.com/nonepkg/nonebot-plugin-all4one", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.console", - "nonebot.adapters.onebot.v11", - "nonebot.adapters.qqguild", - "nonebot.adapters.telegram" - ], - "valid": true, - "version": "0.1.0a3", - "time": "2023-06-20T14:59:24.276312Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_gsabyss", - "project_link": "nonebot-plugin-gsabyss", - "name": "原神深境螺旋数据查询", - "desc": "原神深渊讨伐列表、渊月祝福、玩家战斗统计等信息查询,数据来自 Honey Hunter World 和 Akasha Database", - "author": "monsterxcn", - "homepage": "https://github.com/monsterxcn/nonebot-plugin-gsabyss", - "tags": [ - { - "label": "t:Genshin", - "color": "#ffd49f" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-10-03T07:00:47.175755Z", - "version": "0.1.5", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_arktools", - "project_link": "nonebot-plugin-arktools", - "name": "明日方舟工具箱", - "desc": "基于 OneBot 适配器的 NoneBot2 明日方舟小工具箱插件", - "author": "NumberSir", - "homepage": "https://github.com/NumberSir/nonebot_plugin_arktools", - "tags": [ - { - "label": "a:onebot", - "color": "#000000" - }, - { - "label": "arknights", - "color": "#22bbff" - }, - { - "label": "t:game", - "color": "#db905e" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-05-04T05:16:51.388596Z", - "version": "1.2.0", - "skip_test": false - }, - { - "module_name": "gartic_room", - "project_link": "nonebot-plugin-gartic-room", - "name": "你画我猜组队", - "desc": "自动创建gartic房间,主题为综合,将房间链接发送到群聊", - "author": "bridgeL", - "homepage": "https://github.com/bridgeL/gartic_room", - "tags": [ - { - "label": "ayaka", - "color": "#e36306" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-02-15T12:14:20.052354Z", - "version": "0.0.3", - "skip_test": false - }, - { - "module_name": "nonebot-plugin-resolver", - "project_link": "nonebot-plugin-resolver", - "name": "链接分享解析器", - "desc": "适用于nonebot2 解析视频、图片链接/小程序插件,tiktok、bilibili、twitter、xhs等实时发送!", - "author": "zhiyu1998", - "homepage": "https://github.com/zhiyu1998/nonebot-plugin-resolver", - "tags": [ - { - "label": "bilibili", - "color": "#f8a5c2" - }, - { - "label": "tiktok", - "color": "#303952" - }, - { - "label": "twitter", - "color": "#1b9cfc" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-03-27T06:15:19.259340Z", - "version": "1.0.13", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_bing_chat", - "project_link": "nonebot-plugin-bing-chat", - "name": "Bing Chat", - "desc": "使用新版必应的聊天功能", - "author": "Harry-Jing", - "homepage": "https://github.com/Harry-Jing/nonebot-plugin-bing-chat", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-04-20T10:28:15.689700Z", - "version": "0.7.11", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_saa", - "project_link": "nonebot-plugin-send-anything-anywhere", - "name": "峯驰物流", - "desc": "一个帮助处理不同 adapter 消息的适配和发送的插件 ", - "author": "felinae98", - "homepage": "https://send-anything-anywhere.felinae98.cn/", - "tags": [], - "is_official": false, - "type": "library", - "supported_adapters": [ - "nonebot.adapters.feishu", - "nonebot.adapters.kaiheila", - "nonebot.adapters.onebot.v11", - "nonebot.adapters.onebot.v12", - "nonebot.adapters.qq", - "nonebot.adapters.red", - "nonebot.adapters.telegram" - ], - "valid": true, - "version": "0.6.0", - "time": "2024-02-23T02:25:20.661005Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_random_stereotypes", - "project_link": "nonebot-plugin-random-stereotypes", - "name": "发病语录", - "desc": "对输入的人,随机返回一条本地的发病语录", - "author": "Ikaros-521", - "homepage": "https://github.com/Ikaros-521/nonebot_plugin_random_stereotypes", - "tags": [ - { - "label": "语录", - "color": "#6a6060" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2024-02-14T11:01:27.302388Z", - "version": "0.2.0", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_xiuxian_2", - "project_link": "nonebot_plugin_xiuxian_2", - "name": "修仙_2.0", - "desc": "基于原版修仙的修改与重构", - "author": "QingMuCat", - "homepage": "https://github.com/QingMuCat/nonebot_plugin_xiuxian_2.0", - "tags": [ - { - "label": "文游", - "color": "#ea5252" - }, - { - "label": "修仙", - "color": "#4e9f9f" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-05-05T13:42:32.700880Z", - "version": "2.9.2.2", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_h2e", - "project_link": "nonebot-plugin-h2e", - "name": "呆呆兽都会起来锻炼 H2E", - "desc": "类似\"今天吃什么\"的一个插件,通过命令返回健身、游泳、瑜伽的锻炼方式啦", - "author": "Gin2O", - "homepage": "https://github.com/Gin2O/nonebot_plugin_h2e", - "tags": [ - { - "label": "锻炼", - "color": "#da4a4a" - }, - { - "label": "t:what2eat", - "color": "#99da4a" - }, - { - "label": "t: how2exe", - "color": "#99da4a" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-02-23T15:18:39.471059Z", - "version": "0.1.3", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_oachat", - "project_link": "nonebot-plugin-oachat", - "name": "呆呆兽都会用的chatbot接api", - "desc": "没有上下文语境的简易chatbot,调用openai API", - "author": "Gin2O", - "homepage": "https://github.com/Gin2O/nonebot_plugin_oachat", - "tags": [ - { - "label": "OpenAI", - "color": "#ea5252" - }, - { - "label": "GPT3", - "color": "#ea5252" - }, - { - "label": "ChatBot", - "color": "#ea5252" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-03-04T16:28:15.886299Z", - "version": "0.1.8", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_warframe_mode", - "project_link": "nonebot-plugin-warframe-mode", - "name": "wf的wm市场", - "desc": "warframe游戏的WM市场查询", - "author": "mmxd12", - "homepage": "https://github.com/mmxd12/nonebot_plugin_warframe_mode", - "tags": [ - { - "label": "星际战甲", - "color": "#ea5252" - }, - { - "label": "warframe", - "color": "#ea5252" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-04-07T02:34:08.571246Z", - "version": "1.1.0", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_bf1_groptools", - "project_link": "nonebot-plugin-bf1-groptools", - "name": "战地一入群审批", - "desc": "战地一通过游戏id的入群审核并其修改群名片为id", - "author": "zzcqie666", - "homepage": "https://github.com/zzcqie666/nonebot_plugin_bf1_groptools", - "tags": [ - { - "label": "战地一", - "color": "#52eae4" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-02-26T02:09:33.525641Z", - "version": "0.0.13", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_afd", - "project_link": "nonebot-plugin-afd", - "name": "爱发电进群审核", - "desc": "审核入群信息判断是否同意进群", - "author": "17TheWord", - "homepage": "https://github.com/17TheWord/nonebot-plugin-afd", - "tags": [ - { - "label": "爱发电", - "color": "#ea5252" - }, - { - "label": "自动审核进群", - "color": "#52eae9" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.0.4", - "time": "2023-12-14T04:52:48.787154Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_eventdone", - "project_link": "nonebot-plugin-eventdone", - "name": "nonebot_plugin_eventdone", - "desc": "远程同意好友", - "author": "PadorFelice", - "homepage": "https://github.com/PadorFelice/nonebot_plugin_eventdone", - "tags": [ - { - "label": "同意好友", - "color": "#ba2d2d" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-02-28T10:38:00.132098Z", - "version": "1.1.1", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_ncm_saying", - "project_link": "nonebot-plugin-ncm-saying", - "name": "网抑云", - "desc": "一开口就老网抑云了", - "author": "techotaku39", - "homepage": "https://github.com/techotaku39/nonebot-plugin-ncm-saying", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-02-28T12:47:07.236766Z", - "version": "0.1.0", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_60s", - "project_link": "nonebot-plugin-60s", - "name": "60s日历", - "desc": "每天60秒读懂世界", - "author": "techotaku39", - "homepage": "https://github.com/techotaku39/nonebot-plugin-60s", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-05-31T11:38:28.620766Z", - "version": "0.2.0", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_AutoRepeater", - "project_link": "nonebot-plugin-AutoRepeater", - "name": "AutoRepeater", - "desc": "连续发送2条相同消息,机器人就会自动 +1。包括普通消息,QQ表情,还有图片(表情包)。支持图片夹文字和表情夹文字的消息!具有动态多群控制和跟随撤回功能(手表API可能无法监测)。", - "author": "DMCSWCG", - "homepage": "https://github.com/DMCSWCG/nonebot-plugin-AutoRepeater", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-03-03T16:52:05.869904Z", - "version": "0.1.4", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_ai_timetable", - "project_link": "nonebot-plugin-ai-timetable", - "name": "小爱课表", - "desc": "一键导入课表、查看课表、提醒上课、查询课程", - "author": "maoxig", - "homepage": "https://github.com/maoxig/nonebot-plugin-ai-timetable", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.3.6", - "time": "2023-09-02T05:52:46.560403Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_sanae", - "project_link": "nonebot-plugin-sanae", - "name": "Sanae", - "desc": "早苗连接器,也可转发其他onebotv11到nb2~", - "author": "Hoshinonyaruko", - "homepage": "https://github.com/Hoshinonyaruko/nonebot-plugin-sanae", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-03-18T07:50:34.572272Z", - "version": "0.0.9", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_arkrecord", - "project_link": "nonebot-plugin-arkrecord", - "name": "明日方舟抽卡记录分析", - "desc": "明日方舟抽卡记录分析与导出", - "author": "zheuziihau", - "homepage": "https://github.com/zheuziihau/nonebot_plugin_arkrecord", - "tags": [ - { - "label": "明日方舟 ", - "color": "#c39191" - }, - { - "label": "游戏", - "color": "#c39191" - }, - { - "label": "抽卡", - "color": "#c39191" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-04-12T16:03:10.678760Z", - "version": "1.7.1", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_chatgpt_turbo", - "project_link": "nonebot-plugin-chatgpt-turbo", - "name": "ChatGPT官方接口版", - "desc": "适配新版OpenAI API的nonebot插件,可以调用官方稳定版ChatGPT进行回复", - "author": "Alpaca4610", - "homepage": "https://github.com/Alpaca4610/nonebot_plugin_chatgpt_turbo", - "tags": [ - { - "label": "ChatGPT", - "color": "#ea5252" - }, - { - "label": "OpenAI", - "color": "#52ea92" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-03-27T02:12:58.838396Z", - "version": "0.3.0", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_chatgpt_on_qq", - "project_link": "nonebot-plugin-chatgpt-on-qq", - "name": "多功能的ChatGPT机器人", - "desc": "基于chatGPT3.5-turboAPI,有利用模板创建新对话、保存历史记录、多重对话不互相干扰等功能", - "author": "Suxmx", - "homepage": "https://github.com/Suxmx/nonebot_plugin_chatgpt_on_qq", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2024-02-17T12:13:50.019025Z", - "version": "1.6.4", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_tuan_chatgpt", - "project_link": "nonebot-plugin-tuan-chatgpt", - "name": "和团子聊天!", - "desc": "来和团子聊天吧~ Powered by chatgpt", - "author": "TheLZY", - "homepage": "https://github.com/TheLZY/nonebot_plugin_tuan_chatgpt", - "tags": [ - { - "label": "t:chat", - "color": "#ff9d97" - }, - { - "label": "t:chatgpt", - "color": "#ff9d97" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-09-16T21:37:00.389809Z", - "version": "0.4.2", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_chatpdf", - "project_link": "nonebot-plugin-chatpdf", - "name": "ChatPDF文章分析", - "desc": "在nonebot中使用ChatPDF的最小实现来中分析文章内容", - "author": "Alpaca4610", - "homepage": "https://github.com/Alpaca4610/nonebot_plugin_chatpdf", - "tags": [ - { - "label": "ChatGPT", - "color": "#ea5252" - }, - { - "label": "ChatPDF", - "color": "#6c7abd" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-03-24T07:41:22.586069Z", - "version": "0.4.0", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_rimofun", - "project_link": "nonebot-plugin-rimofun", - "name": "RimoFun", - "desc": "用 RimoChan 开发的工具做的一个有趣的插件", - "author": "lgc2333", - "homepage": "https://github.com/lgc-NB2Dev/nonebot-plugin-rimofun", - "tags": [ - { - "label": "RimoChan", - "color": "#f3e5bf" - }, - { - "label": "bnhhsh", - "color": "#ebbcc6" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": null, - "valid": true, - "version": "0.3.0", - "time": "2024-03-10T07:19:28.075646Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_customemote", - "project_link": "nonebot-plugin-customemote", - "name": "群聊自定义表情包", - "desc": "发送 表情名称 加 (.jpg或.png或.gif)后缀,就会发送设置好的表情。快速方便,聊天必备。", - "author": "DMCSWCG", - "homepage": "https://github.com/DMCSWCG/nonebot-plugin-customemote/", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-03-11T12:57:44.113082Z", - "version": "0.1.0", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_justsix", - "project_link": "nonebot-plugin-justsix", - "name": "发6", - "desc": "发送6,机器人就回复6", - "author": "iidamie", - "homepage": "https://github.com/iidamie/nonebot_plugin_justsix", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-03-13T10:04:49.409803Z", - "version": "1.0.0", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_simulator_xiuxian", - "project_link": "nonebot-plugin-simulator-xiuxian", - "name": "修仙模拟器", - "desc": "基于原版修仙的修改", - "author": "luoyefufeng", - "homepage": "https://github.com/luoyefufeng/nonebot_plugin_simulator_xiuxian", - "tags": [ - { - "label": "文游", - "color": "#4256da" - }, - { - "label": "修仙1.0", - "color": "#1d1b1c" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-08-19T06:57:44.424649Z", - "version": "0.5.23", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_bracket", - "project_link": "nonebot-plugin-bracket", - "name": "括号补全", - "desc": "补全消息中的括号,治愈强迫症", - "author": "MeetWq", - "homepage": "https://github.com/noneplugin/nonebot-plugin-bracket", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": null, - "valid": true, - "version": "0.2.0", - "time": "2023-06-21T14:51:55.170240Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_gshisbanner", - "project_link": "nonebot-plugin-gshisbanner", - "name": "gshisbanner", - "desc": "这是一个在机器人上获取原神历史卡池的插件", - "author": "forchannot", - "homepage": "https://github.com/forchannot/nonebot-plugin-gshisbanner", - "tags": [ - { - "label": "原神", - "color": "#ea5252" - }, - { - "label": "卡池", - "color": "#52ea56" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11", - "nonebot.adapters.red" - ], - "valid": true, - "version": "1.2.5", - "time": "2024-03-08T09:12:03.746070Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_unoconv", - "project_link": "nonebot-plugin-unoconv", - "name": "unoconv文件转换", - "desc": "基于unoconv的文件转换工具,支持输出pdf、doc、jpg等格式", - "author": "Zeta-qixi", - "homepage": "https://github.com/Zeta-qixi/nonebot-plugin-unoconv", - "tags": [ - { - "label": "文件转换", - "color": "#ea5252" - }, - { - "label": "pdf转换", - "color": "#ea5252" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-03-16T01:16:57.312529Z", - "version": "0.5.7", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_apexranklookup", - "project_link": "nonebot-plugin-apexranklookup", - "name": "apex信息查询", - "desc": "查询apex玩家信息、地图等信息", - "author": "Windylh", - "homepage": "https://github.com/Windylh/nonebot_plugin_apexranklookup", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-10-10T08:56:26.675744Z", - "version": "0.1.7", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_randomnana", - "project_link": "nonebot-plugin-randomnana", - "name": "随机狗妈", - "desc": "随机抽取神乐七奈表情包图片", - "author": "NanakoOfficial", - "homepage": "https://github.com/NanakoOfficial/nonebot_plugin_randomnana", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-05-22T00:46:06.922063Z", - "version": "0.1.3", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_quote", - "project_link": "nonebot-plugin-quote", - "name": "群聊语录库", - "desc": "一款QQ群语录库——支持上传聊天截图为语录,随机投放语录,关键词搜索语录精准投放", - "author": "RongRongJi", - "homepage": "https://github.com/RongRongJi/nonebot_plugin_quote", - "tags": [ - { - "label": "a:onebot", - "color": "#326bad" - }, - { - "label": "t:语录", - "color": "#003f88" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-04-13T19:07:23.124182Z", - "version": "0.3.5", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_memes_api", - "project_link": "nonebot-plugin-memes-api", - "name": "表情包制作", - "desc": "制作各种沙雕表情包", - "author": "MeetWq", - "homepage": "https://github.com/noneplugin/nonebot-plugin-memes-api", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": [], - "valid": true, - "version": "0.3.2", - "time": "2024-03-12T09:44:02.760534Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_rrc", - "project_link": "nonebot-plugin-rrc", - "name": "随机点名", - "desc": "就是群聊点名,让学生感受刺激", - "author": "QingMuCat", - "homepage": "https://github.com/QingMuCat/nonebot-plugin-rrc", - "tags": [ - { - "label": "课堂", - "color": "#ea5252" - }, - { - "label": "抽人", - "color": "#ea5252" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-03-19T07:32:14.760521Z", - "version": "0.0.6", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_hotsearch", - "project_link": "nonebot-plugin-hotsearch", - "name": "多平台热搜获取插件", - "desc": "获取微博/百度/知乎/贴吧/b站的热搜信息", - "author": "Astolfocat", - "homepage": "https://github.com/Astolfocat/nonebot_plugin_hotsearch", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-03-19T04:59:59.139834Z", - "version": "0.1.1", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_ai_interviewer", - "project_link": "nonebot-plugin-ai-interviewer", - "name": "基于OpenAI的AI模拟面试官", - "desc": "本插件基于OpenAI的API开发,在nonebot框架下实现一个聊天式的可自定义面试职位的AI辅助面试官。", - "author": "Alpaca4610", - "homepage": "https://github.com/Alpaca4610/nonebot-plugin-ai-interviewer", - "tags": [ - { - "label": "ChatGPT", - "color": "#4366eb" - }, - { - "label": "模拟面试", - "color": "#af286f" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-03-20T14:33:59.011021Z", - "version": "0.1.1", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_chatglm", - "project_link": "nonebot-plugin-chatglm", - "name": "ChatGLM", - "desc": "基于ChatGLM-6B模型,提供本地中文(汉语)聊天机器人功能", - "author": "DaoMingze", - "homepage": "https://github.com/DaoMingze/zhukebot/tree/main/zhukebot/plugins/chatglm", - "tags": [ - { - "label": "t:Chatbot", - "color": "#4366eb" - }, - { - "label": "ChatGLM", - "color": "#af286f" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-06-04T15:39:45.646722Z", - "version": "0.1.6", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_chatglm6b", - "project_link": "nonebot-plugin-chatglm6b", - "name": "ChatGLM-6B API版", - "desc": "通过ChatGLM-6B API来和已经部署好的ChatGLM对话", - "author": "QNLanYang", - "homepage": "https://github.com/QNLanYang/nonebot_plugin_ChatGLM6B", - "tags": [ - { - "label": "t:ChatGLM", - "color": "#52d6ea" - }, - { - "label": "AI Chat", - "color": "#8e52ea" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-04-08T15:47:04.430159Z", - "version": "0.1.5", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_helloworld", - "project_link": "nonebot-plugin-helloworld", - "name": "Hello World", - "desc": "你好,世界", - "author": "A-kirami", - "homepage": "https://github.com/A-kirami/nonebot-plugin-helloworld", - "tags": [ - { - "label": "good first plugin", - "color": "#6c58f6" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-05-24T11:29:41.026691Z", - "version": "0.2.0", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_overbracket", - "project_link": "nonebot-plugin-overbracket", - "name": "通括膨胀", - "desc": "让你的机器人随机发括号", - "author": "NCBM", - "homepage": "https://github.com/NCBM/nonebot-plugin-overbracket", - "tags": [ - { - "label": "useless", - "color": "#0a930e" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": null, - "valid": true, - "version": "0.1.2", - "time": "2023-06-19T08:06:41.126617Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_miao", - "project_link": "nonebot-plugin-miao", - "name": "口癖", - "desc": "让Bot的发言添加口癖", - "author": "CMHopeSunshine", - "homepage": "https://github.com/CMHopeSunshine/nonebot-plugin-miao", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": null, - "valid": true, - "version": "1.1.0", - "time": "2023-06-20T14:21:31.414654Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_questionmark", - "project_link": "nonebot-plugin-questionmark", - "name": "颠倒问号", - "desc": "发送单个问号 `?` 或 `?`, bot会自动回复颠倒的问号 `¿`", - "author": "NumberSir", - "homepage": "https://github.com/NumberSir/nonebot-plugin-questionmark", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-05-03T08:15:01.898492Z", - "version": "0.4.1", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_genshin_cos", - "project_link": "nonebot-plugin-genshin-cos", - "name": "米游社cos", - "desc": "获取原神coser图片", - "author": "Cvandia", - "homepage": "https://github.com/Cvandia/nonebot_plugin_genshin_cos", - "tags": [ - { - "label": "原神", - "color": "#f55400" - }, - { - "label": "cos", - "color": "#00d0f5" - }, - { - "label": "coser", - "color": "#eb1dd3" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.2.7", - "time": "2024-03-09T13:23:44.009084Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_chatgpt_plus", - "project_link": "nonebot-plugin-chatgpt-plus", - "name": "ChatGPT网页端API", - "desc": "免费、无限使用ChatGPT,PLUS账号可使用ChatGPT4.0,绕过ChatGPT的Cloudflare盾来使用免费网页端ChatGPT", - "author": "AkashiCoin", - "homepage": "https://github.com/AkashiCoin/nonebot-plugin-chatgpt-plus", - "tags": [ - { - "label": "ChatGPT", - "color": "#ea5252" - }, - { - "label": "GPT4", - "color": "#2ecf57" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-11-17T11:16:32.728012Z", - "version": "0.8.9", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_sayoroll", - "project_link": "nonebot-plugin-sayoroll", - "name": "sayoroll", - "desc": "随机数字或随机事件", - "author": "mas-alone", - "homepage": "https://github.com/mas-alone/nonebot-plugin-sayoroll", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": null, - "valid": true, - "version": "0.6.1", - "time": "2024-03-07T04:04:59.513027Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_gw2", - "project_link": "nonebot-plugin-gw2", - "name": "激战2", - "desc": "使用api获取星岬岛信息", - "author": "Agnes4m", - "homepage": "https://github.com/Agnes4m/nonebot_plugin_gw2", - "tags": [ - { - "label": "gw2", - "color": "#52ea5a" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.0.4", - "time": "2023-06-23T05:32:22.625374Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_today_waifu", - "project_link": "nonebot-plugin-today-waifu", - "name": "今日老婆", - "desc": "随机抓取群友做老婆", - "author": "glamorgan9826", - "homepage": "https://github.com/glamorgan9826/nonebot-plugin-today-waifu", - "tags": [ - { - "label": "娱乐", - "color": "#eac752" - }, - { - "label": "每日老婆", - "color": "#9beff6" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-07-25T14:57:04.643842Z", - "version": "0.1.5", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_sleep", - "project_link": "nonebot-plugin-sleep", - "name": "来份睡眠套餐", - "desc": "让bot给你一份精致的睡眠套餐(发指令禁言)", - "author": "mas-alone", - "homepage": "https://github.com/mas-alone/nonebot-plugin-sleep", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2024-02-22T03:15:30.040702Z", - "version": "0.1.1", - "skip_test": false - }, - { - "module_name": "nonebot_api_paddle", - "project_link": "nonebot-api-paddle", - "name": "nonebot_api_paddle", - "desc": "nonebot_api_paddleocr", - "author": "canxin121", - "homepage": "https://github.com/canxin121/nonebot_api_paddleocr", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-04-21T15:52:29.221679Z", - "version": "1.0.3", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_chatppt", - "project_link": "nonebot-plugin-chatppt", - "name": "AI生成PPT", - "desc": "在nonebot框架下实现一个AI生成指定主题PPT的文件并上传到群文件中", - "author": "Alpaca4610", - "homepage": "https://github.com/Alpaca4610/nonebot-plugin-chatppt", - "tags": [ - { - "label": "ChatGPT", - "color": "#ea5252" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-05-05T08:45:56.162272Z", - "version": "0.1.1", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_steam_game_status", - "project_link": "nonebot-plugin-steam-game-status", - "name": "Steam游戏状态", - "desc": "播报群友的Steam游戏状态", - "author": "nek0us", - "homepage": "https://github.com/nek0us/nonebot_plugin_steam_game_status", - "tags": [ - { - "label": "Steam", - "color": "#6690a5" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": false, - "version": "0.1.7", - "time": "2024-02-28T18:40:00.487496Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_bilichat", - "project_link": "nonebot-plugin-bilichat", - "name": "nonebot-plugin-bilichat", - "desc": "多种B站链接解析,视频词云,AI总结,你想要的都在 bilichat", - "author": "Well2333", - "homepage": "https://github.com/Well2333/nonebot-plugin-bilichat", - "tags": [ - { - "label": "哔哩哔哩", - "color": "#ffc8ea" - }, - { - "label": "ChatGPT", - "color": "#75ffc0" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.mirai2", - "nonebot.adapters.onebot.v11", - "nonebot.adapters.onebot.v12", - "nonebot.adapters.qqguild" - ], - "valid": false, - "version": "5.2.0", - "time": "2024-02-22T07:51:13.607536Z", - "skip_test": false - }, - { - "module_name": "GenshinUID", - "project_link": "nonebot-plugin-genshinuid", - "name": "GenshinUID", - "desc": "支持大部分适配器的全功能NoneBot2原神插件", - "author": "KimigaiiWuyi", - "homepage": "https://github.com/KimigaiiWuyi/GenshinUID", - "tags": [ - { - "label": "a:all", - "color": "#ea5252" - }, - { - "label": "原神", - "color": "#000000" - }, - { - "label": "早柚核心", - "color": "#7937a9" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2024-03-18T05:13:47.485271Z", - "version": "4.6.0", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_blive_danmaku", - "project_link": "nonebot-plugin-blive-danmaku", - "name": "B站直播间路灯", - "desc": "通过弹幕记录直播高能点", - "author": "zangxx66", - "homepage": "https://github.com/zangxx66/nonebot_plugin_blive_danmaku", - "tags": [ - { - "label": "t:bilibili", - "color": "#ea5252" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-10-08T08:54:21.863198Z", - "version": "0.4.1", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_clock", - "project_link": "nonebot-plugin-clock", - "name": "nonebot clock 群闹钟 ⏰", - "desc": "支持群聊 私聊的⏰插件", - "author": "Zeta-qixi", - "homepage": "https://github.com/Zeta-qixi/nonebot-plugin-clock", - "tags": [ - { - "label": "闹钟", - "color": "#ea5252" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-05-22T02:06:01.009228Z", - "version": "0.9", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_SDGPT", - "project_link": "nonebot-plugin-SDGPT", - "name": "SDGPT", - "desc": "链接 ChatGPT / Bing / Stable-Diffusion: ChatGPT Bing 聊天, gpt 解析自然语言转 Stable-Diffusion 生成图像", - "author": "thx114", - "homepage": "https://github.com/thx114/sdgpt", - "tags": [ - { - "label": "a:onebot", - "color": "#000000" - }, - { - "label": "chatGPT", - "color": "#54b490" - }, - { - "label": "novelai", - "color": "#f0dc4e" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-05-05T02:47:56.881617Z", - "version": "0.2.8", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_fuckyou", - "project_link": "nonebot-plugin-fuckyou", - "name": "FuckYou", - "desc": "莎士比亚没有士", - "author": "lgc2333", - "homepage": "https://github.com/lgc-NB2Dev/nonebot-plugin-fuckyou", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": null, - "valid": true, - "version": "0.2.0.post1", - "time": "2024-03-10T08:54:32.695129Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_pokemonfusion", - "project_link": "nonebot-plugin-pokemonfusion", - "name": "宝可梦融合", - "desc": "Pokemon Infinite Fusion的中文版融合计算器,支持融合420^2=176400种宝可梦", - "author": "IllusiveBull", - "homepage": "https://github.com/IllusiveBull/nonebot_plugin_pokemonfusion", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-10-24T05:13:39.699321Z", - "version": "1.1.2", - "skip_test": false - }, - { - "module_name": "tatarubot2", - "project_link": "tatarubot2", - "name": "TataruBot2", - "desc": "FF14相关轻量功能,如查物价、logs、看微博等", - "author": "aaron-lii", - "homepage": "https://github.com/aaron-lii/TataruBot2", - "tags": [ - { - "label": "t:FF14", - "color": "#5282ea" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-12-04T02:02:20.511796Z", - "version": "1.0", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_talk_with_chatgpt", - "project_link": "nonebot-plugin-talk-with-chatgpt", - "name": "与ChatGpt聊天", - "desc": "基于accessToken登录的chatgpt聊天插件", - "author": "nikissXI", - "homepage": "https://github.com/nikissXI/nonebot_plugins/tree/main/nonebot_plugin_talk_with_chatgpt", - "tags": [ - { - "label": "chatgpt", - "color": "#1a834e" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-11-23T13:36:55.110924Z", - "version": "0.6.4", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_osuverify", - "project_link": "nonebot-plugin-osuverify", - "name": "osu!入群审批", - "desc": "通过osu!用户名的入群审核并其修改群名片为id", - "author": "mas-alone", - "homepage": "https://github.com/mas-alone/nonebot-plugin-osuverify", - "tags": [ - { - "label": "OSU", - "color": "#eb5d9b" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2024-03-05T09:45:42.028099Z", - "version": "0.1.1", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_bilifan", - "project_link": "nonebot-plugin-bilifan", - "name": "bilifan", - "desc": "b站粉丝牌~", - "author": "Agnes4m", - "homepage": "https://github.com/Agnes4m/nonebot_plugin_bilifan", - "tags": [ - { - "label": "bilibili", - "color": "#ec15c6" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.feishu", - "nonebot.adapters.kaiheila", - "nonebot.adapters.onebot.v11", - "nonebot.adapters.onebot.v12", - "nonebot.adapters.qq", - "nonebot.adapters.red", - "nonebot.adapters.telegram" - ], - "valid": true, - "version": "0.3.2", - "time": "2024-01-25T10:10:05.461565Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_akinator", - "project_link": "nonebot-plugin-akinator", - "name": "Akinator", - "desc": "网络天才", - "author": "lgc2333", - "homepage": "https://github.com/lgc-NB2Dev/nonebot-plugin-akinator", - "tags": [ - { - "label": "Akinator", - "color": "#6599fe" - }, - { - "label": "网络天才", - "color": "#6599fe" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.bilibili", - "nonebot.adapters.console", - "nonebot.adapters.ding", - "nonebot.adapters.discord", - "nonebot.adapters.dodo", - "nonebot.adapters.feishu", - "nonebot.adapters.github", - "nonebot.adapters.kaiheila", - "nonebot.adapters.minecraft", - "nonebot.adapters.mirai2", - "nonebot.adapters.ntchat", - "nonebot.adapters.onebot.v11", - "nonebot.adapters.onebot.v12", - "nonebot.adapters.qq", - "nonebot.adapters.red", - "nonebot.adapters.satori", - "nonebot.adapters.telegram" - ], - "valid": true, - "version": "0.2.0", - "time": "2024-03-10T11:36:13.067923Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_rename", - "project_link": "nonebot-plugin-rename", - "name": "nonebot_plugin_rename", - "desc": "用于更改qq机器人的群名片,内置多种有趣名片", - "author": "forchannot", - "homepage": "https://github.com/forchannot/nonebot_plugin_rename", - "tags": [ - { - "label": "群名片", - "color": "#466bed" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "1.7.1", - "time": "2024-02-03T07:20:38.157409Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_appinsights", - "project_link": "nonebot-plugin-appinsights", - "name": "Nonebot2 AppInsights", - "desc": "Nonebot2 Application Insights 日志连接插件", - "author": "XZhouQD", - "homepage": "https://github.com/xzhouqd/nonebot-plugin-appinsights", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": null, - "valid": true, - "version": "0.2.0", - "time": "2023-06-19T17:05:18.866643Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_brainfuck", - "project_link": "nonebot-plugin-brainfuck", - "name": "brainfuck", - "desc": "一个brainfuck解释器,允许在群聊中输入brainfuck:{command}:{inbox}执行brainfuck代码,并返回outbox", - "author": "campanulamediuml", - "homepage": "https://github.com/campanulamediuml/nonebot-plugin-brainfuck", - "tags": [ - { - "label": "t:dev", - "color": "#ea5252" - }, - { - "label": "t:bf", - "color": "#529fea" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-04-23T04:37:04.094212Z", - "version": "1.0.4", - "skip_test": false - }, - { - "module_name": "nonebot-plugin-coderun", - "project_link": "nonebot-plugin-coderun", - "name": "运行代码", - "desc": "基于runoob.com的在线代码运行插件", - "author": "Yincmewy", - "homepage": "https://github.com/Yincmewy/nonebot_plugin_coderun", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-04-22T12:23:23.324337Z", - "version": "0.0.1", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_abot_place", - "project_link": "nonebot-plugin-abot-place", - "name": "公共画板插件", - "desc": "可以让所有的 Bot 用户一起来画画(参考 Reddit Place)", - "author": "djkcyl", - "homepage": "https://github.com/Aunly/nonebot-plugin-abot-place", - "tags": [ - { - "label": "ABot", - "color": "#52aaea" - }, - { - "label": "Place", - "color": "#ea6dda" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-06-01T09:52:35.801795Z", - "version": "0.1.0.post3", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_megumin", - "project_link": "nonebot-plugin-megumin", - "name": "为美好群聊献上爆炎", - "desc": "现在,你的群友可以触发失传已久的爆裂魔法了", - "author": "youlanan", - "homepage": "https://github.com/youlanan/nonebot_plugin_megumin", - "tags": [ - { - "label": "小游戏", - "color": "#f9971c" - }, - { - "label": "Explosion", - "color": "#f94b1c" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-04-30T02:05:54.367615Z", - "version": "0.0.5", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_manga_translator", - "project_link": "nonebot-plugin-manga-translator", - "name": "图片翻译", - "desc": "利用api翻译图片并返回翻译后的图片", - "author": "maoxig", - "homepage": "https://github.com/maoxig/nonebot-plugin-manga-translator", - "tags": [ - { - "label": "漫画翻译", - "color": "#527bea" - }, - { - "label": "图片翻译", - "color": "#c452ea" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.1.3", - "time": "2023-06-09T12:43:01.115471Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_watermarker", - "project_link": "nonebot-plugin-watermarker", - "name": "水印大师", - "desc": "给bot发的图片增加水印,支持随机水印添加", - "author": "X-Skirt-X", - "homepage": "https://github.com/X-Skirt-X/nonebot-plugin-watermarker", - "tags": [ - { - "label": "t:水印", - "color": "#52eae7" - }, - { - "label": "t:图片水印", - "color": "#ef258f" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-06-03T12:05:50.890757Z", - "version": "0.2.0", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_starrail_calendar", - "project_link": "nonebot-plugin-starrail-calendar", - "name": "星穹铁道活动日历", - "desc": "查看《崩坏:星穹铁道》官方活动", - "author": "nicklly", - "homepage": "https://github.com/nicklly/nonebot_plugin_StarRail_calendar", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-09-17T08:57:38.240552Z", - "version": "1.0.8", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_wordle_help", - "project_link": "nonebot-plugin-wordle-help", - "name": "wordle_help", - "desc": "wordle游戏小助手", - "author": "Special-Week", - "homepage": "https://github.com/Special-Week/Hinata-Bot/tree/main/src/plugins/wordle_help", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.0.3", - "time": "2023-06-20T13:31:24.879980Z", - "skip_test": false - }, - { - "module_name": "nonebot-plugin-csgo-case-simulator", - "project_link": "nonebot-plugin-csgo-case-simulator", - "name": "CSGO开箱模拟器", - "desc": "内置所有最新武器箱,可多箱连开", - "author": "roiiiu", - "homepage": "https://github.com/roiiiu/nonebot-plugin-csgo-case-simulator", - "tags": [ - { - "label": "CSGO", - "color": "#47aeff" - }, - { - "label": "开箱模拟器", - "color": "#ff4781" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2024-02-27T09:24:39.222768Z", - "version": "1.0.1", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_callapi", - "project_link": "nonebot-plugin-callapi", - "name": "CallAPI", - "desc": "使用指令来调用 Bot 的 API", - "author": "lgc2333", - "homepage": "https://github.com/lgc-NB2Dev/nonebot-plugin-callapi", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": null, - "valid": false, - "version": "0.2.0", - "time": "2024-03-10T10:48:00.487466Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_penguin", - "project_link": "nonebot-plugin-penguin", - "name": "nonebot_plugin_penguin", - "desc": "使用nonebot2查询企鹅物流掉落物数据", - "author": "AzideCupric", - "homepage": "https://github.com/AzideCupric/nonebot-plugin-penguin", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": null, - "valid": true, - "version": "0.1.0", - "time": "2023-06-20T15:22:02.968145Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_spark_gpt", - "project_link": "nonebot-plugin-spark-gpt", - "name": "Spark_GPT", - "desc": "将poe,chatgpt,slack claude,Newbing,SydneyBing,google bard,讯飞星火模型(SparkDesk),通义千问等接入qq,tg,kook(原开黑啦),discord多平台用户绑定实现数据互通,并提供webui进行便捷配置,自适应文转图,实现预设人格化bot的便捷创建,使用和管理", - "author": "canxin121", - "homepage": "https://github.com/canxin121/Spark-GPT", - "tags": [ - { - "label": "多来源语言GPT", - "color": "#5599ff" - }, - { - "label": "多平台用户数据互通", - "color": "#ffff77" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.discord", - "nonebot.adapters.kaiheila", - "nonebot.adapters.onebot.v11", - "nonebot.adapters.telegram" - ], - "valid": false, - "version": "2.0.3", - "time": "2023-10-12T14:37:14.174909Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_logpile", - "project_link": "nonebot-plugin-logpile", - "name": "本地日志保存", - "desc": "将 bot 日志记录保存到本地文件中", - "author": "A-kirami", - "homepage": "https://github.com/A-kirami/nonebot-plugin-logpile", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-05-09T20:58:22.826287Z", - "version": "0.1.0", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_arkgacha", - "project_link": "nonebot-plugin-arkgacha", - "name": "明日方舟抽卡模拟", - "desc": "明模拟日方舟抽卡功能,支持模拟十连", - "author": "RF-Tar-Railt", - "homepage": "https://github.com/RF-Tar-Railt/nonebot-plugin-arkgacha", - "tags": [ - { - "label": "game", - "color": "#eaa852" - }, - { - "label": "arknights", - "color": "#5276ea" - }, - { - "label": "抽卡", - "color": "#c852ea" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.bilibili", - "nonebot.adapters.console", - "nonebot.adapters.ding", - "nonebot.adapters.discord", - "nonebot.adapters.dodo", - "nonebot.adapters.feishu", - "nonebot.adapters.github", - "nonebot.adapters.kaiheila", - "nonebot.adapters.minecraft", - "nonebot.adapters.mirai2", - "nonebot.adapters.ntchat", - "nonebot.adapters.onebot.v11", - "nonebot.adapters.onebot.v12", - "nonebot.adapters.qq", - "nonebot.adapters.red", - "nonebot.adapters.satori", - "nonebot.adapters.telegram" - ], - "valid": true, - "version": "0.6.0", - "time": "2024-03-10T15:09:59.474921Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_og", - "project_link": "nonebot-plugin-og", - "name": "链接解析", - "desc": "检测链接并发送网站简介及预览图", - "author": "mute23-code", - "homepage": "https://github.com/mute23-code/nonebot_plugin_og", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-05-13T08:37:54.070197Z", - "version": "0.3.0", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_hoshino_sign", - "project_link": "nonebot-plugin-hoshino-sign", - "name": "签到", - "desc": "从 hoshino 搬过来的 pcr 签到, 略作修改。", - "author": "zhulinyv", - "homepage": "https://github.com/zhulinyv/nonebot_plugin_hoshino_sign", - "tags": [ - { - "label": "PCR", - "color": "#ff0000" - }, - { - "label": "签到", - "color": "#008000" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2024-01-29T01:20:41.320603Z", - "version": "2.3.3", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_multincm", - "project_link": "nonebot-plugin-multincm", - "name": "MultiNCM", - "desc": "网易云多选点歌", - "author": "lgc2333", - "homepage": "https://github.com/lgc-NB2Dev/nonebot-plugin-multincm", - "tags": [ - { - "label": "网易云", - "color": "#ea5252" - }, - { - "label": "ncm", - "color": "#ea5252" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.4.4", - "time": "2023-11-02T14:51:45.862245Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_smallapi", - "project_link": "nonebot-plugin-smallapi", - "name": "小小的WEBAPI调用插件", - "desc": "顾名思义~不要骂我~", - "author": "chaichaisi", - "homepage": "https://github.com/chaichaisi/nonebot_plugin_smallapi", - "tags": [ - { - "label": "webapi", - "color": "#52ea7d" - }, - { - "label": "api", - "color": "#52ea7d" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-07-17T06:23:36.976025Z", - "version": "1.1.0", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_p5generator", - "project_link": "nonebot-plugin-p5generator", - "name": "《女神异闻录5》预告信生成器", - "desc": "可以生成仿《女神异闻录5》中心之怪盗团向罪人宣战的预告信", - "author": "xi-yue-233", - "homepage": "https://github.com/xi-yue-233/nonebot-plugin-p5generator", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-05-18T08:56:25.717856Z", - "version": "0.1.4", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_sd_webui", - "project_link": "nonebot-plugin-sd-webui", - "name": "SD绘画插件", - "desc": "基于stable-diffusion-webui的nonebot绘画插件,支持文生图、图生图、参数指定、模型管理、翻译等功能", - "author": "evan-gyy", - "homepage": "https://github.com/evan-gyy/nonebot_plugin_sd_webui", - "tags": [ - { - "label": "sd", - "color": "#ea5252" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-05-16T07:53:39.816541Z", - "version": "0.1.2", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_session", - "project_link": "nonebot-plugin-session", - "name": "会话id", - "desc": "会话信息提取与会话id定义插件", - "author": "MeetWq", - "homepage": "https://github.com/noneplugin/nonebot-plugin-session", - "tags": [], - "is_official": false, - "type": "library", - "supported_adapters": [ - "nonebot.adapters.console", - "nonebot.adapters.discord", - "nonebot.adapters.dodo", - "nonebot.adapters.feishu", - "nonebot.adapters.kaiheila", - "nonebot.adapters.onebot.v11", - "nonebot.adapters.onebot.v12", - "nonebot.adapters.qq", - "nonebot.adapters.red", - "nonebot.adapters.satori", - "nonebot.adapters.telegram" - ], - "valid": true, - "version": "0.3.1", - "time": "2024-02-25T07:05:33.845496Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_pluginupdatecheck", - "project_link": "nonebot-plugin-pluginupdatecheck", - "name": "便携插件安装器", - "desc": "一个nonebot2的插件便捷安装和升级插件(基于nb-cli和pip)", - "author": "xi-yue-233", - "homepage": "https://github.com/xi-yue-233/nonebot-plugin-pluginupdatecheck", - "tags": [ - { - "label": "便携安装", - "color": "#e42828" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-05-18T17:14:20.083595Z", - "version": "0.1.2", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_stockhelper", - "project_link": "nonebot-plugin-stockhelper", - "name": "股票看盘助手", - "desc": "股票波动超过设定值提醒,省去一直盯盘的烦恼", - "author": "Calanosay", - "homepage": "https://github.com/Calanosay/nonebot_plugin_stockhelper", - "tags": [ - { - "label": "股票", - "color": "#ea5252" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-05-19T10:18:39.940826Z", - "version": "0.1.2", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_githubcard", - "project_link": "nonebot-plugin-githubcard", - "name": "githubcard", - "desc": "检测GitHub仓库链接并自动发送卡片信息(适用于Onebot V11)", - "author": "ElainaFanBoy", - "homepage": "https://github.com/ElainaFanBoy/nonebot_plugin_githubcard", - "tags": [ - { - "label": " Github", - "color": "#171a21" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.2.2", - "time": "2024-03-13T03:26:06.815959Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_lua", - "project_link": "nonebot-plugin-lua", - "name": "nonebot-plugin-lua", - "desc": "在nonebot中执行lua(experimental)", - "author": "synodriver", - "homepage": "https://github.com/synodriver/nonebot_plugin_lua", - "tags": [], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-05-23T15:50:12.147563Z", - "version": "0.0.1.dev2", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_cube", - "project_link": "nonebot-plugin-cube", - "name": "cuber", - "desc": "魔方插件", - "author": "initialencounter", - "homepage": "https://github.com/initialencounter/nonebot-plugin-cube", - "tags": [ - { - "label": "魔方", - "color": "#ea5252" - }, - { - "label": "sqlite3", - "color": "#c2ea52" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-05-23T15:47:57.754235Z", - "version": "1.0.5", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_homo_mathematician", - "project_link": "nonebot-plugin-homo-mathematician", - "name": "homo_mathematician", - "desc": "任何实数都用连续的114514通过加减乘除达成, 任给一组数据都能找出其内在规律(函数表达式)", - "author": "Special-Week", - "homepage": "https://github.com/Special-Week/Hinata-Bot/tree/main/src/plugins/homo_mathematician", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": null, - "valid": true, - "version": "0.0.7", - "time": "2024-03-17T07:43:15.322788Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_puzzle", - "project_link": "nonebot-plugin-puzzle", - "name": "puzzle", - "desc": "数字华容道,拼图游戏,查看群华容排名", - "author": "initialencounter", - "homepage": "https://github.com/initialencounter/nonebot-plugin-puzzle", - "tags": [ - { - "label": "数字华容道", - "color": "#ea5252" - }, - { - "label": "拼图游戏", - "color": "#a7ea52" - }, - { - "label": "puzzle", - "color": "#52eadd" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-05-23T20:38:56.076911Z", - "version": "1.0.2", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_herocard", - "project_link": "nonebot-plugin-herocard", - "name": "本子标题关键词提取", - "desc": "为了方便各位平时搜索本子用,发扬hero精神", - "author": "Xie-Tiao", - "homepage": "https://github.com/Xie-Tiao/nonebot_plugin_herocard", - "tags": [ - { - "label": "文本提取", - "color": "#6bc6bf" - }, - { - "label": "日语", - "color": "#53bbd8" - }, - { - "label": "本子", - "color": "#eea1b1" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-07-10T09:27:24.982052Z", - "version": "1.0.5", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_nagabus", - "project_link": "nonebot-plugin-nagabus", - "name": "NAGA公交车", - "desc": "为群友提供NAGA拼车服务", - "author": "ssttkkl", - "homepage": "https://github.com/bot-ssttkkl/nonebot-plugin-nagabus", - "tags": [ - { - "label": "日麻", - "color": "#b52ee1" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.kaiheila", - "nonebot.adapters.onebot.v11", - "nonebot.adapters.onebot.v12", - "nonebot.adapters.qqguild", - "nonebot.adapters.telegram" - ], - "valid": false, - "version": "0.3.2", - "time": "2023-12-12T12:30:44.770450Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_random_draw", - "project_link": "nonebot-plugin-random-draw", - "name": "随机抽取自定义内容", - "desc": "通过添加各种想要抽取的内容,进行随机抽取。选择困难症的福音", - "author": "Ikaros-521", - "homepage": "https://github.com/Ikaros-521/nonebot_plugin_random_draw", - "tags": [ - { - "label": "随机", - "color": "#ffe0aa" - }, - { - "label": "a:onebot", - "color": "#000000" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-06-11T15:58:58.120380Z", - "version": "0.1.0", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_stable_diffusion_diao", - "project_link": "nonebot-plugin-stable-diffusion-diao", - "name": "stablediffusion绘画插件", - "desc": "另一个绘画插件,支持多SD后端,负载均衡,lora,emb,chatgpt prompt生成,更换模型等等更多功能", - "author": "DiaoDaiaChan", - "homepage": "https://github.com/DiaoDaiaChan/nonebot-plugin-stable-diffusion-diao", - "tags": [ - { - "label": "AI绘图", - "color": "#eaaf52" - }, - { - "label": "SD", - "color": "#eaaf52" - } - ], - "is_official": false, - "type": null, - "supported_adapters": null, - "valid": false, - "time": "2023-11-09T13:01:41.243448Z", - "version": "0.4.7.3", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_al", - "project_link": "nonebot-plugin-al", - "name": "碧蓝航线攻略", - "desc": "碧蓝航线井号榜等等攻略", - "author": "Agnes4m", - "homepage": "https://github.com/Agnes4m/nonebot_plugin_AL", - "tags": [ - { - "label": "bilibili", - "color": "#ea52e5" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.3.10", - "time": "2023-08-04T10:37:18.628816Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_escape_url", - "project_link": "nonebot-plugin-escape-url", - "name": "链接防夹", - "desc": "自动转换发送消息中的URL,逃避URL检测", - "author": "ssttkkl", - "homepage": "https://github.com/bot-ssttkkl/nonebot-plugin-escape-url", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11", - "nonebot.adapters.qqguild" - ], - "valid": true, - "version": "0.1.3.post1", - "time": "2023-06-09T14:54:07.632074Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_twitter", - "project_link": "nonebot-plugin-twitter", - "name": "twitter 推特订阅", - "desc": "订阅 twitter 推文", - "author": "nek0us", - "homepage": "https://github.com/nek0us/nonebot-plugin-twitter", - "tags": [ - { - "label": "twitter", - "color": "#29a8dc" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.2.4", - "time": "2024-01-20T11:49:43.579188Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_pcrjjc", - "project_link": "nonebot-plugin-pcrjjc", - "name": "pcrjjc", - "desc": "公主连结(国服)排名监测工具", - "author": "reine-ishyanami", - "homepage": "https://github.com/reine-ishyanami/nonebot-plugin-pcrjjc", - "tags": [ - { - "label": "公主连结", - "color": "#778a1e" - }, - { - "label": "pcrjjc", - "color": "#778a1e" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.6.2", - "time": "2024-01-05T03:15:36.782405Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_audiocraft", - "project_link": "nonebot-plugin-audiocraft", - "name": "AI作曲", - "desc": "Nonebot框架下的AI作曲插件", - "author": "Alpaca4610", - "homepage": "https://github.com/Alpaca4610/nonebot-plugin-audiocraft", - "tags": [ - { - "label": "AI", - "color": "#ea5252" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.0.5", - "time": "2023-06-19T10:57:18.415643Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_bili_push", - "project_link": "nonebot-plugin-bili-push", - "name": "bili_push", - "desc": "推送b站动态", - "author": "SuperGuGuGu", - "homepage": "https://github.com/SuperGuGuGu/nonebot_plugin_bili_push", - "tags": [ - { - "label": "bilibili", - "color": "#de5d92" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "1.1.20.1", - "time": "2024-03-10T15:14:45.185185Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_warthunder_player_check", - "project_link": "nonebot-plugin-warthunder-player-check", - "name": "战雷查水表", - "desc": "搜索warthunder社区查询玩家履历", - "author": "0Neptune0", - "homepage": "https://github.com/0Neptune0/nonebot-plugin-warthunder-player-check", - "tags": [ - { - "label": "Wathunder", - "color": "#ea5252" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": false, - "version": "0.1.3", - "time": "2023-09-16T08:15:36.199644Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_follow_withdraw", - "project_link": "nonebot-plugin-follow-withdraw", - "name": "follow_withdraw", - "desc": "当命令消息被撤回时,Bot跟随撤回命令结果", - "author": "CMHopeSunshine", - "homepage": "https://github.com/CMHopeSunshine/nonebot-plugin-follow-withdraw", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.kaiheila", - "nonebot.adapters.onebot.v11", - "nonebot.adapters.onebot.v12", - "nonebot.adapters.qqguild" - ], - "valid": true, - "version": "0.2.0", - "time": "2023-06-19T14:34:18.210942Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_error_alert", - "project_link": "nonebot-plugin-error-alert", - "name": "错误告警", - "desc": "当Bot发生运行错误时发送消息提醒", - "author": "ssttkkl", - "homepage": "https://github.com/bot-ssttkkl/nonebot-plugin-error-alert", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.kaiheila", - "nonebot.adapters.onebot.v11", - "nonebot.adapters.onebot.v12", - "nonebot.adapters.qqguild", - "nonebot.adapters.telegram" - ], - "valid": true, - "version": "0.2.0", - "time": "2023-09-10T15:16:08.235679Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_ocgbot_v2", - "project_link": "nonebot-plugin-ocgbot-v2", - "name": "游戏王小蓝卡查", - "desc": "提供游戏王相关服务", - "author": "fireinsect", - "homepage": "https://github.com/fireinsect/nonebot-plugin-ocgbot-v2/", - "tags": [ - { - "label": "游戏王", - "color": "#2ecbed" - }, - { - "label": "ygo", - "color": "#f77117" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": false, - "version": "0.2.9.4", - "time": "2024-03-18T07:02:34.851618Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_helltide", - "project_link": "nonebot-plugin-helltide", - "name": "Diablo4地狱狂潮boss提醒小助手", - "desc": "支持订阅,在D4继续上班", - "author": "QBkira", - "homepage": "https://github.com/QBkira/nonebot-plugin-helltide", - "tags": [ - { - "label": "helltide", - "color": "#ff0000" - }, - { - "label": "diablo4", - "color": "#ff3300" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.1.7", - "time": "2023-06-25T13:19:55.857199Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_userinfo", - "project_link": "nonebot-plugin-userinfo", - "name": "用户信息", - "desc": "多平台的用户信息获取插件", - "author": "MeetWq", - "homepage": "https://github.com/noneplugin/nonebot-plugin-userinfo", - "tags": [], - "is_official": false, - "type": "library", - "supported_adapters": [ - "nonebot.adapters.console", - "nonebot.adapters.discord", - "nonebot.adapters.dodo", - "nonebot.adapters.feishu", - "nonebot.adapters.kaiheila", - "nonebot.adapters.onebot.v11", - "nonebot.adapters.onebot.v12", - "nonebot.adapters.qq", - "nonebot.adapters.red", - "nonebot.adapters.satori", - "nonebot.adapters.telegram" - ], - "valid": true, - "version": "0.2.3", - "time": "2024-03-19T10:39:54.600626Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_poke", - "project_link": "nonebot-plugin-poke", - "name": "戳一戳事件", - "desc": "自定义群聊戳一戳事件", - "author": "Agnes4m", - "homepage": "https://github.com/Agnes4m/nonebot_plugin_poke", - "tags": [ - { - "label": "v11", - "color": "#ea5252" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.1.2", - "time": "2023-08-02T08:32:28.462790Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_friends", - "project_link": "nonebot-plugin-friends", - "name": "远程同意好友", - "desc": "自定义远程同意好友和群聊申请", - "author": "Agnes4m", - "homepage": "https://github.com/Agnes4m/nonebot_plugin_friends", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.1.2", - "time": "2023-08-09T15:10:30.495458Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_update", - "project_link": "nonebot-plugin-update", - "name": "nonebot-plugin-update", - "desc": "用于检测 Nonebot 插件更新的 Nonebot 插件", - "author": "djkcyl", - "homepage": "https://github.com/Aunly/nonebot-plugin-update", - "tags": [ - { - "label": "Nonebot", - "color": "#ea5252" - }, - { - "label": "tool", - "color": "#527dea" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.1.3", - "time": "2023-07-05T13:27:09.922237Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_cp_broadcast", - "project_link": "nonebot-plugin-cp-broadcast", - "name": "算法竞赛比赛查询", - "desc": "可以查询牛客、atcoder、codeforces平台的今天和近几天的比赛信息", - "author": "HuParry", - "homepage": "https://github.com/HuParry/nonebot-plugin-cp-broadcast", - "tags": [ - { - "label": "算法竞赛", - "color": "#ea5252" - }, - { - "label": "比赛播报", - "color": "#55ea52" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": false, - "version": "2.2.0", - "time": "2024-03-06T07:13:17.243452Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_cfassistant", - "project_link": "nonebot-plugin-cfassistant", - "name": "nonebot-plugin-cfassistant", - "desc": "一个支持CF(codeforces)平台查询比赛/比赛提醒/监测分数变化的nonebot机器人插件", - "author": "coyude", - "homepage": "https://github.com/coyude/nonebot-plugin-cfassistant", - "tags": [ - { - "label": "ACM", - "color": "#52eacf" - }, - { - "label": "Codeforces", - "color": "#52eacf" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "1.4", - "time": "2023-07-13T09:19:06.972726Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_splatoon3_schedule", - "project_link": "nonebot-plugin-splatoon3-schedule", - "name": "splatoon3游戏日程查询", - "desc": "一个基于nonebot2框架的splatoon3游戏日程查询插件", - "author": "Cypas", - "homepage": "https://github.com/Cypas/splatoon3-schedule", - "tags": [ - { - "label": "splatoon3", - "color": "#ea5252" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.kaiheila", - "nonebot.adapters.onebot.v11", - "nonebot.adapters.onebot.v12", - "nonebot.adapters.qq", - "nonebot.adapters.telegram" - ], - "valid": true, - "version": "1.7.0", - "time": "2024-03-02T05:39:39.974015Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_capoo", - "project_link": "nonebot-plugin-capoo", - "name": "猫猫虫咖波图片发送", - "desc": "发送capoo指令后bot会随机发出一张capoo的可爱表情包", - "author": "HuParry", - "homepage": "https://github.com/HuParry/nonebot-plugin-capoo", - "tags": [ - { - "label": "猫猫虫咖波", - "color": "#ea5252" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.1.5", - "time": "2024-01-24T11:01:08.207028Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_eventexpiry", - "project_link": "nonebot-plugin-eventexpiry", - "name": "过期事件过滤器", - "desc": "自动过滤过期事件", - "author": "A-kirami", - "homepage": "https://github.com/A-kirami/nonebot-plugin-eventexpiry", - "tags": [], - "is_official": false, - "type": "library", - "supported_adapters": [ - "nonebot.adapters.onebot.v11", - "nonebot.adapters.onebot.v12" - ], - "valid": true, - "version": "0.1.1", - "time": "2023-07-07T18:26:34.752138Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_nobahpicture", - "project_link": "nonebot-plugin-nobahpicture", - "name": "nonebot-plugin-nobahpicture", - "desc": "获取碧蓝档案涩图", - "author": "Lptr-byte", - "homepage": "https://github.com/Lptr-byte/nonebot-plugin-nobahpicture", - "tags": [ - { - "label": "碧蓝档案", - "color": "#00defe" - }, - { - "label": "蔚蓝档案", - "color": "#00defe" - }, - { - "label": "涩图", - "color": "#00defe" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "1.0.2", - "time": "2023-07-10T06:52:29.857291Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_blocker", - "project_link": "nonebot-plugin-blocker", - "name": "Blocker", - "desc": "分群配置关闭Bot插件", - "author": "MerCuJerry", - "homepage": "https://github.com/MerCuJerry/nonebot-plugin-blocker", - "tags": [ - { - "label": "Blocker", - "color": "#39c5bb" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.4.5", - "time": "2024-02-29T08:31:01.720829Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_picture_api", - "project_link": "nonebot-plugin-picture-api", - "name": "nonebot-plugin-picture-api", - "desc": "一款可以自由增删图片指令和api的插件", - "author": "Q1351998764", - "homepage": "https://github.com/Q1351998764/nonebot-plugin-picture-api", - "tags": [ - { - "label": "图片api", - "color": "#ea5252" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "1.5", - "time": "2023-09-19T15:19:49.310145Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_wenan", - "project_link": "nonebot-plugin-wenan", - "name": "nonebot-plugin-wenan", - "desc": "一款可以自由增删文案指令和api的插件", - "author": "Q1351998764", - "homepage": "https://github.com/Q1351998764/nonebot-plugin-wenan", - "tags": [ - { - "label": "文案api", - "color": "#ea5252" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "1.0", - "time": "2023-07-11T12:27:12.020208Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_pjsk", - "project_link": "nonebot-plugin-pjsk", - "name": "Sekai Stickers", - "desc": "基于 NoneBot2 的 Project Sekai 表情包制作插件", - "author": "Agnes4m", - "homepage": "https://github.com/Agnes4m/nonebot_plugin_pjsk", - "tags": [ - { - "label": "pjsk", - "color": "#e852eb" - }, - { - "label": "啤酒烧烤", - "color": "#e852eb" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.bilibili", - "nonebot.adapters.console", - "nonebot.adapters.ding", - "nonebot.adapters.discord", - "nonebot.adapters.dodo", - "nonebot.adapters.feishu", - "nonebot.adapters.github", - "nonebot.adapters.kaiheila", - "nonebot.adapters.minecraft", - "nonebot.adapters.mirai2", - "nonebot.adapters.ntchat", - "nonebot.adapters.onebot.v11", - "nonebot.adapters.onebot.v12", - "nonebot.adapters.qq", - "nonebot.adapters.red", - "nonebot.adapters.satori", - "nonebot.adapters.telegram" - ], - "valid": true, - "version": "0.4.0.post1", - "time": "2024-03-10T10:24:15.027602Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_mongodb", - "project_link": "nonebot-plugin-mongodb", - "name": "MongoDB", - "desc": "基于 MongoDB ODM 的数据库管理插件", - "author": "Well2333", - "homepage": "https://github.com/Well2333/nonebot-plugin-mongodb", - "tags": [ - { - "label": "mongodb", - "color": "#30a340" - }, - { - "label": "beanie", - "color": "#ff0a0a" - } - ], - "is_official": false, - "type": "library", - "supported_adapters": null, - "valid": true, - "version": "0.1.0", - "time": "2023-07-14T10:32:08.006009Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_templates", - "project_link": "nonebot-plugin-templates", - "name": "templates_render", - "desc": "使用htmlrender和jinja2渲染,使用构建的menu,card或dict进行模板渲染", - "author": "canxin121", - "homepage": "https://github.com/canxin121/nonebot_plugin_templates", - "tags": [ - { - "label": "模板渲染", - "color": "#eacd52" - }, - { - "label": "图片生成", - "color": "#adea52" - } - ], - "is_official": false, - "type": "library", - "supported_adapters": null, - "valid": true, - "version": "0.1.6", - "time": "2023-08-24T09:56:33.184091Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_pokesomeone", - "project_link": "nonebot-plugin-pokesomeone", - "name": "指定戳一戳", - "desc": "指定戳某人若干次", - "author": "canxin121", - "homepage": "https://github.com/canxin121/nonebot_plugin_pokesomeone", - "tags": [ - { - "label": "戳一戳", - "color": "#ea5252" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.1.1", - "time": "2023-07-18T16:43:32.796199Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_dall-e", - "project_link": "nonebot-plugin-dall-e", - "name": "DALL-E绘图", - "desc": "使用DALL·E绘图", - "author": "Rockytkg", - "homepage": "https://github.com/Rockytkg/nonebot_plugin_dall-e", - "tags": [ - { - "label": "DALL-E", - "color": "#ea5252" - }, - { - "label": "AI画图", - "color": "#52ea61" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": false, - "time": "2023-07-22T16:19:17.616772Z", - "version": "0.6", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_tempfile", - "project_link": "nonebot-plugin-tempfile", - "name": "方寸狭间", - "desc": "临时文件/IO 依赖注入支持", - "author": "NCBM", - "homepage": "https://github.com/NCBM/nonebot-plugin-tempfile", - "tags": [], - "is_official": false, - "type": "library", - "supported_adapters": null, - "valid": true, - "version": "0.1.0", - "time": "2023-07-21T08:40:50.274108Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_disconnect_notice", - "project_link": "nonebot-plugin-disconnect-notice", - "name": "bot断连通知", - "desc": "bot断连时的通知插件,当前支持邮件通知", - "author": "Cypas", - "homepage": "https://github.com/Cypas/nonebot_plugin_disconnect_notice", - "tags": [ - { - "label": "掉线通知", - "color": "#ea5252" - }, - { - "label": "邮件", - "color": "#52eaa4" - }, - { - "label": "通知", - "color": "#cbea52" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": null, - "valid": true, - "version": "0.1.5", - "time": "2023-07-29T03:19:54.426011Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_BotMailNotice", - "project_link": "nonebot-plugin-BotMailNotice", - "name": "Bot上下线邮件通知", - "desc": "Bot上下线发送邮件通知的插件", - "author": "ZM25XC", - "homepage": "https://github.com/ZM25XC/BotMailNotice", - "tags": [ - { - "label": "Mail", - "color": "#52e5ea" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": null, - "valid": true, - "version": "0.0.3", - "time": "2023-07-24T23:30:29.395759Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_theworld", - "project_link": "nonebot-plugin-theworld", - "name": "The World", - "desc": "「ザ・ワールド」ッ! 時よ止まれ!", - "author": "A-kirami", - "homepage": "https://github.com/A-kirami/nonebot-plugin-theworld", - "tags": [ - { - "label": "JOJO", - "color": "#75147c" - }, - { - "label": "DIO", - "color": "#f9d849" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.1.1", - "time": "2023-07-25T05:07:38.147930Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_nonememe", - "project_link": "nonebot-plugin-nonememe", - "name": "NoneMeme", - "desc": "NoneBot 群大佬的日常", - "author": "lgc2333", - "homepage": "https://github.com/lgc-NB2Dev/nonebot-plugin-nonememe", - "tags": [ - { - "label": "NoneMeme", - "color": "#ea5252" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.bilibili", - "nonebot.adapters.console", - "nonebot.adapters.ding", - "nonebot.adapters.discord", - "nonebot.adapters.dodo", - "nonebot.adapters.feishu", - "nonebot.adapters.github", - "nonebot.adapters.kaiheila", - "nonebot.adapters.minecraft", - "nonebot.adapters.mirai2", - "nonebot.adapters.ntchat", - "nonebot.adapters.onebot.v11", - "nonebot.adapters.onebot.v12", - "nonebot.adapters.qq", - "nonebot.adapters.red", - "nonebot.adapters.satori", - "nonebot.adapters.telegram" - ], - "valid": true, - "version": "0.3.0", - "time": "2024-03-10T08:41:05.982627Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_aujob", - "project_link": "nonebot-plugin-aujob", - "name": "Among US中的TOH模组职业介绍", - "desc": "查询TOH模组里职业的玩法描述", - "author": "qwqZYLqwq", - "homepage": "https://github.com/qwqZYLqwq/nonebot-plugin-aujob", - "tags": [ - { - "label": "among us", - "color": "#48d5bf" - }, - { - "label": "TOH", - "color": "#05c4f2" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": null, - "valid": true, - "version": "1.1.514", - "time": "2023-07-30T04:28:32.184908Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_bind", - "project_link": "nonebot-plugin-bind", - "name": "跨平台账户绑定", - "desc": "nonebot多适配器通用的跨平台账户绑定插件", - "author": "canxin121", - "homepage": "https://github.com/canxin121/nonebot_plugin_bind", - "tags": [ - { - "label": "跨平台", - "color": "#5289ea" - }, - { - "label": "账户绑定", - "color": "#6eb428" - } - ], - "is_official": false, - "type": "library", - "supported_adapters": [ - "nonebot.adapters.feishu", - "nonebot.adapters.kaiheila", - "nonebot.adapters.onebot.v11", - "nonebot.adapters.telegram", - "nonebot.adapters.villa" - ], - "valid": false, - "version": "0.2.2", - "time": "2023-10-12T14:21:47.024420Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_savepic", - "project_link": "nonebot-plugin-savepic", - "name": "Savepic", - "desc": "表情包保存", - "author": "Yan-Zero", - "homepage": "https://github.com/Yan-Zero/nonebot-plugin-savepic", - "tags": [ - { - "label": "表情包", - "color": "#ea5252" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": false, - "time": "2023-08-03T04:30:17.668544Z", - "version": "0.2.0", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_lostark_wandering_trader", - "project_link": "nonebot-plugin-lostark-wandering-trader", - "name": "命运方舟流浪商人卡牌刷新提示", - "desc": "国服命运方舟流浪商人稀有史诗传说卡牌刷新提示", - "author": "EmiyaGm", - "homepage": "https://github.com/EmiyaGm/nonebot-plugin-lostark-wandering-trader", - "tags": [ - { - "label": "命运方舟", - "color": "#5289ea" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.2.2", - "time": "2023-09-13T07:03:06.585759Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_csornament", - "project_link": "nonebot-plugin-csornament", - "name": "CSGO饰品查询机器人", - "desc": "一款模拟查找饰品价格的机器人", - "author": "Sydrr0", - "homepage": "https://github.com/Sydrr0/nonebot-plugin-csornament", - "tags": [ - { - "label": "CS:GO", - "color": "#047b97" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": null, - "valid": true, - "version": "0.2.0", - "time": "2023-08-20T09:19:00.439404Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_kanonbot", - "project_link": "nonebot-plugin-kanonbot", - "name": "KanonBot", - "desc": "KanonBot for Nonebot2", - "author": "SuperGuGuGu", - "homepage": "https://github.com/SuperGuGuGu/nonebot_plugin_kanonbot", - "tags": [ - { - "label": "KanonBot", - "color": "#44ddff" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.qq" - ], - "valid": true, - "version": "0.3.2", - "time": "2024-01-10T12:59:58.241358Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_mcversion", - "project_link": "nonebot-plugin-mcversion", - "name": "MC版本更新检测", - "desc": "一个用于检测MC最新版本的插件", - "author": "CN171-1", - "homepage": "https://github.com/CN171-1/nonebot_plugin_mcversion", - "tags": [ - { - "label": "版本", - "color": "#ea5252" - }, - { - "label": "MC", - "color": "#52e7ea" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.3.0", - "time": "2023-09-03T09:16:33.881303Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_muteme", - "project_link": "nonebot-plugin-muteme", - "name": "Muteme(我禁我自己)", - "desc": "高仿@能干辉的muteme,我禁我自己", - "author": "XTxiaoting14332", - "homepage": "https://github.com/XTxiaoting14332/nonebot-plugin-muteme", - "tags": [ - { - "label": "禁言", - "color": "#e45b8d" - }, - { - "label": "muteme", - "color": "#5bc2e4" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": false, - "time": "2023-08-21T02:01:58.764932Z", - "version": "0.0.5", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_jx3", - "project_link": "nonebot-plugin-jx3", - "name": "剑网三查询和推送", - "desc": "是一个使用 NoneBot 框架编写的插件,提供多种剑网三功能如日常查询,预测,金价查询,鲜花,公告,沙盘,jjc,黑市,骚话,奇遇,招募以及多种消息推送功能。", - "author": "fuyang0811", - "homepage": "https://github.com/fuyang0811/nonebot-plugin-jx3", - "tags": [ - { - "label": "剑网三", - "color": "#ea5252" - }, - { - "label": "jx3", - "color": "#ea5252" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.7", - "time": "2023-09-04T17:21:11.860171Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_xinghuo_api", - "project_link": "nonebot-plugin-xinghuo-api", - "name": "科大讯飞星火大模型聊天", - "desc": "Nonebot框架下的科大讯飞星火大模型聊天插件,已适配V2.0版API", - "author": "Alpaca4610", - "homepage": "https://github.com/Alpaca4610/nonebot-plugin-xinghuo-api", - "tags": [ - { - "label": "AI", - "color": "#ea5252" - }, - { - "label": "Chat", - "color": "#ea5252" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "2.2.0", - "time": "2024-01-31T04:22:26.549372Z", - "skip_test": false - }, - { - "module_name": "dicergirl", - "project_link": "dicergirl", - "name": "DicerGirl", - "desc": "新一代跨平台开源 TRPG 骰娘框架", - "author": "fu050409", - "homepage": "https://gitee.com/unvisitor/dicer", - "tags": [ - { - "label": "跑团", - "color": "#ea5252" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": null, - "valid": true, - "version": "3.5.1", - "time": "2023-11-22T03:42:16.918080Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_uvdiviner", - "project_link": "nonebot-plugin-uvdiviner", - "name": "周易蓍草占卜", - "desc": "基于古蓍草占卜的算法, 简单的使用`.divine`指令.", - "author": "fu050409", - "homepage": "https://gitee.com/unvisitor/nonebot-plugin-uvdiviner", - "tags": [ - { - "label": "占卜", - "color": "#440e0e" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": null, - "valid": false, - "version": "2.2.11", - "time": "2023-10-12T06:29:12.854171Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_push", - "project_link": "nonebot-plugin-push", - "name": "消息推送插件", - "desc": "通过邮件、Feishu Webhook 等方式推送消息", - "author": "mobyw", - "homepage": "https://github.com/mobyw/nonebot-plugin-push", - "tags": [ - { - "label": "邮件", - "color": "#91c0bd" - }, - { - "label": "飞书", - "color": "#7aaccc" - }, - { - "label": "推送", - "color": "#9e97c4" - } - ], - "is_official": false, - "type": "library", - "supported_adapters": null, - "valid": true, - "version": "0.1.0", - "time": "2023-08-15T07:00:53.896995Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_sudo", - "project_link": "nonebot-plugin-sudo", - "name": "SUDO", - "desc": "以指定用户身份执行命令", - "author": "This-is-XiaoDeng", - "homepage": "https://github.com/This-is-XiaoDeng/nonebot-plugin-sudo", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "1.0.6", - "time": "2023-09-08T14:15:08.370605Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_arxivRSS", - "project_link": "nonebot-plugin-arxivRSS", - "name": "arxiv订阅", - "desc": "订阅arxiv指定领域每天更新的论文", - "author": "LuckySJTU", - "homepage": "https://github.com/LuckySJTU/nonebot-plugin-arxivRSS/", - "tags": [ - { - "label": "arxiv", - "color": "#f30f0f" - }, - { - "label": "RSS", - "color": "#70a7d8" - }, - { - "label": "论文", - "color": "#f541dc" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.2.0", - "time": "2023-10-13T08:32:19.030042Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_anime_trace", - "project_link": "nonebot-plugin-anime-trace", - "name": "识别动漫gal角色", - "desc": "通过ai.animedb.cn的api识别动漫、galgame角色", - "author": "tomorinao-www", - "homepage": "https://github.com/tomorinao-www/nonebot-plugin-anime-trace", - "tags": [ - { - "label": "AI", - "color": "#f541dc" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.1.5", - "time": "2024-03-16T11:04:32.039016Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_send_message", - "project_link": "nonebot-plugin-send-message", - "name": "双向聊天插件", - "desc": "一个支持双向聊天的传话插件,可用于临时聊天而不想加好友场景", - "author": "bingqiu456", - "homepage": "https://github.com/bingqiu456/nonebot_plugin_send_message", - "tags": [ - { - "label": "传话", - "color": "#52ea75" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "3.2", - "time": "2023-08-22T12:44:22.314961Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_requests", - "project_link": "nonebot-plugin-requests", - "name": "Nonebot Requests", - "desc": "封装 ForwardDriver 实现 HttpClient 功能", - "author": "Ailitonia", - "homepage": "https://github.com/Ailitonia/nonebot-plugin-requests", - "tags": [ - { - "label": "requests", - "color": "#80bcc2" - } - ], - "is_official": false, - "type": "library", - "supported_adapters": null, - "valid": true, - "version": "0.1.3", - "time": "2023-09-25T17:48:14.809234Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_shutup", - "project_link": "nonebot-plugin-shutup", - "name": "雪豹闭嘴", - "desc": "基于 NoneBot2 的 插件,用于机器人当前会话闭嘴,支持全适配器", - "author": "Agnes4m", - "homepage": "https://github.com/Agnes4m/nonebot_pluigin_shutup", - "tags": [ - { - "label": "阻断", - "color": "#ea5252" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": null, - "valid": true, - "version": "0.0.3", - "time": "2023-08-28T06:30:44.585765Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_simple_httpcat", - "project_link": "nonebot-plugin-simple-httpcat", - "name": "httpcat-状态猫😺", - "desc": "简单粗暴的httpcat插件,参考了zjkwdy大佬的weather_lite插件", - "author": "XTxiaoting14332", - "homepage": "https://github.com/XTxiaoting14332/nonebot-plugin-simple-httpcat", - "tags": [ - { - "label": "httpcat", - "color": "#5dbfc8" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.0.1", - "time": "2023-08-27T04:32:21.171303Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_qrcode2", - "project_link": "nonebot-plugin-qrcode2", - "name": "二维码", - "desc": "通过pyzbar解析二维码", - "author": "tomorinao-www", - "homepage": "https://github.com/tomorinao-www/nonebot-plugin-qrcode2", - "tags": [ - { - "label": "qrcode", - "color": "#f541dc" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.2.2", - "time": "2024-03-16T10:40:56.486675Z", - "skip_test": true - }, - { - "module_name": "nonebot_plugin_fakemsg", - "project_link": "nonebot-plugin-fakemsg", - "name": "消息伪造", - "desc": "伪造消息", - "author": "Cvandia", - "homepage": "https://github.com/Cvandia/nonebot-plugin-fakemsg", - "tags": [ - { - "label": "合并转发", - "color": "#1ae32c" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.1.5", - "time": "2024-03-13T05:05:31.741432Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_alchelper", - "project_link": "nonebot-plugin-alchelper", - "name": "Alconna 帮助工具", - "desc": "基于 nonebot-plugin-alconna,给出所有命令帮助以及统计", - "author": "RF-Tar-Railt", - "homepage": "https://github.com/RF-Tar-Railt/nonebot-plugin-alchelper", - "tags": [ - { - "label": "Alconna", - "color": "#ea5252" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.bilibili", - "nonebot.adapters.console", - "nonebot.adapters.ding", - "nonebot.adapters.discord", - "nonebot.adapters.dodo", - "nonebot.adapters.feishu", - "nonebot.adapters.github", - "nonebot.adapters.kaiheila", - "nonebot.adapters.minecraft", - "nonebot.adapters.mirai2", - "nonebot.adapters.ntchat", - "nonebot.adapters.onebot.v11", - "nonebot.adapters.onebot.v12", - "nonebot.adapters.qq", - "nonebot.adapters.red", - "nonebot.adapters.satori", - "nonebot.adapters.telegram" - ], - "valid": true, - "version": "0.5.0", - "time": "2024-03-17T08:36:12.645103Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_souti", - "project_link": "nonebot-plugin-souti", - "name": "nonebot-plugin-souti", - "desc": "使用百度不挂科题库, 可以实现文字搜题功能", - "author": "xiaoWangSec", - "homepage": "https://github.com/xiaoWangSec/nonebot-plugin-souti", - "tags": [ - { - "label": "搜题", - "color": "#49e3d5" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": null, - "valid": true, - "version": "1.0.1", - "time": "2023-09-01T10:26:54.019224Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_helper_plus", - "project_link": "nonebot-plugin-helper-plus", - "name": "helper_plus", - "desc": "带有指令调用控制的高级helper", - "author": "fR0Z863xF", - "homepage": "https://github.com/fR0Z863xF/nonebot-plugin-helper-plus", - "tags": [ - { - "label": "帮助", - "color": "#eae152" - }, - { - "label": "命令控制", - "color": "#52ea5c" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.1.5", - "time": "2023-09-02T10:51:28.827248Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_wearskirt", - "project_link": "nonebot-plugin-wearskirt", - "name": "女装 !", - "desc": "Nonebot 赛博女装插件", - "author": "Lfhsheng", - "homepage": "https://github.com/Lfhsheng/nonebot-plugin-wearskirt", - "tags": [ - { - "label": "女装", - "color": "#ffc0cb" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": null, - "valid": false, - "version": "0.1.5", - "time": "2023-09-14T11:46:33.966622Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_skland_arksign", - "project_link": "nonebot-plugin-skland-arksign", - "name": "森空岛明日方舟签到器", - "desc": "私聊机器人以获得自动明日方舟森空岛签到服务", - "author": "GuGuMur", - "homepage": "https://github.com/GuGuMur/nonebot-plugin-skland-arksign", - "tags": [ - { - "label": "森空岛", - "color": "#c8eb21" - }, - { - "label": "明日方舟", - "color": "#111111" - }, - { - "label": "签到", - "color": "#ea5252" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.feishu", - "nonebot.adapters.kaiheila", - "nonebot.adapters.onebot.v11", - "nonebot.adapters.onebot.v12", - "nonebot.adapters.qq", - "nonebot.adapters.red", - "nonebot.adapters.telegram" - ], - "valid": true, - "version": "0.7.0", - "time": "2024-03-10T01:03:45.969491Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_group_whitelist", - "project_link": "nonebot-plugin-group-whitelist", - "name": "nonebot_plugin_group_whitelist", - "desc": "简易群聊白名单", - "author": "Rikka-desu", - "homepage": "https://github.com/Rikka-desu/nonebot_plugin_group_whitelist", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.9.2", - "time": "2023-09-03T14:45:25.318037Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_ernie", - "project_link": "nonebot-plugin-ernie", - "name": "文心一言", - "desc": "Nonebot框架下的文心一言聊天插件", - "author": "Noctulus", - "homepage": "https://github.com/Noctulus/nonebot-plugin-ernie", - "tags": [ - { - "label": "文心一言", - "color": "#2e317c" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": null, - "valid": true, - "version": "0.2.4", - "time": "2023-09-06T15:34:07.940810Z", - "skip_test": false - }, - { - "module_name": "TeenStudy", - "project_link": "teenstudy", - "name": "青年大学习提交", - "desc": "一个可以自动提交多地区青年大学习的插件", - "author": "TeenStudyFlow", - "homepage": "https://github.com/YouthLearning/TeenStudy", - "tags": [ - { - "label": "青年大学习", - "color": "#7aea52" - }, - { - "label": "Web UI", - "color": "#52eaea" - }, - { - "label": "多地区", - "color": "#dfea52" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.2.6", - "time": "2023-12-03T07:01:14.234788Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_video_api", - "project_link": "nonebot-plugin-video-api", - "name": "nonebot-plugin-video-api", - "desc": "一款可以自由增删视频指令和api的插件", - "author": "Q1351998764", - "homepage": "https://github.com/Q1351998764/nonebot-plugin-video-api", - "tags": [ - { - "label": "视频api", - "color": "#14d8de" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "1.4", - "time": "2023-09-20T12:28:56.131803Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_ottohzys", - "project_link": "nonebot-plugin-ottohzys", - "name": "大电老师活字印刷", - "desc": "大家好啊,今天来点大家想看的东西", - "author": "lgc2333", - "homepage": "https://github.com/lgc-NB2Dev/nonebot-plugin-ottohzys", - "tags": [ - { - "label": "otto", - "color": "#00a6ed" - }, - { - "label": "电棍", - "color": "#00a6ed" - }, - { - "label": "活字印刷", - "color": "#00a6ed" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": false, - "version": "0.2.0", - "time": "2024-03-10T07:21:27.575594Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_ability", - "project_link": "nonebot-plugin-ability", - "name": "聚能环", - "desc": "NoneBot 外置电池", - "author": "KomoriDev", - "homepage": "https://github.com/KomoriDev/nonebot-plugin-ability", - "tags": [ - { - "label": "🔋", - "color": "#8bff00" - } - ], - "is_official": false, - "type": "library", - "supported_adapters": null, - "valid": true, - "version": "0.1.0", - "time": "2023-10-02T06:03:55.280585Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_agent", - "project_link": "nonebot-plugin-agent", - "name": "Nonebot Agent", - "desc": "适配你的插件,让 LLM 来为你处理用户调用", - "author": "Dobiichi-Origami", - "homepage": "https://github.com/Dobiichi-Origami/nonebot-plugin-agent#nonebot-plugin-agent", - "tags": [ - { - "label": "agent", - "color": "#99ccff" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": null, - "valid": true, - "version": "0.0.1", - "time": "2023-10-03T10:24:53.288475Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_blockwords", - "project_link": "nonebot-plugin-blockwords", - "name": "屏蔽词插件", - "desc": "接收的消息或机器人发送的消息进行屏蔽词检查", - "author": "MelodyKnit", - "homepage": "https://github.com/MelodyKnit/nonebot-plugin-blockwords", - "tags": [ - { - "label": "word", - "color": "#99ccff" - }, - { - "label": "屏蔽词", - "color": "#ffcc99" - }, - { - "label": "blockwords", - "color": "#ffcc99" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": null, - "valid": true, - "version": "0.2.1", - "time": "2023-11-17T12:30:39.467239Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_matchreminder", - "project_link": "nonebot-plugin-matchreminder", - "name": "算法比赛查询和今日比赛自动提醒", - "desc": "可以查询牛客、atcoder、codeforces平台比赛信息并在今日比赛前进行提醒(请在.env.prod添加或修改超级用户,以免出现意料之外的错误)", - "author": "zhuhiki", - "homepage": "https://github.com/zhuhiki/nonebot_plugin_matchreminder", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "1.0.4", - "time": "2023-10-27T03:22:47.419866Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_eop_ai", - "project_link": "nonebot-plugin-eop-ai", - "name": "talk with eop ai", - "desc": "Nonebot2 一款调用eop api的AI聊天插件", - "author": "nikissXI", - "homepage": "https://github.com/nikissXI/nonebot_plugins/tree/main/nonebot_plugin_eop_ai", - "tags": [ - { - "label": "POE", - "color": "#bf40bf" - }, - { - "label": "GPT", - "color": "#aaff00" - }, - { - "label": "AI", - "color": "#fa5f55" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.1.6", - "time": "2023-11-21T11:31:18.190458Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_playercheck", - "project_link": "nonebot-plugin-playercheck", - "name": "nonebot-plugin-playercheck", - "desc": "一个查询群友音游成分的插件", - "author": "Ohdmire", - "homepage": "https://github.com/ohdmire/nonebot-plugin-playercheck", - "tags": [ - { - "label": "音游", - "color": "#ec623c" - }, - { - "label": "成分", - "color": "#ef5ec4" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "1.5.9", - "time": "2023-10-09T12:40:24.966289Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_op_finder", - "project_link": "nonebot-plugin-op-finder", - "name": "op-finder", - "desc": "显示当前正在玩原神的人", - "author": "ninthseason", - "homepage": "https://github.com/ninthseason/nonebot-plugin-op-finder", - "tags": [ - { - "label": "原神", - "color": "#00a0ea" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.kaiheila" - ], - "valid": true, - "version": "1.0.0", - "time": "2023-10-06T16:40:22.375740Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_morep_finder", - "project_link": "nonebot-plugin-morep-finder", - "name": "morep-finder", - "desc": "显示当前正在玩特定游戏的人", - "author": "ninthseason", - "homepage": "https://github.com/ninthseason/nonebot-plugin-morep-finder", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.kaiheila" - ], - "valid": true, - "version": "1.0.0", - "time": "2023-10-08T15:37:06.959012Z", - "skip_test": false - }, - { - "module_name": "nonebot-plugin-yesman", - "project_link": "nonebot-plugin-yesman", - "name": "肯定机", - "desc": "你的发言,值得被肯定", - "author": "EuDs63", - "homepage": "https://github.com/EuDs63/nonebot-plugin-yesman", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "1.4.0", - "time": "2023-11-25T13:58:22.088706Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_fgoavatarguess", - "project_link": "nonebot-plugin-fgoavatarguess", - "name": "FGO猜从者", - "desc": "FGO猜从者插件,基于原HoshinoBot猜从者模块修改,感谢原作者。", - "author": "influ3nza", - "homepage": "https://github.com/influ3nza/nonebot-plugin-fgoavatarguess", - "tags": [ - { - "label": "FGO", - "color": "#66cccc" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.1.1", - "time": "2023-10-12T06:44:39.253781Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_vrchat", - "project_link": "nonebot-plugin-vrchat", - "name": "VRChat查询", - "desc": "使用第三方 API SDK 实现 VRChat 相关操作,例如查询好友状态", - "author": "Agnes4m", - "homepage": "https://github.com/Agnes4m/nonebot_plugin_vrchat", - "tags": [ - { - "label": "VRChat", - "color": "#7aea53" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.feishu", - "nonebot.adapters.kaiheila", - "nonebot.adapters.onebot.v11", - "nonebot.adapters.onebot.v12", - "nonebot.adapters.red", - "nonebot.adapters.telegram" - ], - "valid": true, - "version": "0.1.3", - "time": "2023-12-19T01:13:10.989041Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_batitle", - "project_link": "nonebot-plugin-batitle", - "name": "BlueArchive Title Generator", - "desc": "碧蓝档案式标题生成器", - "author": "MerCuJerry", - "homepage": "https://github.com/MerCuJerry/nonebot-plugin-batitle", - "tags": [ - { - "label": "碧蓝档案", - "color": "#00d7fb" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.feishu", - "nonebot.adapters.kaiheila", - "nonebot.adapters.onebot.v11", - "nonebot.adapters.onebot.v12", - "nonebot.adapters.red", - "nonebot.adapters.telegram" - ], - "valid": true, - "version": "0.1.6", - "time": "2024-02-07T09:50:19.398829Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_maimaidx", - "project_link": "nonebot-plugin-maimaidx", - "name": "nonebot-plugin-maimaidx", - "desc": "移植自 mai-bot 开源项目,基于 nonebot2 的街机音游 舞萌DX 的查询插件", - "author": "Yuri-YuzuChaN", - "homepage": "https://github.com/Yuri-YuzuChaN/nonebot-plugin-maimaidx", - "tags": [ - { - "label": "maimai", - "color": "#cea6ff" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.0.14", - "time": "2024-03-15T08:44:26.693285Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_getbapics", - "project_link": "nonebot-plugin-getbapics", - "name": "nonebot-plugin-getbapics", - "desc": "Get BA Pictures", - "author": "hanasa2023", - "homepage": "https://github.com/hanasa2023/nonebot-plugin-getbapics/blob/master/README.md", - "tags": [ - { - "label": "碧蓝档案", - "color": "#00defe" - }, - { - "label": "BA", - "color": "#00defe" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.red" - ], - "valid": true, - "version": "0.1.5", - "time": "2023-10-15T13:52:55.930889Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_make_choice", - "project_link": "nonebot-plugin-make-choice", - "name": "选择困难症", - "desc": "选择困难症?Bot帮你选!", - "author": "SherkeyXD", - "homepage": "https://github.com/SherkeyXD/nonebot-plugin-make-choice", - "tags": [ - { - "label": "choice", - "color": "#77c5ff" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "1.0.4", - "time": "2023-10-21T07:31:08.895871Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_scheduled_broadcast", - "project_link": "nonebot-plugin-scheduled-broadcast", - "name": "定时广播插件", - "desc": "一款可配置的, 不依赖具体适配器的, 基于事件的定时广播插件.", - "author": "T0nyX1ang", - "homepage": "https://github.com/T0nyX1ang/nonebot-plugin-scheduled-broadcast", - "tags": [], - "is_official": false, - "type": "library", - "supported_adapters": null, - "valid": true, - "version": "0.1.5", - "time": "2023-11-10T15:14:18.797261Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_any", - "project_link": "nonebot-plugin-any", - "name": "Nonebot2 Any 多平台服务", - "desc": "Nonebot2 多平台统一事件与消息统一构造发送", - "author": "MelodyYuuka", - "homepage": "https://github.com/MelodyYuuka/nonebot-plugin-any", - "tags": [ - { - "label": "跨平台", - "color": "#36d399" - }, - { - "label": "统一", - "color": "#fa5f55" - }, - { - "label": "工具库", - "color": "#52eadd" - } - ], - "is_official": false, - "type": "library", - "supported_adapters": [ - "nonebot.adapters.kaiheila", - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.2.0", - "time": "2023-11-05T07:23:35.833914Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_bertvits2", - "project_link": "nonebot-plugin-bertvits2", - "name": "nonebot-plugin-bertvits2", - "desc": "bertvits2语音合成插件", - "author": "jiangyuxiaoxiao", - "homepage": "https://github.com/jiangyuxiaoxiao/nonebot-plugin-bertvits2", - "tags": [ - { - "label": "语音合成", - "color": "#9bf6ff" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.1.3", - "time": "2023-11-07T14:33:08.673555Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_wake_on_lan", - "project_link": "nonebot-plugin-wake-on-lan", - "name": "局域网唤醒", - "desc": "通过发送魔术封包唤醒Bot所在局域网内的设备", - "author": "tiehu", - "homepage": "https://github.com/tiehu/nonebot-plugin-wol", - "tags": [ - { - "label": "局域网唤醒", - "color": "#1e90ff" - }, - { - "label": "WOL", - "color": "#4682b4" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": null, - "valid": true, - "version": "0.1.6", - "time": "2024-03-12T18:08:54.274520Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_bingimagecreator", - "project_link": "nonebot-plugin-bingimagecreator", - "name": "DALL-E 3绘图", - "desc": "调用NewBing的DALL-E 3进行绘图", - "author": "Alpaca4610", - "homepage": "https://github.com/Alpaca4610/nonebot_plugin_BingImageCreator.git", - "tags": [ - { - "label": "AI", - "color": "#ea5252" - }, - { - "label": "绘图", - "color": "#ea5252" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": false, - "version": "0.1.5", - "time": "2024-02-21T03:19:20.848438Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_user", - "project_link": "nonebot-plugin-user", - "name": "用户", - "desc": "管理和绑定不同平台的用户", - "author": "he0119", - "homepage": "https://github.com/he0119/nonebot-plugin-user", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.console", - "nonebot.adapters.discord", - "nonebot.adapters.dodo", - "nonebot.adapters.feishu", - "nonebot.adapters.kaiheila", - "nonebot.adapters.onebot.v11", - "nonebot.adapters.onebot.v12", - "nonebot.adapters.qq", - "nonebot.adapters.red", - "nonebot.adapters.satori", - "nonebot.adapters.telegram" - ], - "valid": true, - "version": "0.2.0", - "time": "2024-02-24T10:06:57.539672Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_shorturl", - "project_link": "nonebot-plugin-shorturl", - "name": "短链接服务支持", - "desc": "为其他插件提供短链接转换服务", - "author": "StarHeartHunt", - "homepage": "https://github.com/StarHeartHunt/nonebot-plugin-shorturl", - "tags": [], - "is_official": false, - "type": "library", - "supported_adapters": null, - "valid": true, - "version": "0.4.0", - "time": "2024-02-29T12:09:58.388205Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_filehost", - "project_link": "nonebot-plugin-filehost", - "name": "文件托管支持", - "desc": "提供跨机文件传输支持,通过 HTTP 服务托管文件", - "author": "mnixry", - "homepage": "https://github.com/nonebot/plugin-filehost", - "tags": [], - "is_official": true, - "type": "library", - "supported_adapters": null, - "valid": true, - "version": "1.1.1", - "time": "2024-03-01T02:58:01.740199Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_smms", - "project_link": "nonebot-plugin-smms", - "name": "sm.ms图床", - "desc": "sm.ms图床上传与管理", - "author": "mobyw", - "homepage": "https://github.com/mobyw/nonebot-plugin-smms", - "tags": [], - "is_official": false, - "type": "library", - "supported_adapters": null, - "valid": true, - "version": "0.1.0", - "time": "2023-11-23T15:24:16.507383Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_nsfw", - "project_link": "nonebot-plugin-nsfw", - "name": "群聊 NSFW 图片检测", - "desc": "群聊 NSFW 图片检测插件,带有撤回、警告、禁言等功能。使用 Safety Checker / NSFW Model", - "author": "iyume", - "homepage": "https://github.com/iyume/nonebot-plugin-nsfw", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.10", - "time": "2023-12-18T17:59:20.124712Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_batarot", - "project_link": "nonebot-plugin-batarot", - "name": "碧蓝档案塔罗牌", - "desc": "碧蓝档案塔罗牌,运势预测与魔法占卜🔮", - "author": "Perseus037", - "homepage": "https://github.com/Perseus037/nonebot_plugin_batarot", - "tags": [ - { - "label": "碧蓝档案", - "color": "#15a0df" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.feishu", - "nonebot.adapters.kaiheila", - "nonebot.adapters.onebot.v11", - "nonebot.adapters.onebot.v12", - "nonebot.adapters.red", - "nonebot.adapters.telegram" - ], - "valid": true, - "version": "0.2.1.post1", - "time": "2023-12-20T02:30:30.110021Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_cnrail", - "project_link": "nonebot-plugin-cnrail", - "name": "CNRail", - "desc": "查询 12306 列车时刻表", - "author": "lgc2333", - "homepage": "https://github.com/lgc-NB2Dev/nonebot-plugin-cnrail", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.bilibili", - "nonebot.adapters.console", - "nonebot.adapters.ding", - "nonebot.adapters.discord", - "nonebot.adapters.dodo", - "nonebot.adapters.feishu", - "nonebot.adapters.github", - "nonebot.adapters.kaiheila", - "nonebot.adapters.minecraft", - "nonebot.adapters.mirai2", - "nonebot.adapters.ntchat", - "nonebot.adapters.onebot.v11", - "nonebot.adapters.onebot.v12", - "nonebot.adapters.qq", - "nonebot.adapters.red", - "nonebot.adapters.satori", - "nonebot.adapters.telegram" - ], - "valid": true, - "version": "0.2.0", - "time": "2024-03-10T10:16:46.885006Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_longtu", - "project_link": "nonebot-plugin-longtu", - "name": "随机龙图", - "desc": "2024年是龙年...我都准备好了", - "author": "Perseus037", - "homepage": "https://github.com/Perseus037/nonebot_plugin_longtu", - "tags": [ - { - "label": "龙图", - "color": "#e1122d" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.1.1.post1", - "time": "2024-01-12T00:49:14.405162Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_riffusion", - "project_link": "nonebot-plugin-riffusion", - "name": "Riffusion", - "desc": "你给歌词,AI 作曲", - "author": "lgc2333", - "homepage": "https://github.com/lgc-NB2Dev/nonebot-plugin-riffusion", - "tags": [ - { - "label": "Riffusion", - "color": "#4b39cb" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": null, - "valid": true, - "version": "0.2.1", - "time": "2024-03-10T06:43:23.017592Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_antimonkey", - "project_link": "nonebot-plugin-antimonkey", - "name": "AntiMonkey", - "desc": "自动检测和撤回包含恶心吗喽的图片", - "author": "phquathi", - "homepage": "https://github.com/phquathi/nonebot_plugin_antimonkey", - "tags": [ - { - "label": "猴子", - "color": "#ea5252" - }, - { - "label": "群管", - "color": "#ea5252" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "1.0.2", - "time": "2023-12-27T17:39:54.859337Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_waiter", - "project_link": "nonebot-plugin-waiter", - "name": "Waiter 插件", - "desc": "提供一个 got-and-reject 会话控制的替代方案,可自由控制超时时间", - "author": "RF-Tar-Railt", - "homepage": "https://github.com/RF-Tar-Railt/nonebot-plugin-waiter", - "tags": [ - { - "label": "waiter", - "color": "#ea5252" - } - ], - "is_official": false, - "type": "library", - "supported_adapters": null, - "valid": true, - "version": "0.2.0", - "time": "2024-01-28T12:16:34.304220Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_imagemaster", - "project_link": "nonebot-plugin-imagemaster", - "name": "nonebot-plugin-imagemaster", - "desc": "提供多种图像处理功能的插件", - "author": "phquathi", - "homepage": "https://github.com/phquathi/nonebot_plugin_imagemaster", - "tags": [ - { - "label": "修图", - "color": "#52d4ea" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "1.0.6", - "time": "2024-01-02T16:25:06.577543Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_nikke", - "project_link": "nonebot-plugin-nikke", - "name": "nonebot_plugin_nikke", - "desc": "胜利女神:妮姬多功能插件", - "author": "Perseus037", - "homepage": "https://github.com/Perseus037/nonebot_plugin_nikke", - "tags": [ - { - "label": "nikke", - "color": "#e111b7" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.1.0.post4", - "time": "2023-12-28T11:31:15.735048Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_mcpic", - "project_link": "nonebot-plugin-mcpic", - "name": "随机MC图", - "desc": "随机从推特获取并发送MC建筑图片", - "author": "wlm3201", - "homepage": "https://github.com/wlm3201/nonebot-plugin-mcpic", - "tags": [ - { - "label": "Minecraft", - "color": "#3cb371" - }, - { - "label": "MC", - "color": "#3cb371" - }, - { - "label": "图片", - "color": "#3cb371" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.1.1", - "time": "2024-01-07T08:20:29.206420Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_pingti", - "project_link": "nonebot-plugin-pingti", - "name": "最佳平替", - "desc": "用更低价的搜索词购物", - "author": "lgc2333", - "homepage": "https://github.com/lgc-NB2Dev/nonebot-plugin-pingti", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": null, - "valid": true, - "version": "0.1.4", - "time": "2024-02-15T10:12:37.601223Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_wx4", - "project_link": "nonebot-plugin-wx4", - "name": "文心一言4适配", - "desc": "文心一言4适配的连续对话", - "author": "Pasumao", - "homepage": "https://github.com/Pasumao/nonebot-plugin-wx4", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "1.3.1", - "time": "2024-01-09T08:34:55.393316Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_mypower", - "project_link": "nonebot-plugin-mypower", - "name": "nonebot-plugin-mypower", - "desc": "随机生成超能力", - "author": "tianyisama", - "homepage": "https://github.com/tianyisama/nonebot_plugin_mypower", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.1.5", - "time": "2024-01-15T16:29:40.149453Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_bard", - "project_link": "nonebot-plugin-bard", - "name": "谷歌Bard聊天", - "desc": "Nonebot框架下的谷歌Bard聊天插件,支持联网搜索和图片识别", - "author": "Alpaca4610", - "homepage": "https://github.com/Alpaca4610/nonebot-plugin-bard", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": false, - "version": "0.3.3", - "time": "2024-03-19T02:32:41.571851Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_nekoimage", - "project_link": "nonebot-plugin-nekoimage", - "name": "nonebot-plugin-nekoimage", - "desc": "A nonebot plugin for integrating with [NekoImageGallery](https://github.com/hv0905/NekoImageGallery).", - "author": "pk5ls20", - "homepage": "https://github.com/pk5ls20/nonebot-plugin-nekoimage", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11", - "nonebot.adapters.qq" - ], - "valid": true, - "version": "0.3.3", - "time": "2024-01-15T01:44:34.682356Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_finallines", - "project_link": "nonebot-plugin-finallines", - "name": "最终台词", - "desc": "来一句劲道的最终台词吧,支持多平台适配", - "author": "Perseus037", - "homepage": "https://github.com/Perseus037/nonebot_plugin_finallines", - "tags": [ - { - "label": "最终台词", - "color": "#052199" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.feishu", - "nonebot.adapters.kaiheila", - "nonebot.adapters.onebot.v11", - "nonebot.adapters.onebot.v12", - "nonebot.adapters.red", - "nonebot.adapters.telegram" - ], - "valid": true, - "version": "0.1.1.post2", - "time": "2024-01-14T10:05:17.058659Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_gemini", - "project_link": "nonebot-plugin-gemini", - "name": "nonebot-plugin-gemini", - "desc": "Gemini AI 对话", - "author": "zhaomaoniu", - "homepage": "https://github.com/zhaomaoniu/nonebot-plugin-gemini", - "tags": [ - { - "label": "Gemini", - "color": "#3e8ffb" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": null, - "valid": false, - "version": "0.3.0", - "time": "2024-02-11T08:21:46.952771Z", - "skip_test": false - }, - { - "module_name": "haruka_bot_red", - "project_link": "haruka_bot_red", - "name": "haruka_bot_red", - "desc": "将B站UP主的动态和直播信息推送至QQ,适配red协议", - "author": "boxie123", - "homepage": "https://github.com/boxie123/HarukaBot-Red", - "tags": [ - { - "label": "bilibili", - "color": "#c83f3f" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.red" - ], - "valid": true, - "version": "0.1.7", - "time": "2024-01-21T11:14:26.959398Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_enatfrp", - "project_link": "nonebot-plugin-enatfrp", - "name": "SakuraFrp", - "desc": "SakuraFrp管理插件,natfrp.com。", - "author": "eya46", - "homepage": "https://github.com/eya46/nonebot_plugin_enatfrp", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": null, - "valid": false, - "version": "0.2.0", - "time": "2024-03-09T06:14:37.754340Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_nezha", - "project_link": "nonebot-plugin-nezha", - "name": "哪吒监控插件", - "desc": "哪吒监控插件,使用哪吒监控API。", - "author": "eya46", - "homepage": "https://github.com/eya46/nonebot_plugin_nezha", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": null, - "valid": false, - "version": "0.4.2", - "time": "2024-03-10T07:31:54.957813Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_randpic", - "project_link": "nonebot-plugin-randpic", - "name": "随机发送图片", - "desc": "发送自定义指令后bot会随机发出一张你所存储的图片", - "author": "HuParry", - "homepage": "https://github.com/HuParry/nonebot-plugin-randpic", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.1.3", - "time": "2024-01-28T03:00:27.181559Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_BAdrawcard", - "project_link": "nonebot-plugin-badrawcard", - "name": "BA模拟抽卡", - "desc": "模拟实现了碧蓝档案游戏的抽卡功能, 自动化了更新卡池、FES提高卡池概率", - "author": "lengmianzz", - "homepage": "https://github.com/lengmianzz/nonebot-plugin-BAdrawcard", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.feishu", - "nonebot.adapters.kaiheila", - "nonebot.adapters.onebot.v11", - "nonebot.adapters.onebot.v12", - "nonebot.adapters.qq", - "nonebot.adapters.red", - "nonebot.adapters.telegram" - ], - "valid": true, - "version": "0.2.3", - "time": "2024-01-31T03:56:01.881602Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_gpt", - "project_link": "nonebot-plugin-gpt", - "name": "ChatGPT 聊天", - "desc": "通过浏览器使用 ChatGPT,兼容 onebot v11 与 adapter-qq 适配器", - "author": "nek0us", - "homepage": "https://github.com/nek0us/nonebot-plugin-gpt", - "tags": [ - { - "label": "ChatGPT", - "color": "#50ec9d" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11", - "nonebot.adapters.qq" - ], - "valid": false, - "version": "0.0.10", - "time": "2024-03-20T02:02:55.902116Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_easy_blacklist", - "project_link": "nonebot-plugin-easy-blacklist", - "name": "黑名单插件", - "desc": "一个轻量级的黑名单插件,支持api接入全平台,内存占用优化中", - "author": "bingqiu456", - "homepage": "https://github.com/bingqiu456/nonebot-plugin-easy-blacklist", - "tags": [], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": false, - "version": "1.5", - "time": "2024-02-15T06:25:00.316113Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_reminder", - "project_link": "nonebot-plugin-reminder", - "name": "定时提醒", - "desc": "主要用来提醒大家别忘记什么事情,可以看成定时提醒插件", - "author": "velor2012", - "homepage": "https://github.com/velor2012/nonebot_plugin_reminder", - "tags": [ - { - "label": "scheduler", - "color": "#ea5252" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.3.1.post1", - "time": "2024-02-20T13:09:13.542306Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_chikari_yinpa", - "project_link": "nonebot-plugin-chikari-yinpa", - "name": "Chikari_yinpa", - "desc": "一个普通的银趴插件", - "author": "mrqx0195", - "homepage": "https://github.com/mrqx0195/nonebot_plugin_chikari_yinpa", - "tags": [ - { - "label": "yinpa", - "color": "#ffff00" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "1.3.4", - "time": "2024-03-17T10:07:16.276530Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_splatoon3_nso", - "project_link": "nonebot-plugin-splatoon3-nso", - "name": "splatoon3游戏nso查询", - "desc": "一个基于nonebot2框架的splatoon3游戏nso数据查询插件", - "author": "Cypas", - "homepage": "https://github.com/Cypas/splatoon3-nso", - "tags": [ - { - "label": "splatoon3", - "color": "#ea5252" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.kaiheila", - "nonebot.adapters.onebot.v11", - "nonebot.adapters.onebot.v12", - "nonebot.adapters.qq", - "nonebot.adapters.telegram" - ], - "valid": true, - "version": "1.3.0", - "time": "2024-02-28T04:35:02.889426Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_bf1marneserverlist", - "project_link": "nonebot-plugin-bf1marneserverlist", - "name": "战地1-马恩私人服务器服务器查询", - "desc": "Onebot 战地1 马恩私人服务器服务器查询插件", - "author": "SAFEluren", - "homepage": "https://github.com/SAFEluren/nonebot-plugin-bf1marneserverlist", - "tags": [ - { - "label": "server", - "color": "#ea5252" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.1.23", - "time": "2024-03-09T09:29:36.925598Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_kawaii_status", - "project_link": "nonebot-plugin-kawaii-status", - "name": "运行状态", - "desc": "NoneBot2 服务器状态查看插件", - "author": "KomoriDev", - "homepage": "https://github.com/KomoriDev/nonebot-plugin-kawaii-status", - "tags": [ - { - "label": "简约", - "color": "#54adff" - }, - { - "label": "可爱", - "color": "#ffb3cc" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": null, - "valid": false, - "version": "0.1.3", - "time": "2024-03-08T11:20:28.985839Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_vits_tts", - "project_link": "nonebot-plugin-vits-tts", - "name": "nonebot-plugin-vits-tts", - "desc": "基于vits的tts语音合成", - "author": "Redmomn", - "homepage": "https://github.com/Redmomn/nonebot-plugin-vits-tts", - "tags": [ - { - "label": "VITS", - "color": "#ea5252" - }, - { - "label": "TTS", - "color": "#52dbea" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.1.6", - "time": "2024-03-07T05:12:46.624809Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_chatglm_plus", - "project_link": "nonebot-plugin-chatglm-plus", - "name": "人性化的ChatGLM", - "desc": "人性化的ChatGLM插件,支持预设和上下文", - "author": "XTxiaoting14332", - "homepage": "https://github.com/XTxiaoting14332/nonebot-plugin-chatglm-plus", - "tags": [ - { - "label": "ChatGLM", - "color": "#73cccc" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.console", - "nonebot.adapters.discord", - "nonebot.adapters.dodo", - "nonebot.adapters.feishu", - "nonebot.adapters.kaiheila", - "nonebot.adapters.onebot.v11", - "nonebot.adapters.onebot.v12", - "nonebot.adapters.qq", - "nonebot.adapters.red", - "nonebot.adapters.satori", - "nonebot.adapters.telegram" - ], - "valid": true, - "version": "0.1.7", - "time": "2024-03-10T05:32:29.222783Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_fishing", - "project_link": "nonebot-plugin-fishing", - "name": "赛博钓鱼", - "desc": "你甚至可以电子钓鱼", - "author": "C14H22O", - "homepage": "https://github.com/C14H22O/nonebot-plugin-fishing", - "tags": [ - { - "label": "钓鱼", - "color": "#87cefa" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": null, - "valid": true, - "version": "0.2.1", - "time": "2024-03-09T13:57:57.644380Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_a2s_query", - "project_link": "nonebot-plugin-a2s-query", - "name": "a2s查询", - "desc": "查询value服务器详情", - "author": "NanakaNeko", - "homepage": "https://github.com/NanakaNeko/nonebot-plugin-a2s-query", - "tags": [ - { - "label": "游戏服务器", - "color": "#ea5252" - }, - { - "label": "value", - "color": "#99ea52" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.1.7", - "time": "2024-03-11T03:38:52.710058Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_dice_narrator", - "project_link": "nonebot-plugin-dice-narrator", - "name": "nonebot-plugin-dice-narrator", - "desc": "一只可爱的 AI 掷骰姬,支持各种事件检定", - "author": "KroMiose", - "homepage": "https://github.com/KroMiose/nonebot_plugin_dice_narrator", - "tags": [ - { - "label": "GPT", - "color": "#29b752" - }, - { - "label": "掷骰姬", - "color": "#c84b9d" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": true, - "version": "0.1.9", - "time": "2024-03-14T02:27:12.730739Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_steam_info", - "project_link": "nonebot-plugin-steam-info", - "name": "Steam Info", - "desc": "播报绑定的 Steam 好友状态", - "author": "zhaomaoniu", - "homepage": "https://github.com/zhaomaoniu/nonebot-plugin-steam-info", - "tags": [ - { - "label": "Steam", - "color": "#14305e" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.bilibili", - "nonebot.adapters.console", - "nonebot.adapters.ding", - "nonebot.adapters.discord", - "nonebot.adapters.dodo", - "nonebot.adapters.feishu", - "nonebot.adapters.github", - "nonebot.adapters.kaiheila", - "nonebot.adapters.minecraft", - "nonebot.adapters.mirai2", - "nonebot.adapters.ntchat", - "nonebot.adapters.onebot.v11", - "nonebot.adapters.onebot.v12", - "nonebot.adapters.qq", - "nonebot.adapters.red", - "nonebot.adapters.satori", - "nonebot.adapters.telegram" - ], - "valid": true, - "version": "0.1.1", - "time": "2024-03-15T13:55:30.722873Z", - "skip_test": false - }, - { - "module_name": "nonebot_plugin_orangejuice", - "project_link": "nonebot-plugin-orangejuice", - "name": "100orangejuice", - "desc": "100orangejuice", - "author": "GLDYM", - "homepage": "https://github.com/FDCraft/nonebot-plugin-orangejuice", - "tags": [ - { - "label": "百橙", - "color": "#ed6f00" - }, - { - "label": "100OJ", - "color": "#ed6f00" - } - ], - "is_official": false, - "type": "application", - "supported_adapters": [ - "nonebot.adapters.onebot.v11" - ], - "valid": false, - "version": "0.5.0", - "time": "2024-03-20T01:58:28.461963Z", - "skip_test": false - } +[ + { + "module_name": "nonebot_plugin_status", + "project_link": "nonebot-plugin-status", + "name": "服务器状态查看", + "desc": "通过戳一戳获取服务器状态", + "author": "yanyongyu", + "homepage": "https://github.com/nonebot/plugin-status", + "tags": [ + { + "label": "server", + "color": "#aeeaa8" + } + ], + "is_official": true, + "type": "application", + "supported_adapters": null, + "valid": true, + "version": "0.8.1", + "time": "2024-03-04T06:57:10.250823Z", + "skip_test": false + }, + { + "module_name": "haruka_bot", + "project_link": "haruka-bot", + "name": "haruka_bot", + "desc": "将B站UP主的动态和直播信息推送至QQ", + "author": "SK-415", + "homepage": "https://github.com/SK-415/HarukaBot", + "tags": [ + { + "label": "bilibili", + "color": "#e55d80" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11", + "nonebot.adapters.qqguild" + ], + "valid": true, + "version": "1.6.0.post5", + "time": "2023-07-11T09:24:58.972905Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_rauthman", + "project_link": "nonebot-plugin-rauthman", + "name": "RAM - 基于规则的授权管理", + "desc": "为 Matcher 配置一条或多条 Rule 来实现功能的授权管理", + "author": "Lancercmd", + "homepage": "https://github.com/Lancercmd/nonebot_plugin_rauthman", + "tags": [ + { + "label": "rule", + "color": "#4ec9b0" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "2.0.0rc1.post3", + "time": "2023-07-18T01:25:54.487870Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_docs", + "project_link": "nonebot-plugin-docs", + "name": "NoneBot 离线文档", + "desc": "在本地查看 NoneBot 文档", + "author": "nonebot", + "homepage": "https://github.com/nonebot/nonebot2/blob/master/packages/nonebot-plugin-docs", + "tags": [], + "is_official": true, + "type": "application", + "supported_adapters": null, + "valid": true, + "version": "2.2.1", + "time": "2024-02-24T04:41:45.707475Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_sentry", + "project_link": "nonebot-plugin-sentry", + "name": "Sentry日志监控", + "desc": "使用Sentry监控机器人日志并处理报错", + "author": "yanyongyu", + "homepage": "https://github.com/nonebot/plugin-sentry", + "tags": [ + { + "label": "log", + "color": "#6be3ea" + } + ], + "is_official": true, + "type": "application", + "supported_adapters": null, + "valid": true, + "version": "1.1.0", + "time": "2024-02-14T03:21:49.744244Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_apscheduler", + "project_link": "nonebot-plugin-apscheduler", + "name": "定时任务", + "desc": "APScheduler 定时任务插件", + "author": "yanyongyu", + "homepage": "https://github.com/nonebot/plugin-apscheduler", + "tags": [], + "is_official": true, + "type": "library", + "supported_adapters": null, + "valid": true, + "version": "0.4.0", + "time": "2024-02-12T13:56:49.110411Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_picsearcher", + "project_link": "nonebot-plugin-picsearcher", + "author": "synodriver", + "desc": "从基本上所有你想的出名字的搜图平台找图片", + "name": "图片搜索", + "homepage": "https://github.com/synodriver/nonebot_plugin_picsearcher", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-11-05T07:21:34.473939Z", + "version": "0.1.10", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_navicat", + "project_link": "nonebot-plugin-navicat", + "author": "synodriver", + "desc": "连接至各种数据库,为其他插件导出连接对象", + "name": "通用数据库连接", + "homepage": "https://github.com/synodriver/nonebot_plugin_navicat", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-06-25T08:55:44.847476Z", + "version": "0.3.0", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_translator", + "project_link": "nonebot-plugin-translator", + "name": "多语种翻译插件", + "desc": "接口来自 腾讯机器翻译 TMT", + "author": "Lancercmd", + "homepage": "https://github.com/Lancercmd/nonebot_plugin_translator", + "tags": [ + { + "label": "func", + "color": "#dcdcaa" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "2.0.0b4.post2", + "time": "2023-07-18T01:28:04.958803Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_mqtt", + "project_link": "nonebot-plugin-mqtt", + "name": "MQTT", + "desc": "Nonebot2 MQTT 插件", + "author": "synodriver", + "homepage": "https://github.com/synodriver/nonebot_plugin_mqtt", + "tags": [], + "is_official": false, + "type": "library", + "supported_adapters": null, + "valid": true, + "version": "0.1.2", + "time": "2023-09-06T16:06:14.974473Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_songpicker2", + "project_link": "nonebot-plugin-songpicker2", + "name": "songpicker2", + "desc": "点播歌曲,支持候选菜单、热评显示,数据源为网易云", + "author": "maxesisn", + "homepage": "https://github.com/maxesisn/nonebot_plugin_songpicker2", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.2.6", + "time": "2023-06-27T09:24:09.247555Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_strman", + "project_link": "nonebot-plugin-strman", + "author": "echobot-dev", + "desc": "通过字符串标签在文件中集中管理字符串", + "name": "字符串管理工具", + "homepage": "https://github.com/echobot-dev/nonebot-plugin-strman", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-10-10T17:04:34.269452Z", + "version": "1.2.0", + "skip_test": false + }, + { + "module_name": "nonebot_bison", + "project_link": "nonebot-bison", + "name": "Bison", + "desc": "通用订阅推送插件", + "author": "felinae98", + "homepage": "https://github.com/felinae98/nonebot-bison", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.feishu", + "nonebot.adapters.kaiheila", + "nonebot.adapters.onebot.v11", + "nonebot.adapters.onebot.v12", + "nonebot.adapters.qq", + "nonebot.adapters.red", + "nonebot.adapters.telegram" + ], + "valid": true, + "version": "0.9.1", + "time": "2024-03-06T04:41:42.379114Z", + "skip_test": false + }, + { + "module_name": "nonebot-plugin-ncm", + "project_link": "nonebot-plugin-ncm", + "author": "kitUIN", + "desc": "网易云 无损音乐 点歌/下载", + "name": "网易云无损音乐下载", + "homepage": "https://github.com/kitUIN/nonebot-plugin-ncm", + "tags": [ + { + "label": "a:onebot", + "color": "#000000" + }, + { + "label": "a:cqhttp", + "color": "#000000" + }, + { + "label": "t:Netease", + "color": "#ec4141" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-12-03T07:50:12.633674Z", + "version": "1.6.9", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_cocdicer", + "project_link": "nonebot-plugin-cocdicer", + "author": "abrahum", + "desc": "COC跑团骰子娘", + "name": "nonebot-plugin-cocdicer", + "homepage": "https://github.com/abrahum/nonebot_plugin_cocdicer", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-07-28T08:59:43.166497Z", + "version": "0.4.0", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_guess", + "project_link": "nonebot-plugin-guess", + "author": "ffreemt", + "desc": "多次互动猜名字游戏,自带猜城市名,可定制", + "name": "猜猜看", + "homepage": "https://github.com/ffreemt/nonebot-plugin-guess-game", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-10-16T02:53:33.507492Z", + "version": "0.1.9", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_abbrreply", + "project_link": "nonebot-plugin-abbrreply", + "author": "anlen123", + "desc": "输入拼音首字母,猜测文字", + "name": "缩写查询器", + "homepage": "https://github.com/anlen123/nonebot_plugin_abbrreply", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-10-21T03:18:13.320169Z", + "version": "1.1.3", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_biliav", + "project_link": "nonebot-plugin-biliav", + "author": "knva", + "desc": "将用户发的av号或者bv号转成小程序返回", + "name": "biliav小程序转换器", + "homepage": "https://github.com/knva/nonebot_plugin_biliav", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-01-19T03:28:14.663442Z", + "version": "1.0.11", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_analysis_bilibili", + "project_link": "nonebot-plugin-analysis-bilibili", + "name": "bilibili视频、番剧解析", + "desc": "自动解析bilibili视频、番剧解析", + "author": "mengshouer", + "homepage": "https://github.com/mengshouer/nonebot_plugin_analysis_bilibili", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2024-01-16T10:41:17.818638Z", + "version": "2.6.8", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_localstore", + "project_link": "nonebot-plugin-localstore", + "name": "本地数据存储", + "desc": "存储插件数据至本地文件", + "author": "yanyongyu", + "homepage": "https://github.com/nonebot/plugin-localstore", + "tags": [], + "is_official": true, + "type": "library", + "supported_adapters": null, + "valid": true, + "version": "0.6.0", + "time": "2024-02-11T10:14:07.410250Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_alconna", + "project_link": "nonebot-plugin-alconna", + "name": "Alconna 插件", + "desc": "提供 ArcletProject/Alconna 的 Nonebot2 适配版本与工具", + "author": "RF-Tar-Railt", + "homepage": "https://github.com/nonebot/plugin-alconna", + "tags": [ + { + "label": "多适配器", + "color": "#5280ea" + }, + { + "label": "消息匹配", + "color": "#ea6f52" + }, + { + "label": "跨平台", + "color": "#5452ea" + } + ], + "is_official": true, + "type": "library", + "supported_adapters": [ + "nonebot.adapters.bilibili", + "nonebot.adapters.console", + "nonebot.adapters.ding", + "nonebot.adapters.discord", + "nonebot.adapters.dodo", + "nonebot.adapters.feishu", + "nonebot.adapters.github", + "nonebot.adapters.kaiheila", + "nonebot.adapters.minecraft", + "nonebot.adapters.mirai2", + "nonebot.adapters.ntchat", + "nonebot.adapters.onebot.v11", + "nonebot.adapters.onebot.v12", + "nonebot.adapters.qq", + "nonebot.adapters.red", + "nonebot.adapters.satori", + "nonebot.adapters.telegram" + ], + "valid": true, + "version": "0.41.1", + "time": "2024-03-20T06:05:58.427456Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_mcstatus", + "project_link": "nonebot-plugin-mcstatus", + "name": "Minecraft 服务器状态查询", + "desc": "顾名思义", + "author": "j1g5awi", + "homepage": "https://github.com/nonepkg/nonebot-plugin-mcstatus", + "tags": [ + { + "label": "t:Minecraft", + "color": "#80070B" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-06-03T07:30:25.393339Z", + "version": "0.1.8", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_help", + "project_link": "nonebot-plugin-help", + "name": "Nonebot2 Help Menu", + "desc": "Nonebot2轻量级帮助插件", + "author": "XZhouQD", + "homepage": "https://github.com/xzhouqd/nonebot-plugin-help", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": null, + "valid": true, + "version": "0.6.1", + "time": "2023-08-11T12:21:58.006152Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_alias", + "project_link": "nonebot-plugin-alias", + "name": "alias命令别名", + "desc": "为复杂的命令创建别名", + "author": "MeetWq", + "homepage": "https://github.com/MeetWq/nonebot-plugin-alias", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-06-20T17:45:31.642072Z", + "version": "0.3.2", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_withdraw", + "project_link": "nonebot-plugin-withdraw", + "name": "Nonebot2 消息撤回插件", + "desc": "用于让机器人撤回自己发出的消息", + "author": "MeetWq", + "homepage": "https://github.com/MeetWq/nonebot-plugin-withdraw", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-06-20T18:15:41.588691Z", + "version": "0.2.3", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_pixivrank_search", + "project_link": "nonebot-plugin-pixivrank-search", + "name": "nonebot_plugin_pixivrank_search", + "desc": "基于RSSHUB阅读器的P站排行和P站搜图", + "author": "HibiKier", + "homepage": "https://github.com/HibiKier/nonebot_plugin_pixivrank_search", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-02-18T09:53:18.929348Z", + "version": "0.6", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_russian", + "project_link": "nonebot-plugin-russian", + "name": "nonebot_plugin_russian", + "desc": "群内小游戏,使用金币赌注的俄罗斯轮盘", + "author": "HibiKier", + "homepage": "https://github.com/HibiKier/nonebot_plugin_russian", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-01-21T17:02:28.204634Z", + "version": "0.2.5", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_setu", + "project_link": "nonebot-plugin-setu", + "name": "nonebot_plugin_setu", + "desc": "基于loliconImage Api的涩图插件,内置涩图CD", + "author": "ayanamiblhx", + "homepage": "https://github.com/ayanamiblhx/nonebot_plugin_setu", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-03-23T13:27:43.283834Z", + "version": "1.1.11", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_heweather", + "project_link": "nonebot-plugin-heweather", + "name": "和风天气", + "desc": "和风天气图片显示插件", + "author": "kexue-z", + "homepage": "https://github.com/kexue-z/nonebot-plugin-heweather", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.bilibili", + "nonebot.adapters.console", + "nonebot.adapters.ding", + "nonebot.adapters.discord", + "nonebot.adapters.dodo", + "nonebot.adapters.feishu", + "nonebot.adapters.github", + "nonebot.adapters.kaiheila", + "nonebot.adapters.minecraft", + "nonebot.adapters.mirai2", + "nonebot.adapters.ntchat", + "nonebot.adapters.onebot.v11", + "nonebot.adapters.onebot.v12", + "nonebot.adapters.qq", + "nonebot.adapters.red", + "nonebot.adapters.satori", + "nonebot.adapters.telegram" + ], + "valid": true, + "version": "0.8.2", + "time": "2024-03-14T08:49:11.758260Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_autohelp", + "project_link": "nonebot-plugin-autohelp", + "name": "nonebot-plugin-autohelp", + "desc": "响应help/菜单/帮助(群消息或私信)并提供已载入插件的帮助信息(如命令名,aliases,模块文档)", + "author": "ffreemt", + "homepage": "https://github.com/ffreemt/nonebot-plugin-autohelp", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-10-15T16:43:57.811690Z", + "version": "0.1.7", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_flexperm", + "project_link": "nonebot-plugin-flexperm", + "name": "nonebot-plugin-flexperm", + "desc": "精细化的 NoneBot 权限管理插件", + "author": "rmuchan", + "homepage": "https://github.com/rmuchan/nonebot-plugin-flexperm", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-06-13T10:41:21.102121Z", + "version": "0.7.0", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_epicfree", + "project_link": "nonebot-plugin-epicfree", + "name": "Epic 限免游戏资讯", + "desc": "EpicGameStore 喜加一资讯插件,发送「喜加一」逝世看吧!", + "author": "monsterxcn", + "homepage": "https://github.com/monsterxcn/nonebot_plugin_epicfree", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-10-30T07:57:15.417775Z", + "version": "0.2.6", + "skip_test": false + }, + { + "module_name": "ELF_RSS2", + "project_link": "ELF-RSS", + "name": "ELF_RSS", + "desc": "QQ机器人 RSS订阅 插件,订阅源建议选择 RSSHub", + "author": "Quan666", + "homepage": "https://github.com/Quan666/ELF_RSS", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "2.6.21", + "time": "2023-08-28T09:03:15.911695Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_simplemusic", + "project_link": "nonebot-plugin-simplemusic", + "name": "SimpleMusic", + "desc": "最简Q群点歌插件,支持QQ音乐、网易云、酷我、酷狗、咪咕、B站音频区", + "author": "MeetWq", + "homepage": "https://github.com/MeetWq/nonebot-plugin-simplemusic", + "tags": [ + { + "label": "a:onebot", + "color": "#000000" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-05-10T00:23:57.197112Z", + "version": "0.1.7", + "skip_test": false + }, + { + "module_name": "nb2chan", + "project_link": "nb2chan", + "name": "nb2chan", + "desc": "Nonebot2酱推送", + "author": "yucongo", + "homepage": "https://github.com/ffreemt/nb2chan", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-02-20T08:21:36.557860Z", + "version": "0.1.1", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_setu_now", + "project_link": "nonebot-plugin-setu-now", + "name": "nonebot-plugin-setu-now", + "desc": "另一个色图插件", + "author": "kexue-z", + "homepage": "https://github.com/kexue-z/nonebot-plugin-setu-now", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": null, + "valid": true, + "version": "0.6.4", + "time": "2023-08-15T03:53:06.050378Z", + "skip_test": false + }, + { + "module_name": "leetcode", + "project_link": "nonebot-plugin-leetcode", + "name": "leetcode提醒机器人", + "desc": " 安装该插件后能往指定qq和指定qq群定时发送leetcode每日一题", + "author": "zxz0415", + "homepage": "https://github.com/zxz0415/leetcode", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-04-01T17:49:40.640240Z", + "version": "0.2", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_youthstudy", + "project_link": "nonebot-plugin-youthstudy", + "name": "nonebot_plugin_youthstudy", + "desc": "基于nonebot的青年大学习插件,用来获取最新一期的青年大学习答案", + "author": "ayanamiblhx", + "homepage": "https://github.com/ayanamiblhx/nonebot_plugin_youthstudy", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-02-28T07:13:51.801710Z", + "version": "1.1.8", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_shindan", + "project_link": "nonebot-plugin-shindan", + "name": "趣味占卜", + "desc": "使用ShindanMaker网站的趣味占卜", + "author": "MeetWq", + "homepage": "https://github.com/noneplugin/nonebot-plugin-shindan", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": [], + "valid": true, + "version": "0.6.1", + "time": "2024-03-14T15:12:03.829758Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_code", + "project_link": "nonebot-plugin-code", + "name": "在线运行代码", + "desc": "在线运行编程代码,语句", + "author": "yzyyz1387", + "homepage": "https://github.com/yzyyz1387/nonebot_plugin_code", + "tags": [ + { + "label": "func", + "color": "#dcdcaa" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": null, + "valid": true, + "version": "0.0.7", + "time": "2023-09-08T10:48:27.349570Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_picsbank", + "project_link": "nonebot-plugin-picsbank", + "name": "picsbank", + "desc": "匹配图片进行回答", + "author": "Diaosi1111", + "homepage": "https://github.com/Diaosi1111/nonebot_plugin_picsbank", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-02-20T06:35:20.914620Z", + "version": "0.2.0", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_tvseries", + "project_link": "nonebot-plugin-tvseries", + "name": "剧集更新列表", + "desc": "获取聚集更新", + "author": "kexue-z", + "homepage": "https://github.com/kexue-z/nonebot-plugin-tvseries", + "tags": [ + { + "label": "a:onebot", + "color": "#000000" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-02-14T13:24:06.272775Z", + "version": "0.0.2.3", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_lolmatch", + "project_link": "nonebot-plugin-lolmatch", + "name": "lol比赛信息", + "desc": "简单的lol比赛信息插件,订阅后会定时推送当日比赛结果", + "author": "Diaosi1111", + "homepage": "https://github.com/Diaosi1111/nonebot_plugin_lolmatch", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2024-03-07T05:54:54.351311Z", + "version": "0.3.3", + "skip_test": false + }, + { + "module_name": "OlivOS.nonebot", + "project_link": "olivos.nb2", + "name": "OlivOS.nb2", + "desc": "在 NoneBot2 中加载 OlivOS 插件", + "author": "j1g5awi", + "homepage": "https://github.com/nonepkg/OlivOS.nb2", + "tags": [ + { + "label": "OlivOS", + "color": "#00a0ea" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11", + "nonebot.adapters.telegram" + ], + "valid": true, + "version": "0.2.2", + "time": "2023-06-20T16:04:40.706727Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_htmlrender", + "project_link": "nonebot-plugin-htmlrender", + "name": "nonebot-plugin-htmlrender", + "desc": "通过浏览器渲染图片", + "author": "kexue-z", + "homepage": "https://github.com/kexue-z/nonebot-plugin-htmlrender", + "tags": [], + "is_official": false, + "type": "library", + "supported_adapters": null, + "valid": true, + "version": "0.3.1", + "time": "2024-03-14T08:47:15.010445Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_admin", + "project_link": "nonebot-plugin-admin", + "name": "不简易群管", + "desc": "Nonebot2 群管插件 插件", + "author": "yzyyz1387", + "homepage": "https://github.com/yzyyz1387/nonebot_plugin_admin", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": null, + "valid": false, + "version": "0.4.5.4", + "time": "2024-02-29T03:41:19.424728Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_memes", + "project_link": "nonebot-plugin-memes", + "name": "表情包制作", + "desc": "制作各种沙雕表情包", + "author": "MeetWq", + "homepage": "https://github.com/noneplugin/nonebot-plugin-memes", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": [], + "valid": true, + "version": "0.6.2", + "time": "2024-03-12T09:27:09.610250Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_repeater", + "project_link": "nonebot-plugin-repeater", + "name": "群聊复读机", + "desc": "谁不喜欢+1呢?", + "author": "ninthseason", + "homepage": "https://github.com/ninthseason/nonebot-plugin-repeater", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-08-01T11:49:25.518834Z", + "version": "3.1.4", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_directlinker", + "project_link": "nonebot-plugin-directlinker", + "name": "群文件直链提取器", + "desc": "提取群文件的下载直链。", + "author": "ninthseason", + "homepage": "https://github.com/ninthseason/nonebot-plugin-directlinker", + "tags": [ + { + "label": "a:cqhttp", + "color": "#ea5252" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-02-12T14:21:08.959060Z", + "version": "2.4.0", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_forwarder", + "project_link": "nonebot-plugin-forwarder", + "name": "转发姬", + "desc": "群聊消息实时转发", + "author": "ninthseason", + "homepage": "https://github.com/ninthseason/nonebot_plugin_forwarder", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-12-23T06:30:08.821807Z", + "version": "2.1.6", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_roll", + "project_link": "nonebot-plugin-roll", + "name": "掷骰子", + "desc": "掷骰!扔出指定个数的多面骰子🎲", + "author": "KafCoppelia", + "homepage": "https://github.com/MinatoAquaCrews/nonebot_plugin_roll", + "tags": [ + { + "label": "roll", + "color": "#ea5252" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": null, + "valid": true, + "version": "0.2.3", + "time": "2023-10-18T02:03:43.776108Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_crazy_thursday", + "project_link": "nonebot-plugin-crazy-thursday", + "name": "疯狂星期四", + "desc": "持续疯狂!KFC疯狂星期四🍗", + "author": "KafCoppelia", + "homepage": "https://github.com/MinatoAquaCrews/nonebot_plugin_crazy_thursday", + "tags": [ + { + "label": "Thursday", + "color": "#ea5252" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": null, + "valid": true, + "version": "0.2.8", + "time": "2023-10-07T01:52:39.951306Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_covid19_news", + "project_link": "nonebot-plugin-covid19-news", + "name": "新冠疫情查询", + "desc": "查询国内城市新冠疫情信息与政策", + "author": "Zeta-qixi", + "homepage": "https://github.com/Zeta-qixi/nonebot-plugin-covid19-news", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-12-17T05:15:45.018998Z", + "version": "0.7", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_remake", + "project_link": "nonebot-plugin-remake", + "name": "人生重开", + "desc": "人生重开模拟器", + "author": "MeetWq", + "homepage": "https://github.com/noneplugin/nonebot-plugin-remake", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.bilibili", + "nonebot.adapters.console", + "nonebot.adapters.ding", + "nonebot.adapters.discord", + "nonebot.adapters.dodo", + "nonebot.adapters.feishu", + "nonebot.adapters.github", + "nonebot.adapters.kaiheila", + "nonebot.adapters.minecraft", + "nonebot.adapters.mirai2", + "nonebot.adapters.ntchat", + "nonebot.adapters.onebot.v11", + "nonebot.adapters.onebot.v12", + "nonebot.adapters.qq", + "nonebot.adapters.red", + "nonebot.adapters.satori", + "nonebot.adapters.telegram" + ], + "valid": true, + "version": "0.4.1", + "time": "2024-03-12T06:00:09.515301Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_weather_lite", + "project_link": "nonebot-plugin-weather-lite", + "name": "天气查询", + "desc": "使用wttr.in的在线天气查询。", + "author": "zjkwdy", + "homepage": "https://github.com/zjkwdy/nonebot_plugin_weather_lite", + "tags": [ + { + "label": "t:天气", + "color": "#6ec3d9" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-01-20T03:34:36.465960Z", + "version": "0.0.1", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_fortune", + "project_link": "nonebot-plugin-fortune", + "name": "今日运势", + "desc": "抽签!占卜你的今日运势🙏", + "author": "KafCoppelia", + "homepage": "https://github.com/MinatoAquaCrews/nonebot_plugin_fortune", + "tags": [ + { + "label": "fortune", + "color": "#ea6f52" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": null, + "valid": true, + "version": "0.4.12", + "time": "2023-07-15T14:42:48.258728Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_tarot", + "project_link": "nonebot-plugin-tarot", + "name": "塔罗牌", + "desc": "塔罗牌!魔法占卜🔮", + "author": "KafCoppelia", + "homepage": "https://github.com/KafCoppelia/nonebot_plugin_tarot", + "tags": [ + { + "label": "a:onebot", + "color": "#eaa452" + }, + { + "label": "t:tarot", + "color": "#461264" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-03-28T12:56:24.105825Z", + "version": "0.4.0.post4", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_emojimix", + "project_link": "nonebot-plugin-emojimix", + "name": "emoji合成", + "desc": "将两个emoji合成为一张图片", + "author": "MeetWq", + "homepage": "https://github.com/noneplugin/nonebot-plugin-emojimix", + "tags": [ + { + "label": "emoji", + "color": "#ea5252" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": null, + "valid": true, + "version": "0.4.0", + "time": "2024-03-01T02:49:06.907659Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_what2eat", + "project_link": "nonebot-plugin-what2eat", + "name": "今天吃什么", + "desc": "选择恐惧症?让Bot决定你今天吃什么🍕", + "author": "KafCoppelia", + "homepage": "https://github.com/KafCoppelia/nonebot_plugin_what2eat", + "tags": [ + { + "label": "a:onebot", + "color": "#cd3d3d" + }, + { + "label": "t:what2eat", + "color": "#f09526" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-04-02T11:55:27.491231Z", + "version": "0.3.6", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_datastore", + "project_link": "nonebot-plugin-datastore", + "name": "数据存储", + "desc": "NoneBot 数据存储插件", + "author": "he0119", + "homepage": "https://github.com/he0119/nonebot-plugin-datastore", + "tags": [], + "is_official": false, + "type": "library", + "supported_adapters": null, + "valid": true, + "version": "1.2.0", + "time": "2024-02-28T09:01:07.651465Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_boardgame", + "project_link": "nonebot-plugin-boardgame", + "name": "棋类游戏", + "desc": "五子棋、黑白棋、围棋", + "author": "MeetWq", + "homepage": "https://github.com/noneplugin/nonebot-plugin-boardgame", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.console", + "nonebot.adapters.discord", + "nonebot.adapters.dodo", + "nonebot.adapters.feishu", + "nonebot.adapters.kaiheila", + "nonebot.adapters.onebot.v11", + "nonebot.adapters.onebot.v12", + "nonebot.adapters.qq", + "nonebot.adapters.red", + "nonebot.adapters.satori", + "nonebot.adapters.telegram" + ], + "valid": true, + "version": "0.4.0", + "time": "2024-03-02T09:28:02.725259Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_wordcloud", + "project_link": "nonebot-plugin-wordcloud", + "name": "词云", + "desc": "利用群消息生成词云", + "author": "he0119", + "homepage": "https://github.com/he0119/nonebot-plugin-wordcloud", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.feishu", + "nonebot.adapters.kaiheila", + "nonebot.adapters.onebot.v11", + "nonebot.adapters.onebot.v12", + "nonebot.adapters.qq", + "nonebot.adapters.red", + "nonebot.adapters.telegram" + ], + "valid": true, + "version": "0.7.0", + "time": "2024-03-01T04:23:25.937459Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_chatrecorder", + "project_link": "nonebot-plugin-chatrecorder", + "name": "聊天记录", + "desc": "记录机器人收到和发出的消息", + "author": "MeetWq", + "homepage": "https://github.com/noneplugin/nonebot-plugin-chatrecorder", + "tags": [], + "is_official": false, + "type": "library", + "supported_adapters": [ + "nonebot.adapters.console", + "nonebot.adapters.discord", + "nonebot.adapters.dodo", + "nonebot.adapters.feishu", + "nonebot.adapters.kaiheila", + "nonebot.adapters.onebot.v11", + "nonebot.adapters.onebot.v12", + "nonebot.adapters.qq", + "nonebot.adapters.red", + "nonebot.adapters.satori", + "nonebot.adapters.telegram" + ], + "valid": true, + "version": "0.6.0", + "time": "2024-03-01T02:09:06.819616Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_antiflash", + "project_link": "nonebot-plugin-antiflash", + "name": "群聊反闪照", + "desc": "顾名思义🎇", + "author": "KafCoppelia", + "homepage": "https://github.com/KafCoppelia/nonebot_plugin_antiflash", + "tags": [ + { + "label": "a:onebot", + "color": "#6f64d4" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-04-19T02:00:25.241994Z", + "version": "0.2.3", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_word_bank2", + "project_link": "nonebot-plugin-word-bank2", + "name": "nonebot-plugin-word-bank2", + "desc": "无数据库的轻量问答插件", + "author": "kexue-z", + "homepage": "https://github.com/kexue-z/nonebot-plugin-word-bank2", + "tags": [ + { + "label": "wordbank", + "color": "#0b00ff" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.1.8", + "time": "2023-06-15T04:20:03.438577Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_txt2img", + "project_link": "nonebot-plugin-txt2img", + "name": "文字转图片", + "desc": "使用 Pillow 进行文字转图片", + "author": "mobyw", + "homepage": "https://github.com/mobyw/nonebot-plugin-txt2img", + "tags": [], + "is_official": false, + "type": "library", + "supported_adapters": [ + "nonebot.adapters.feishu", + "nonebot.adapters.kaiheila", + "nonebot.adapters.onebot.v11", + "nonebot.adapters.onebot.v12", + "nonebot.adapters.qq", + "nonebot.adapters.red", + "nonebot.adapters.telegram" + ], + "valid": true, + "version": "0.4.1", + "time": "2024-02-22T05:25:41.002376Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_morning", + "project_link": "nonebot-plugin-morning", + "name": "おはよう!", + "desc": "早晚安记录作息,培养优质睡眠😴", + "author": "KafCoppelia", + "homepage": "https://github.com/KafCoppelia/nonebot_plugin_morning", + "tags": [ + { + "label": "a:onebot", + "color": "#da421c" + }, + { + "label": "t:morning", + "color": "#ebc025" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-12-28T03:36:05.610930Z", + "version": "0.3.2", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_pixiv", + "project_link": "nonebot-plugin-pixiv", + "name": "pixiv.net p站查询图片", + "desc": "pixiv.net p站查询图片(支持动图和多图)", + "author": "anlen123", + "homepage": "https://github.com/anlen123/nonebot_plugin_pixiv", + "tags": [ + { + "label": "t: pixiv", + "color": "#0096fa" + }, + { + "label": "R18", + "color": "#ffff00" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-12-20T09:53:04.279714Z", + "version": "1.1.5", + "skip_test": false + }, + { + "module_name": "YetAnotherPicSearch", + "project_link": "yetanotherpicsearch", + "name": "YetAnotherPicSearch", + "desc": "基于 kitUIN/PicImageSearch 的另一个 Nonebot 搜图插件。", + "author": "NekoAria", + "homepage": "https://github.com/NekoAria/YetAnotherPicSearch", + "tags": [ + { + "label": "a:onebot", + "color": "#000000" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2024-03-15T04:04:51.199073Z", + "version": "1.9.6", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_gachalogs", + "project_link": "nonebot-plugin-gachalogs", + "name": "原神抽卡记录分析", + "desc": "统计及导出原神祈愿记录,在 QQ 里鉴定原神欧皇吧!", + "author": "monsterxcn", + "homepage": "https://github.com/monsterxcn/nonebot-plugin-gachalogs", + "tags": [ + { + "label": "t:Genshin", + "color": "#ffd49f" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-07-10T08:08:27.393467Z", + "version": "0.2.13", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_everyday_en", + "project_link": "nonebot-plugin-everyday-en", + "name": "每日一句", + "desc": "每日一句英文句子,可选定时发送", + "author": "MelodyYuuka", + "homepage": "https://github.com/MelodyYuuka/nonebot_plugin_everyday_en", + "tags": [ + { + "label": "a:onebot", + "color": "#000000" + }, + { + "label": "EveryDay", + "color": "#ea5252" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-04-02T07:45:02.498078Z", + "version": "1.1.5", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_fire", + "project_link": "nonebot-plugin-fire", + "name": "QQ自动续火花", + "desc": "通过每天定时发送“/echo 花花”实现续火花", + "author": "25252www", + "homepage": "https://github.com/25252www/nonebot_plugin_fire", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-04-01T11:33:36.907538Z", + "version": "1.0.3", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_qrcode", + "project_link": "nonebot-plugin-qrcode", + "name": "二维码识别与发送", + "desc": "qq聊天二维码插件", + "author": "kexue-z", + "homepage": "https://github.com/kexue-z/nonebot-plugin-qrcode", + "tags": [ + { + "label": "a:onebot", + "color": "#ea5252" + }, + { + "label": "QRcode", + "color": "#0020ff" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-01-04T10:54:24.541684Z", + "version": "0.0.6", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_ygo", + "project_link": "nonebot-plugin-ygo", + "name": "游戏王卡查", + "desc": "nonebot的游戏王卡查插件", + "author": "anlen123", + "homepage": "https://github.com/anlen123/nonebot_plugin_ygo", + "tags": [ + { + "label": "t:游戏王", + "color": "#ea5252" + }, + { + "label": "口胡王", + "color": "#ea5252" + }, + { + "label": "ygo", + "color": "#ea5252" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-07-03T11:45:31.205090Z", + "version": "1.0.2", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_bilibilibot", + "project_link": "nonebot-plugin-bilibilibot", + "name": "bilibili通知插件", + "desc": "将up主更新、番剧更新、主播开播等信息推送到QQ", + "author": "TDK1969", + "homepage": "https://github.com/TDK1969/nonebot_plugin_bilibilibot", + "tags": [ + { + "label": "bilibili", + "color": "#f605dd" + }, + { + "label": "a:onebot11", + "color": "#05f6e4" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2024-01-03T18:12:50.547913Z", + "version": "2.3.4", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_color", + "project_link": "nonebot-plugin-color", + "name": "色图生成", + "desc": "用于生成指定色彩图片的 NoneBot2 插件", + "author": "monsterxcn", + "homepage": "https://github.com/monsterxcn/nonebot-plugin-color", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": null, + "valid": false, + "version": "0.4.0", + "time": "2024-03-10T10:07:17.874441Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_blackjack", + "project_link": "nonebot-plugin-blackjack", + "name": "21点游戏插件", + "desc": "一个基于签到积分的21点游戏与积分对战插件", + "author": "yaowan233", + "homepage": "https://github.com/yaowan233/nonebot-plugin-blackjack", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-03-11T15:11:50.631785Z", + "version": "0.0.5", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_arcaeabot", + "project_link": "nonebot-plugin-arcaeabot", + "name": "Arcaea查分插件", + "desc": "Arcaea查分插件(recent, best30)", + "author": "SEAFHMC", + "homepage": "https://github.com/SEAFHMC/nonebot-plugin-arcaeabot", + "tags": [ + { + "label": "Arcaea", + "color": "#db52ea" + }, + { + "label": "a:onebot", + "color": "#ff2e00" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-06-09T14:09:57.926195Z", + "version": "3.1.19", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_ddcheck", + "project_link": "nonebot-plugin-ddcheck", + "name": "成分姬", + "desc": "查询B站用户关注的VTuber成分", + "author": "MeetWq", + "homepage": "https://github.com/noneplugin/nonebot-plugin-ddcheck", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": null, + "valid": true, + "version": "0.4.0", + "time": "2024-03-02T15:02:58.078642Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_leetcode2", + "project_link": "nonebot-plugin-leetcode2", + "name": "第二个leetcode查询插件", + "desc": "可查询用户信息、获取每日一题与随机一题和搜索题目。", + "author": "Nranphy", + "homepage": "https://github.com/Nranphy/nonebot_plugin_leetcode2", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-03-13T12:14:05.351724Z", + "version": "1.1.3", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_hikarisearch", + "project_link": "nonebot-plugin-hikarisearch", + "name": "HikariSearch", + "desc": "使用 HikariSearch 的又一个搜图插件", + "author": "MeetWq", + "homepage": "https://github.com/MeetWq/nonebot-plugin-hikarisearch", + "tags": [ + { + "label": "a:onebot", + "color": "#000000" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-10-03T06:52:42.532048Z", + "version": "0.1.7", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_mediawiki", + "project_link": "nonebot-plugin-mediawiki", + "name": "MediaWiki查询", + "desc": "为群聊提供简单的wiki查询功能(仅支持onebot)", + "author": "KoishiStudio", + "homepage": "https://github.com/KoishiStudio/nonebot-plugin-mediawiki", + "tags": [ + { + "label": "a:onebot", + "color": "#000000" + }, + { + "label": "t:wiki", + "color": "#679ff9" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-08-28T19:29:44.225452Z", + "version": "1.0.1", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_wordle", + "project_link": "nonebot-plugin-wordle", + "name": "猜单词", + "desc": "wordle猜单词游戏", + "author": "MeetWq", + "homepage": "https://github.com/noneplugin/nonebot-plugin-wordle", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.console", + "nonebot.adapters.discord", + "nonebot.adapters.dodo", + "nonebot.adapters.feishu", + "nonebot.adapters.kaiheila", + "nonebot.adapters.onebot.v11", + "nonebot.adapters.onebot.v12", + "nonebot.adapters.qq", + "nonebot.adapters.red", + "nonebot.adapters.satori", + "nonebot.adapters.telegram" + ], + "valid": true, + "version": "0.4.1", + "time": "2024-02-28T15:01:45.634106Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_giyf", + "project_link": "nonebot-plugin-giyf", + "name": "快速搜索", + "desc": "指引群友快速 访 ~~(tui)~~ 问 ~~(dao)~~ 谷歌娘(在中国大陆大概就是度娘了~)", + "author": "KoishiStudio", + "homepage": "https://github.com/KoishiStudio/nonebot-plugin-giyf", + "tags": [ + { + "label": "a:onebot", + "color": "#000000" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-06-10T03:01:26.351493Z", + "version": "0.1.3", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_abstract", + "project_link": "nonebot-plugin-abstract", + "name": "语句抽象化", + "desc": "能够将你的语句变得抽象起来~", + "author": "CherryCherries", + "homepage": "https://github.com/CherryCherries/nonebot-plugin-abstract", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-12-25T09:05:56.928814Z", + "version": "1.0.6", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_params", + "project_link": "nonebot-plugin-params", + "name": "多适配器帮助函数", + "desc": "提供编写多适配器插件的帮助函数", + "author": "iyume", + "homepage": "https://github.com/iyume/nonebot-plugin-params", + "tags": [ + { + "label": "t:helper", + "color": "#ffe873" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-03-28T04:56:05.243623Z", + "version": "0.1.1", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_handle", + "project_link": "nonebot-plugin-handle", + "name": "猜成语", + "desc": "汉字Wordle 猜成语", + "author": "MeetWq", + "homepage": "https://github.com/noneplugin/nonebot-plugin-handle", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.console", + "nonebot.adapters.discord", + "nonebot.adapters.dodo", + "nonebot.adapters.feishu", + "nonebot.adapters.kaiheila", + "nonebot.adapters.onebot.v11", + "nonebot.adapters.onebot.v12", + "nonebot.adapters.qq", + "nonebot.adapters.red", + "nonebot.adapters.satori", + "nonebot.adapters.telegram" + ], + "valid": true, + "version": "0.4.1", + "time": "2024-03-03T14:32:13.372089Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_minesweeper", + "project_link": "nonebot-plugin-minesweeper", + "name": "扫雷", + "desc": "扫雷游戏", + "author": "MeetWq", + "homepage": "https://github.com/noneplugin/nonebot-plugin-minesweeper", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.console", + "nonebot.adapters.discord", + "nonebot.adapters.dodo", + "nonebot.adapters.feishu", + "nonebot.adapters.kaiheila", + "nonebot.adapters.onebot.v11", + "nonebot.adapters.onebot.v12", + "nonebot.adapters.qq", + "nonebot.adapters.red", + "nonebot.adapters.satori", + "nonebot.adapters.telegram" + ], + "valid": true, + "version": "0.4.1", + "time": "2024-03-02T05:26:09.929052Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_draw", + "project_link": "nonebot_plugin_draw", + "name": "nonebot_plugin_draw", + "desc": "模拟抽签的一个本地化插件", + "author": "bingganhe123", + "homepage": "https://github.com/bingganhe123/nonebot_plugin_draw", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-04-12T02:35:00.986589Z", + "version": "0.1.2", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_randomtkk", + "project_link": "nonebot-plugin-randomtkk", + "name": "随机唐可可", + "desc": "找到唐可可,和她一起做学园偶像!🎶", + "author": "KafCoppelia", + "homepage": "https://github.com/MinatoAquaCrews/nonebot_plugin_randomtkk", + "tags": [ + { + "label": "a:onebot", + "color": "#d62222" + }, + { + "label": "t:Tan Kuku", + "color": "#fdaf75" + }, + { + "label": "t:Liyuu", + "color": "#465dfd" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-03-29T10:01:33.569934Z", + "version": "0.1.5.post1", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_dida", + "project_link": "nonebot-plugin-dida", + "name": "nonebot-plugin-dida", + "desc": "基于Nonebot的滴答清单插件,可创建普通任务/子任务,按照条件查询任务", + "author": "TDK1969", + "homepage": "https://github.com/TDK1969/nonebot_plugin_dida", + "tags": [ + { + "label": "t:滴答清单", + "color": "#007ffd" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-12-24T14:43:52.546960Z", + "version": "2.0.0.1", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_alipayvoice", + "project_link": "nonebot-plugin-alipayvoice", + "name": "支付宝到账语音", + "desc": "发送支付宝到账语音, 支持金额范围为0.01~999999999999.99", + "author": "A-kirami", + "homepage": "https://github.com/A-kirami/nonebot-plugin-alipayvoice", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-06-21T03:04:10.967969Z", + "version": "0.5.0", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_answersbook", + "project_link": "nonebot-plugin-answersbook", + "name": "答案之书", + "desc": "愿一切无解都有解!解除你的迷惑,终结你的纠结!", + "author": "A-kirami", + "homepage": "https://github.com/A-kirami/nonebot-plugin-answersbook", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-05-09T16:28:04.479501Z", + "version": "0.2.0", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_hitokoto", + "project_link": "nonebot-plugin-hitokoto", + "name": "一言", + "desc": "总有一句话能打动你的心", + "author": "A-kirami", + "homepage": "https://github.com/A-kirami/nonebot-plugin-hitokoto", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-12-27T03:19:08.068742Z", + "version": "0.2.1", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_bilicover", + "project_link": "nonebot-plugin-bilicover", + "name": "B站视频封面提取", + "desc": "提取B站视频的封面,支持链接、av号、bv号", + "author": "A-kirami", + "homepage": "https://github.com/A-kirami/nonebot-plugin-bilicover", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-02-15T15:00:17.810788Z", + "version": "0.2.2", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_cchess", + "project_link": "nonebot-plugin-cchess", + "name": "象棋", + "desc": "象棋,支持人机和对战", + "author": "MeetWq", + "homepage": "https://github.com/noneplugin/nonebot-plugin-cchess", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.console", + "nonebot.adapters.discord", + "nonebot.adapters.dodo", + "nonebot.adapters.feishu", + "nonebot.adapters.kaiheila", + "nonebot.adapters.onebot.v11", + "nonebot.adapters.onebot.v12", + "nonebot.adapters.qq", + "nonebot.adapters.red", + "nonebot.adapters.satori", + "nonebot.adapters.telegram" + ], + "valid": true, + "version": "0.4.0", + "time": "2024-03-01T15:20:58.978317Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_chess", + "project_link": "nonebot-plugin-chess", + "name": "国际象棋", + "desc": "国际象棋,支持人机和对战", + "author": "MeetWq", + "homepage": "https://github.com/noneplugin/nonebot-plugin-chess", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.console", + "nonebot.adapters.discord", + "nonebot.adapters.dodo", + "nonebot.adapters.feishu", + "nonebot.adapters.kaiheila", + "nonebot.adapters.onebot.v11", + "nonebot.adapters.onebot.v12", + "nonebot.adapters.qq", + "nonebot.adapters.red", + "nonebot.adapters.satori", + "nonebot.adapters.telegram" + ], + "valid": true, + "version": "0.5.0", + "time": "2024-03-02T06:32:33.038543Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_charpic", + "project_link": "nonebot-plugin-charpic", + "name": "charpic", + "desc": "合成字符画", + "author": "RafuiiChan", + "homepage": "https://github.com/1umine/nonebot_plugin_charpic", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.1.3", + "time": "2023-10-08T15:19:56.533711Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_miragetank", + "project_link": "nonebot-plugin-miragetank", + "name": "miragetank", + "desc": "合成/分离幻影坦克图片", + "author": "RafuiiChan", + "homepage": "https://github.com/1umine/nonebot_plugin_miragetank", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.1.5", + "time": "2023-10-06T04:10:56.321148Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_covid", + "project_link": "nonebot-plugin-covid", + "name": "国内新冠疫情数据查询", + "desc": "查询国内各省份及下属地级市的疫情数据", + "author": "nicklly", + "homepage": "https://github.com/nicklly/nonebot2_covid_plugin", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-06-26T22:14:17.882416+08:00", + "version": "0.0.1", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_yulu", + "project_link": "nonebot-plugin-yulu", + "name": "语录娱乐", + "desc": "语录娱乐小插件", + "author": "bingqiu456", + "homepage": "https://github.com/bingqiu456/nonebot-plugin-yulu", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-01-20T10:15:53.506911Z", + "version": "3.0", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_maze", + "project_link": "nonebot-plugin-maze", + "name": "走迷宫", + "desc": "与机器人交互解迷宫", + "author": "EtherLeaF", + "homepage": "https://github.com/EtherLeaF/nonebot_plugin_maze", + "tags": [ + { + "label": "a:onebot", + "color": "#ea5252" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-12-24T07:37:30.144772Z", + "version": "0.2.4", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_moyu", + "project_link": "nonebot-plugin-moyu", + "name": "摸鱼日历", + "desc": "摸鱼一时爽, 一直摸鱼一直爽", + "author": "A-kirami", + "homepage": "https://github.com/A-kirami/nonebot-plugin-moyu", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-02-18T12:01:49.758334Z", + "version": "0.3.3", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_mockingbird", + "project_link": "nonebot-plugin-mockingbird", + "name": "MockingBird语音", + "desc": "利用MockingBird来生成语音,并支持多种语音切换", + "author": "AkashiCoin", + "homepage": "https://github.com/AkashiCoin/nonebot_plugin_mockingbird", + "tags": [ + { + "label": "a:onebot", + "color": "#000000" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-05-24T10:28:06.597823Z", + "version": "0.2.1", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_baidutranslate", + "project_link": "nonebot-plugin-baidutranslate", + "name": "百度翻译", + "desc": "可以调用百度翻译 API 实现常用语种之间的互译", + "author": "NumberSir", + "homepage": "https://github.com/NumberSir/nonebot_plugin_baidutranslate", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-04-04T02:02:45.349939Z", + "version": "0.3.2", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_tortoise_orm", + "project_link": "nonebot-plugin-tortoise-orm", + "name": "nonebot_plugin_tortoise_orm", + "desc": "Tortoise ORM 插件", + "author": "kexue-z", + "homepage": "https://github.com/kexue-z/nonebot-plugin-tortoise-orm", + "tags": [], + "is_official": false, + "type": "library", + "supported_adapters": null, + "valid": true, + "version": "0.1.1", + "time": "2023-08-22T04:01:30.366075Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_dailysign", + "project_link": "nonebot-plugin-dailysign", + "name": "nonebot_plugin_dailysign", + "desc": "简单的签到插件", + "author": "kexue-z", + "homepage": "https://github.com/kexue-z/nonebot-plugin-dailysign", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.1.0.1", + "time": "2023-06-29T02:30:01.006481Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_tetris_stats", + "project_link": "nonebot-plugin-tetris-stats", + "name": "TETRIS Stats", + "desc": "一个基于nonebot2的用于查询TETRIS相关游戏玩家数据的插件", + "author": "shoucandanghehe", + "homepage": "https://github.com/shoucandanghehe/nonebot-plugin-tetris-stats", + "tags": [ + { + "label": "a:onebot", + "color": "#da2b2b" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-09-21T14:35:01.691461Z", + "version": "0.4.4", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_bilibili_viode", + "project_link": "nonebot_plugin_bilibili_viode", + "name": "B站视频伪分享卡片", + "desc": "将用户发送的B站视频ID转为(伪)分享卡片的形式", + "author": "ASTWY", + "homepage": "https://github.com/ASTWY/nonebot_plugin_bilibili_viode", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-05-30T21:21:44.093741Z", + "version": "1.0.1", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_imagetools", + "project_link": "nonebot-plugin-imagetools", + "name": "图片操作", + "desc": "简单图片操作", + "author": "MeetWq", + "homepage": "https://github.com/noneplugin/nonebot-plugin-imagetools", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.bilibili", + "nonebot.adapters.console", + "nonebot.adapters.ding", + "nonebot.adapters.discord", + "nonebot.adapters.dodo", + "nonebot.adapters.feishu", + "nonebot.adapters.github", + "nonebot.adapters.kaiheila", + "nonebot.adapters.minecraft", + "nonebot.adapters.mirai2", + "nonebot.adapters.ntchat", + "nonebot.adapters.onebot.v11", + "nonebot.adapters.onebot.v12", + "nonebot.adapters.qq", + "nonebot.adapters.red", + "nonebot.adapters.satori", + "nonebot.adapters.telegram" + ], + "valid": true, + "version": "0.4.1", + "time": "2024-03-12T09:52:51.485907Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_warframe_clock", + "project_link": "nonebot-plugin-warframe-clock", + "name": "Warframe时间查询", + "desc": "查询Warframe的平原与地球时间状态", + "author": "axStar", + "homepage": "https://github.com/axStar/nonebot_plugin_warframe_clock", + "tags": [ + { + "label": "a:onebot", + "color": "#000000" + }, + { + "label": "Warframe", + "color": "#149090" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-05-31T03:32:53.069089Z", + "version": "1.3", + "skip_test": false + }, + { + "module_name": "hikari_bot", + "project_link": "hikari-bot", + "name": "Hikari-战舰世界水表查询", + "desc": "顾名思义", + "author": "benx1n", + "homepage": "https://github.com/benx1n/HikariBot", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-12-06T04:31:59.376089Z", + "version": "1.0.6", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_who_at_me", + "project_link": "nonebot-plugin-who-at-me", + "name": "谁艾特我了", + "desc": "看看是谁又在艾特我", + "author": "SEAFHMC", + "homepage": "https://github.com/SEAFHMC/nonebot-plugin-who-at-me", + "tags": [ + { + "label": "a:onebot", + "color": "#ea5252" + }, + { + "label": "t:群聊", + "color": "#52afea" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-09-19T02:26:39.239522Z", + "version": "0.2.8", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_covid_19_by", + "project_link": "nonebot-plugin-covid-19-by", + "name": "疫情小助手", + "desc": "疫情小助手 支持查地区 风险地区 境外输入等", + "author": "bingqiu456", + "homepage": "https://github.com/bingqiu456/nonebot-plugin-covid-19-by", + "tags": [ + { + "label": "a:onebot", + "color": "#52ea8a" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-08-04T12:51:50.273807Z", + "version": "4.5", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_reboot", + "project_link": "nonebot-plugin-reboot", + "name": "nonebot_plugin_reboot [重启 bot]", + "desc": "用命令重启机器人", + "author": "18870", + "homepage": "https://github.com/18870/nonebot-plugin-reboot", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.1.4", + "time": "2023-06-24T10:34:29.338115Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_setu4", + "project_link": "nonebot-plugin-setu4", + "name": "setu4", + "desc": "内置数据库的setu插件, 尝试降低因为风控发不出图的概率", + "author": "Special-Week", + "homepage": "https://github.com/Special-Week/nonebot_plugin_setu4", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.15.114514.1", + "time": "2024-02-20T06:48:16.825857Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_smart_reply", + "project_link": "nonebot-plugin-smart-reply", + "name": "smart_reply", + "desc": "nonebot2的融合了openai, newbing, 词库的智障回复插件", + "author": "Special-Week", + "homepage": "https://github.com/Special-Week/nonebot_plugin_smart_reply", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.15.114514", + "time": "2024-02-28T10:39:44.325920Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_today_in_history", + "project_link": "nonebot-plugin-today-in-history", + "name": "历史上的今天", + "desc": "发送每日历史上的今天", + "author": "AquamarineCyan", + "homepage": "https://github.com/AquamarineCyan/nonebot-plugin-today-in-history", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.1.3", + "time": "2023-12-06T13:23:11.873181Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_BitTorrent", + "project_link": "nonebot_plugin_BitTorrent", + "name": "bittorrent", + "desc": "磁力搜索插件", + "author": "Special-Week", + "homepage": "https://github.com/Special-Week/nonebot_plugin_BitTorrent", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": null, + "valid": true, + "version": "0.0.21", + "time": "2024-02-20T06:47:14.799458Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_namelist", + "project_link": "nonebot-plugin-namelist", + "name": "黑白名单", + "desc": "简易黑白用户名单管理", + "author": "A-kirami", + "homepage": "https://github.com/A-kirami/nonebot-plugin-namelist", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-07-16T09:41:29.820153Z", + "version": "0.2.0", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_bread_shop", + "project_link": "nonebot-plugin-bread-shop", + "name": "面包店小游戏", + "desc": "面包店休闲小游戏", + "author": "Mai-icy", + "homepage": "https://github.com/Mai-icy/nonebot-plugin-bread-shop", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-02-17T08:16:03.035271Z", + "version": "0.1.14", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_PicMenu", + "project_link": "nonebot_plugin_PicMenu", + "name": "PicMenu", + "desc": "根据插件元数据生成图片化功能菜单", + "author": "hamo-reid", + "homepage": "https://github.com/hamo-reid/nonenot_plugin_PicMenu", + "tags": [ + { + "label": "a:onebot", + "color": "#030303" + }, + { + "label": "t:menu", + "color": "#753dc6" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-08-16T05:48:01.071422Z", + "version": "0.2", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_horserace", + "project_link": "nonebot_plugin_horserace", + "name": "赛马", + "desc": "群内青春版赛马小游戏", + "author": "shinianj", + "homepage": "https://github.com/shinianj/nonebot_plugin_horserace", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-06-30T05:20:53.029037Z", + "version": "2.2", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_firexN", + "project_link": "nonebot-plugin-firexN", + "name": "一起燚xN吧", + "desc": "QQ续火花,可以自定义多个联系人、消息内容、发送时间,支持群聊定时消息", + "author": "GC-ZF", + "homepage": "https://github.com/GC-ZF/nonebot_plugin_firexN", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-12-24T13:46:27.472585Z", + "version": "0.1.7", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_bfinfo", + "project_link": "nonebot-plugin-bfinfo", + "name": "战地1、5战绩查询工具", + "desc": "QQ私聊或群聊发送战地游戏ID,返回基础信息以及最佳兵种、最佳枪械、最佳载具、最佳模式信息", + "author": "GC-ZF", + "homepage": "https://github.com/GC-ZF/nonebot_plugin_bfinfo", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-01-05T14:10:41.291955Z", + "version": "0.0.5", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_osubot", + "project_link": "nonebot-plugin-osubot", + "name": "OSUBot", + "desc": "OSU查分插件", + "author": "yaowan233", + "homepage": "https://github.com/yaowan233/nonebot-plugin-osubot", + "tags": [ + { + "label": "OSU", + "color": "#eb5d9b" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [], + "valid": true, + "version": "5.2.2", + "time": "2024-03-11T07:06:45.988200Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_acc_calculate", + "project_link": "nonebot-plugin-acc-calculate", + "name": "ACC计算工具", + "desc": "能够计算段位的单曲acc,支持malodyv3段位regular、ex", + "author": "10-24", + "homepage": "https://github.com/10-24/nonebot-plugin-acc-calculate", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-03-10T10:15:56.678714Z", + "version": "1.0.0", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_kawaii_robot", + "project_link": "nonebot_plugin_kawaii_robot", + "name": "KawaiiRobot", + "desc": "使用 Kyomotoi/AnimeThesaurus 的 NoneBot2 的回复(文i)插件", + "author": "KarisAya", + "homepage": "https://github.com/KarisAya/nonebot_plugin_kawaii_robot/", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.bilibili", + "nonebot.adapters.console", + "nonebot.adapters.ding", + "nonebot.adapters.discord", + "nonebot.adapters.dodo", + "nonebot.adapters.feishu", + "nonebot.adapters.github", + "nonebot.adapters.kaiheila", + "nonebot.adapters.minecraft", + "nonebot.adapters.mirai2", + "nonebot.adapters.ntchat", + "nonebot.adapters.onebot.v11", + "nonebot.adapters.onebot.v12", + "nonebot.adapters.qq", + "nonebot.adapters.red", + "nonebot.adapters.satori", + "nonebot.adapters.telegram" + ], + "valid": true, + "version": "4.1.0.post1", + "time": "2024-03-15T14:33:21.268256Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_addFriend", + "project_link": "nonebot_plugin_addFriend", + "name": "处理好友添加和群邀请", + "desc": "一个基于NoneBot2的插件,用于处理被请求加QQ好友和QQ群的请求", + "author": "ziru-w", + "homepage": "https://github.com/ziru-w/nonebot_plugin_addFriend", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-09-16T14:12:37.178511Z", + "version": "2.5.5", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_date_name", + "project_link": "nonebot-plugin-date-name", + "name": "群昵称时间", + "desc": "一个可以群昵称显示现在时间的插件", + "author": "bingqiu456", + "homepage": "https://github.com/bingqiu456/nonebot-plugin-date-name", + "tags": [ + { + "label": "a:onebot", + "color": "#a552ea" + }, + { + "label": "t:qun_card", + "color": "#e552ea" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-04-15T09:06:23.113910Z", + "version": "3.0", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_easyCommand", + "project_link": "nonebot_plugin_easyCommand", + "name": "易命令", + "desc": "一个基于NoneBot2的简单的用于动态地添加命令或添加定时任务的插件", + "author": "ziru-w", + "homepage": "https://github.com/ziru-w/nonebot_plugin_easyCommand", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-01-15T03:35:40.231889Z", + "version": "1.1.4", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_report", + "project_link": "nonebot-plugin-report", + "name": "推送钩子", + "desc": "使用 webhook 向用户推送消息", + "author": "syrinka", + "homepage": "https://github.com/syrinka/nonebot-plugin-report", + "tags": [ + { + "label": "t:webhook", + "color": "#51b3a8" + }, + { + "label": "t:notify", + "color": "#3985f7" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2024-03-10T09:44:45.338348Z", + "version": "1.3.0", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_hammer_nbnhhsh", + "project_link": "nonebot-plugin-hammer-nbnhhsh", + "name": "「能不能好好说话?」缩写翻译", + "desc": "拼音首字母及阿拉伯数字缩写翻译", + "author": "ArgonarioD", + "homepage": "https://github.com/ArgonarioD/nonebot-plugin-hammer-nbnhhsh", + "tags": [ + { + "label": "a:onebot", + "color": "#000000" + }, + { + "label": "a:cqhttp", + "color": "#000000" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-08-01T06:05:33.097465Z", + "version": "1.0.0", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_bawiki", + "project_link": "nonebot-plugin-bawiki", + "name": "BAWiki", + "desc": "碧蓝档案Wiki插件", + "author": "lgc2333", + "homepage": "https://github.com/lgc-NB2Dev/nonebot-plugin-bawiki", + "tags": [ + { + "label": "碧蓝档案", + "color": "#00d7fb" + }, + { + "label": "蔚藍檔案", + "color": "#00d7fb" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.11.2", + "time": "2024-03-10T11:22:39.906792Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_mcqq", + "project_link": "nonebot-plugin-mcqq", + "name": "MC_QQ", + "desc": "基于NoneBot的与Minecraft Server互通消息的插件", + "author": "17TheWord", + "homepage": "https://github.com/17TheWord/nonebot-plugin-mcqq", + "tags": [ + { + "label": "Minecraft", + "color": "#52ea6f" + }, + { + "label": "消息互通", + "color": "#52eadf" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.minecraft", + "nonebot.adapters.onebot.v11", + "nonebot.adapters.qq" + ], + "valid": false, + "version": "2.5.3.post1", + "time": "2024-02-29T07:00:39.619226Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_covid_19_by_guild", + "project_link": "nonebot-plugin-covid-19-by-guild", + "name": "疫情小助手-频道版", + "desc": "👉 疫情小助手 频道版👈", + "author": "bingqiu456", + "homepage": "https://github.com/bingqiu456/nonebot-plugin-covid-19-by-guild", + "tags": [ + { + "label": "a:QQ频道", + "color": "#ea5252" + }, + { + "label": "t:疫情小助手", + "color": "#526fea" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-08-08T13:02:36.594332Z", + "version": "1.0", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_wiki", + "project_link": "nonebot-plugin-wiki", + "name": "wiki条目搜索、获取简介", + "desc": "通过mediawiki api进行条目搜索、生成简介(biliwiki部分通过网页解析实现)", + "author": "ZombieFly", + "homepage": "https://github.com/ZombieFly/nb2-wiki", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-11-28T14:31:02.494388Z", + "version": "0.1.0", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_groupmanager", + "project_link": "nonebot-plugin-groupmanager", + "name": "多功能群管", + "desc": "与简易群管属于同个产品,就是多了一个入群欢迎,感谢@幼稚园园长 开发的原版插件的帮助", + "author": "HuYihe2008", + "homepage": "https://github.com/HuYihe2008/nonebot_plugin_groupmanager", + "tags": [ + { + "label": "简易群管", + "color": "#53e950" + }, + { + "label": "插件改良", + "color": "#2b7be2" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-08-25T03:50:08.584658Z", + "version": "1.0.5", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_game_collection", + "project_link": "nonebot_plugin_game_collection", + "name": "小游戏合集", + "desc": "改自 nonebot_plugin_russian 合并了nonebot_plugin_horserace还有一些自编玩法的小游戏合集。", + "author": "KarisAya", + "homepage": "https://github.com/KarisAya/nonebot_plugin_game_collection", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-11-13T11:14:29.877161Z", + "version": "2.4.16", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_drawer", + "project_link": "nonebot-plugin-drawer", + "name": "nonebot-plugin-drawer", + "desc": "适用于 Nonebot2 的AI画画插件", + "author": "CrazyBoyM", + "homepage": "https://github.com/CrazyBoyM/nonebot-plugin-drawer", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-10-06T10:07:03.855313Z", + "version": "0.4.0", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_jrrp-n", + "project_link": "nonebot-plugin-jrrp-n", + "name": "每日人品", + "desc": "不基于random的每日人品插件", + "author": "SkyDynamic", + "homepage": "https://github.com/SkyDynamic/nonebot_plugin_jrrp", + "tags": [ + { + "label": "每日人品", + "color": "#ea5252" + }, + { + "label": "jrrp", + "color": "#529fea" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-09-11T12:26:29.764709Z", + "version": "1.0.1a1", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_moegoe", + "project_link": "nonebot-plugin-moegoe", + "name": "日韩中 VITS 模型原神拟声", + "desc": "现在是琪亚娜时间~", + "author": "Yiyuiii", + "homepage": "https://github.com/Yiyuiii/nonebot-plugin-moegoe", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2024-01-03T07:57:36.831231Z", + "version": "0.10.6", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_pixivbot", + "project_link": "nonebot-plugin-pixivbot", + "name": "PixivBot", + "desc": "发送随机Pixiv插画、画师更新推送、定时订阅推送……", + "author": "ssttkkl", + "homepage": "https://github.com/bot-ssttkkl/nonebot-plugin-pixivbot", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.feishu", + "nonebot.adapters.kaiheila", + "nonebot.adapters.onebot.v11", + "nonebot.adapters.onebot.v12", + "nonebot.adapters.red", + "nonebot.adapters.telegram" + ], + "valid": true, + "version": "2.1.1", + "time": "2023-11-29T05:38:58.958393Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_workscore", + "project_link": "nonebot-plugin-workscore", + "name": "工作性价比计算器", + "desc": "工作性价比计算器,算算你有多惨", + "author": "yzyyz1387", + "homepage": "https://github.com/yzyyz1387/nonebot_plugin_workscore", + "tags": [ + { + "label": "工作性价比计算器", + "color": "#3898fc" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": null, + "valid": true, + "version": "0.1.2", + "time": "2023-09-08T10:44:39.331076Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_treehelp", + "project_link": "nonebot-plugin-treehelp", + "name": "帮助", + "desc": "获取插件帮助信息", + "author": "he0119", + "homepage": "https://github.com/he0119/nonebot-plugin-treehelp", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": null, + "valid": true, + "version": "0.4.1", + "time": "2024-03-01T05:09:14.419256Z", + "skip_test": false + }, + { + "module_name": "cqsat", + "project_link": "nonebot-plugin-cqsat", + "name": "HAM助手", + "desc": "业余无线电相关工具", + "author": "yzyyz1387", + "homepage": "https://github.com/yzyyz1387/cqsat", + "tags": [ + { + "label": "业余无线电", + "color": "#ea5252" + }, + { + "label": "HAM", + "color": "#3898fc" + }, + { + "label": "卫星追踪", + "color": "#fca638" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": null, + "valid": false, + "version": "0.1.12.3", + "time": "2024-03-07T03:24:10.900500Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_course", + "project_link": "nonebot-plugin-course", + "name": "课表查询", + "desc": "本周课表,完整课表,下节课在哪上,今天还有什么课🤔", + "author": "InariInDream", + "homepage": "https://github.com/InariInDream/nonebot_plugin_course", + "tags": [ + { + "label": "课表", + "color": "#6e9af2" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-02-26T09:03:50.284334Z", + "version": "0.1.9", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_dialectlist", + "project_link": "nonebot-plugin-dialectlist", + "name": "话痨排行榜", + "desc": "给话多的群友一个排行", + "author": "X-Skirt-X", + "homepage": "https://github.com/X-Skirt-X/nonebot_plugin_dialectlist", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-03-19T02:13:34.033923Z", + "version": "1.4.0", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_offline_mahjong_helper", + "project_link": "nonebot-plugin-offline-mahjong-helper", + "name": "面麻小助手", + "desc": "可约桌、算点、精算、雀魂查询的面麻助手。", + "author": "Nranphy", + "homepage": "https://github.com/Nranphy/nonebot_plugin_offline_mahjong_helper", + "tags": [ + { + "label": "Mahjong", + "color": "#ea5252" + }, + { + "label": "雀魂", + "color": "#eaa452" + }, + { + "label": "线下约桌", + "color": "#52a6ea" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-12-25T07:44:48.326427Z", + "version": "0.2.3", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_send", + "project_link": "nonebot-plugin-send", + "name": "反馈及通知", + "desc": "用户通过bot向superuser发送反馈,以及bot向所有群发送通知", + "author": "sena-nana", + "homepage": "https://github.com/sena-nana/nonebot-plugin-send", + "tags": [ + { + "label": "t:send", + "color": "#ea5252" + }, + { + "label": "t:notice", + "color": "#ea5252" + }, + { + "label": "t:公告", + "color": "#ea5252" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-11-26T09:20:01.529021Z", + "version": "0.1.4", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_todo_nlp", + "project_link": "nonebot-plugin-todo-nlp", + "name": "自识别todo", + "desc": "一款自动识别提醒内容,可生成todo图片并定时推送的nonebot2插件,v11适配器可用", + "author": "CofinCup", + "homepage": "https://github.com/CofinCup/nonebot-plugin-todo-nlp", + "tags": [ + { + "label": "t:todo", + "color": "#499bdd" + }, + { + "label": "t:nlp", + "color": "#83b279" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-04-29T15:38:01.799965Z", + "version": "0.1.9", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_wordsnorote", + "project_link": "nonebot-plugin-wordsnorote", + "name": "不背单词", + "desc": "哥们哥们,背单词么?哥们!", + "author": "GC-ZF", + "homepage": "https://github.com/GC-ZF/nonebot_plugin_wordsnorote", + "tags": [ + { + "label": "四六级", + "color": "#24a0d8" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-08-30T08:50:02.018317Z", + "version": "0.0.2", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_CyberSensoji", + "project_link": "nonebot-plugin-CyberSensoji", + "name": "赛博浅草寺", + "desc": "随机抽取浅草寺的一签运势", + "author": "Raidenneox", + "homepage": "https://github.com/Raidenneox/nonebot_plugin_CyberSensoji", + "tags": [ + { + "label": "t:抽签", + "color": "#52eadf" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-08-31T02:25:54.508365Z", + "version": "0.0.2", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_gspanel", + "project_link": "nonebot-plugin-gspanel", + "name": "原神角色展柜查询", + "desc": "移植自 @yoimiya-kokomi/miao-plugin 的原神游戏内角色展柜数据查询", + "author": "monsterxcn", + "homepage": "https://github.com/monsterxcn/nonebot-plugin-gspanel", + "tags": [ + { + "label": "t:Genshin", + "color": "#ffd49f" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-11-09T07:32:00.271465Z", + "version": "0.2.25", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_gsmaterial", + "project_link": "nonebot-plugin-gsmaterial", + "name": "原神每日材料查询", + "desc": "原神每日天赋培养、武器突破材料查询,通过 Project Amber 数据库(支持部分尚未实装角色)自动更新每日数据~", + "author": "monsterxcn", + "homepage": "https://github.com/monsterxcn/nonebot-plugin-gsmaterial", + "tags": [ + { + "label": "t:Genshin", + "color": "#ffd49f" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-10-09T14:57:38.167171Z", + "version": "0.2.7", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_mystool", + "project_link": "nonebot-plugin-mystool", + "name": "米游社辅助工具", + "desc": "每日完成米游币任务、游戏签到、商品兑换、免抓包登录", + "author": "Ljzd-PRO", + "homepage": "https://github.com/Ljzd-PRO/nonebot-plugin-mystool", + "tags": [ + { + "label": "a:onebot", + "color": "#000000" + }, + { + "label": "t:米游社", + "color": "#66e0ff" + }, + { + "label": "t:原神", + "color": "#faf3c4" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2024-03-16T19:21:16.886146Z", + "version": "2.3.0", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_warframe", + "project_link": "nonebot-plugin-warframe", + "name": "星际战甲事件查询", + "desc": "通过奥迪斯网站API查询星际战甲国服事件", + "author": "17TheWord", + "homepage": "https://github.com/17TheWord/nonebot-plugin-warframe", + "tags": [ + { + "label": "星际战甲", + "color": "#ed3f3f" + }, + { + "label": "WarFrame", + "color": "#edea3f" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": null, + "valid": true, + "version": "0.0.5", + "time": "2023-06-18T16:49:55.654016Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_mcqq_server", + "project_link": "nonebot-plugin-mcqq-server", + "name": "Minecraft Server 聊天同步", + "desc": "采用本地读取log信息的方法的Minecraft Server互通消息的插件,mcqq服主版。", + "author": "KarisAya", + "homepage": "https://github.com/KarisAya/nonebot_plugin_mcqq_server", + "tags": [ + { + "label": "Minecraft", + "color": "#52ea64" + }, + { + "label": "消息互通", + "color": "#52e5ea" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-06-27T05:44:16.649059Z", + "version": "1.0.5", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_RealESRGAN", + "project_link": "nonebot_plugin_RealESRGAN", + "name": "图像超分辨率重建", + "desc": "对图像进行超分辨率重建,可以理解成将图像变大变清晰,不过线上重建的效果没有本地的好,具体可以查阅仓库", + "author": "ppxxxg22", + "homepage": "https://github.com/ppxxxg22/nonebot_plugin_RealESRGAN", + "tags": [ + { + "label": "图像超分辨率重建", + "color": "#ea5252" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-10-17T07:35:11.987728Z", + "version": "0.2.8", + "skip_test": false + }, + { + "module_name": "nonebot-plugin-wolf-kill", + "project_link": "nonebot-plugin-wolf-kill", + "name": "狼人杀插件", + "desc": "在群里玩狼人杀", + "author": "AbCooly", + "homepage": "https://github.com/AbCooly/nonebot_plugin_wolf_kill", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-12-14T05:29:21.336273Z", + "version": "2.0.4", + "skip_test": false + }, + { + "module_name": "iot", + "project_link": "nonebot-plugin-iot", + "name": "nonebot物联网插件", + "desc": "为nonebot接入物联网提供方案,目前支持天猫精灵终端,后续会增加", + "author": "littlebutt", + "homepage": "https://github.com/littlebutt/nonebot-plugin-iot", + "tags": [ + { + "label": "t:物联网", + "color": "#4b86d7" + }, + { + "label": "t:天猫精灵", + "color": "#4b86d7" + }, + { + "label": "t:IOT", + "color": "#4b86d7" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-10-12T01:56:21.172428Z", + "version": "1.1.0", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_bwiki_navigator", + "project_link": "nonebot-plugin-bwiki-navigator", + "name": "Bwiki Navigator", + "desc": "Bwiki助手(官方移植版)", + "author": "XZhouQD", + "homepage": "https://github.com/xzhouqd/nonebot-plugin-bwiki-navigator", + "tags": [ + { + "label": "wiki", + "color": "#29a5e3" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.2.1", + "time": "2023-06-20T14:52:52.232111Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_bottle", + "project_link": "nonebot-plugin-bottle", + "name": "漂流瓶", + "desc": "群与群互通的漂流瓶插件", + "author": "Todysheep", + "homepage": "https://github.com/Todysheep/nonebot_plugin_bottle", + "tags": [ + { + "label": "漂流瓶", + "color": "#0893f2" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "2.0.0.9", + "time": "2024-03-12T11:34:48.730630Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_tts_gal", + "project_link": "nonebot-plugin-tts-gal", + "name": "vits角色语音合成本地化", + "desc": "基于nonebot2和vits的本地化角色语音合成插件", + "author": "dpm12345", + "homepage": "https://github.com/dpm12345/nonebot_plugin_tts_gal", + "tags": [ + { + "label": "VITS", + "color": "#ea5252" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-04-19T04:44:48.034103Z", + "version": "0.3.11", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_alicdk_get", + "project_link": "nonebot-plugin-alicdk-get", + "name": "阿里云盘福利码自动兑换", + "desc": "基于nonebot2与aligo的阿里云盘兑换码自动获取和兑换插件。", + "author": "Kaguya233qwq", + "homepage": "https://github.com/Kaguya233qwq/nonebot_plugin_alicdk_get", + "tags": [ + { + "label": "兑换码", + "color": "#595fd6" + }, + { + "label": "auto", + "color": "#595fd6" + }, + { + "label": "t:阿里云盘", + "color": "#595fd6" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-09-29T08:46:59.973338Z", + "version": "1.1.1", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_picstatus", + "project_link": "nonebot-plugin-picstatus", + "name": "PicStatus", + "desc": "以图片形式显示当前设备的运行状态", + "author": "lgc2333", + "homepage": "https://github.com/lgc-NB2Dev/nonebot-plugin-picstatus", + "tags": [ + { + "label": "server", + "color": "#8bff00" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.bilibili", + "nonebot.adapters.console", + "nonebot.adapters.ding", + "nonebot.adapters.discord", + "nonebot.adapters.dodo", + "nonebot.adapters.feishu", + "nonebot.adapters.github", + "nonebot.adapters.kaiheila", + "nonebot.adapters.minecraft", + "nonebot.adapters.mirai2", + "nonebot.adapters.ntchat", + "nonebot.adapters.onebot.v11", + "nonebot.adapters.onebot.v12", + "nonebot.adapters.qq", + "nonebot.adapters.red", + "nonebot.adapters.satori", + "nonebot.adapters.telegram" + ], + "valid": true, + "version": "2.0.0.post2", + "time": "2024-03-18T05:35:50.408893Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_tuling", + "project_link": "nonebot-plugin-tuling", + "name": "图灵机器人", + "desc": "接入图灵机器人做聊天", + "author": "koking0", + "homepage": "https://github.com/Matrix-King-Studio/nonebot_plugin_tuling", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-09-25T05:14:38.126012Z", + "version": "0.0.16", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_makemidi", + "project_link": "nonebot_plugin_makemidi", + "name": "在线编曲", + "desc": "发送简谱生成音乐", + "author": "RandomEnch", + "homepage": "https://github.com/RandomEnch/nonebot_plugin_makemidi", + "tags": [ + { + "label": "midi", + "color": "#6515a8" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-07-27T08:43:45.256730Z", + "version": "0.1.12", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_ocr", + "project_link": "nonebot-plugin-ocr", + "name": "文字识别", + "desc": "识别图片中的文字", + "author": "NewYearPrism", + "homepage": "https://github.com/NewYearPrism/nonebot-plugin-ocr", + "tags": [ + { + "label": "ocr ", + "color": "#ea5252" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-10-07T00:32:07.509150Z", + "version": "0.3.2", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_listener", + "project_link": "nonebot-plugin-listener", + "name": "监听者", + "desc": "监听指定消息并转发到指定群", + "author": "AbCooly", + "homepage": "https://github.com/AbCooly/nonebot_plugin_listener", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-10-01T16:59:02.045755Z", + "version": "1.0.2", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_BiliRequestAll", + "project_link": "nonebot-plugin-BiliRequestAll", + "name": "BiliRequestAll", + "desc": "通过B站UID审核入群", + "author": "Shadow403", + "homepage": "https://github.com/Shadow403/nonebot_plugin_BiliRequestAll", + "tags": [ + { + "label": "bilibili", + "color": "#ea52e9" + }, + { + "label": "request", + "color": "#5eea52" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.2.8", + "time": "2023-11-05T14:48:57.579085Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_russian_ban", + "project_link": "nonebot-plugin-russian-ban", + "name": "轮盘禁言小游戏", + "desc": "轮盘禁言小游戏,附送快捷禁言/解禁", + "author": "KarisAya", + "homepage": "https://github.com/KarisAya/nonebot_plugin_russian_ban", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-02-04T15:02:29.961051Z", + "version": "1.0.6", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_ygo_trade", + "project_link": "nonebot-plugin-ygo-trade", + "name": "游戏王小程序查价", + "desc": "集换社游戏王的卡价查询", + "author": "Kaguyaya", + "homepage": "https://github.com/Kaguyaya/nonebot_plugin_ygo_trade", + "tags": [ + { + "label": "游戏王", + "color": "#ea5252" + }, + { + "label": "YGO", + "color": "#ea5252" + }, + { + "label": "集换社", + "color": "#eada52" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-10-11T02:59:10.924095Z", + "version": "1.0.0", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_novelai", + "project_link": "nonebot-plugin-novelai", + "name": "novelai", + "desc": "一个支持novelai、naifu、webui,支持中文功能丰富的ai绘图插件", + "author": "sena-nana", + "homepage": "https://github.com/sena-nana/nonebot-plugin-novelai", + "tags": [ + { + "label": "t:aidraw", + "color": "#ffc646" + }, + { + "label": "t:naifu", + "color": "#ffc646" + }, + { + "label": "t:webui", + "color": "#ffc646" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-03-26T14:17:47.594948Z", + "version": "0.5.9", + "skip_test": false + }, + { + "module_name": "ayaka_games", + "project_link": "ayaka_games", + "name": "ayaka小游戏合集", + "desc": "背包,签到,印加宝藏,接龙(原神/成语),谁是卧底,抢30,mana,加一秒,24点/48点,文字税,祈祷,原神随机事件", + "author": "bridgeL", + "homepage": "https://bridgel.github.io/ayaka_games/", + "tags": [ + { + "label": "a:onebot", + "color": "#0c0c0c" + }, + { + "label": "t:小游戏", + "color": "#e36306" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-04-25T02:07:32.424128Z", + "version": "0.4.1", + "skip_test": false + }, + { + "module_name": "ayaka_timezone", + "project_link": "nonebot-plugin-ayaka-timezone", + "name": "ayaka衍生插件 - 时区助手", + "desc": "提供不同时区时间询问服务", + "author": "bridgeL", + "homepage": "https://github.com/bridgeL/nonebot-plugin-ayaka-timezone", + "tags": [ + { + "label": "a:cqhttp", + "color": "#000000" + }, + { + "label": "a:onebot", + "color": "#000000" + }, + { + "label": "t:timezone", + "color": "#e36306" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-01-30T02:41:21.580609Z", + "version": "0.4.1", + "skip_test": false + }, + { + "module_name": "ayaka_prevent_bad_words", + "project_link": "nonebot-plugin-ayaka-prevent-bad-words", + "name": "ayaka衍生插件 - 坏词撤回", + "desc": "撤回有问题的发言", + "author": "bridgeL", + "homepage": "https://github.com/bridgeL/nonebot-plugin-ayaka-prevent-bad-words", + "tags": [ + { + "label": "a:cqhttp", + "color": "#000000" + }, + { + "label": "a:onebot", + "color": "#000000" + }, + { + "label": "t:撤回", + "color": "#e36306" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-03-25T16:17:13.137593Z", + "version": "0.4.2", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_savor", + "project_link": "nonebot-plugin-savor", + "name": "二次元图像鉴赏", + "desc": "二次元图像分析", + "author": "A-kirami", + "homepage": "https://github.com/A-kirami/nonebot-plugin-savor", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-07-07T18:19:20.688626Z", + "version": "0.2.2", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_kfcrazy", + "project_link": "nonebot-plugin-kfcrazy", + "name": "kfcrazy", + "desc": "肯德基查询插件,输入地区即可查询全国店铺的数据,支持疯狂星期四", + "author": "Kaguya233qwq", + "homepage": "https://github.com/Kaguya233qwq/nonebot_plugin_kfcrazy", + "tags": [ + { + "label": "肯德基", + "color": "#d93b3b" + }, + { + "label": "疯狂星期四", + "color": "#e52124" + }, + { + "label": "KFC", + "color": "#cb5c5e" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-11-14T07:18:05.859088Z", + "version": "2.0.5", + "skip_test": false + }, + { + "module_name": "nonebot-plugin-random", + "project_link": "nonebot-plugin-random", + "name": "通用抽图/语音", + "desc": "Nonebot2 通用抽图/语音插件", + "author": "jcjrobert", + "homepage": "https://github.com/jcjrobert/nonebot-plugin-random", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-01-03T05:49:28.546486Z", + "version": "0.0.9", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_sqlalchemy", + "project_link": "nonebot-plugin-sqlalchemy", + "name": "NoneBot2 SQLAlchemy 插件", + "desc": "为插件开发者提供简单的SQLAlchemy封装", + "author": "ssttkkl", + "homepage": "https://github.com/bot-ssttkkl/nonebot-plugin-sqlalchemy", + "tags": [ + { + "label": "sql", + "color": "#ad1717" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": null, + "valid": true, + "version": "0.2.2", + "time": "2023-07-20T03:51:36.974013Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_blacklist", + "project_link": "nonebot-plugin-blacklist", + "name": "黑名单", + "desc": "黑名单插件", + "author": "tkgs0", + "homepage": "https://github.com/tkgs0/nonebot-plugin-blacklist", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": null, + "valid": true, + "version": "1.3.1", + "time": "2024-02-21T16:24:01.035770Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_antiinsult", + "project_link": "nonebot-plugin-antiinsult", + "name": "反嘴臭", + "desc": "反嘴臭插件", + "author": "tkgs0", + "homepage": "https://github.com/tkgs0/nonebot-plugin-antiinsult", + "tags": [ + { + "label": "被动", + "color": "#ea5252" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": null, + "valid": true, + "version": "0.6.1", + "time": "2024-02-21T16:59:04.055290Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_oddtext", + "project_link": "nonebot-plugin-oddtext", + "name": "文本生成器", + "desc": "抽象话等多种文本生成", + "author": "MeetWq", + "homepage": "https://github.com/noneplugin/nonebot-plugin-oddtext", + "tags": [ + { + "label": "RCNB!", + "color": "#ea5252" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": null, + "valid": true, + "version": "0.2.0", + "time": "2023-06-21T14:35:22.216953Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_mahjong_scoreboard", + "project_link": "nonebot-plugin-mahjong-scoreboard", + "name": "日麻寄分器", + "desc": "为群友提供日麻计分及榜单统计功能", + "author": "ssttkkl", + "homepage": "https://github.com/ssttkkl/nonebot-plugin-mahjong-scoreboard", + "tags": [ + { + "label": "日麻", + "color": "#4684d3" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11", + "nonebot.adapters.qqguild" + ], + "valid": true, + "version": "0.6.0", + "time": "2023-09-08T18:13:18.403764Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_cartoon", + "project_link": "nonebot-plugin-cartoon", + "name": "二次元化图像", + "desc": "对三次元图像动漫化, 打开二次元的大门", + "author": "A-kirami", + "homepage": "https://github.com/A-kirami/nonebot-plugin-cartoon", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-11-01T10:00:27.452979Z", + "version": "0.1.0", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_mahjong_utils", + "project_link": "nonebot-plugin-mahjong-utils", + "name": "麻将小工具", + "desc": "手牌分析、番符点数查询、……", + "author": "ssttkkl", + "homepage": "https://github.com/bot-ssttkkl/nonebot-plugin-mahjong-utils", + "tags": [ + { + "label": "日麻", + "color": "#edad34" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": null, + "valid": true, + "version": "0.4.5", + "time": "2023-12-05T04:45:12.500654Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_animeres", + "project_link": "nonebot-plugin-animeres", + "name": "动漫资源插件", + "desc": "根据关键字搜索动漫资源", + "author": "Melodyknit", + "homepage": "https://github.com/MelodyKnit/nonebot_plugin_animeres", + "tags": [ + { + "label": "anime", + "color": "#ec5252" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": null, + "valid": true, + "version": "1.0.4", + "time": "2023-11-17T12:49:29.527158Z", + "skip_test": false + }, + { + "module_name": "nonebot-plugin-person", + "project_link": "nonebot-plugin-person", + "name": "随个人", + "desc": "随个群友当幸运观众🤪", + "author": "jcjrobert", + "homepage": "https://github.com/jcjrobert/nonebot-plugin-person", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-12-15T02:18:32.344475Z", + "version": "0.0.5", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_apex_api_query", + "project_link": "nonebot-plugin-apex-api-query", + "name": "Apex API Query", + "desc": "Apex Legends API 查询插件", + "author": "H-xiaoH", + "homepage": "https://github.com/H-xiaoH/nonebot-plugin-apex-api-query", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "24.1.2", + "time": "2024-01-02T13:23:43.569097Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_reborn", + "project_link": "nonebot-plugin-reborn", + "name": "投胎模拟器", + "desc": "重生后你会到哪里?", + "author": "Aziteee", + "homepage": "https://github.com/Aziteee/nonebot_plugin_reborn", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-12-14T12:24:39.789332Z", + "version": "0.4", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_searchBiliInfo", + "project_link": "nonebot-plugin-searchBiliInfo", + "name": "b站用户信息查询", + "desc": "查询b站用户粉丝数、舰团信息;主播直播收益数据(总收益、礼物、SC、上舰);用户观看直播信息(观看、弹幕记录);通过关键词搜昵称、UID等", + "author": "Ikaros-521", + "homepage": "https://github.com/Ikaros-521/nonebot_plugin_searchBiliInfo", + "tags": [ + { + "label": "bilibili", + "color": "#e55d80" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-12-24T05:56:31.597811Z", + "version": "1.8.1", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_colab_novelai", + "project_link": "nonebot-plugin-colab-novelai", + "name": "Colab-NovelAI", + "desc": "解放你的双手,让Colab持续给你提供算力生产色图!", + "author": "EtherLeaF", + "homepage": "https://github.com/EtherLeaF/nonebot-plugin-colab-novelai", + "tags": [ + { + "label": "a:onebot", + "color": "#ea5252" + }, + { + "label": "t:NovelAI", + "color": "#eacd52" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-11-21T06:00:40.942510Z", + "version": "0.2.2", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_sky", + "project_link": "nonebot-plugin-sky", + "name": "Sky光遇", + "desc": "光遇的每日任务及活动相关查询插件", + "author": "Kaguya233qwq", + "homepage": "https://github.com/Kaguya233qwq/nonebot_plugin_sky", + "tags": [ + { + "label": "光遇", + "color": "#7ebdf0" + }, + { + "label": "攻略", + "color": "#2079c1" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "2.2.12", + "time": "2023-08-29T02:46:06.270032Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_zyk_novelai", + "project_link": "nonebot-plugin-zyk-novelai", + "name": "免费版NovelAI生图插件", + "desc": "一个用于nonebot2的简约AI绘图插件。没有繁琐的使用指令,配置过程简单迅捷,代码简洁易懂,还有更多功能将会陆续加入。", + "author": "ZYKsslm", + "homepage": "https://github.com/ZYKsslm/nonebot_plugin_zyk_novelai", + "tags": [ + { + "label": "Free", + "color": "#42e22f" + }, + { + "label": "Simple", + "color": "#e2d92f" + }, + { + "label": "Novelai", + "color": "#3e10e9" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-04-29T18:30:02.732845Z", + "version": "2.9.5.2", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_repeep", + "project_link": "nonebot-plugin-repeep", + "name": "谁在窥屏", + "desc": "用于获取QQ中当前窥屏用户信息", + "author": "p0ise", + "homepage": "https://github.com/p0ise/nonebot-plugin-repeep", + "tags": [ + { + "label": "a:onebot", + "color": "#ea5252" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-12-25T11:27:22.670017Z", + "version": "0.1.4", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_gscode", + "project_link": "nonebot-plugin-gscode", + "name": "原神前瞻直播兑换码查询", + "desc": "原神前瞻直播兑换码查询,数据来自米哈游官方接口", + "author": "monsterxcn", + "homepage": "https://github.com/monsterxcn/nonebot-plugin-gscode", + "tags": [ + { + "label": "t:Genshin", + "color": "#ffd49f" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2024-03-17T00:47:03.313876Z", + "version": "0.2.2", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_note", + "project_link": "nonebot-plugin-note", + "name": "记事本", + "desc": "一个有提醒功能的记事本", + "author": "Passerby-D", + "homepage": "https://github.com/Passerby-D/nonebot_plugin_note", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-01-31T21:52:41.397684Z", + "version": "0.2.3", + "skip_test": false + }, + { + "module_name": "nonebot-plugin-bilibili-image", + "project_link": "nonebot-plugin-bilibili-image", + "name": "b站图片下载", + "desc": "b站封面提取,动态图片/专栏图片下载", + "author": "jcjrobert", + "homepage": "https://github.com/jcjrobert/nonebot-plugin-bilibili-image", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-01-02T13:29:23.983038Z", + "version": "0.0.2.1", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_trace_moe", + "project_link": "nonebot-plugin-trace-moe", + "name": "动画截图追溯来源", + "desc": "调用trace.moe的API查询动画截图源自的作品名和时间段", + "author": "Ikaros-521", + "homepage": "https://github.com/Ikaros-521/nonebot_plugin_trace_moe", + "tags": [ + { + "label": "a:onebot", + "color": "#191919" + }, + { + "label": "t:trace", + "color": "#191919" + }, + { + "label": "t:image", + "color": "#00a0ff" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-02-23T06:59:22.061485Z", + "version": "0.1.0", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_zyk_music", + "project_link": "nonebot-plugin-zyk-music", + "name": "免费快捷点歌插件", + "desc": "一个用于nonebot2的点歌插件。操作简单粗暴,交互简洁易懂.", + "author": "ZYKsslm", + "homepage": "https://github.com/ZYKsslm/nonebot_plugin_zyk_music", + "tags": [ + { + "label": "Free", + "color": "#26d019" + }, + { + "label": "Simple", + "color": "#b8c10d" + }, + { + "label": "Music", + "color": "#0d92c1" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-04-29T20:24:24.553805Z", + "version": "0.1.7.2", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_chatgpt", + "project_link": "nonebot-plugin-chatgpt", + "name": "ChatGPT", + "desc": "AI 聊天对话", + "author": "A-kirami", + "homepage": "https://github.com/A-kirami/nonebot-plugin-chatgpt", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-04-12T08:10:27.798634Z", + "version": "0.7.5", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_majsoul", + "project_link": "nonebot-plugin-majsoul", + "name": "雀魂查询", + "desc": "根据牌谱屋的数据查询雀魂账号信息", + "author": "ssttkkl", + "homepage": "https://github.com/bot-ssttkkl/nonebot-plugin-majsoul", + "tags": [ + { + "label": "majsoul", + "color": "#e54141" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.kaiheila", + "nonebot.adapters.onebot.v11", + "nonebot.adapters.onebot.v12", + "nonebot.adapters.qqguild", + "nonebot.adapters.telegram" + ], + "valid": true, + "version": "0.2.5", + "time": "2023-09-28T17:31:31.806098Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_remove_bg", + "project_link": "nonebot-plugin-remove-bg", + "name": "图片背景消除", + "desc": "适用于onebot v11的基于remove.bg的图片背景消除插件", + "author": "Ikaros-521", + "homepage": "https://github.com/Ikaros-521/nonebot_plugin_remove_bg", + "tags": [ + { + "label": "a:onebot", + "color": "#ea5252" + }, + { + "label": "t:img", + "color": "#111111" + }, + { + "label": "t:removeBG", + "color": "#7a7a7a" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-02-28T14:59:42.169057Z", + "version": "0.2.0", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_broadcast", + "project_link": "nonebot-plugin-broadcast", + "name": "全群广播", + "desc": "将你的消息广播到全部群聊中", + "author": "A-kirami", + "homepage": "https://github.com/A-kirami/nonebot-plugin-broadcast", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-12-07T15:42:04.646013Z", + "version": "0.1.0", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_exchangerate", + "project_link": "nonebot-plugin-exchangerate", + "name": "汇率换算", + "desc": "支持汇率换算与汇率查询", + "author": "A-kirami", + "homepage": "https://github.com/A-kirami/nonebot-plugin-exchangerate", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-12-11T05:42:07.616093Z", + "version": "0.1.2", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_access_control", + "project_link": "nonebot-plugin-access-control", + "name": "权限控制", + "desc": "对功能进行权限控制以及调用次数限制", + "author": "ssttkkl", + "homepage": "https://github.com/bot-ssttkkl/nonebot-plugin-access-control", + "tags": [ + { + "label": "权限控制", + "color": "#0e9763" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.console", + "nonebot.adapters.discord", + "nonebot.adapters.dodo", + "nonebot.adapters.feishu", + "nonebot.adapters.kaiheila", + "nonebot.adapters.onebot.v11", + "nonebot.adapters.onebot.v12", + "nonebot.adapters.qq", + "nonebot.adapters.red", + "nonebot.adapters.satori", + "nonebot.adapters.telegram", + "nonebot.adapters.villa" + ], + "valid": true, + "version": "1.1.5", + "time": "2023-11-26T15:18:22.566495Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_colormind", + "project_link": "nonebot-plugin-colormind", + "name": "随机配色方案", + "desc": "调用colormind.io的API随机获取一种配色方案", + "author": "Ikaros-521", + "homepage": "https://github.com/Ikaros-521/nonebot_plugin_colormind", + "tags": [ + { + "label": "a:onebot", + "color": "#000000" + }, + { + "label": "t:color", + "color": "#ffffff" + }, + { + "label": "t:配色", + "color": "#fbff03" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-03-14T03:06:59.760280Z", + "version": "0.1.0", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_abstain_diary", + "project_link": "nonebot-plugin-abstain-diary", + "name": "戒x打卡日记", + "desc": "适用于onebot v11的戒x打卡日记插件。用户可以自定义戒的内容。财能使人贪,色能使人嗜,名能使人矜,潜能使人倚,四患既都去,岂在浮尘里。", + "author": "Ikaros-521", + "homepage": "https://github.com/Ikaros-521/nonebot_plugin_abstain_diary", + "tags": [ + { + "label": "a:onebot", + "color": "#000000" + }, + { + "label": "t:戒", + "color": "#ffffff" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-09-14T01:07:53.526240Z", + "version": "0.1.1", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_backup", + "project_link": "nonebot-plugin-backup", + "name": "QQ群文件备份", + "desc": "备份qq群文件", + "author": "Yuelioi", + "homepage": "https://github.com/Yuelioi/nonebot-plugin-backup", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-01-06T11:42:56.034628Z", + "version": "1.0.5", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_kuma_san", + "project_link": "nonebot-plugin-kuma-san", + "name": "熊老板", + "desc": "用于查询斯普拉遁3场地信息的 NoneBot2 插件", + "author": "ReiiNoki", + "homepage": "https://github.com/ReiiNoki/nonebot-plugin-kuma-san", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-08-03T06:43:46.968063Z", + "version": "1.1.0", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_gpt3", + "project_link": "nonebot-plugin-gpt3", + "name": "GPT3", + "desc": "openai官方api的会话插件", + "author": "chrisyy2003", + "homepage": "https://github.com/chrisyy2003/nonebot-plugin-gpt3", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-04-23T04:12:19.524328Z", + "version": "1.1.9", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_ikun_evolution", + "project_link": "nonebot-plugin-ikun-evolution", + "name": "只因进化录", + "desc": "q群挂机小游戏。开局一只因,进化全靠吞", + "author": "RShock", + "homepage": "https://github.com/RShock/nonebot_plugin_ikun_evolution", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-01-03T03:56:19.261340Z", + "version": "1.0.12", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_random_ban", + "project_link": "nonebot-plugin-random-ban", + "name": "随机禁言", + "desc": "适用于onebot v11的随机禁言一名群员或自己n分钟(n通过传入数字然后随机实现)", + "author": "Ikaros-521", + "homepage": "https://github.com/Ikaros-521/nonebot_plugin_random_ban", + "tags": [ + { + "label": "a:onebot", + "color": "#ea5252" + }, + { + "label": "t:禁言", + "color": "#020202" + }, + { + "label": "t:ban", + "color": "#ffffff" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-06-09T11:06:42.054060Z", + "version": "0.2.1", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_antirecall", + "project_link": "nonebot-plugin-antirecall", + "name": "防撤回", + "desc": "防撤回", + "author": "Jerry080801", + "homepage": "https://github.com/Jerry080801/nonebot-plugin-antirecall/", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-12-26T10:52:50.612059Z", + "version": "0.1.4", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_mc_server_status", + "project_link": "nonebot-plugin-mc-server-status", + "name": "Minecraft服务器信息查询", + "desc": "支持Java和基岩服务器", + "author": "nikissXI", + "homepage": "https://github.com/nikissXI/nonebot_plugins/tree/main/nonebot_plugin_mc_server_status", + "tags": [ + { + "label": "Minecraft", + "color": "#a438cd" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-03-01T02:19:03.062931Z", + "version": "0.2.10", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_no_repeat", + "project_link": "nonebot-plugin-no-repeat", + "name": "不要复读", + "desc": "防止代码炸了在群里复读刷屏,让你写插件的时候更安全", + "author": "bridgeL", + "homepage": "https://github.com/bridgeL/nonebot-plugin-no-repeat", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-12-22T03:21:17.798671Z", + "version": "0.0.1", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_bfchat", + "project_link": "nonebot-plugin-bfchat", + "name": "战地群聊天插件", + "desc": "群内绑定战地一/五账号,快速查询战地战绩,查看服务器信息", + "author": "050644zf", + "homepage": "https://github.com/050644zf/nonebot-plugin-bfchat", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-03-31T10:55:28.710075Z", + "version": "0.3.1", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_summon", + "project_link": "nonebot-plugin-summon", + "name": "群友召唤术", + "desc": "群友召唤术", + "author": "zhulinyv", + "homepage": "https://github.com/zhulinyv/nonebot_plugin_summon", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-07-11T01:13:48.927791Z", + "version": "2.5.4", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_ping", + "project_link": "nonebot-plugin-ping", + "name": "Ping", + "desc": "调用api,获取网站信息", + "author": "zhulinyv", + "homepage": "https://github.com/zhulinyv/nonebot_plugin_ping", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-12-14T06:47:15.299741Z", + "version": "1.7.1", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_face2cartoonpic", + "project_link": "nonebot_plugin_face2cartoonpic", + "name": "腾讯云图像变换", + "desc": "✨基于腾讯云合成图的以图绘图的Nonebot插件✨", + "author": "ANGJustinl", + "homepage": "https://github.com/ANGJustinl/nonebot_plugin_face2cartoonpic_main", + "tags": [ + { + "label": "以图绘图", + "color": "#72f15e" + }, + { + "label": "腾讯云", + "color": "#3785f1" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-12-30T13:37:47.581572Z", + "version": "0.3.2", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_servicestate", + "project_link": "nonebot-plugin-servicestate", + "name": "服务状态查询", + "desc": "API服务状态监测", + "author": "OREOCODEDEV", + "homepage": "https://github.com/OREOCODEDEV/nonebot-plugin-servicestate", + "tags": [ + { + "label": "api", + "color": "#52ea7f" + }, + { + "label": "state", + "color": "#52cfea" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": null, + "valid": true, + "version": "0.2.1", + "time": "2023-09-11T07:21:59.505055Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_animalVoice", + "project_link": "nonebot-plugin-animalVoice", + "name": "AnimalVoice_Convert", + "desc": "✨支持切噜语和兽语的Nonebot译者插件✨", + "author": "ANGJustinl", + "homepage": "https://github.com/ANGJustinl/nonebot_plugin_animalVoice/", + "tags": [ + { + "label": "切噜语~", + "color": "#e75f9d" + }, + { + "label": "兽语", + "color": "#5fe5e7" + }, + { + "label": "加密语言", + "color": "#79e556" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2022-12-29T09:42:07.126510Z", + "version": "0.0.3", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_ayaka_scan_cmd", + "project_link": "nonebot-plugin-ayaka-scan-cmd", + "name": "命令探查", + "desc": "命令探查,缓解下载了新插件却不会使用的焦虑", + "author": "bridgeL", + "homepage": "https://github.com/bridgeL/nonebot-plugin-ayaka-scan-cmd", + "tags": [ + { + "label": "a:onebot", + "color": "#000000" + }, + { + "label": "t:命令探查", + "color": "#e36306" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-02-15T09:34:25.444769Z", + "version": "0.2.0", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_HttpCat", + "project_link": "nonebot-plugin-HttpCat", + "name": "HttpCat🐱猫猫http状态码", + "desc": "✨Nonebot猫猫http状态码插件✨", + "author": "ANGJustinl", + "homepage": "https://github.com/ANGJustinl/nonebot_plugin_HttpCat", + "tags": [ + { + "label": "HttpCat", + "color": "#1f4ddc" + }, + { + "label": "http状态码", + "color": "#dc1f1f" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-01-03T01:58:02.756214Z", + "version": "0.0.2", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_revoke", + "project_link": "nonebot-plugin-revoke", + "name": "主动消息撤回", + "desc": "让机器人撤回自己发出的消息", + "author": "ssttkkl", + "homepage": "https://github.com/ssttkkl/nonebot-plugin-revoke", + "tags": [ + { + "label": "a:onebot", + "color": "#ea5252" + }, + { + "label": "t:gocqhttp", + "color": "#52ea95" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-01-03T06:02:45.041053Z", + "version": "0.1.0", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_setu_customization", + "project_link": "nonebot-plugin-setu-customization", + "name": "setu_customization", + "desc": "可动态管理API并带网页浏览的setu插件", + "author": "nikissXI", + "homepage": "https://github.com/nikissXI/nonebot_plugins/tree/main/nonebot_plugin_setu_customization", + "tags": [ + { + "label": "色图", + "color": "#e9ea52" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-03-31T08:46:11.225617Z", + "version": "1.7.0", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_l4d2_server", + "project_link": "nonebot-plugin-l4d2-server", + "name": "求生之路小助手", + "desc": "可用于管理求生之路查服和本地管理", + "author": "Agnes4m", + "homepage": "https://github.com/Agnes4m/nonebot_plugin_l4d2_server", + "tags": [ + { + "label": "l4d2", + "color": "#05ff00" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.6.6", + "time": "2024-03-03T14:27:28.652529Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_learning_chat", + "project_link": "nonebot-plugin-learning-chat", + "name": "群聊学习", + "desc": "学习群友们的发言、复读以及主动发言", + "author": "CMHopeSunshine", + "homepage": "https://github.com/CMHopeSunshine/nonebot-plugin-learning-chat", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.4.0", + "time": "2023-08-27T03:07:38.424515Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_couplets", + "project_link": "nonebot-plugin-couplets", + "name": "对对联", + "desc": "人工智能和你对对联", + "author": "CMHopeSunshine", + "homepage": "https://github.com/CMHopeSunshine/nonebot-plugin-couplets", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": null, + "valid": true, + "version": "0.2.0", + "time": "2023-06-17T07:46:34.256373Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_Imagelabels", + "project_link": "nonebot-plugin-Imagelabels", + "name": "图像标注", + "desc": "基于yolov5的图像标注插件", + "author": "istrashguy", + "homepage": "https://github.com/istrashguy/nonebot_plugin_Imagelabels", + "tags": [ + { + "label": "Yolov5", + "color": "#9a2828" + }, + { + "label": "图像标注", + "color": "#e981dc" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-01-16T12:19:09.803532Z", + "version": "1.0.0", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_cloudsignx", + "project_link": "nonebot-plugin-cloudsignx", + "name": "云签到", + "desc": "基于云端的签到,所有插件使用者数据互通", + "author": "Monarchdos", + "homepage": "https://github.com/Monarchdos/nonebot_plugin_cloudsign", + "tags": [ + { + "label": "a:云签到", + "color": "#2be491" + }, + { + "label": "a:数据互通", + "color": "#3be42b" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-01-10T07:51:17.175075Z", + "version": "2.0.0", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_imgexploration", + "project_link": "nonebot-plugin-imgexploration", + "name": "查找图片出处", + "desc": "通过saucenao、ascii2d、Google、Yandx查询图片出处", + "author": "cpuopt", + "homepage": "https://github.com/cpuopt/nonebot_plugin_imgexploration", + "tags": [ + { + "label": "a:onebot", + "color": "#ea5252" + }, + { + "label": "t:搜图", + "color": "#453df1" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-06-05T11:01:46.527196Z", + "version": "0.3.2", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_hypixel", + "project_link": "nonebot-plugin-hypixel", + "name": "Hypixel数据查询", + "desc": "查询Hypixel的数据", + "author": "SkyDynamic", + "homepage": "https://github.com/SkyDynamic/nonebot_plugin_hypixel", + "tags": [ + { + "label": "MC", + "color": "#6fea52" + }, + { + "label": "Hypixel", + "color": "#d5ea52" + }, + { + "label": "Hyp", + "color": "#d5ea52" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-01-06T06:58:09.032239Z", + "version": "1.0.1", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_nowtime", + "project_link": "nonebot-plugin-nowtime", + "name": "整点报时", + "desc": "每时每刻正点报时", + "author": "Cvandia", + "homepage": "https://github.com/Cvandia/nonebot_plugin_nowtime", + "tags": [ + { + "label": "整点报时", + "color": "#5eea52" + }, + { + "label": "语音", + "color": "#c84fdb" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.1.5", + "time": "2023-06-19T08:56:04.577230Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_cave", + "project_link": "nonebot-plugin-cave", + "name": "回声洞", + "desc": "PCL2内群的回声洞,添加了审核功能。", + "author": "hmzz804", + "homepage": "https://github.com/hmzz804/nonebot_plugin_cave", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-08-17T16:30:06.762833Z", + "version": "1.1.12", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_xingzuo", + "project_link": "nonebot-plugin-xingzuo", + "name": "星座运势", + "desc": "返回星座的运势", + "author": "mengxinyuan638", + "homepage": "https://github.com/mengxinyuan638/xingzuo_luck", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-01-12T11:59:03.454555Z", + "version": "1.0.3", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_BingImage", + "project_link": "nonebot-plugin-BingImage", + "name": "Bing每日图片获取", + "desc": "获取Bing每日一图", + "author": "ericzhang-debug", + "homepage": "https://github.com/ericzhang-debug/nonebot_plugin_BingImage", + "tags": [ + { + "label": "风景图", + "color": "#0ce354" + }, + { + "label": "Bing", + "color": "#0c43e3" + }, + { + "label": "必应", + "color": "#eddf13" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-01-09T11:19:52.574462Z", + "version": "0.0.1", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_soup", + "project_link": "nonebot-plugin-soup", + "name": "心灵鸡汤", + "desc": "来一碗心灵鸡汤吧", + "author": "Monarchdos", + "homepage": "https://github.com/Monarchdos/nonebot_plugin_soup", + "tags": [ + { + "label": "心灵鸡汤", + "color": "#52eaea" + }, + { + "label": "鸡汤", + "color": "#ea529a" + }, + { + "label": "毒鸡汤", + "color": "#604a55" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-01-11T08:47:29.519685Z", + "version": "1.0.0", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_yuanshen_notice", + "project_link": "nonebot-plugin-yuanshen-notice", + "name": "原神实时公告", + "desc": "实时展示官网最新前20条公告", + "author": "mengxinyuan638", + "homepage": "https://github.com/mengxinyuan638/nonebot_plugin_yuanshen_notice", + "tags": [ + { + "label": "原神", + "color": "#ef3700" + }, + { + "label": "公告", + "color": "#00ef04" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-03-19T06:33:34.236263Z", + "version": "0.1.7", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_bilibili_yuan", + "project_link": "nonebot-plugin-bilibili-yuan", + "name": "哔哩哔哩q群登录", + "desc": "实现哔哩哔哩q群登录的插件", + "author": "mengxinyuan638", + "homepage": "https://github.com/mengxinyuan638/nonebot-plugin-bilibili-yuan", + "tags": [ + { + "label": "bilibili", + "color": "#ea5252" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-01-15T02:59:19.623264Z", + "version": "0.1.0", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_easy_translate", + "project_link": "nonebot-plugin-easy-translate", + "name": "简易谷歌翻译插件", + "desc": "免api key简单谷歌翻译插件", + "author": "nikissXI", + "homepage": "https://github.com/nikissXI/nonebot_plugins/tree/main/nonebot_plugin_easy_translate", + "tags": [ + { + "label": "翻译", + "color": "#ea5252" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-08-27T16:34:04.994806Z", + "version": "0.2.1", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_orangedice", + "project_link": "nonebot-plugin-orangedice", + "name": "orange_dice", + "desc": "具有技能鉴定、人物卡、日志记录的COC用插件", + "author": "BigOrangeQWQ", + "homepage": "https://github.com/BigOrangeQWQ/nonebot_plugin_orangedice", + "tags": [ + { + "label": "dice", + "color": "#08c0bb" + }, + { + "label": "COC", + "color": "#a2bc0c" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.3.9", + "time": "2023-08-03T09:34:33.704052Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_record", + "project_link": "nonebot-plugin-record", + "name": "语音功能", + "desc": "语音功能适配插件,包括语音事件响应器,语音识别、语音合成等功能", + "author": "itsevin", + "homepage": "https://github.com/itsevin/nonebot_plugin_record", + "tags": [ + { + "label": "t:语音", + "color": "#fff35d" + }, + { + "label": "语音识别", + "color": "#37c0f6" + }, + { + "label": "语音事件响应器", + "color": "#18e13c" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-06-09T01:43:43.587003Z", + "version": "1.0.5", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_nya_cook_menu", + "project_link": "nonebot-plugin-nya-cook-menu", + "name": "喵喵自记菜谱", + "desc": "记录生活中的小菜谱", + "author": "nikissXI", + "homepage": "https://github.com/nikissXI/nonebot_plugins/tree/main/nonebot_plugin_nya_cook_menu", + "tags": [ + { + "label": "菜谱", + "color": "#e65de5" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-03-01T02:19:38.388337Z", + "version": "0.1.6", + "skip_test": false + }, + { + "module_name": "criminal_dance", + "project_link": "criminal-dance", + "name": "犯人在跳舞", + "desc": "文字版桌游,犯人在跳舞", + "author": "bridgeL", + "homepage": "https://github.com/bridgeL/criminal_dance", + "tags": [ + { + "label": "t:文字版桌游", + "color": "#e36306" + }, + { + "label": "a:onebot", + "color": "#000000" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-02-15T09:23:15.318321Z", + "version": "0.2.0", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_picmcstat", + "project_link": "nonebot-plugin-picmcstat", + "name": "PicMCStat", + "desc": "将一个 Minecraft 服务器的 MOTD 信息绘制为一张图片", + "author": "lgc2333", + "homepage": "https://github.com/lgc-NB2Dev/nonebot-plugin-picmcstat", + "tags": [ + { + "label": "Minecraft", + "color": "#7fbf55" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": null, + "valid": true, + "version": "0.6.0", + "time": "2024-03-10T07:01:59.615461Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_wantwords", + "project_link": "nonebot-plugin-wantwords", + "name": "反向词典", + "desc": "在nonebot使用wantwords反向词典", + "author": "Limnium", + "homepage": "https://github.com/limnium/nonebot_plugin_wantwords", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-01-22T04:55:16.216491Z", + "version": "0.1.0", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_pvz", + "project_link": "nonebot-plugin-pvz", + "name": "植物大战僵尸小游戏", + "desc": "通过签到获取金币购买植物或者僵尸,放置植物在草坪上抵御入侵,或者进行僵尸入侵来吃掉别人的脑子", + "author": "longchengguxiao", + "homepage": "https://github.com/longchengguxiao/nonebot_plugin_pvz", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-03-02T04:25:36.126660Z", + "version": "1.3.9", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_molar_mass", + "project_link": "nonebot-plugin-molar-mass", + "name": "摩尔质量计算器", + "desc": "帮助中学生计算摩尔质量或相对分子质量的小工具。", + "author": "kifuan", + "homepage": "https://github.com/kifuan/nonebot-plugin-molar-mass", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-03-19T03:38:01.096308Z", + "version": "0.2.3", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_report_manager", + "project_link": "nonebot-plugin-report-manager", + "name": "对话超管", + "desc": "群员通过Bot对话超管", + "author": "Hiroshi12138", + "homepage": "https://github.com/Hiroshi12138/nonebot_plugin_report_manager", + "tags": [ + { + "label": "a:onebot", + "color": "#a95454" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-02-14T08:51:38.642705Z", + "version": "0.2.3", + "skip_test": false + }, + { + "module_name": "qinglan_bot", + "project_link": "qinglan-bot", + "name": "青岚Bot", + "desc": "基于NoneBot的与Minecraft Server互通消息的机器人", + "author": "17TheWord", + "homepage": "https://github.com/17TheWord/qinglan_bot", + "tags": [ + { + "label": "MineCraft", + "color": "#4ef0ea" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.1.6", + "time": "2023-10-08T03:43:01.150609Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_easy_group_manager", + "project_link": "nonebot-plugin-easy-group-manager", + "name": "简易群管女生自用99新", + "desc": "简单的群管插件,BOT不是群主也可以设置管理员啦……", + "author": "zhulinyv", + "homepage": "https://github.com/zhulinyv/nonebot_plugin_easy_group_manager", + "tags": [ + { + "label": "群管", + "color": "#1eb262" + }, + { + "label": "女生自用", + "color": "#b21e82" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-07-25T12:00:28.775065Z", + "version": "0.4.4", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_group_link_guild", + "project_link": "nonebot-plugin-group-link-guild", + "name": "群频互通", + "desc": "将QQ群与QQ频道的消息互通", + "author": "17TheWord", + "homepage": "https://github.com/17TheWord/nonebot-plugin-group-link-guild", + "tags": [ + { + "label": "QQ群", + "color": "#ea5252" + }, + { + "label": "QQ频道", + "color": "#52ead5" + }, + { + "label": "消息互通", + "color": "#50c545" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.0.6", + "time": "2023-06-26T03:57:16.165943Z", + "skip_test": false + }, + { + "module_name": "nonebot-plugin-mcport", + "project_link": "nonebot-plugin-mcport", + "name": "nonebot-plugin-mcport", + "desc": "我的世界JAVA服务器通过RCON连接远程执行命令", + "author": "Proviasw", + "homepage": "https://github.com/Proviasw/nonebot-plugin-mcport", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-02-25T00:13:37.434017Z", + "version": "0.1.6", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_xdu_support", + "project_link": "nonebot_plugin_xdu_support", + "name": "XDU校园服务", + "desc": "Nonebot2插件,提供基础的西电校园服务,如课表提醒,体育打卡查询及提醒,晨午晚检打卡和马原测试等功能。", + "author": "longchengguxiao", + "homepage": "https://github.com/longchengguxiao/nonebot_plugin_xdu_support", + "tags": [ + { + "label": "大学校园", + "color": "#52b5ea" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-08-13T05:03:08.357179Z", + "version": "0.6.2", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_zyk_lightNVL", + "project_link": "nonebot-plugin-zyk-lightNVL", + "name": "查找轻小说", + "desc": "基于哔哩轻小说网站的爬虫插件", + "author": "ZYKsslm", + "homepage": "https://github.com/ZYKsslm/nonebot_plugin_zyk_lightNVL", + "tags": [ + { + "label": "轻小说", + "color": "#ea5252" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-05-02T13:17:07.498476Z", + "version": "0.3.0", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_dog", + "project_link": "nonebot-plugin-dog", + "name": "dog", + "desc": "随机返回一句舔狗日记...嘤嘤嘤和其他文案的插件", + "author": "Reversedeer", + "homepage": "https://github.com/Reversedeer/nonebot_plugin_dog", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.3.1", + "time": "2024-01-08T06:15:02.503507Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_uuid", + "project_link": "nonebot-plugin-uuid", + "name": "uuid生成器", + "desc": "通过 uuid4 与 uuid5 生成 uuid ,并且支持快速去除短横线", + "author": "ZombieFly", + "homepage": "https://github.com/ZombieFly/nonebot-plugin-uuid", + "tags": [ + { + "label": "工具", + "color": "#39c5bb" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-01-30T04:32:08.179665Z", + "version": "0.1.4", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_naturel_gpt", + "project_link": "nonebot-plugin-naturel-gpt", + "name": "更人性化的GPT-Ai聊天插件", + "desc": "一个基于NoneBot框架的Ai聊天插件,对接OpenAi文本生成接口,优化了群聊场景的上下文支持。", + "author": "KroMiose", + "homepage": "https://github.com/KroMiose/nonebot_plugin_naturel_gpt", + "tags": [ + { + "label": "GPT3", + "color": "#66ccff" + }, + { + "label": "OpenAi", + "color": "#cc66ff" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-12-23T19:19:12.265714Z", + "version": "2.2.0", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_impact", + "project_link": "nonebot-plugin-impact", + "name": "impact", + "desc": "让群友们眼前一黑的nonebot2淫趴插件", + "author": "Special-Week", + "homepage": "https://github.com/Special-Week/nonebot_plugin_impact", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.12.114514", + "time": "2024-03-20T14:46:34.935208Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_mcping", + "project_link": "nonebot-plugin-mcping", + "name": "MC Ping", + "desc": "获取 Minecraft JE/BE 服务器 Motd 图片信息", + "author": "17TheWord", + "homepage": "https://github.com/17TheWord/nonebot-plugin-mcping", + "tags": [ + { + "label": "Minecraft", + "color": "#47d754" + }, + { + "label": "服务器状态", + "color": "#d7cd47" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": null, + "valid": true, + "version": "0.0.4", + "time": "2023-06-18T16:58:48.573827Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_b23", + "project_link": "nonebot-plugin-b23", + "name": "B站热搜", + "desc": "获取B站热搜(移动端)", + "author": "eya46", + "homepage": "https://github.com/eya46/nonebot_plugin_b23", + "tags": [ + { + "label": "bilibili", + "color": "#00aeec" + }, + { + "label": "热搜", + "color": "#00aeec" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": null, + "valid": true, + "version": "0.3.0", + "time": "2024-02-12T14:49:36.387789Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_autoreply", + "project_link": "nonebot-plugin-autoreply", + "name": "AutoReply", + "desc": "配置文件高度可自定义的自动回复插件", + "author": "lgc2333", + "homepage": "https://github.com/lgc-NB2Dev/nonebot-plugin-autoreply", + "tags": [ + { + "label": "自动回复", + "color": "#ea881e" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.2.12.post1", + "time": "2024-03-10T21:11:37.771261Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_setu_collection", + "project_link": "nonebot-plugin-setu-collection", + "name": "我要一张xx涩图", + "desc": "从多个api获取色图并根据场景整合的色图插件", + "author": "KarisAya", + "homepage": "https://github.com/KarisAya/nonebot_plugin_setu_collection", + "tags": [ + { + "label": "LoliconAPI", + "color": "#5adba8" + }, + { + "label": "色图", + "color": "#7ab2e1" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2024-03-16T05:46:37.619907Z", + "version": "0.1.8", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_groupmate_waifu", + "project_link": "nonebot-plugin-groupmate-waifu", + "name": "娶群友", + "desc": "娶群友", + "author": "KarisAya", + "homepage": "https://github.com/KarisAya/nonebot_plugin_groupmate_waifu", + "tags": [ + { + "label": "娶群友", + "color": "#ea5252" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-11-06T04:59:20.542238Z", + "version": "1.3.4", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_jrrp2", + "project_link": "nonebot-plugin-jrrp2", + "name": "每日人品2", + "desc": "带数据库可查询历史平均人品的jrrp插件", + "author": "Rene8028", + "homepage": "https://github.com/Rene8028/nonebot_plugin_jrrp2", + "tags": [ + { + "label": "每日人品", + "color": "#ea5252" + }, + { + "label": "jrrp", + "color": "#5290ea" + }, + { + "label": "jrrp2", + "color": "#52bbea" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-02-26T10:59:34.202680Z", + "version": "1.6", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_dicky_pk", + "project_link": "nonebot-plugin-dicky-pk", + "name": "DickyPK", + "desc": "移植自OPQBot的群聊小游戏 CHINCHIN-PK", + "author": "tkgs0", + "homepage": "https://github.com/tkgs0/nonebot-plugin-dicky-pk", + "tags": [ + { + "label": "a:onebot11", + "color": "#000000" + }, + { + "label": "t:群聊小游戏", + "color": "#ffd500" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2024-02-22T03:54:09.830355Z", + "version": "0.5.0", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_eventmonitor", + "project_link": "nonebot-plugin-eventmonitor", + "name": "eventmonitor", + "desc": "监控群事件的插件,支持戳一戳,成员变动,群荣誉变化等提示的插件", + "author": "Reversedeer", + "homepage": "https://github.com/Reversedeer/nonebot_plugin_eventmonitor", + "tags": [ + { + "label": "QQGroup", + "color": "#2885c0" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.2.1", + "time": "2024-01-08T16:11:22.263521Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_whateat_pic", + "project_link": "nonebot-plugin-whateat-pic", + "name": "今天吃喝什么呢", + "desc": "随机推荐吃的和喝的", + "author": "Cvandia", + "homepage": "https://github.com/Cvandia/nonebot-plugin-whateat-pic", + "tags": [ + { + "label": "吃什么", + "color": "#e4ea52" + }, + { + "label": "喝什么", + "color": "#52ea8b" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "1.1.7", + "time": "2023-08-21T08:57:18.767121Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_matcher_block", + "project_link": "nonebot-plugin-matcher-block", + "name": "通用指令阻断", + "desc": "可以为指令添加cd,或在该群屏蔽,支持正则", + "author": "KarisAya", + "homepage": "https://github.com/KarisAya/nonebot_plugin_matcher_block", + "tags": [ + { + "label": "指令阻断", + "color": "#525fea" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-08-20T08:31:44.747967Z", + "version": "0.1.1", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_acm_reminder", + "project_link": "nonebot-plugin-acm-reminder", + "name": "ACMReminder", + "desc": "获取CF/牛客等平台的竞赛信息的插件", + "author": "BigOrangeQWQ", + "homepage": "https://github.com/BigOrangeQWQ/nonebot_plugin_acm_reminder", + "tags": [ + { + "label": "ACM", + "color": "#3b8b74" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-05-15T11:31:08.159916Z", + "version": "0.1.8", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_maimai", + "project_link": "nonebot-plugin-maimai", + "name": "舞萌maimai", + "desc": "适用nonebot2的Maimai插件", + "author": "Agnes4m", + "homepage": "https://github.com/Agnes4m/maimai_plugin", + "tags": [ + { + "label": "maimai", + "color": "#5262ea" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": false, + "version": "0.4.4.post1", + "time": "2023-10-30T03:17:10.051088Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_all4one", + "project_link": "nonebot-plugin-all4one", + "name": "OneBot 实现", + "desc": "让 NoneBot2 成为 OneBot 实现!", + "author": "j1g5awi", + "homepage": "https://github.com/nonepkg/nonebot-plugin-all4one", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.console", + "nonebot.adapters.onebot.v11", + "nonebot.adapters.qqguild", + "nonebot.adapters.telegram" + ], + "valid": true, + "version": "0.1.0a3", + "time": "2023-06-20T14:59:24.276312Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_gsabyss", + "project_link": "nonebot-plugin-gsabyss", + "name": "原神深境螺旋数据查询", + "desc": "原神深渊讨伐列表、渊月祝福、玩家战斗统计等信息查询,数据来自 Honey Hunter World 和 Akasha Database", + "author": "monsterxcn", + "homepage": "https://github.com/monsterxcn/nonebot-plugin-gsabyss", + "tags": [ + { + "label": "t:Genshin", + "color": "#ffd49f" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-10-03T07:00:47.175755Z", + "version": "0.1.5", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_arktools", + "project_link": "nonebot-plugin-arktools", + "name": "明日方舟工具箱", + "desc": "基于 OneBot 适配器的 NoneBot2 明日方舟小工具箱插件", + "author": "NumberSir", + "homepage": "https://github.com/NumberSir/nonebot_plugin_arktools", + "tags": [ + { + "label": "a:onebot", + "color": "#000000" + }, + { + "label": "arknights", + "color": "#22bbff" + }, + { + "label": "t:game", + "color": "#db905e" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-05-04T05:16:51.388596Z", + "version": "1.2.0", + "skip_test": false + }, + { + "module_name": "gartic_room", + "project_link": "nonebot-plugin-gartic-room", + "name": "你画我猜组队", + "desc": "自动创建gartic房间,主题为综合,将房间链接发送到群聊", + "author": "bridgeL", + "homepage": "https://github.com/bridgeL/gartic_room", + "tags": [ + { + "label": "ayaka", + "color": "#e36306" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-02-15T12:14:20.052354Z", + "version": "0.0.3", + "skip_test": false + }, + { + "module_name": "nonebot-plugin-resolver", + "project_link": "nonebot-plugin-resolver", + "name": "链接分享解析器", + "desc": "适用于nonebot2 解析视频、图片链接/小程序插件,tiktok、bilibili、twitter、xhs等实时发送!", + "author": "zhiyu1998", + "homepage": "https://github.com/zhiyu1998/nonebot-plugin-resolver", + "tags": [ + { + "label": "bilibili", + "color": "#f8a5c2" + }, + { + "label": "tiktok", + "color": "#303952" + }, + { + "label": "twitter", + "color": "#1b9cfc" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-03-27T06:15:19.259340Z", + "version": "1.0.13", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_bing_chat", + "project_link": "nonebot-plugin-bing-chat", + "name": "Bing Chat", + "desc": "使用新版必应的聊天功能", + "author": "Harry-Jing", + "homepage": "https://github.com/Harry-Jing/nonebot-plugin-bing-chat", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-04-20T10:28:15.689700Z", + "version": "0.7.11", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_saa", + "project_link": "nonebot-plugin-send-anything-anywhere", + "name": "峯驰物流", + "desc": "一个帮助处理不同 adapter 消息的适配和发送的插件 ", + "author": "felinae98", + "homepage": "https://send-anything-anywhere.felinae98.cn/", + "tags": [], + "is_official": false, + "type": "library", + "supported_adapters": [ + "nonebot.adapters.feishu", + "nonebot.adapters.kaiheila", + "nonebot.adapters.onebot.v11", + "nonebot.adapters.onebot.v12", + "nonebot.adapters.qq", + "nonebot.adapters.red", + "nonebot.adapters.telegram" + ], + "valid": true, + "version": "0.6.0", + "time": "2024-02-23T02:25:20.661005Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_random_stereotypes", + "project_link": "nonebot-plugin-random-stereotypes", + "name": "发病语录", + "desc": "对输入的人,随机返回一条本地的发病语录", + "author": "Ikaros-521", + "homepage": "https://github.com/Ikaros-521/nonebot_plugin_random_stereotypes", + "tags": [ + { + "label": "语录", + "color": "#6a6060" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2024-02-14T11:01:27.302388Z", + "version": "0.2.0", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_xiuxian_2", + "project_link": "nonebot_plugin_xiuxian_2", + "name": "修仙_2.0", + "desc": "基于原版修仙的修改与重构", + "author": "QingMuCat", + "homepage": "https://github.com/QingMuCat/nonebot_plugin_xiuxian_2.0", + "tags": [ + { + "label": "文游", + "color": "#ea5252" + }, + { + "label": "修仙", + "color": "#4e9f9f" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-05-05T13:42:32.700880Z", + "version": "2.9.2.2", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_h2e", + "project_link": "nonebot-plugin-h2e", + "name": "呆呆兽都会起来锻炼 H2E", + "desc": "类似\"今天吃什么\"的一个插件,通过命令返回健身、游泳、瑜伽的锻炼方式啦", + "author": "Gin2O", + "homepage": "https://github.com/Gin2O/nonebot_plugin_h2e", + "tags": [ + { + "label": "锻炼", + "color": "#da4a4a" + }, + { + "label": "t:what2eat", + "color": "#99da4a" + }, + { + "label": "t: how2exe", + "color": "#99da4a" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-02-23T15:18:39.471059Z", + "version": "0.1.3", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_oachat", + "project_link": "nonebot-plugin-oachat", + "name": "呆呆兽都会用的chatbot接api", + "desc": "没有上下文语境的简易chatbot,调用openai API", + "author": "Gin2O", + "homepage": "https://github.com/Gin2O/nonebot_plugin_oachat", + "tags": [ + { + "label": "OpenAI", + "color": "#ea5252" + }, + { + "label": "GPT3", + "color": "#ea5252" + }, + { + "label": "ChatBot", + "color": "#ea5252" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-03-04T16:28:15.886299Z", + "version": "0.1.8", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_warframe_mode", + "project_link": "nonebot-plugin-warframe-mode", + "name": "wf的wm市场", + "desc": "warframe游戏的WM市场查询", + "author": "mmxd12", + "homepage": "https://github.com/mmxd12/nonebot_plugin_warframe_mode", + "tags": [ + { + "label": "星际战甲", + "color": "#ea5252" + }, + { + "label": "warframe", + "color": "#ea5252" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-04-07T02:34:08.571246Z", + "version": "1.1.0", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_bf1_groptools", + "project_link": "nonebot-plugin-bf1-groptools", + "name": "战地一入群审批", + "desc": "战地一通过游戏id的入群审核并其修改群名片为id", + "author": "zzcqie666", + "homepage": "https://github.com/zzcqie666/nonebot_plugin_bf1_groptools", + "tags": [ + { + "label": "战地一", + "color": "#52eae4" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-02-26T02:09:33.525641Z", + "version": "0.0.13", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_afd", + "project_link": "nonebot-plugin-afd", + "name": "爱发电进群审核", + "desc": "审核入群信息判断是否同意进群", + "author": "17TheWord", + "homepage": "https://github.com/17TheWord/nonebot-plugin-afd", + "tags": [ + { + "label": "爱发电", + "color": "#ea5252" + }, + { + "label": "自动审核进群", + "color": "#52eae9" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.0.4", + "time": "2023-12-14T04:52:48.787154Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_eventdone", + "project_link": "nonebot-plugin-eventdone", + "name": "nonebot_plugin_eventdone", + "desc": "远程同意好友", + "author": "PadorFelice", + "homepage": "https://github.com/PadorFelice/nonebot_plugin_eventdone", + "tags": [ + { + "label": "同意好友", + "color": "#ba2d2d" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-02-28T10:38:00.132098Z", + "version": "1.1.1", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_ncm_saying", + "project_link": "nonebot-plugin-ncm-saying", + "name": "网抑云", + "desc": "一开口就老网抑云了", + "author": "techotaku39", + "homepage": "https://github.com/techotaku39/nonebot-plugin-ncm-saying", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-02-28T12:47:07.236766Z", + "version": "0.1.0", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_60s", + "project_link": "nonebot-plugin-60s", + "name": "60s日历", + "desc": "每天60秒读懂世界", + "author": "techotaku39", + "homepage": "https://github.com/techotaku39/nonebot-plugin-60s", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-05-31T11:38:28.620766Z", + "version": "0.2.0", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_AutoRepeater", + "project_link": "nonebot-plugin-AutoRepeater", + "name": "AutoRepeater", + "desc": "连续发送2条相同消息,机器人就会自动 +1。包括普通消息,QQ表情,还有图片(表情包)。支持图片夹文字和表情夹文字的消息!具有动态多群控制和跟随撤回功能(手表API可能无法监测)。", + "author": "DMCSWCG", + "homepage": "https://github.com/DMCSWCG/nonebot-plugin-AutoRepeater", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-03-03T16:52:05.869904Z", + "version": "0.1.4", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_ai_timetable", + "project_link": "nonebot-plugin-ai-timetable", + "name": "小爱课表", + "desc": "一键导入课表、查看课表、提醒上课、查询课程", + "author": "maoxig", + "homepage": "https://github.com/maoxig/nonebot-plugin-ai-timetable", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.3.6", + "time": "2023-09-02T05:52:46.560403Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_sanae", + "project_link": "nonebot-plugin-sanae", + "name": "Sanae", + "desc": "早苗连接器,也可转发其他onebotv11到nb2~", + "author": "Hoshinonyaruko", + "homepage": "https://github.com/Hoshinonyaruko/nonebot-plugin-sanae", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-03-18T07:50:34.572272Z", + "version": "0.0.9", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_arkrecord", + "project_link": "nonebot-plugin-arkrecord", + "name": "明日方舟抽卡记录分析", + "desc": "明日方舟抽卡记录分析与导出", + "author": "zheuziihau", + "homepage": "https://github.com/zheuziihau/nonebot_plugin_arkrecord", + "tags": [ + { + "label": "明日方舟 ", + "color": "#c39191" + }, + { + "label": "游戏", + "color": "#c39191" + }, + { + "label": "抽卡", + "color": "#c39191" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-04-12T16:03:10.678760Z", + "version": "1.7.1", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_chatgpt_turbo", + "project_link": "nonebot-plugin-chatgpt-turbo", + "name": "ChatGPT官方接口版", + "desc": "适配新版OpenAI API的nonebot插件,可以调用官方稳定版ChatGPT进行回复", + "author": "Alpaca4610", + "homepage": "https://github.com/Alpaca4610/nonebot_plugin_chatgpt_turbo", + "tags": [ + { + "label": "ChatGPT", + "color": "#ea5252" + }, + { + "label": "OpenAI", + "color": "#52ea92" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-03-27T02:12:58.838396Z", + "version": "0.3.0", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_chatgpt_on_qq", + "project_link": "nonebot-plugin-chatgpt-on-qq", + "name": "多功能的ChatGPT机器人", + "desc": "基于chatGPT3.5-turboAPI,有利用模板创建新对话、保存历史记录、多重对话不互相干扰等功能", + "author": "Suxmx", + "homepage": "https://github.com/Suxmx/nonebot_plugin_chatgpt_on_qq", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2024-02-17T12:13:50.019025Z", + "version": "1.6.4", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_tuan_chatgpt", + "project_link": "nonebot-plugin-tuan-chatgpt", + "name": "和团子聊天!", + "desc": "来和团子聊天吧~ Powered by chatgpt", + "author": "TheLZY", + "homepage": "https://github.com/TheLZY/nonebot_plugin_tuan_chatgpt", + "tags": [ + { + "label": "t:chat", + "color": "#ff9d97" + }, + { + "label": "t:chatgpt", + "color": "#ff9d97" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-09-16T21:37:00.389809Z", + "version": "0.4.2", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_chatpdf", + "project_link": "nonebot-plugin-chatpdf", + "name": "ChatPDF文章分析", + "desc": "在nonebot中使用ChatPDF的最小实现来中分析文章内容", + "author": "Alpaca4610", + "homepage": "https://github.com/Alpaca4610/nonebot_plugin_chatpdf", + "tags": [ + { + "label": "ChatGPT", + "color": "#ea5252" + }, + { + "label": "ChatPDF", + "color": "#6c7abd" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-03-24T07:41:22.586069Z", + "version": "0.4.0", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_rimofun", + "project_link": "nonebot-plugin-rimofun", + "name": "RimoFun", + "desc": "用 RimoChan 开发的工具做的一个有趣的插件", + "author": "lgc2333", + "homepage": "https://github.com/lgc-NB2Dev/nonebot-plugin-rimofun", + "tags": [ + { + "label": "RimoChan", + "color": "#f3e5bf" + }, + { + "label": "bnhhsh", + "color": "#ebbcc6" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": null, + "valid": true, + "version": "0.3.0", + "time": "2024-03-10T07:19:28.075646Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_customemote", + "project_link": "nonebot-plugin-customemote", + "name": "群聊自定义表情包", + "desc": "发送 表情名称 加 (.jpg或.png或.gif)后缀,就会发送设置好的表情。快速方便,聊天必备。", + "author": "DMCSWCG", + "homepage": "https://github.com/DMCSWCG/nonebot-plugin-customemote/", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-03-11T12:57:44.113082Z", + "version": "0.1.0", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_justsix", + "project_link": "nonebot-plugin-justsix", + "name": "发6", + "desc": "发送6,机器人就回复6", + "author": "iidamie", + "homepage": "https://github.com/iidamie/nonebot_plugin_justsix", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-03-13T10:04:49.409803Z", + "version": "1.0.0", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_simulator_xiuxian", + "project_link": "nonebot-plugin-simulator-xiuxian", + "name": "修仙模拟器", + "desc": "基于原版修仙的修改", + "author": "luoyefufeng", + "homepage": "https://github.com/luoyefufeng/nonebot_plugin_simulator_xiuxian", + "tags": [ + { + "label": "文游", + "color": "#4256da" + }, + { + "label": "修仙1.0", + "color": "#1d1b1c" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-08-19T06:57:44.424649Z", + "version": "0.5.23", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_bracket", + "project_link": "nonebot-plugin-bracket", + "name": "括号补全", + "desc": "补全消息中的括号,治愈强迫症", + "author": "MeetWq", + "homepage": "https://github.com/noneplugin/nonebot-plugin-bracket", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": null, + "valid": true, + "version": "0.2.0", + "time": "2023-06-21T14:51:55.170240Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_gshisbanner", + "project_link": "nonebot-plugin-gshisbanner", + "name": "gshisbanner", + "desc": "这是一个在机器人上获取原神历史卡池的插件", + "author": "forchannot", + "homepage": "https://github.com/forchannot/nonebot-plugin-gshisbanner", + "tags": [ + { + "label": "原神", + "color": "#ea5252" + }, + { + "label": "卡池", + "color": "#52ea56" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11", + "nonebot.adapters.red" + ], + "valid": true, + "version": "1.2.5", + "time": "2024-03-08T09:12:03.746070Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_unoconv", + "project_link": "nonebot-plugin-unoconv", + "name": "unoconv文件转换", + "desc": "基于unoconv的文件转换工具,支持输出pdf、doc、jpg等格式", + "author": "Zeta-qixi", + "homepage": "https://github.com/Zeta-qixi/nonebot-plugin-unoconv", + "tags": [ + { + "label": "文件转换", + "color": "#ea5252" + }, + { + "label": "pdf转换", + "color": "#ea5252" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-03-16T01:16:57.312529Z", + "version": "0.5.7", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_apexranklookup", + "project_link": "nonebot-plugin-apexranklookup", + "name": "apex信息查询", + "desc": "查询apex玩家信息、地图等信息", + "author": "Windylh", + "homepage": "https://github.com/Windylh/nonebot_plugin_apexranklookup", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-10-10T08:56:26.675744Z", + "version": "0.1.7", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_randomnana", + "project_link": "nonebot-plugin-randomnana", + "name": "随机狗妈", + "desc": "随机抽取神乐七奈表情包图片", + "author": "NanakoOfficial", + "homepage": "https://github.com/NanakoOfficial/nonebot_plugin_randomnana", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-05-22T00:46:06.922063Z", + "version": "0.1.3", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_quote", + "project_link": "nonebot-plugin-quote", + "name": "群聊语录库", + "desc": "一款QQ群语录库——支持上传聊天截图为语录,随机投放语录,关键词搜索语录精准投放", + "author": "RongRongJi", + "homepage": "https://github.com/RongRongJi/nonebot_plugin_quote", + "tags": [ + { + "label": "a:onebot", + "color": "#326bad" + }, + { + "label": "t:语录", + "color": "#003f88" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-04-13T19:07:23.124182Z", + "version": "0.3.5", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_memes_api", + "project_link": "nonebot-plugin-memes-api", + "name": "表情包制作", + "desc": "制作各种沙雕表情包", + "author": "MeetWq", + "homepage": "https://github.com/noneplugin/nonebot-plugin-memes-api", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": [], + "valid": true, + "version": "0.3.2", + "time": "2024-03-12T09:44:02.760534Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_rrc", + "project_link": "nonebot-plugin-rrc", + "name": "随机点名", + "desc": "就是群聊点名,让学生感受刺激", + "author": "QingMuCat", + "homepage": "https://github.com/QingMuCat/nonebot-plugin-rrc", + "tags": [ + { + "label": "课堂", + "color": "#ea5252" + }, + { + "label": "抽人", + "color": "#ea5252" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-03-19T07:32:14.760521Z", + "version": "0.0.6", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_hotsearch", + "project_link": "nonebot-plugin-hotsearch", + "name": "多平台热搜获取插件", + "desc": "获取微博/百度/知乎/贴吧/b站的热搜信息", + "author": "Astolfocat", + "homepage": "https://github.com/Astolfocat/nonebot_plugin_hotsearch", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-03-19T04:59:59.139834Z", + "version": "0.1.1", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_ai_interviewer", + "project_link": "nonebot-plugin-ai-interviewer", + "name": "基于OpenAI的AI模拟面试官", + "desc": "本插件基于OpenAI的API开发,在nonebot框架下实现一个聊天式的可自定义面试职位的AI辅助面试官。", + "author": "Alpaca4610", + "homepage": "https://github.com/Alpaca4610/nonebot-plugin-ai-interviewer", + "tags": [ + { + "label": "ChatGPT", + "color": "#4366eb" + }, + { + "label": "模拟面试", + "color": "#af286f" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-03-20T14:33:59.011021Z", + "version": "0.1.1", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_chatglm", + "project_link": "nonebot-plugin-chatglm", + "name": "ChatGLM", + "desc": "基于ChatGLM-6B模型,提供本地中文(汉语)聊天机器人功能", + "author": "DaoMingze", + "homepage": "https://github.com/DaoMingze/zhukebot/tree/main/zhukebot/plugins/chatglm", + "tags": [ + { + "label": "t:Chatbot", + "color": "#4366eb" + }, + { + "label": "ChatGLM", + "color": "#af286f" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-06-04T15:39:45.646722Z", + "version": "0.1.6", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_chatglm6b", + "project_link": "nonebot-plugin-chatglm6b", + "name": "ChatGLM-6B API版", + "desc": "通过ChatGLM-6B API来和已经部署好的ChatGLM对话", + "author": "QNLanYang", + "homepage": "https://github.com/QNLanYang/nonebot_plugin_ChatGLM6B", + "tags": [ + { + "label": "t:ChatGLM", + "color": "#52d6ea" + }, + { + "label": "AI Chat", + "color": "#8e52ea" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-04-08T15:47:04.430159Z", + "version": "0.1.5", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_helloworld", + "project_link": "nonebot-plugin-helloworld", + "name": "Hello World", + "desc": "你好,世界", + "author": "A-kirami", + "homepage": "https://github.com/A-kirami/nonebot-plugin-helloworld", + "tags": [ + { + "label": "good first plugin", + "color": "#6c58f6" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-05-24T11:29:41.026691Z", + "version": "0.2.0", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_overbracket", + "project_link": "nonebot-plugin-overbracket", + "name": "通括膨胀", + "desc": "让你的机器人随机发括号", + "author": "NCBM", + "homepage": "https://github.com/NCBM/nonebot-plugin-overbracket", + "tags": [ + { + "label": "useless", + "color": "#0a930e" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": null, + "valid": true, + "version": "0.1.2", + "time": "2023-06-19T08:06:41.126617Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_miao", + "project_link": "nonebot-plugin-miao", + "name": "口癖", + "desc": "让Bot的发言添加口癖", + "author": "CMHopeSunshine", + "homepage": "https://github.com/CMHopeSunshine/nonebot-plugin-miao", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": null, + "valid": true, + "version": "1.1.0", + "time": "2023-06-20T14:21:31.414654Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_questionmark", + "project_link": "nonebot-plugin-questionmark", + "name": "颠倒问号", + "desc": "发送单个问号 `?` 或 `?`, bot会自动回复颠倒的问号 `¿`", + "author": "NumberSir", + "homepage": "https://github.com/NumberSir/nonebot-plugin-questionmark", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-05-03T08:15:01.898492Z", + "version": "0.4.1", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_genshin_cos", + "project_link": "nonebot-plugin-genshin-cos", + "name": "米游社cos", + "desc": "获取原神coser图片", + "author": "Cvandia", + "homepage": "https://github.com/Cvandia/nonebot_plugin_genshin_cos", + "tags": [ + { + "label": "原神", + "color": "#f55400" + }, + { + "label": "cos", + "color": "#00d0f5" + }, + { + "label": "coser", + "color": "#eb1dd3" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.2.7", + "time": "2024-03-09T13:23:44.009084Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_chatgpt_plus", + "project_link": "nonebot-plugin-chatgpt-plus", + "name": "ChatGPT网页端API", + "desc": "免费、无限使用ChatGPT,PLUS账号可使用ChatGPT4.0,绕过ChatGPT的Cloudflare盾来使用免费网页端ChatGPT", + "author": "AkashiCoin", + "homepage": "https://github.com/AkashiCoin/nonebot-plugin-chatgpt-plus", + "tags": [ + { + "label": "ChatGPT", + "color": "#ea5252" + }, + { + "label": "GPT4", + "color": "#2ecf57" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-11-17T11:16:32.728012Z", + "version": "0.8.9", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_sayoroll", + "project_link": "nonebot-plugin-sayoroll", + "name": "sayoroll", + "desc": "随机数字或随机事件", + "author": "mas-alone", + "homepage": "https://github.com/mas-alone/nonebot-plugin-sayoroll", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": null, + "valid": true, + "version": "0.6.1", + "time": "2024-03-07T04:04:59.513027Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_gw2", + "project_link": "nonebot-plugin-gw2", + "name": "激战2", + "desc": "使用api获取星岬岛信息", + "author": "Agnes4m", + "homepage": "https://github.com/Agnes4m/nonebot_plugin_gw2", + "tags": [ + { + "label": "gw2", + "color": "#52ea5a" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.0.4", + "time": "2023-06-23T05:32:22.625374Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_today_waifu", + "project_link": "nonebot-plugin-today-waifu", + "name": "今日老婆", + "desc": "随机抓取群友做老婆", + "author": "glamorgan9826", + "homepage": "https://github.com/glamorgan9826/nonebot-plugin-today-waifu", + "tags": [ + { + "label": "娱乐", + "color": "#eac752" + }, + { + "label": "每日老婆", + "color": "#9beff6" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-07-25T14:57:04.643842Z", + "version": "0.1.5", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_sleep", + "project_link": "nonebot-plugin-sleep", + "name": "来份睡眠套餐", + "desc": "让bot给你一份精致的睡眠套餐(发指令禁言)", + "author": "mas-alone", + "homepage": "https://github.com/mas-alone/nonebot-plugin-sleep", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2024-02-22T03:15:30.040702Z", + "version": "0.1.1", + "skip_test": false + }, + { + "module_name": "nonebot_api_paddle", + "project_link": "nonebot-api-paddle", + "name": "nonebot_api_paddle", + "desc": "nonebot_api_paddleocr", + "author": "canxin121", + "homepage": "https://github.com/canxin121/nonebot_api_paddleocr", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-04-21T15:52:29.221679Z", + "version": "1.0.3", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_chatppt", + "project_link": "nonebot-plugin-chatppt", + "name": "AI生成PPT", + "desc": "在nonebot框架下实现一个AI生成指定主题PPT的文件并上传到群文件中", + "author": "Alpaca4610", + "homepage": "https://github.com/Alpaca4610/nonebot-plugin-chatppt", + "tags": [ + { + "label": "ChatGPT", + "color": "#ea5252" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-05-05T08:45:56.162272Z", + "version": "0.1.1", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_steam_game_status", + "project_link": "nonebot-plugin-steam-game-status", + "name": "Steam游戏状态", + "desc": "播报群友的Steam游戏状态", + "author": "nek0us", + "homepage": "https://github.com/nek0us/nonebot_plugin_steam_game_status", + "tags": [ + { + "label": "Steam", + "color": "#6690a5" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": false, + "version": "0.1.7", + "time": "2024-02-28T18:40:00.487496Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_bilichat", + "project_link": "nonebot-plugin-bilichat", + "name": "nonebot-plugin-bilichat", + "desc": "多种B站链接解析,视频词云,AI总结,你想要的都在 bilichat", + "author": "Well2333", + "homepage": "https://github.com/Well2333/nonebot-plugin-bilichat", + "tags": [ + { + "label": "哔哩哔哩", + "color": "#ffc8ea" + }, + { + "label": "ChatGPT", + "color": "#75ffc0" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.mirai2", + "nonebot.adapters.onebot.v11", + "nonebot.adapters.onebot.v12", + "nonebot.adapters.qqguild" + ], + "valid": false, + "version": "5.2.0", + "time": "2024-02-22T07:51:13.607536Z", + "skip_test": false + }, + { + "module_name": "GenshinUID", + "project_link": "nonebot-plugin-genshinuid", + "name": "GenshinUID", + "desc": "支持大部分适配器的全功能NoneBot2原神插件", + "author": "KimigaiiWuyi", + "homepage": "https://github.com/KimigaiiWuyi/GenshinUID", + "tags": [ + { + "label": "a:all", + "color": "#ea5252" + }, + { + "label": "原神", + "color": "#000000" + }, + { + "label": "早柚核心", + "color": "#7937a9" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2024-03-18T05:13:47.485271Z", + "version": "4.6.0", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_blive_danmaku", + "project_link": "nonebot-plugin-blive-danmaku", + "name": "B站直播间路灯", + "desc": "通过弹幕记录直播高能点", + "author": "zangxx66", + "homepage": "https://github.com/zangxx66/nonebot_plugin_blive_danmaku", + "tags": [ + { + "label": "t:bilibili", + "color": "#ea5252" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-10-08T08:54:21.863198Z", + "version": "0.4.1", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_clock", + "project_link": "nonebot-plugin-clock", + "name": "nonebot clock 群闹钟 ⏰", + "desc": "支持群聊 私聊的⏰插件", + "author": "Zeta-qixi", + "homepage": "https://github.com/Zeta-qixi/nonebot-plugin-clock", + "tags": [ + { + "label": "闹钟", + "color": "#ea5252" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-05-22T02:06:01.009228Z", + "version": "0.9", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_SDGPT", + "project_link": "nonebot-plugin-SDGPT", + "name": "SDGPT", + "desc": "链接 ChatGPT / Bing / Stable-Diffusion: ChatGPT Bing 聊天, gpt 解析自然语言转 Stable-Diffusion 生成图像", + "author": "thx114", + "homepage": "https://github.com/thx114/sdgpt", + "tags": [ + { + "label": "a:onebot", + "color": "#000000" + }, + { + "label": "chatGPT", + "color": "#54b490" + }, + { + "label": "novelai", + "color": "#f0dc4e" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-05-05T02:47:56.881617Z", + "version": "0.2.8", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_fuckyou", + "project_link": "nonebot-plugin-fuckyou", + "name": "FuckYou", + "desc": "莎士比亚没有士", + "author": "lgc2333", + "homepage": "https://github.com/lgc-NB2Dev/nonebot-plugin-fuckyou", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": null, + "valid": true, + "version": "0.2.0.post1", + "time": "2024-03-10T08:54:32.695129Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_pokemonfusion", + "project_link": "nonebot-plugin-pokemonfusion", + "name": "宝可梦融合", + "desc": "Pokemon Infinite Fusion的中文版融合计算器,支持融合420^2=176400种宝可梦", + "author": "IllusiveBull", + "homepage": "https://github.com/IllusiveBull/nonebot_plugin_pokemonfusion", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-10-24T05:13:39.699321Z", + "version": "1.1.2", + "skip_test": false + }, + { + "module_name": "tatarubot2", + "project_link": "tatarubot2", + "name": "TataruBot2", + "desc": "FF14相关轻量功能,如查物价、logs、看微博等", + "author": "aaron-lii", + "homepage": "https://github.com/aaron-lii/TataruBot2", + "tags": [ + { + "label": "t:FF14", + "color": "#5282ea" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-12-04T02:02:20.511796Z", + "version": "1.0", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_talk_with_chatgpt", + "project_link": "nonebot-plugin-talk-with-chatgpt", + "name": "与ChatGpt聊天", + "desc": "基于accessToken登录的chatgpt聊天插件", + "author": "nikissXI", + "homepage": "https://github.com/nikissXI/nonebot_plugins/tree/main/nonebot_plugin_talk_with_chatgpt", + "tags": [ + { + "label": "chatgpt", + "color": "#1a834e" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-11-23T13:36:55.110924Z", + "version": "0.6.4", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_osuverify", + "project_link": "nonebot-plugin-osuverify", + "name": "osu!入群审批", + "desc": "通过osu!用户名的入群审核并其修改群名片为id", + "author": "mas-alone", + "homepage": "https://github.com/mas-alone/nonebot-plugin-osuverify", + "tags": [ + { + "label": "OSU", + "color": "#eb5d9b" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2024-03-05T09:45:42.028099Z", + "version": "0.1.1", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_bilifan", + "project_link": "nonebot-plugin-bilifan", + "name": "bilifan", + "desc": "b站粉丝牌~", + "author": "Agnes4m", + "homepage": "https://github.com/Agnes4m/nonebot_plugin_bilifan", + "tags": [ + { + "label": "bilibili", + "color": "#ec15c6" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.feishu", + "nonebot.adapters.kaiheila", + "nonebot.adapters.onebot.v11", + "nonebot.adapters.onebot.v12", + "nonebot.adapters.qq", + "nonebot.adapters.red", + "nonebot.adapters.telegram" + ], + "valid": true, + "version": "0.3.2", + "time": "2024-01-25T10:10:05.461565Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_akinator", + "project_link": "nonebot-plugin-akinator", + "name": "Akinator", + "desc": "网络天才", + "author": "lgc2333", + "homepage": "https://github.com/lgc-NB2Dev/nonebot-plugin-akinator", + "tags": [ + { + "label": "Akinator", + "color": "#6599fe" + }, + { + "label": "网络天才", + "color": "#6599fe" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.bilibili", + "nonebot.adapters.console", + "nonebot.adapters.ding", + "nonebot.adapters.discord", + "nonebot.adapters.dodo", + "nonebot.adapters.feishu", + "nonebot.adapters.github", + "nonebot.adapters.kaiheila", + "nonebot.adapters.minecraft", + "nonebot.adapters.mirai2", + "nonebot.adapters.ntchat", + "nonebot.adapters.onebot.v11", + "nonebot.adapters.onebot.v12", + "nonebot.adapters.qq", + "nonebot.adapters.red", + "nonebot.adapters.satori", + "nonebot.adapters.telegram" + ], + "valid": true, + "version": "0.2.0", + "time": "2024-03-10T11:36:13.067923Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_rename", + "project_link": "nonebot-plugin-rename", + "name": "nonebot_plugin_rename", + "desc": "用于更改qq机器人的群名片,内置多种有趣名片", + "author": "forchannot", + "homepage": "https://github.com/forchannot/nonebot_plugin_rename", + "tags": [ + { + "label": "群名片", + "color": "#466bed" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "1.7.1", + "time": "2024-02-03T07:20:38.157409Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_appinsights", + "project_link": "nonebot-plugin-appinsights", + "name": "Nonebot2 AppInsights", + "desc": "Nonebot2 Application Insights 日志连接插件", + "author": "XZhouQD", + "homepage": "https://github.com/xzhouqd/nonebot-plugin-appinsights", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": null, + "valid": true, + "version": "0.2.0", + "time": "2023-06-19T17:05:18.866643Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_brainfuck", + "project_link": "nonebot-plugin-brainfuck", + "name": "brainfuck", + "desc": "一个brainfuck解释器,允许在群聊中输入brainfuck:{command}:{inbox}执行brainfuck代码,并返回outbox", + "author": "campanulamediuml", + "homepage": "https://github.com/campanulamediuml/nonebot-plugin-brainfuck", + "tags": [ + { + "label": "t:dev", + "color": "#ea5252" + }, + { + "label": "t:bf", + "color": "#529fea" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-04-23T04:37:04.094212Z", + "version": "1.0.4", + "skip_test": false + }, + { + "module_name": "nonebot-plugin-coderun", + "project_link": "nonebot-plugin-coderun", + "name": "运行代码", + "desc": "基于runoob.com的在线代码运行插件", + "author": "Yincmewy", + "homepage": "https://github.com/Yincmewy/nonebot_plugin_coderun", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-04-22T12:23:23.324337Z", + "version": "0.0.1", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_abot_place", + "project_link": "nonebot-plugin-abot-place", + "name": "公共画板插件", + "desc": "可以让所有的 Bot 用户一起来画画(参考 Reddit Place)", + "author": "djkcyl", + "homepage": "https://github.com/Aunly/nonebot-plugin-abot-place", + "tags": [ + { + "label": "ABot", + "color": "#52aaea" + }, + { + "label": "Place", + "color": "#ea6dda" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-06-01T09:52:35.801795Z", + "version": "0.1.0.post3", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_megumin", + "project_link": "nonebot-plugin-megumin", + "name": "为美好群聊献上爆炎", + "desc": "现在,你的群友可以触发失传已久的爆裂魔法了", + "author": "youlanan", + "homepage": "https://github.com/youlanan/nonebot_plugin_megumin", + "tags": [ + { + "label": "小游戏", + "color": "#f9971c" + }, + { + "label": "Explosion", + "color": "#f94b1c" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-04-30T02:05:54.367615Z", + "version": "0.0.5", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_manga_translator", + "project_link": "nonebot-plugin-manga-translator", + "name": "图片翻译", + "desc": "利用api翻译图片并返回翻译后的图片", + "author": "maoxig", + "homepage": "https://github.com/maoxig/nonebot-plugin-manga-translator", + "tags": [ + { + "label": "漫画翻译", + "color": "#527bea" + }, + { + "label": "图片翻译", + "color": "#c452ea" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.1.3", + "time": "2023-06-09T12:43:01.115471Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_watermarker", + "project_link": "nonebot-plugin-watermarker", + "name": "水印大师", + "desc": "给bot发的图片增加水印,支持随机水印添加", + "author": "X-Skirt-X", + "homepage": "https://github.com/X-Skirt-X/nonebot-plugin-watermarker", + "tags": [ + { + "label": "t:水印", + "color": "#52eae7" + }, + { + "label": "t:图片水印", + "color": "#ef258f" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-06-03T12:05:50.890757Z", + "version": "0.2.0", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_starrail_calendar", + "project_link": "nonebot-plugin-starrail-calendar", + "name": "星穹铁道活动日历", + "desc": "查看《崩坏:星穹铁道》官方活动", + "author": "nicklly", + "homepage": "https://github.com/nicklly/nonebot_plugin_StarRail_calendar", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-09-17T08:57:38.240552Z", + "version": "1.0.8", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_wordle_help", + "project_link": "nonebot-plugin-wordle-help", + "name": "wordle_help", + "desc": "wordle游戏小助手", + "author": "Special-Week", + "homepage": "https://github.com/Special-Week/Hinata-Bot/tree/main/src/plugins/wordle_help", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.0.3", + "time": "2023-06-20T13:31:24.879980Z", + "skip_test": false + }, + { + "module_name": "nonebot-plugin-csgo-case-simulator", + "project_link": "nonebot-plugin-csgo-case-simulator", + "name": "CSGO开箱模拟器", + "desc": "内置所有最新武器箱,可多箱连开", + "author": "roiiiu", + "homepage": "https://github.com/roiiiu/nonebot-plugin-csgo-case-simulator", + "tags": [ + { + "label": "CSGO", + "color": "#47aeff" + }, + { + "label": "开箱模拟器", + "color": "#ff4781" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2024-02-27T09:24:39.222768Z", + "version": "1.0.1", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_callapi", + "project_link": "nonebot-plugin-callapi", + "name": "CallAPI", + "desc": "使用指令来调用 Bot 的 API", + "author": "lgc2333", + "homepage": "https://github.com/lgc-NB2Dev/nonebot-plugin-callapi", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": null, + "valid": false, + "version": "0.2.0", + "time": "2024-03-10T10:48:00.487466Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_penguin", + "project_link": "nonebot-plugin-penguin", + "name": "nonebot_plugin_penguin", + "desc": "使用nonebot2查询企鹅物流掉落物数据", + "author": "AzideCupric", + "homepage": "https://github.com/AzideCupric/nonebot-plugin-penguin", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": null, + "valid": true, + "version": "0.1.0", + "time": "2023-06-20T15:22:02.968145Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_spark_gpt", + "project_link": "nonebot-plugin-spark-gpt", + "name": "Spark_GPT", + "desc": "将poe,chatgpt,slack claude,Newbing,SydneyBing,google bard,讯飞星火模型(SparkDesk),通义千问等接入qq,tg,kook(原开黑啦),discord多平台用户绑定实现数据互通,并提供webui进行便捷配置,自适应文转图,实现预设人格化bot的便捷创建,使用和管理", + "author": "canxin121", + "homepage": "https://github.com/canxin121/Spark-GPT", + "tags": [ + { + "label": "多来源语言GPT", + "color": "#5599ff" + }, + { + "label": "多平台用户数据互通", + "color": "#ffff77" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.discord", + "nonebot.adapters.kaiheila", + "nonebot.adapters.onebot.v11", + "nonebot.adapters.telegram" + ], + "valid": false, + "version": "2.0.3", + "time": "2023-10-12T14:37:14.174909Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_logpile", + "project_link": "nonebot-plugin-logpile", + "name": "本地日志保存", + "desc": "将 bot 日志记录保存到本地文件中", + "author": "A-kirami", + "homepage": "https://github.com/A-kirami/nonebot-plugin-logpile", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-05-09T20:58:22.826287Z", + "version": "0.1.0", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_arkgacha", + "project_link": "nonebot-plugin-arkgacha", + "name": "明日方舟抽卡模拟", + "desc": "明模拟日方舟抽卡功能,支持模拟十连", + "author": "RF-Tar-Railt", + "homepage": "https://github.com/RF-Tar-Railt/nonebot-plugin-arkgacha", + "tags": [ + { + "label": "game", + "color": "#eaa852" + }, + { + "label": "arknights", + "color": "#5276ea" + }, + { + "label": "抽卡", + "color": "#c852ea" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.bilibili", + "nonebot.adapters.console", + "nonebot.adapters.ding", + "nonebot.adapters.discord", + "nonebot.adapters.dodo", + "nonebot.adapters.feishu", + "nonebot.adapters.github", + "nonebot.adapters.kaiheila", + "nonebot.adapters.minecraft", + "nonebot.adapters.mirai2", + "nonebot.adapters.ntchat", + "nonebot.adapters.onebot.v11", + "nonebot.adapters.onebot.v12", + "nonebot.adapters.qq", + "nonebot.adapters.red", + "nonebot.adapters.satori", + "nonebot.adapters.telegram" + ], + "valid": true, + "version": "0.6.0", + "time": "2024-03-10T15:09:59.474921Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_og", + "project_link": "nonebot-plugin-og", + "name": "链接解析", + "desc": "检测链接并发送网站简介及预览图", + "author": "mute23-code", + "homepage": "https://github.com/mute23-code/nonebot_plugin_og", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-05-13T08:37:54.070197Z", + "version": "0.3.0", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_hoshino_sign", + "project_link": "nonebot-plugin-hoshino-sign", + "name": "签到", + "desc": "从 hoshino 搬过来的 pcr 签到, 略作修改。", + "author": "zhulinyv", + "homepage": "https://github.com/zhulinyv/nonebot_plugin_hoshino_sign", + "tags": [ + { + "label": "PCR", + "color": "#ff0000" + }, + { + "label": "签到", + "color": "#008000" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2024-01-29T01:20:41.320603Z", + "version": "2.3.3", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_multincm", + "project_link": "nonebot-plugin-multincm", + "name": "MultiNCM", + "desc": "网易云多选点歌", + "author": "lgc2333", + "homepage": "https://github.com/lgc-NB2Dev/nonebot-plugin-multincm", + "tags": [ + { + "label": "网易云", + "color": "#ea5252" + }, + { + "label": "ncm", + "color": "#ea5252" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.4.4", + "time": "2023-11-02T14:51:45.862245Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_smallapi", + "project_link": "nonebot-plugin-smallapi", + "name": "小小的WEBAPI调用插件", + "desc": "顾名思义~不要骂我~", + "author": "chaichaisi", + "homepage": "https://github.com/chaichaisi/nonebot_plugin_smallapi", + "tags": [ + { + "label": "webapi", + "color": "#52ea7d" + }, + { + "label": "api", + "color": "#52ea7d" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-07-17T06:23:36.976025Z", + "version": "1.1.0", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_p5generator", + "project_link": "nonebot-plugin-p5generator", + "name": "《女神异闻录5》预告信生成器", + "desc": "可以生成仿《女神异闻录5》中心之怪盗团向罪人宣战的预告信", + "author": "xi-yue-233", + "homepage": "https://github.com/xi-yue-233/nonebot-plugin-p5generator", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-05-18T08:56:25.717856Z", + "version": "0.1.4", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_sd_webui", + "project_link": "nonebot-plugin-sd-webui", + "name": "SD绘画插件", + "desc": "基于stable-diffusion-webui的nonebot绘画插件,支持文生图、图生图、参数指定、模型管理、翻译等功能", + "author": "evan-gyy", + "homepage": "https://github.com/evan-gyy/nonebot_plugin_sd_webui", + "tags": [ + { + "label": "sd", + "color": "#ea5252" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-05-16T07:53:39.816541Z", + "version": "0.1.2", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_session", + "project_link": "nonebot-plugin-session", + "name": "会话id", + "desc": "会话信息提取与会话id定义插件", + "author": "MeetWq", + "homepage": "https://github.com/noneplugin/nonebot-plugin-session", + "tags": [], + "is_official": false, + "type": "library", + "supported_adapters": [ + "nonebot.adapters.console", + "nonebot.adapters.discord", + "nonebot.adapters.dodo", + "nonebot.adapters.feishu", + "nonebot.adapters.kaiheila", + "nonebot.adapters.onebot.v11", + "nonebot.adapters.onebot.v12", + "nonebot.adapters.qq", + "nonebot.adapters.red", + "nonebot.adapters.satori", + "nonebot.adapters.telegram" + ], + "valid": true, + "version": "0.3.1", + "time": "2024-02-25T07:05:33.845496Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_pluginupdatecheck", + "project_link": "nonebot-plugin-pluginupdatecheck", + "name": "便携插件安装器", + "desc": "一个nonebot2的插件便捷安装和升级插件(基于nb-cli和pip)", + "author": "xi-yue-233", + "homepage": "https://github.com/xi-yue-233/nonebot-plugin-pluginupdatecheck", + "tags": [ + { + "label": "便携安装", + "color": "#e42828" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-05-18T17:14:20.083595Z", + "version": "0.1.2", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_stockhelper", + "project_link": "nonebot-plugin-stockhelper", + "name": "股票看盘助手", + "desc": "股票波动超过设定值提醒,省去一直盯盘的烦恼", + "author": "Calanosay", + "homepage": "https://github.com/Calanosay/nonebot_plugin_stockhelper", + "tags": [ + { + "label": "股票", + "color": "#ea5252" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-05-19T10:18:39.940826Z", + "version": "0.1.2", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_githubcard", + "project_link": "nonebot-plugin-githubcard", + "name": "githubcard", + "desc": "检测GitHub仓库链接并自动发送卡片信息(适用于Onebot V11)", + "author": "ElainaFanBoy", + "homepage": "https://github.com/ElainaFanBoy/nonebot_plugin_githubcard", + "tags": [ + { + "label": " Github", + "color": "#171a21" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.2.2", + "time": "2024-03-13T03:26:06.815959Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_lua", + "project_link": "nonebot-plugin-lua", + "name": "nonebot-plugin-lua", + "desc": "在nonebot中执行lua(experimental)", + "author": "synodriver", + "homepage": "https://github.com/synodriver/nonebot_plugin_lua", + "tags": [], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-05-23T15:50:12.147563Z", + "version": "0.0.1.dev2", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_cube", + "project_link": "nonebot-plugin-cube", + "name": "cuber", + "desc": "魔方插件", + "author": "initialencounter", + "homepage": "https://github.com/initialencounter/nonebot-plugin-cube", + "tags": [ + { + "label": "魔方", + "color": "#ea5252" + }, + { + "label": "sqlite3", + "color": "#c2ea52" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-05-23T15:47:57.754235Z", + "version": "1.0.5", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_homo_mathematician", + "project_link": "nonebot-plugin-homo-mathematician", + "name": "homo_mathematician", + "desc": "任何实数都用连续的114514通过加减乘除达成, 任给一组数据都能找出其内在规律(函数表达式)", + "author": "Special-Week", + "homepage": "https://github.com/Special-Week/Hinata-Bot/tree/main/src/plugins/homo_mathematician", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": null, + "valid": true, + "version": "0.0.7", + "time": "2024-03-17T07:43:15.322788Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_puzzle", + "project_link": "nonebot-plugin-puzzle", + "name": "puzzle", + "desc": "数字华容道,拼图游戏,查看群华容排名", + "author": "initialencounter", + "homepage": "https://github.com/initialencounter/nonebot-plugin-puzzle", + "tags": [ + { + "label": "数字华容道", + "color": "#ea5252" + }, + { + "label": "拼图游戏", + "color": "#a7ea52" + }, + { + "label": "puzzle", + "color": "#52eadd" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-05-23T20:38:56.076911Z", + "version": "1.0.2", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_herocard", + "project_link": "nonebot-plugin-herocard", + "name": "本子标题关键词提取", + "desc": "为了方便各位平时搜索本子用,发扬hero精神", + "author": "Xie-Tiao", + "homepage": "https://github.com/Xie-Tiao/nonebot_plugin_herocard", + "tags": [ + { + "label": "文本提取", + "color": "#6bc6bf" + }, + { + "label": "日语", + "color": "#53bbd8" + }, + { + "label": "本子", + "color": "#eea1b1" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-07-10T09:27:24.982052Z", + "version": "1.0.5", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_nagabus", + "project_link": "nonebot-plugin-nagabus", + "name": "NAGA公交车", + "desc": "为群友提供NAGA拼车服务", + "author": "ssttkkl", + "homepage": "https://github.com/bot-ssttkkl/nonebot-plugin-nagabus", + "tags": [ + { + "label": "日麻", + "color": "#b52ee1" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.kaiheila", + "nonebot.adapters.onebot.v11", + "nonebot.adapters.onebot.v12", + "nonebot.adapters.qqguild", + "nonebot.adapters.telegram" + ], + "valid": false, + "version": "0.3.2", + "time": "2023-12-12T12:30:44.770450Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_random_draw", + "project_link": "nonebot-plugin-random-draw", + "name": "随机抽取自定义内容", + "desc": "通过添加各种想要抽取的内容,进行随机抽取。选择困难症的福音", + "author": "Ikaros-521", + "homepage": "https://github.com/Ikaros-521/nonebot_plugin_random_draw", + "tags": [ + { + "label": "随机", + "color": "#ffe0aa" + }, + { + "label": "a:onebot", + "color": "#000000" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-06-11T15:58:58.120380Z", + "version": "0.1.0", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_stable_diffusion_diao", + "project_link": "nonebot-plugin-stable-diffusion-diao", + "name": "stablediffusion绘画插件", + "desc": "另一个绘画插件,支持多SD后端,负载均衡,lora,emb,chatgpt prompt生成,更换模型等等更多功能", + "author": "DiaoDaiaChan", + "homepage": "https://github.com/DiaoDaiaChan/nonebot-plugin-stable-diffusion-diao", + "tags": [ + { + "label": "AI绘图", + "color": "#eaaf52" + }, + { + "label": "SD", + "color": "#eaaf52" + } + ], + "is_official": false, + "type": null, + "supported_adapters": null, + "valid": false, + "time": "2023-11-09T13:01:41.243448Z", + "version": "0.4.7.3", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_al", + "project_link": "nonebot-plugin-al", + "name": "碧蓝航线攻略", + "desc": "碧蓝航线井号榜等等攻略", + "author": "Agnes4m", + "homepage": "https://github.com/Agnes4m/nonebot_plugin_AL", + "tags": [ + { + "label": "bilibili", + "color": "#ea52e5" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.3.10", + "time": "2023-08-04T10:37:18.628816Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_escape_url", + "project_link": "nonebot-plugin-escape-url", + "name": "链接防夹", + "desc": "自动转换发送消息中的URL,逃避URL检测", + "author": "ssttkkl", + "homepage": "https://github.com/bot-ssttkkl/nonebot-plugin-escape-url", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11", + "nonebot.adapters.qqguild" + ], + "valid": true, + "version": "0.1.3.post1", + "time": "2023-06-09T14:54:07.632074Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_twitter", + "project_link": "nonebot-plugin-twitter", + "name": "twitter 推特订阅", + "desc": "订阅 twitter 推文", + "author": "nek0us", + "homepage": "https://github.com/nek0us/nonebot-plugin-twitter", + "tags": [ + { + "label": "twitter", + "color": "#29a8dc" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.2.4", + "time": "2024-01-20T11:49:43.579188Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_pcrjjc", + "project_link": "nonebot-plugin-pcrjjc", + "name": "pcrjjc", + "desc": "公主连结(国服)排名监测工具", + "author": "reine-ishyanami", + "homepage": "https://github.com/reine-ishyanami/nonebot-plugin-pcrjjc", + "tags": [ + { + "label": "公主连结", + "color": "#778a1e" + }, + { + "label": "pcrjjc", + "color": "#778a1e" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.6.2", + "time": "2024-01-05T03:15:36.782405Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_audiocraft", + "project_link": "nonebot-plugin-audiocraft", + "name": "AI作曲", + "desc": "Nonebot框架下的AI作曲插件", + "author": "Alpaca4610", + "homepage": "https://github.com/Alpaca4610/nonebot-plugin-audiocraft", + "tags": [ + { + "label": "AI", + "color": "#ea5252" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.0.5", + "time": "2023-06-19T10:57:18.415643Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_bili_push", + "project_link": "nonebot-plugin-bili-push", + "name": "bili_push", + "desc": "推送b站动态", + "author": "SuperGuGuGu", + "homepage": "https://github.com/SuperGuGuGu/nonebot_plugin_bili_push", + "tags": [ + { + "label": "bilibili", + "color": "#de5d92" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "1.1.20.1", + "time": "2024-03-10T15:14:45.185185Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_warthunder_player_check", + "project_link": "nonebot-plugin-warthunder-player-check", + "name": "战雷查水表", + "desc": "搜索warthunder社区查询玩家履历", + "author": "0Neptune0", + "homepage": "https://github.com/0Neptune0/nonebot-plugin-warthunder-player-check", + "tags": [ + { + "label": "Wathunder", + "color": "#ea5252" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": false, + "version": "0.1.3", + "time": "2023-09-16T08:15:36.199644Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_follow_withdraw", + "project_link": "nonebot-plugin-follow-withdraw", + "name": "follow_withdraw", + "desc": "当命令消息被撤回时,Bot跟随撤回命令结果", + "author": "CMHopeSunshine", + "homepage": "https://github.com/CMHopeSunshine/nonebot-plugin-follow-withdraw", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.kaiheila", + "nonebot.adapters.onebot.v11", + "nonebot.adapters.onebot.v12", + "nonebot.adapters.qqguild" + ], + "valid": true, + "version": "0.2.0", + "time": "2023-06-19T14:34:18.210942Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_error_alert", + "project_link": "nonebot-plugin-error-alert", + "name": "错误告警", + "desc": "当Bot发生运行错误时发送消息提醒", + "author": "ssttkkl", + "homepage": "https://github.com/bot-ssttkkl/nonebot-plugin-error-alert", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.kaiheila", + "nonebot.adapters.onebot.v11", + "nonebot.adapters.onebot.v12", + "nonebot.adapters.qqguild", + "nonebot.adapters.telegram" + ], + "valid": true, + "version": "0.2.0", + "time": "2023-09-10T15:16:08.235679Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_ocgbot_v2", + "project_link": "nonebot-plugin-ocgbot-v2", + "name": "游戏王小蓝卡查", + "desc": "提供游戏王相关服务", + "author": "fireinsect", + "homepage": "https://github.com/fireinsect/nonebot-plugin-ocgbot-v2/", + "tags": [ + { + "label": "游戏王", + "color": "#2ecbed" + }, + { + "label": "ygo", + "color": "#f77117" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": false, + "version": "0.2.9.4", + "time": "2024-03-18T07:02:34.851618Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_helltide", + "project_link": "nonebot-plugin-helltide", + "name": "Diablo4地狱狂潮boss提醒小助手", + "desc": "支持订阅,在D4继续上班", + "author": "QBkira", + "homepage": "https://github.com/QBkira/nonebot-plugin-helltide", + "tags": [ + { + "label": "helltide", + "color": "#ff0000" + }, + { + "label": "diablo4", + "color": "#ff3300" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.1.7", + "time": "2023-06-25T13:19:55.857199Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_userinfo", + "project_link": "nonebot-plugin-userinfo", + "name": "用户信息", + "desc": "多平台的用户信息获取插件", + "author": "MeetWq", + "homepage": "https://github.com/noneplugin/nonebot-plugin-userinfo", + "tags": [], + "is_official": false, + "type": "library", + "supported_adapters": [ + "nonebot.adapters.console", + "nonebot.adapters.discord", + "nonebot.adapters.dodo", + "nonebot.adapters.feishu", + "nonebot.adapters.kaiheila", + "nonebot.adapters.onebot.v11", + "nonebot.adapters.onebot.v12", + "nonebot.adapters.qq", + "nonebot.adapters.red", + "nonebot.adapters.satori", + "nonebot.adapters.telegram" + ], + "valid": true, + "version": "0.2.3", + "time": "2024-03-19T10:39:54.600626Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_poke", + "project_link": "nonebot-plugin-poke", + "name": "戳一戳事件", + "desc": "自定义群聊戳一戳事件", + "author": "Agnes4m", + "homepage": "https://github.com/Agnes4m/nonebot_plugin_poke", + "tags": [ + { + "label": "v11", + "color": "#ea5252" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.1.2", + "time": "2023-08-02T08:32:28.462790Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_friends", + "project_link": "nonebot-plugin-friends", + "name": "远程同意好友", + "desc": "自定义远程同意好友和群聊申请", + "author": "Agnes4m", + "homepage": "https://github.com/Agnes4m/nonebot_plugin_friends", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.1.2", + "time": "2023-08-09T15:10:30.495458Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_update", + "project_link": "nonebot-plugin-update", + "name": "nonebot-plugin-update", + "desc": "用于检测 Nonebot 插件更新的 Nonebot 插件", + "author": "djkcyl", + "homepage": "https://github.com/Aunly/nonebot-plugin-update", + "tags": [ + { + "label": "Nonebot", + "color": "#ea5252" + }, + { + "label": "tool", + "color": "#527dea" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.1.3", + "time": "2023-07-05T13:27:09.922237Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_cp_broadcast", + "project_link": "nonebot-plugin-cp-broadcast", + "name": "算法竞赛比赛查询", + "desc": "可以查询牛客、atcoder、codeforces平台的今天和近几天的比赛信息", + "author": "HuParry", + "homepage": "https://github.com/HuParry/nonebot-plugin-cp-broadcast", + "tags": [ + { + "label": "算法竞赛", + "color": "#ea5252" + }, + { + "label": "比赛播报", + "color": "#55ea52" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": false, + "version": "2.2.0", + "time": "2024-03-06T07:13:17.243452Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_cfassistant", + "project_link": "nonebot-plugin-cfassistant", + "name": "nonebot-plugin-cfassistant", + "desc": "一个支持CF(codeforces)平台查询比赛/比赛提醒/监测分数变化的nonebot机器人插件", + "author": "coyude", + "homepage": "https://github.com/coyude/nonebot-plugin-cfassistant", + "tags": [ + { + "label": "ACM", + "color": "#52eacf" + }, + { + "label": "Codeforces", + "color": "#52eacf" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "1.4", + "time": "2023-07-13T09:19:06.972726Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_splatoon3_schedule", + "project_link": "nonebot-plugin-splatoon3-schedule", + "name": "splatoon3游戏日程查询", + "desc": "一个基于nonebot2框架的splatoon3游戏日程查询插件", + "author": "Cypas", + "homepage": "https://github.com/Cypas/splatoon3-schedule", + "tags": [ + { + "label": "splatoon3", + "color": "#ea5252" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.kaiheila", + "nonebot.adapters.onebot.v11", + "nonebot.adapters.onebot.v12", + "nonebot.adapters.qq", + "nonebot.adapters.telegram" + ], + "valid": true, + "version": "1.7.0", + "time": "2024-03-02T05:39:39.974015Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_capoo", + "project_link": "nonebot-plugin-capoo", + "name": "猫猫虫咖波图片发送", + "desc": "发送capoo指令后bot会随机发出一张capoo的可爱表情包", + "author": "HuParry", + "homepage": "https://github.com/HuParry/nonebot-plugin-capoo", + "tags": [ + { + "label": "猫猫虫咖波", + "color": "#ea5252" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.1.5", + "time": "2024-01-24T11:01:08.207028Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_eventexpiry", + "project_link": "nonebot-plugin-eventexpiry", + "name": "过期事件过滤器", + "desc": "自动过滤过期事件", + "author": "A-kirami", + "homepage": "https://github.com/A-kirami/nonebot-plugin-eventexpiry", + "tags": [], + "is_official": false, + "type": "library", + "supported_adapters": [ + "nonebot.adapters.onebot.v11", + "nonebot.adapters.onebot.v12" + ], + "valid": true, + "version": "0.1.1", + "time": "2023-07-07T18:26:34.752138Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_nobahpicture", + "project_link": "nonebot-plugin-nobahpicture", + "name": "nonebot-plugin-nobahpicture", + "desc": "获取碧蓝档案涩图", + "author": "Lptr-byte", + "homepage": "https://github.com/Lptr-byte/nonebot-plugin-nobahpicture", + "tags": [ + { + "label": "碧蓝档案", + "color": "#00defe" + }, + { + "label": "蔚蓝档案", + "color": "#00defe" + }, + { + "label": "涩图", + "color": "#00defe" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "1.0.2", + "time": "2023-07-10T06:52:29.857291Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_blocker", + "project_link": "nonebot-plugin-blocker", + "name": "Blocker", + "desc": "分群配置关闭Bot插件", + "author": "MerCuJerry", + "homepage": "https://github.com/MerCuJerry/nonebot-plugin-blocker", + "tags": [ + { + "label": "Blocker", + "color": "#39c5bb" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.4.5", + "time": "2024-02-29T08:31:01.720829Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_picture_api", + "project_link": "nonebot-plugin-picture-api", + "name": "nonebot-plugin-picture-api", + "desc": "一款可以自由增删图片指令和api的插件", + "author": "Q1351998764", + "homepage": "https://github.com/Q1351998764/nonebot-plugin-picture-api", + "tags": [ + { + "label": "图片api", + "color": "#ea5252" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "1.5", + "time": "2023-09-19T15:19:49.310145Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_wenan", + "project_link": "nonebot-plugin-wenan", + "name": "nonebot-plugin-wenan", + "desc": "一款可以自由增删文案指令和api的插件", + "author": "Q1351998764", + "homepage": "https://github.com/Q1351998764/nonebot-plugin-wenan", + "tags": [ + { + "label": "文案api", + "color": "#ea5252" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "1.0", + "time": "2023-07-11T12:27:12.020208Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_pjsk", + "project_link": "nonebot-plugin-pjsk", + "name": "Sekai Stickers", + "desc": "基于 NoneBot2 的 Project Sekai 表情包制作插件", + "author": "Agnes4m", + "homepage": "https://github.com/Agnes4m/nonebot_plugin_pjsk", + "tags": [ + { + "label": "pjsk", + "color": "#e852eb" + }, + { + "label": "啤酒烧烤", + "color": "#e852eb" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.bilibili", + "nonebot.adapters.console", + "nonebot.adapters.ding", + "nonebot.adapters.discord", + "nonebot.adapters.dodo", + "nonebot.adapters.feishu", + "nonebot.adapters.github", + "nonebot.adapters.kaiheila", + "nonebot.adapters.minecraft", + "nonebot.adapters.mirai2", + "nonebot.adapters.ntchat", + "nonebot.adapters.onebot.v11", + "nonebot.adapters.onebot.v12", + "nonebot.adapters.qq", + "nonebot.adapters.red", + "nonebot.adapters.satori", + "nonebot.adapters.telegram" + ], + "valid": true, + "version": "0.4.0.post1", + "time": "2024-03-10T10:24:15.027602Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_mongodb", + "project_link": "nonebot-plugin-mongodb", + "name": "MongoDB", + "desc": "基于 MongoDB ODM 的数据库管理插件", + "author": "Well2333", + "homepage": "https://github.com/Well2333/nonebot-plugin-mongodb", + "tags": [ + { + "label": "mongodb", + "color": "#30a340" + }, + { + "label": "beanie", + "color": "#ff0a0a" + } + ], + "is_official": false, + "type": "library", + "supported_adapters": null, + "valid": true, + "version": "0.1.0", + "time": "2023-07-14T10:32:08.006009Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_templates", + "project_link": "nonebot-plugin-templates", + "name": "templates_render", + "desc": "使用htmlrender和jinja2渲染,使用构建的menu,card或dict进行模板渲染", + "author": "canxin121", + "homepage": "https://github.com/canxin121/nonebot_plugin_templates", + "tags": [ + { + "label": "模板渲染", + "color": "#eacd52" + }, + { + "label": "图片生成", + "color": "#adea52" + } + ], + "is_official": false, + "type": "library", + "supported_adapters": null, + "valid": true, + "version": "0.1.6", + "time": "2023-08-24T09:56:33.184091Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_pokesomeone", + "project_link": "nonebot-plugin-pokesomeone", + "name": "指定戳一戳", + "desc": "指定戳某人若干次", + "author": "canxin121", + "homepage": "https://github.com/canxin121/nonebot_plugin_pokesomeone", + "tags": [ + { + "label": "戳一戳", + "color": "#ea5252" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.1.1", + "time": "2023-07-18T16:43:32.796199Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_dall-e", + "project_link": "nonebot-plugin-dall-e", + "name": "DALL-E绘图", + "desc": "使用DALL·E绘图", + "author": "Rockytkg", + "homepage": "https://github.com/Rockytkg/nonebot_plugin_dall-e", + "tags": [ + { + "label": "DALL-E", + "color": "#ea5252" + }, + { + "label": "AI画图", + "color": "#52ea61" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": false, + "time": "2023-07-22T16:19:17.616772Z", + "version": "0.6", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_tempfile", + "project_link": "nonebot-plugin-tempfile", + "name": "方寸狭间", + "desc": "临时文件/IO 依赖注入支持", + "author": "NCBM", + "homepage": "https://github.com/NCBM/nonebot-plugin-tempfile", + "tags": [], + "is_official": false, + "type": "library", + "supported_adapters": null, + "valid": true, + "version": "0.1.0", + "time": "2023-07-21T08:40:50.274108Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_disconnect_notice", + "project_link": "nonebot-plugin-disconnect-notice", + "name": "bot断连通知", + "desc": "bot断连时的通知插件,当前支持邮件通知", + "author": "Cypas", + "homepage": "https://github.com/Cypas/nonebot_plugin_disconnect_notice", + "tags": [ + { + "label": "掉线通知", + "color": "#ea5252" + }, + { + "label": "邮件", + "color": "#52eaa4" + }, + { + "label": "通知", + "color": "#cbea52" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": null, + "valid": true, + "version": "0.1.5", + "time": "2023-07-29T03:19:54.426011Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_BotMailNotice", + "project_link": "nonebot-plugin-BotMailNotice", + "name": "Bot上下线邮件通知", + "desc": "Bot上下线发送邮件通知的插件", + "author": "ZM25XC", + "homepage": "https://github.com/ZM25XC/BotMailNotice", + "tags": [ + { + "label": "Mail", + "color": "#52e5ea" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": null, + "valid": true, + "version": "0.0.3", + "time": "2023-07-24T23:30:29.395759Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_theworld", + "project_link": "nonebot-plugin-theworld", + "name": "The World", + "desc": "「ザ・ワールド」ッ! 時よ止まれ!", + "author": "A-kirami", + "homepage": "https://github.com/A-kirami/nonebot-plugin-theworld", + "tags": [ + { + "label": "JOJO", + "color": "#75147c" + }, + { + "label": "DIO", + "color": "#f9d849" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.1.1", + "time": "2023-07-25T05:07:38.147930Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_nonememe", + "project_link": "nonebot-plugin-nonememe", + "name": "NoneMeme", + "desc": "NoneBot 群大佬的日常", + "author": "lgc2333", + "homepage": "https://github.com/lgc-NB2Dev/nonebot-plugin-nonememe", + "tags": [ + { + "label": "NoneMeme", + "color": "#ea5252" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.bilibili", + "nonebot.adapters.console", + "nonebot.adapters.ding", + "nonebot.adapters.discord", + "nonebot.adapters.dodo", + "nonebot.adapters.feishu", + "nonebot.adapters.github", + "nonebot.adapters.kaiheila", + "nonebot.adapters.minecraft", + "nonebot.adapters.mirai2", + "nonebot.adapters.ntchat", + "nonebot.adapters.onebot.v11", + "nonebot.adapters.onebot.v12", + "nonebot.adapters.qq", + "nonebot.adapters.red", + "nonebot.adapters.satori", + "nonebot.adapters.telegram" + ], + "valid": true, + "version": "0.3.0", + "time": "2024-03-10T08:41:05.982627Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_aujob", + "project_link": "nonebot-plugin-aujob", + "name": "Among US中的TOH模组职业介绍", + "desc": "查询TOH模组里职业的玩法描述", + "author": "qwqZYLqwq", + "homepage": "https://github.com/qwqZYLqwq/nonebot-plugin-aujob", + "tags": [ + { + "label": "among us", + "color": "#48d5bf" + }, + { + "label": "TOH", + "color": "#05c4f2" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": null, + "valid": true, + "version": "1.1.514", + "time": "2023-07-30T04:28:32.184908Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_bind", + "project_link": "nonebot-plugin-bind", + "name": "跨平台账户绑定", + "desc": "nonebot多适配器通用的跨平台账户绑定插件", + "author": "canxin121", + "homepage": "https://github.com/canxin121/nonebot_plugin_bind", + "tags": [ + { + "label": "跨平台", + "color": "#5289ea" + }, + { + "label": "账户绑定", + "color": "#6eb428" + } + ], + "is_official": false, + "type": "library", + "supported_adapters": [ + "nonebot.adapters.feishu", + "nonebot.adapters.kaiheila", + "nonebot.adapters.onebot.v11", + "nonebot.adapters.telegram", + "nonebot.adapters.villa" + ], + "valid": false, + "version": "0.2.2", + "time": "2023-10-12T14:21:47.024420Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_savepic", + "project_link": "nonebot-plugin-savepic", + "name": "Savepic", + "desc": "表情包保存", + "author": "Yan-Zero", + "homepage": "https://github.com/Yan-Zero/nonebot-plugin-savepic", + "tags": [ + { + "label": "表情包", + "color": "#ea5252" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": false, + "time": "2023-08-03T04:30:17.668544Z", + "version": "0.2.0", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_lostark_wandering_trader", + "project_link": "nonebot-plugin-lostark-wandering-trader", + "name": "命运方舟流浪商人卡牌刷新提示", + "desc": "国服命运方舟流浪商人稀有史诗传说卡牌刷新提示", + "author": "EmiyaGm", + "homepage": "https://github.com/EmiyaGm/nonebot-plugin-lostark-wandering-trader", + "tags": [ + { + "label": "命运方舟", + "color": "#5289ea" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.2.2", + "time": "2023-09-13T07:03:06.585759Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_csornament", + "project_link": "nonebot-plugin-csornament", + "name": "CSGO饰品查询机器人", + "desc": "一款模拟查找饰品价格的机器人", + "author": "Sydrr0", + "homepage": "https://github.com/Sydrr0/nonebot-plugin-csornament", + "tags": [ + { + "label": "CS:GO", + "color": "#047b97" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": null, + "valid": true, + "version": "0.2.0", + "time": "2023-08-20T09:19:00.439404Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_kanonbot", + "project_link": "nonebot-plugin-kanonbot", + "name": "KanonBot", + "desc": "KanonBot for Nonebot2", + "author": "SuperGuGuGu", + "homepage": "https://github.com/SuperGuGuGu/nonebot_plugin_kanonbot", + "tags": [ + { + "label": "KanonBot", + "color": "#44ddff" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.qq" + ], + "valid": true, + "version": "0.3.2", + "time": "2024-01-10T12:59:58.241358Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_mcversion", + "project_link": "nonebot-plugin-mcversion", + "name": "MC版本更新检测", + "desc": "一个用于检测MC最新版本的插件", + "author": "CN171-1", + "homepage": "https://github.com/CN171-1/nonebot_plugin_mcversion", + "tags": [ + { + "label": "版本", + "color": "#ea5252" + }, + { + "label": "MC", + "color": "#52e7ea" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.3.0", + "time": "2023-09-03T09:16:33.881303Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_muteme", + "project_link": "nonebot-plugin-muteme", + "name": "Muteme(我禁我自己)", + "desc": "高仿@能干辉的muteme,我禁我自己", + "author": "XTxiaoting14332", + "homepage": "https://github.com/XTxiaoting14332/nonebot-plugin-muteme", + "tags": [ + { + "label": "禁言", + "color": "#e45b8d" + }, + { + "label": "muteme", + "color": "#5bc2e4" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": false, + "time": "2023-08-21T02:01:58.764932Z", + "version": "0.0.5", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_jx3", + "project_link": "nonebot-plugin-jx3", + "name": "剑网三查询和推送", + "desc": "是一个使用 NoneBot 框架编写的插件,提供多种剑网三功能如日常查询,预测,金价查询,鲜花,公告,沙盘,jjc,黑市,骚话,奇遇,招募以及多种消息推送功能。", + "author": "fuyang0811", + "homepage": "https://github.com/fuyang0811/nonebot-plugin-jx3", + "tags": [ + { + "label": "剑网三", + "color": "#ea5252" + }, + { + "label": "jx3", + "color": "#ea5252" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.7", + "time": "2023-09-04T17:21:11.860171Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_xinghuo_api", + "project_link": "nonebot-plugin-xinghuo-api", + "name": "科大讯飞星火大模型聊天", + "desc": "Nonebot框架下的科大讯飞星火大模型聊天插件,已适配V2.0版API", + "author": "Alpaca4610", + "homepage": "https://github.com/Alpaca4610/nonebot-plugin-xinghuo-api", + "tags": [ + { + "label": "AI", + "color": "#ea5252" + }, + { + "label": "Chat", + "color": "#ea5252" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "2.2.0", + "time": "2024-01-31T04:22:26.549372Z", + "skip_test": false + }, + { + "module_name": "dicergirl", + "project_link": "dicergirl", + "name": "DicerGirl", + "desc": "新一代跨平台开源 TRPG 骰娘框架", + "author": "fu050409", + "homepage": "https://gitee.com/unvisitor/dicer", + "tags": [ + { + "label": "跑团", + "color": "#ea5252" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": null, + "valid": true, + "version": "3.5.1", + "time": "2023-11-22T03:42:16.918080Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_uvdiviner", + "project_link": "nonebot-plugin-uvdiviner", + "name": "周易蓍草占卜", + "desc": "基于古蓍草占卜的算法, 简单的使用`.divine`指令.", + "author": "fu050409", + "homepage": "https://gitee.com/unvisitor/nonebot-plugin-uvdiviner", + "tags": [ + { + "label": "占卜", + "color": "#440e0e" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": null, + "valid": false, + "version": "2.2.11", + "time": "2023-10-12T06:29:12.854171Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_push", + "project_link": "nonebot-plugin-push", + "name": "消息推送插件", + "desc": "通过邮件、Feishu Webhook 等方式推送消息", + "author": "mobyw", + "homepage": "https://github.com/mobyw/nonebot-plugin-push", + "tags": [ + { + "label": "邮件", + "color": "#91c0bd" + }, + { + "label": "飞书", + "color": "#7aaccc" + }, + { + "label": "推送", + "color": "#9e97c4" + } + ], + "is_official": false, + "type": "library", + "supported_adapters": null, + "valid": true, + "version": "0.1.0", + "time": "2023-08-15T07:00:53.896995Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_sudo", + "project_link": "nonebot-plugin-sudo", + "name": "SUDO", + "desc": "以指定用户身份执行命令", + "author": "This-is-XiaoDeng", + "homepage": "https://github.com/This-is-XiaoDeng/nonebot-plugin-sudo", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "1.0.6", + "time": "2023-09-08T14:15:08.370605Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_arxivRSS", + "project_link": "nonebot-plugin-arxivRSS", + "name": "arxiv订阅", + "desc": "订阅arxiv指定领域每天更新的论文", + "author": "LuckySJTU", + "homepage": "https://github.com/LuckySJTU/nonebot-plugin-arxivRSS/", + "tags": [ + { + "label": "arxiv", + "color": "#f30f0f" + }, + { + "label": "RSS", + "color": "#70a7d8" + }, + { + "label": "论文", + "color": "#f541dc" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.2.0", + "time": "2023-10-13T08:32:19.030042Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_anime_trace", + "project_link": "nonebot-plugin-anime-trace", + "name": "识别动漫gal角色", + "desc": "通过ai.animedb.cn的api识别动漫、galgame角色", + "author": "tomorinao-www", + "homepage": "https://github.com/tomorinao-www/nonebot-plugin-anime-trace", + "tags": [ + { + "label": "AI", + "color": "#f541dc" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.1.5", + "time": "2024-03-16T11:04:32.039016Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_send_message", + "project_link": "nonebot-plugin-send-message", + "name": "双向聊天插件", + "desc": "一个支持双向聊天的传话插件,可用于临时聊天而不想加好友场景", + "author": "bingqiu456", + "homepage": "https://github.com/bingqiu456/nonebot_plugin_send_message", + "tags": [ + { + "label": "传话", + "color": "#52ea75" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "3.2", + "time": "2023-08-22T12:44:22.314961Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_requests", + "project_link": "nonebot-plugin-requests", + "name": "Nonebot Requests", + "desc": "封装 ForwardDriver 实现 HttpClient 功能", + "author": "Ailitonia", + "homepage": "https://github.com/Ailitonia/nonebot-plugin-requests", + "tags": [ + { + "label": "requests", + "color": "#80bcc2" + } + ], + "is_official": false, + "type": "library", + "supported_adapters": null, + "valid": true, + "version": "0.1.3", + "time": "2023-09-25T17:48:14.809234Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_shutup", + "project_link": "nonebot-plugin-shutup", + "name": "雪豹闭嘴", + "desc": "基于 NoneBot2 的 插件,用于机器人当前会话闭嘴,支持全适配器", + "author": "Agnes4m", + "homepage": "https://github.com/Agnes4m/nonebot_pluigin_shutup", + "tags": [ + { + "label": "阻断", + "color": "#ea5252" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": null, + "valid": true, + "version": "0.0.3", + "time": "2023-08-28T06:30:44.585765Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_simple_httpcat", + "project_link": "nonebot-plugin-simple-httpcat", + "name": "httpcat-状态猫😺", + "desc": "简单粗暴的httpcat插件,参考了zjkwdy大佬的weather_lite插件", + "author": "XTxiaoting14332", + "homepage": "https://github.com/XTxiaoting14332/nonebot-plugin-simple-httpcat", + "tags": [ + { + "label": "httpcat", + "color": "#5dbfc8" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.0.1", + "time": "2023-08-27T04:32:21.171303Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_qrcode2", + "project_link": "nonebot-plugin-qrcode2", + "name": "二维码", + "desc": "通过pyzbar解析二维码", + "author": "tomorinao-www", + "homepage": "https://github.com/tomorinao-www/nonebot-plugin-qrcode2", + "tags": [ + { + "label": "qrcode", + "color": "#f541dc" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.2.2", + "time": "2024-03-16T10:40:56.486675Z", + "skip_test": true + }, + { + "module_name": "nonebot_plugin_fakemsg", + "project_link": "nonebot-plugin-fakemsg", + "name": "消息伪造", + "desc": "伪造消息", + "author": "Cvandia", + "homepage": "https://github.com/Cvandia/nonebot-plugin-fakemsg", + "tags": [ + { + "label": "合并转发", + "color": "#1ae32c" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.1.5", + "time": "2024-03-13T05:05:31.741432Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_alchelper", + "project_link": "nonebot-plugin-alchelper", + "name": "Alconna 帮助工具", + "desc": "基于 nonebot-plugin-alconna,给出所有命令帮助以及统计", + "author": "RF-Tar-Railt", + "homepage": "https://github.com/RF-Tar-Railt/nonebot-plugin-alchelper", + "tags": [ + { + "label": "Alconna", + "color": "#ea5252" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.bilibili", + "nonebot.adapters.console", + "nonebot.adapters.ding", + "nonebot.adapters.discord", + "nonebot.adapters.dodo", + "nonebot.adapters.feishu", + "nonebot.adapters.github", + "nonebot.adapters.kaiheila", + "nonebot.adapters.minecraft", + "nonebot.adapters.mirai2", + "nonebot.adapters.ntchat", + "nonebot.adapters.onebot.v11", + "nonebot.adapters.onebot.v12", + "nonebot.adapters.qq", + "nonebot.adapters.red", + "nonebot.adapters.satori", + "nonebot.adapters.telegram" + ], + "valid": true, + "version": "0.5.0", + "time": "2024-03-17T08:36:12.645103Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_souti", + "project_link": "nonebot-plugin-souti", + "name": "nonebot-plugin-souti", + "desc": "使用百度不挂科题库, 可以实现文字搜题功能", + "author": "xiaoWangSec", + "homepage": "https://github.com/xiaoWangSec/nonebot-plugin-souti", + "tags": [ + { + "label": "搜题", + "color": "#49e3d5" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": null, + "valid": true, + "version": "1.0.1", + "time": "2023-09-01T10:26:54.019224Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_helper_plus", + "project_link": "nonebot-plugin-helper-plus", + "name": "helper_plus", + "desc": "带有指令调用控制的高级helper", + "author": "fR0Z863xF", + "homepage": "https://github.com/fR0Z863xF/nonebot-plugin-helper-plus", + "tags": [ + { + "label": "帮助", + "color": "#eae152" + }, + { + "label": "命令控制", + "color": "#52ea5c" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.1.5", + "time": "2023-09-02T10:51:28.827248Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_wearskirt", + "project_link": "nonebot-plugin-wearskirt", + "name": "女装 !", + "desc": "Nonebot 赛博女装插件", + "author": "Lfhsheng", + "homepage": "https://github.com/Lfhsheng/nonebot-plugin-wearskirt", + "tags": [ + { + "label": "女装", + "color": "#ffc0cb" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": null, + "valid": false, + "version": "0.1.5", + "time": "2023-09-14T11:46:33.966622Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_skland_arksign", + "project_link": "nonebot-plugin-skland-arksign", + "name": "森空岛明日方舟签到器", + "desc": "私聊机器人以获得自动明日方舟森空岛签到服务", + "author": "GuGuMur", + "homepage": "https://github.com/GuGuMur/nonebot-plugin-skland-arksign", + "tags": [ + { + "label": "森空岛", + "color": "#c8eb21" + }, + { + "label": "明日方舟", + "color": "#111111" + }, + { + "label": "签到", + "color": "#ea5252" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.feishu", + "nonebot.adapters.kaiheila", + "nonebot.adapters.onebot.v11", + "nonebot.adapters.onebot.v12", + "nonebot.adapters.qq", + "nonebot.adapters.red", + "nonebot.adapters.telegram" + ], + "valid": true, + "version": "0.7.0", + "time": "2024-03-10T01:03:45.969491Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_group_whitelist", + "project_link": "nonebot-plugin-group-whitelist", + "name": "nonebot_plugin_group_whitelist", + "desc": "简易群聊白名单", + "author": "Rikka-desu", + "homepage": "https://github.com/Rikka-desu/nonebot_plugin_group_whitelist", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.9.2", + "time": "2023-09-03T14:45:25.318037Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_ernie", + "project_link": "nonebot-plugin-ernie", + "name": "文心一言", + "desc": "Nonebot框架下的文心一言聊天插件", + "author": "Noctulus", + "homepage": "https://github.com/Noctulus/nonebot-plugin-ernie", + "tags": [ + { + "label": "文心一言", + "color": "#2e317c" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": null, + "valid": true, + "version": "0.2.4", + "time": "2023-09-06T15:34:07.940810Z", + "skip_test": false + }, + { + "module_name": "TeenStudy", + "project_link": "teenstudy", + "name": "青年大学习提交", + "desc": "一个可以自动提交多地区青年大学习的插件", + "author": "TeenStudyFlow", + "homepage": "https://github.com/YouthLearning/TeenStudy", + "tags": [ + { + "label": "青年大学习", + "color": "#7aea52" + }, + { + "label": "Web UI", + "color": "#52eaea" + }, + { + "label": "多地区", + "color": "#dfea52" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.2.6", + "time": "2023-12-03T07:01:14.234788Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_video_api", + "project_link": "nonebot-plugin-video-api", + "name": "nonebot-plugin-video-api", + "desc": "一款可以自由增删视频指令和api的插件", + "author": "Q1351998764", + "homepage": "https://github.com/Q1351998764/nonebot-plugin-video-api", + "tags": [ + { + "label": "视频api", + "color": "#14d8de" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "1.4", + "time": "2023-09-20T12:28:56.131803Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_ottohzys", + "project_link": "nonebot-plugin-ottohzys", + "name": "大电老师活字印刷", + "desc": "大家好啊,今天来点大家想看的东西", + "author": "lgc2333", + "homepage": "https://github.com/lgc-NB2Dev/nonebot-plugin-ottohzys", + "tags": [ + { + "label": "otto", + "color": "#00a6ed" + }, + { + "label": "电棍", + "color": "#00a6ed" + }, + { + "label": "活字印刷", + "color": "#00a6ed" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": false, + "version": "0.2.0", + "time": "2024-03-10T07:21:27.575594Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_ability", + "project_link": "nonebot-plugin-ability", + "name": "聚能环", + "desc": "NoneBot 外置电池", + "author": "KomoriDev", + "homepage": "https://github.com/KomoriDev/nonebot-plugin-ability", + "tags": [ + { + "label": "🔋", + "color": "#8bff00" + } + ], + "is_official": false, + "type": "library", + "supported_adapters": null, + "valid": true, + "version": "0.1.0", + "time": "2023-10-02T06:03:55.280585Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_agent", + "project_link": "nonebot-plugin-agent", + "name": "Nonebot Agent", + "desc": "适配你的插件,让 LLM 来为你处理用户调用", + "author": "Dobiichi-Origami", + "homepage": "https://github.com/Dobiichi-Origami/nonebot-plugin-agent#nonebot-plugin-agent", + "tags": [ + { + "label": "agent", + "color": "#99ccff" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": null, + "valid": true, + "version": "0.0.1", + "time": "2023-10-03T10:24:53.288475Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_blockwords", + "project_link": "nonebot-plugin-blockwords", + "name": "屏蔽词插件", + "desc": "接收的消息或机器人发送的消息进行屏蔽词检查", + "author": "MelodyKnit", + "homepage": "https://github.com/MelodyKnit/nonebot-plugin-blockwords", + "tags": [ + { + "label": "word", + "color": "#99ccff" + }, + { + "label": "屏蔽词", + "color": "#ffcc99" + }, + { + "label": "blockwords", + "color": "#ffcc99" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": null, + "valid": true, + "version": "0.2.1", + "time": "2023-11-17T12:30:39.467239Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_matchreminder", + "project_link": "nonebot-plugin-matchreminder", + "name": "算法比赛查询和今日比赛自动提醒", + "desc": "可以查询牛客、atcoder、codeforces平台比赛信息并在今日比赛前进行提醒(请在.env.prod添加或修改超级用户,以免出现意料之外的错误)", + "author": "zhuhiki", + "homepage": "https://github.com/zhuhiki/nonebot_plugin_matchreminder", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "1.0.4", + "time": "2023-10-27T03:22:47.419866Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_eop_ai", + "project_link": "nonebot-plugin-eop-ai", + "name": "talk with eop ai", + "desc": "Nonebot2 一款调用eop api的AI聊天插件", + "author": "nikissXI", + "homepage": "https://github.com/nikissXI/nonebot_plugins/tree/main/nonebot_plugin_eop_ai", + "tags": [ + { + "label": "POE", + "color": "#bf40bf" + }, + { + "label": "GPT", + "color": "#aaff00" + }, + { + "label": "AI", + "color": "#fa5f55" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.1.6", + "time": "2023-11-21T11:31:18.190458Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_playercheck", + "project_link": "nonebot-plugin-playercheck", + "name": "nonebot-plugin-playercheck", + "desc": "一个查询群友音游成分的插件", + "author": "Ohdmire", + "homepage": "https://github.com/ohdmire/nonebot-plugin-playercheck", + "tags": [ + { + "label": "音游", + "color": "#ec623c" + }, + { + "label": "成分", + "color": "#ef5ec4" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "1.5.9", + "time": "2023-10-09T12:40:24.966289Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_op_finder", + "project_link": "nonebot-plugin-op-finder", + "name": "op-finder", + "desc": "显示当前正在玩原神的人", + "author": "ninthseason", + "homepage": "https://github.com/ninthseason/nonebot-plugin-op-finder", + "tags": [ + { + "label": "原神", + "color": "#00a0ea" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.kaiheila" + ], + "valid": true, + "version": "1.0.0", + "time": "2023-10-06T16:40:22.375740Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_morep_finder", + "project_link": "nonebot-plugin-morep-finder", + "name": "morep-finder", + "desc": "显示当前正在玩特定游戏的人", + "author": "ninthseason", + "homepage": "https://github.com/ninthseason/nonebot-plugin-morep-finder", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.kaiheila" + ], + "valid": true, + "version": "1.0.0", + "time": "2023-10-08T15:37:06.959012Z", + "skip_test": false + }, + { + "module_name": "nonebot-plugin-yesman", + "project_link": "nonebot-plugin-yesman", + "name": "肯定机", + "desc": "你的发言,值得被肯定", + "author": "EuDs63", + "homepage": "https://github.com/EuDs63/nonebot-plugin-yesman", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "1.4.0", + "time": "2023-11-25T13:58:22.088706Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_fgoavatarguess", + "project_link": "nonebot-plugin-fgoavatarguess", + "name": "FGO猜从者", + "desc": "FGO猜从者插件,基于原HoshinoBot猜从者模块修改,感谢原作者。", + "author": "influ3nza", + "homepage": "https://github.com/influ3nza/nonebot-plugin-fgoavatarguess", + "tags": [ + { + "label": "FGO", + "color": "#66cccc" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.1.1", + "time": "2023-10-12T06:44:39.253781Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_vrchat", + "project_link": "nonebot-plugin-vrchat", + "name": "VRChat查询", + "desc": "使用第三方 API SDK 实现 VRChat 相关操作,例如查询好友状态", + "author": "Agnes4m", + "homepage": "https://github.com/Agnes4m/nonebot_plugin_vrchat", + "tags": [ + { + "label": "VRChat", + "color": "#7aea53" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.feishu", + "nonebot.adapters.kaiheila", + "nonebot.adapters.onebot.v11", + "nonebot.adapters.onebot.v12", + "nonebot.adapters.red", + "nonebot.adapters.telegram" + ], + "valid": true, + "version": "0.1.3", + "time": "2023-12-19T01:13:10.989041Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_batitle", + "project_link": "nonebot-plugin-batitle", + "name": "BlueArchive Title Generator", + "desc": "碧蓝档案式标题生成器", + "author": "MerCuJerry", + "homepage": "https://github.com/MerCuJerry/nonebot-plugin-batitle", + "tags": [ + { + "label": "碧蓝档案", + "color": "#00d7fb" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.feishu", + "nonebot.adapters.kaiheila", + "nonebot.adapters.onebot.v11", + "nonebot.adapters.onebot.v12", + "nonebot.adapters.red", + "nonebot.adapters.telegram" + ], + "valid": true, + "version": "0.1.6", + "time": "2024-02-07T09:50:19.398829Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_maimaidx", + "project_link": "nonebot-plugin-maimaidx", + "name": "nonebot-plugin-maimaidx", + "desc": "移植自 mai-bot 开源项目,基于 nonebot2 的街机音游 舞萌DX 的查询插件", + "author": "Yuri-YuzuChaN", + "homepage": "https://github.com/Yuri-YuzuChaN/nonebot-plugin-maimaidx", + "tags": [ + { + "label": "maimai", + "color": "#cea6ff" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.0.14", + "time": "2024-03-15T08:44:26.693285Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_getbapics", + "project_link": "nonebot-plugin-getbapics", + "name": "nonebot-plugin-getbapics", + "desc": "Get BA Pictures", + "author": "hanasa2023", + "homepage": "https://github.com/hanasa2023/nonebot-plugin-getbapics/blob/master/README.md", + "tags": [ + { + "label": "碧蓝档案", + "color": "#00defe" + }, + { + "label": "BA", + "color": "#00defe" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.red" + ], + "valid": true, + "version": "0.1.5", + "time": "2023-10-15T13:52:55.930889Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_make_choice", + "project_link": "nonebot-plugin-make-choice", + "name": "选择困难症", + "desc": "选择困难症?Bot帮你选!", + "author": "SherkeyXD", + "homepage": "https://github.com/SherkeyXD/nonebot-plugin-make-choice", + "tags": [ + { + "label": "choice", + "color": "#77c5ff" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "1.0.4", + "time": "2023-10-21T07:31:08.895871Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_scheduled_broadcast", + "project_link": "nonebot-plugin-scheduled-broadcast", + "name": "定时广播插件", + "desc": "一款可配置的, 不依赖具体适配器的, 基于事件的定时广播插件.", + "author": "T0nyX1ang", + "homepage": "https://github.com/T0nyX1ang/nonebot-plugin-scheduled-broadcast", + "tags": [], + "is_official": false, + "type": "library", + "supported_adapters": null, + "valid": true, + "version": "0.1.5", + "time": "2023-11-10T15:14:18.797261Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_any", + "project_link": "nonebot-plugin-any", + "name": "Nonebot2 Any 多平台服务", + "desc": "Nonebot2 多平台统一事件与消息统一构造发送", + "author": "MelodyYuuka", + "homepage": "https://github.com/MelodyYuuka/nonebot-plugin-any", + "tags": [ + { + "label": "跨平台", + "color": "#36d399" + }, + { + "label": "统一", + "color": "#fa5f55" + }, + { + "label": "工具库", + "color": "#52eadd" + } + ], + "is_official": false, + "type": "library", + "supported_adapters": [ + "nonebot.adapters.kaiheila", + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.2.0", + "time": "2023-11-05T07:23:35.833914Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_bertvits2", + "project_link": "nonebot-plugin-bertvits2", + "name": "nonebot-plugin-bertvits2", + "desc": "bertvits2语音合成插件", + "author": "jiangyuxiaoxiao", + "homepage": "https://github.com/jiangyuxiaoxiao/nonebot-plugin-bertvits2", + "tags": [ + { + "label": "语音合成", + "color": "#9bf6ff" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.1.3", + "time": "2023-11-07T14:33:08.673555Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_wake_on_lan", + "project_link": "nonebot-plugin-wake-on-lan", + "name": "局域网唤醒", + "desc": "通过发送魔术封包唤醒Bot所在局域网内的设备", + "author": "tiehu", + "homepage": "https://github.com/tiehu/nonebot-plugin-wol", + "tags": [ + { + "label": "局域网唤醒", + "color": "#1e90ff" + }, + { + "label": "WOL", + "color": "#4682b4" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": null, + "valid": true, + "version": "0.1.6", + "time": "2024-03-12T18:08:54.274520Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_bingimagecreator", + "project_link": "nonebot-plugin-bingimagecreator", + "name": "DALL-E 3绘图", + "desc": "调用NewBing的DALL-E 3进行绘图", + "author": "Alpaca4610", + "homepage": "https://github.com/Alpaca4610/nonebot_plugin_BingImageCreator.git", + "tags": [ + { + "label": "AI", + "color": "#ea5252" + }, + { + "label": "绘图", + "color": "#ea5252" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": false, + "version": "0.1.5", + "time": "2024-02-21T03:19:20.848438Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_user", + "project_link": "nonebot-plugin-user", + "name": "用户", + "desc": "管理和绑定不同平台的用户", + "author": "he0119", + "homepage": "https://github.com/he0119/nonebot-plugin-user", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.console", + "nonebot.adapters.discord", + "nonebot.adapters.dodo", + "nonebot.adapters.feishu", + "nonebot.adapters.kaiheila", + "nonebot.adapters.onebot.v11", + "nonebot.adapters.onebot.v12", + "nonebot.adapters.qq", + "nonebot.adapters.red", + "nonebot.adapters.satori", + "nonebot.adapters.telegram" + ], + "valid": true, + "version": "0.2.0", + "time": "2024-02-24T10:06:57.539672Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_shorturl", + "project_link": "nonebot-plugin-shorturl", + "name": "短链接服务支持", + "desc": "为其他插件提供短链接转换服务", + "author": "StarHeartHunt", + "homepage": "https://github.com/StarHeartHunt/nonebot-plugin-shorturl", + "tags": [], + "is_official": false, + "type": "library", + "supported_adapters": null, + "valid": true, + "version": "0.4.0", + "time": "2024-02-29T12:09:58.388205Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_filehost", + "project_link": "nonebot-plugin-filehost", + "name": "文件托管支持", + "desc": "提供跨机文件传输支持,通过 HTTP 服务托管文件", + "author": "mnixry", + "homepage": "https://github.com/nonebot/plugin-filehost", + "tags": [], + "is_official": true, + "type": "library", + "supported_adapters": null, + "valid": true, + "version": "1.1.1", + "time": "2024-03-01T02:58:01.740199Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_smms", + "project_link": "nonebot-plugin-smms", + "name": "sm.ms图床", + "desc": "sm.ms图床上传与管理", + "author": "mobyw", + "homepage": "https://github.com/mobyw/nonebot-plugin-smms", + "tags": [], + "is_official": false, + "type": "library", + "supported_adapters": null, + "valid": true, + "version": "0.1.0", + "time": "2023-11-23T15:24:16.507383Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_nsfw", + "project_link": "nonebot-plugin-nsfw", + "name": "群聊 NSFW 图片检测", + "desc": "群聊 NSFW 图片检测插件,带有撤回、警告、禁言等功能。使用 Safety Checker / NSFW Model", + "author": "iyume", + "homepage": "https://github.com/iyume/nonebot-plugin-nsfw", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.10", + "time": "2023-12-18T17:59:20.124712Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_batarot", + "project_link": "nonebot-plugin-batarot", + "name": "碧蓝档案塔罗牌", + "desc": "碧蓝档案塔罗牌,运势预测与魔法占卜🔮", + "author": "Perseus037", + "homepage": "https://github.com/Perseus037/nonebot_plugin_batarot", + "tags": [ + { + "label": "碧蓝档案", + "color": "#15a0df" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.feishu", + "nonebot.adapters.kaiheila", + "nonebot.adapters.onebot.v11", + "nonebot.adapters.onebot.v12", + "nonebot.adapters.red", + "nonebot.adapters.telegram" + ], + "valid": true, + "version": "0.2.1.post1", + "time": "2023-12-20T02:30:30.110021Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_cnrail", + "project_link": "nonebot-plugin-cnrail", + "name": "CNRail", + "desc": "查询 12306 列车时刻表", + "author": "lgc2333", + "homepage": "https://github.com/lgc-NB2Dev/nonebot-plugin-cnrail", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.bilibili", + "nonebot.adapters.console", + "nonebot.adapters.ding", + "nonebot.adapters.discord", + "nonebot.adapters.dodo", + "nonebot.adapters.feishu", + "nonebot.adapters.github", + "nonebot.adapters.kaiheila", + "nonebot.adapters.minecraft", + "nonebot.adapters.mirai2", + "nonebot.adapters.ntchat", + "nonebot.adapters.onebot.v11", + "nonebot.adapters.onebot.v12", + "nonebot.adapters.qq", + "nonebot.adapters.red", + "nonebot.adapters.satori", + "nonebot.adapters.telegram" + ], + "valid": true, + "version": "0.2.0", + "time": "2024-03-10T10:16:46.885006Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_longtu", + "project_link": "nonebot-plugin-longtu", + "name": "随机龙图", + "desc": "2024年是龙年...我都准备好了", + "author": "Perseus037", + "homepage": "https://github.com/Perseus037/nonebot_plugin_longtu", + "tags": [ + { + "label": "龙图", + "color": "#e1122d" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.1.1.post1", + "time": "2024-01-12T00:49:14.405162Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_riffusion", + "project_link": "nonebot-plugin-riffusion", + "name": "Riffusion", + "desc": "你给歌词,AI 作曲", + "author": "lgc2333", + "homepage": "https://github.com/lgc-NB2Dev/nonebot-plugin-riffusion", + "tags": [ + { + "label": "Riffusion", + "color": "#4b39cb" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": null, + "valid": true, + "version": "0.2.1", + "time": "2024-03-10T06:43:23.017592Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_antimonkey", + "project_link": "nonebot-plugin-antimonkey", + "name": "AntiMonkey", + "desc": "自动检测和撤回包含恶心吗喽的图片", + "author": "phquathi", + "homepage": "https://github.com/phquathi/nonebot_plugin_antimonkey", + "tags": [ + { + "label": "猴子", + "color": "#ea5252" + }, + { + "label": "群管", + "color": "#ea5252" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "1.0.2", + "time": "2023-12-27T17:39:54.859337Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_waiter", + "project_link": "nonebot-plugin-waiter", + "name": "Waiter 插件", + "desc": "提供一个 got-and-reject 会话控制的替代方案,可自由控制超时时间", + "author": "RF-Tar-Railt", + "homepage": "https://github.com/RF-Tar-Railt/nonebot-plugin-waiter", + "tags": [ + { + "label": "waiter", + "color": "#ea5252" + } + ], + "is_official": false, + "type": "library", + "supported_adapters": null, + "valid": true, + "version": "0.2.0", + "time": "2024-01-28T12:16:34.304220Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_imagemaster", + "project_link": "nonebot-plugin-imagemaster", + "name": "nonebot-plugin-imagemaster", + "desc": "提供多种图像处理功能的插件", + "author": "phquathi", + "homepage": "https://github.com/phquathi/nonebot_plugin_imagemaster", + "tags": [ + { + "label": "修图", + "color": "#52d4ea" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "1.0.6", + "time": "2024-01-02T16:25:06.577543Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_nikke", + "project_link": "nonebot-plugin-nikke", + "name": "nonebot_plugin_nikke", + "desc": "胜利女神:妮姬多功能插件", + "author": "Perseus037", + "homepage": "https://github.com/Perseus037/nonebot_plugin_nikke", + "tags": [ + { + "label": "nikke", + "color": "#e111b7" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.1.0.post4", + "time": "2023-12-28T11:31:15.735048Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_mcpic", + "project_link": "nonebot-plugin-mcpic", + "name": "随机MC图", + "desc": "随机从推特获取并发送MC建筑图片", + "author": "wlm3201", + "homepage": "https://github.com/wlm3201/nonebot-plugin-mcpic", + "tags": [ + { + "label": "Minecraft", + "color": "#3cb371" + }, + { + "label": "MC", + "color": "#3cb371" + }, + { + "label": "图片", + "color": "#3cb371" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.1.1", + "time": "2024-01-07T08:20:29.206420Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_pingti", + "project_link": "nonebot-plugin-pingti", + "name": "最佳平替", + "desc": "用更低价的搜索词购物", + "author": "lgc2333", + "homepage": "https://github.com/lgc-NB2Dev/nonebot-plugin-pingti", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": null, + "valid": true, + "version": "0.1.4", + "time": "2024-02-15T10:12:37.601223Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_wx4", + "project_link": "nonebot-plugin-wx4", + "name": "文心一言4适配", + "desc": "文心一言4适配的连续对话", + "author": "Pasumao", + "homepage": "https://github.com/Pasumao/nonebot-plugin-wx4", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "1.3.1", + "time": "2024-01-09T08:34:55.393316Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_mypower", + "project_link": "nonebot-plugin-mypower", + "name": "nonebot-plugin-mypower", + "desc": "随机生成超能力", + "author": "tianyisama", + "homepage": "https://github.com/tianyisama/nonebot_plugin_mypower", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.1.5", + "time": "2024-01-15T16:29:40.149453Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_bard", + "project_link": "nonebot-plugin-bard", + "name": "谷歌Bard聊天", + "desc": "Nonebot框架下的谷歌Bard聊天插件,支持联网搜索和图片识别", + "author": "Alpaca4610", + "homepage": "https://github.com/Alpaca4610/nonebot-plugin-bard", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": false, + "version": "0.3.3", + "time": "2024-03-19T02:32:41.571851Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_nekoimage", + "project_link": "nonebot-plugin-nekoimage", + "name": "nonebot-plugin-nekoimage", + "desc": "A nonebot plugin for integrating with [NekoImageGallery](https://github.com/hv0905/NekoImageGallery).", + "author": "pk5ls20", + "homepage": "https://github.com/pk5ls20/nonebot-plugin-nekoimage", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11", + "nonebot.adapters.qq" + ], + "valid": true, + "version": "0.3.3", + "time": "2024-01-15T01:44:34.682356Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_finallines", + "project_link": "nonebot-plugin-finallines", + "name": "最终台词", + "desc": "来一句劲道的最终台词吧,支持多平台适配", + "author": "Perseus037", + "homepage": "https://github.com/Perseus037/nonebot_plugin_finallines", + "tags": [ + { + "label": "最终台词", + "color": "#052199" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.feishu", + "nonebot.adapters.kaiheila", + "nonebot.adapters.onebot.v11", + "nonebot.adapters.onebot.v12", + "nonebot.adapters.red", + "nonebot.adapters.telegram" + ], + "valid": true, + "version": "0.1.1.post2", + "time": "2024-01-14T10:05:17.058659Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_gemini", + "project_link": "nonebot-plugin-gemini", + "name": "nonebot-plugin-gemini", + "desc": "Gemini AI 对话", + "author": "zhaomaoniu", + "homepage": "https://github.com/zhaomaoniu/nonebot-plugin-gemini", + "tags": [ + { + "label": "Gemini", + "color": "#3e8ffb" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": null, + "valid": false, + "version": "0.3.0", + "time": "2024-02-11T08:21:46.952771Z", + "skip_test": false + }, + { + "module_name": "haruka_bot_red", + "project_link": "haruka_bot_red", + "name": "haruka_bot_red", + "desc": "将B站UP主的动态和直播信息推送至QQ,适配red协议", + "author": "boxie123", + "homepage": "https://github.com/boxie123/HarukaBot-Red", + "tags": [ + { + "label": "bilibili", + "color": "#c83f3f" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.red" + ], + "valid": true, + "version": "0.1.7", + "time": "2024-01-21T11:14:26.959398Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_enatfrp", + "project_link": "nonebot-plugin-enatfrp", + "name": "SakuraFrp", + "desc": "SakuraFrp管理插件,natfrp.com。", + "author": "eya46", + "homepage": "https://github.com/eya46/nonebot_plugin_enatfrp", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": null, + "valid": false, + "version": "0.2.0", + "time": "2024-03-09T06:14:37.754340Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_nezha", + "project_link": "nonebot-plugin-nezha", + "name": "哪吒监控插件", + "desc": "哪吒监控插件,使用哪吒监控API。", + "author": "eya46", + "homepage": "https://github.com/eya46/nonebot_plugin_nezha", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": null, + "valid": false, + "version": "0.4.2", + "time": "2024-03-10T07:31:54.957813Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_randpic", + "project_link": "nonebot-plugin-randpic", + "name": "随机发送图片", + "desc": "发送自定义指令后bot会随机发出一张你所存储的图片", + "author": "HuParry", + "homepage": "https://github.com/HuParry/nonebot-plugin-randpic", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.1.3", + "time": "2024-01-28T03:00:27.181559Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_BAdrawcard", + "project_link": "nonebot-plugin-badrawcard", + "name": "BA模拟抽卡", + "desc": "模拟实现了碧蓝档案游戏的抽卡功能, 自动化了更新卡池、FES提高卡池概率", + "author": "lengmianzz", + "homepage": "https://github.com/lengmianzz/nonebot-plugin-BAdrawcard", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.feishu", + "nonebot.adapters.kaiheila", + "nonebot.adapters.onebot.v11", + "nonebot.adapters.onebot.v12", + "nonebot.adapters.qq", + "nonebot.adapters.red", + "nonebot.adapters.telegram" + ], + "valid": true, + "version": "0.2.3", + "time": "2024-01-31T03:56:01.881602Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_gpt", + "project_link": "nonebot-plugin-gpt", + "name": "ChatGPT 聊天", + "desc": "通过浏览器使用 ChatGPT,兼容 onebot v11 与 adapter-qq 适配器", + "author": "nek0us", + "homepage": "https://github.com/nek0us/nonebot-plugin-gpt", + "tags": [ + { + "label": "ChatGPT", + "color": "#50ec9d" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11", + "nonebot.adapters.qq" + ], + "valid": false, + "version": "0.0.10", + "time": "2024-03-20T02:02:55.902116Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_easy_blacklist", + "project_link": "nonebot-plugin-easy-blacklist", + "name": "黑名单插件", + "desc": "一个轻量级的黑名单插件,支持api接入全平台,内存占用优化中", + "author": "bingqiu456", + "homepage": "https://github.com/bingqiu456/nonebot-plugin-easy-blacklist", + "tags": [], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": false, + "version": "1.5", + "time": "2024-02-15T06:25:00.316113Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_reminder", + "project_link": "nonebot-plugin-reminder", + "name": "定时提醒", + "desc": "主要用来提醒大家别忘记什么事情,可以看成定时提醒插件", + "author": "velor2012", + "homepage": "https://github.com/velor2012/nonebot_plugin_reminder", + "tags": [ + { + "label": "scheduler", + "color": "#ea5252" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.3.1.post1", + "time": "2024-02-20T13:09:13.542306Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_chikari_yinpa", + "project_link": "nonebot-plugin-chikari-yinpa", + "name": "Chikari_yinpa", + "desc": "一个普通的银趴插件", + "author": "mrqx0195", + "homepage": "https://github.com/mrqx0195/nonebot_plugin_chikari_yinpa", + "tags": [ + { + "label": "yinpa", + "color": "#ffff00" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "1.3.4", + "time": "2024-03-17T10:07:16.276530Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_splatoon3_nso", + "project_link": "nonebot-plugin-splatoon3-nso", + "name": "splatoon3游戏nso查询", + "desc": "一个基于nonebot2框架的splatoon3游戏nso数据查询插件", + "author": "Cypas", + "homepage": "https://github.com/Cypas/splatoon3-nso", + "tags": [ + { + "label": "splatoon3", + "color": "#ea5252" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.kaiheila", + "nonebot.adapters.onebot.v11", + "nonebot.adapters.onebot.v12", + "nonebot.adapters.qq", + "nonebot.adapters.telegram" + ], + "valid": true, + "version": "1.3.0", + "time": "2024-02-28T04:35:02.889426Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_bf1marneserverlist", + "project_link": "nonebot-plugin-bf1marneserverlist", + "name": "战地1-马恩私人服务器服务器查询", + "desc": "Onebot 战地1 马恩私人服务器服务器查询插件", + "author": "SAFEluren", + "homepage": "https://github.com/SAFEluren/nonebot-plugin-bf1marneserverlist", + "tags": [ + { + "label": "server", + "color": "#ea5252" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.1.23", + "time": "2024-03-09T09:29:36.925598Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_kawaii_status", + "project_link": "nonebot-plugin-kawaii-status", + "name": "运行状态", + "desc": "NoneBot2 服务器状态查看插件", + "author": "KomoriDev", + "homepage": "https://github.com/KomoriDev/nonebot-plugin-kawaii-status", + "tags": [ + { + "label": "简约", + "color": "#54adff" + }, + { + "label": "可爱", + "color": "#ffb3cc" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": null, + "valid": false, + "version": "0.1.3", + "time": "2024-03-08T11:20:28.985839Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_vits_tts", + "project_link": "nonebot-plugin-vits-tts", + "name": "nonebot-plugin-vits-tts", + "desc": "基于vits的tts语音合成", + "author": "Redmomn", + "homepage": "https://github.com/Redmomn/nonebot-plugin-vits-tts", + "tags": [ + { + "label": "VITS", + "color": "#ea5252" + }, + { + "label": "TTS", + "color": "#52dbea" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.1.6", + "time": "2024-03-07T05:12:46.624809Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_chatglm_plus", + "project_link": "nonebot-plugin-chatglm-plus", + "name": "人性化的ChatGLM", + "desc": "人性化的ChatGLM插件,支持预设和上下文", + "author": "XTxiaoting14332", + "homepage": "https://github.com/XTxiaoting14332/nonebot-plugin-chatglm-plus", + "tags": [ + { + "label": "ChatGLM", + "color": "#73cccc" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.console", + "nonebot.adapters.discord", + "nonebot.adapters.dodo", + "nonebot.adapters.feishu", + "nonebot.adapters.kaiheila", + "nonebot.adapters.onebot.v11", + "nonebot.adapters.onebot.v12", + "nonebot.adapters.qq", + "nonebot.adapters.red", + "nonebot.adapters.satori", + "nonebot.adapters.telegram" + ], + "valid": true, + "version": "0.1.7", + "time": "2024-03-10T05:32:29.222783Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_fishing", + "project_link": "nonebot-plugin-fishing", + "name": "赛博钓鱼", + "desc": "你甚至可以电子钓鱼", + "author": "C14H22O", + "homepage": "https://github.com/C14H22O/nonebot-plugin-fishing", + "tags": [ + { + "label": "钓鱼", + "color": "#87cefa" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": null, + "valid": true, + "version": "0.2.1", + "time": "2024-03-09T13:57:57.644380Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_a2s_query", + "project_link": "nonebot-plugin-a2s-query", + "name": "a2s查询", + "desc": "查询value服务器详情", + "author": "NanakaNeko", + "homepage": "https://github.com/NanakaNeko/nonebot-plugin-a2s-query", + "tags": [ + { + "label": "游戏服务器", + "color": "#ea5252" + }, + { + "label": "value", + "color": "#99ea52" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.1.7", + "time": "2024-03-11T03:38:52.710058Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_dice_narrator", + "project_link": "nonebot-plugin-dice-narrator", + "name": "nonebot-plugin-dice-narrator", + "desc": "一只可爱的 AI 掷骰姬,支持各种事件检定", + "author": "KroMiose", + "homepage": "https://github.com/KroMiose/nonebot_plugin_dice_narrator", + "tags": [ + { + "label": "GPT", + "color": "#29b752" + }, + { + "label": "掷骰姬", + "color": "#c84b9d" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": true, + "version": "0.1.9", + "time": "2024-03-14T02:27:12.730739Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_steam_info", + "project_link": "nonebot-plugin-steam-info", + "name": "Steam Info", + "desc": "播报绑定的 Steam 好友状态", + "author": "zhaomaoniu", + "homepage": "https://github.com/zhaomaoniu/nonebot-plugin-steam-info", + "tags": [ + { + "label": "Steam", + "color": "#14305e" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.bilibili", + "nonebot.adapters.console", + "nonebot.adapters.ding", + "nonebot.adapters.discord", + "nonebot.adapters.dodo", + "nonebot.adapters.feishu", + "nonebot.adapters.github", + "nonebot.adapters.kaiheila", + "nonebot.adapters.minecraft", + "nonebot.adapters.mirai2", + "nonebot.adapters.ntchat", + "nonebot.adapters.onebot.v11", + "nonebot.adapters.onebot.v12", + "nonebot.adapters.qq", + "nonebot.adapters.red", + "nonebot.adapters.satori", + "nonebot.adapters.telegram" + ], + "valid": true, + "version": "0.1.1", + "time": "2024-03-15T13:55:30.722873Z", + "skip_test": false + }, + { + "module_name": "nonebot_plugin_orangejuice", + "project_link": "nonebot-plugin-orangejuice", + "name": "100orangejuice", + "desc": "100orangejuice", + "author": "GLDYM", + "homepage": "https://github.com/FDCraft/nonebot-plugin-orangejuice", + "tags": [ + { + "label": "百橙", + "color": "#ed6f00" + }, + { + "label": "100OJ", + "color": "#ed6f00" + } + ], + "is_official": false, + "type": "application", + "supported_adapters": [ + "nonebot.adapters.onebot.v11" + ], + "valid": false, + "version": "0.5.0", + "time": "2024-03-20T01:58:28.461963Z", + "skip_test": false + } ] \ No newline at end of file diff --git a/liteyuki/test/action_test.py b/src/test/action_test.py similarity index 73% rename from liteyuki/test/action_test.py rename to src/test/action_test.py index 1bb92d6..74d7c54 100644 --- a/liteyuki/test/action_test.py +++ b/src/test/action_test.py @@ -1,29 +1,29 @@ -import nonebot -from liteyuki.utils import adapter_manager, driver_manager, init -from liteyuki.utils.base.config import load_from_yaml -from liteyuki.utils.base.data_manager import StoredConfig, common_db -from liteyuki.utils.base.ly_api import liteyuki_api - -if __name__ == "__mp_main__": - # Start as multiprocessing - init() - store_config: dict = common_db.where_one(StoredConfig(), default=StoredConfig()).config - static_config = load_from_yaml("config.yml") - store_config.update(static_config) - driver_manager.init(config=store_config) - adapter_manager.init(store_config) - nonebot.init(**store_config) - adapter_manager.register() - try: - nonebot.load_plugin("liteyuki.liteyuki_main") - nonebot.load_from_toml("pyproject.toml") - except BaseException as e: - if not isinstance(e, KeyboardInterrupt): - nonebot.logger.error(f"An error occurred: {e}, Bug will be reported automatically.") - liteyuki_api.bug_report(str(e.__repr__())) - -if __name__ == "__main__": - # Start as __main__ - from liteyuki.utils.base.reloader import Reloader - - nonebot.run() +import nonebot +from src.utils import adapter_manager, driver_manager, init +from src.utils.base.config import load_from_yaml +from src.utils.base.data_manager import StoredConfig, common_db +from src.utils.base.ly_api import liteyuki_api + +if __name__ == "__mp_main__": + # Start as multiprocessing + init() + store_config: dict = common_db.where_one(StoredConfig(), default=StoredConfig()).config + static_config = load_from_yaml("config.yml") + store_config.update(static_config) + driver_manager.init(config=store_config) + adapter_manager.init(store_config) + nonebot.init(**store_config) + adapter_manager.register() + try: + nonebot.load_plugin("liteyuki.liteyuki_main") + nonebot.load_from_toml("pyproject.toml") + except BaseException as e: + if not isinstance(e, KeyboardInterrupt): + nonebot.logger.error(f"An error occurred: {e}, Bug will be reported automatically.") + liteyuki_api.bug_report(str(e.__repr__())) + +if __name__ == "__main__": + # Start as __main__ + from src.utils.base.reloader import Reloader + + nonebot.run() diff --git a/liteyuki/utils/__init__.py b/src/utils/__init__.py similarity index 91% rename from liteyuki/utils/__init__.py rename to src/utils/__init__.py index e61b6b1..03772f1 100644 --- a/liteyuki/utils/__init__.py +++ b/src/utils/__init__.py @@ -1,86 +1,86 @@ -import json -import os.path -import platform -import sys -import time - -import nonebot - -__NAME__ = "LiteyukiBot" -__VERSION__ = "6.3.2" # 60201 - -import requests - -from liteyuki.utils.base.config import load_from_yaml, config -from liteyuki.utils.base.log import init_log -from liteyuki.utils.base.data_manager import TempConfig, auto_migrate, common_db -from git import Repo - - -major, minor, patch = map(int, __VERSION__.split(".")) -__VERSION_I__ = major * 10000 + minor * 100 + patch - - -def register_bot(): - url = "https://api.liteyuki.icu/register" - data = { - "name" : __NAME__, - "version" : __VERSION__, - "version_i": __VERSION_I__, - "python" : f"{platform.python_implementation()} {platform.python_version()}", - "os" : f"{platform.system()} {platform.version()} {platform.machine()}" - } - try: - nonebot.logger.info("Waiting for register to Liteyuki...") - resp = requests.post(url, json=data, timeout=(10, 15)) - if resp.status_code == 200: - data = resp.json() - if liteyuki_id := data.get("liteyuki_id"): - with open("data/liteyuki/liteyuki.json", "wb") as f: - f.write(json.dumps(data).encode("utf-8")) - nonebot.logger.success(f"Register {liteyuki_id} to Liteyuki successfully") - else: - raise ValueError(f"Register to Liteyuki failed: {data}") - - except Exception as e: - nonebot.logger.warning(f"Register to Liteyuki failed, but it's no matter: {e}") - - -def init(): - """ - 初始化 - Returns: - - """ - # 检测python版本是否高于3.10 - auto_migrate() - init_log() - if sys.version_info < (3, 10): - nonebot.logger.error("Requires Python3.10+ to run, please upgrade your Python Environment.") - exit(1) - - try: - # 检测git仓库 - repo = Repo(".") - except Exception as e: - nonebot.logger.error(f"Failed to load git repository: {e}, please clone this project from GitHub instead of downloading the zip file.") - - temp_data: TempConfig = common_db.where_one(TempConfig(), default=TempConfig()) - temp_data.data["start_time"] = time.time() - common_db.save(temp_data) - - # 在加载完成语言后再初始化日志 - nonebot.logger.info("Liteyuki is initializing...") - - if not os.path.exists("data/liteyuki/liteyuki.json"): - register_bot() - - if not os.path.exists("pyproject.toml"): - with open("pyproject.toml", "w", encoding="utf-8") as f: - f.write("[tool.nonebot]\n") - - nonebot.logger.info( - f"Run Liteyuki with Python{sys.version_info.major}.{sys.version_info.minor}.{sys.version_info.micro} " - f"at {sys.executable}" - ) - nonebot.logger.info(f"{__NAME__} {__VERSION__}({__VERSION_I__}) is running") +import json +import os.path +import platform +import sys +import time + +import nonebot + +__NAME__ = "LiteyukiBot" +__VERSION__ = "6.3.2" # 60201 + +import requests + +from src.utils.base.config import load_from_yaml, config +from src.utils.base.log import init_log +from src.utils.base.data_manager import TempConfig, auto_migrate, common_db +from git import Repo + + +major, minor, patch = map(int, __VERSION__.split(".")) +__VERSION_I__ = major * 10000 + minor * 100 + patch + + +def register_bot(): + url = "https://api.liteyuki.icu/register" + data = { + "name" : __NAME__, + "version" : __VERSION__, + "version_i": __VERSION_I__, + "python" : f"{platform.python_implementation()} {platform.python_version()}", + "os" : f"{platform.system()} {platform.version()} {platform.machine()}" + } + try: + nonebot.logger.info("Waiting for register to Liteyuki...") + resp = requests.post(url, json=data, timeout=(10, 15)) + if resp.status_code == 200: + data = resp.json() + if liteyuki_id := data.get("liteyuki_id"): + with open("data/liteyuki/liteyuki.json", "wb") as f: + f.write(json.dumps(data).encode("utf-8")) + nonebot.logger.success(f"Register {liteyuki_id} to Liteyuki successfully") + else: + raise ValueError(f"Register to Liteyuki failed: {data}") + + except Exception as e: + nonebot.logger.warning(f"Register to Liteyuki failed, but it's no matter: {e}") + + +def init(): + """ + 初始化 + Returns: + + """ + # 检测python版本是否高于3.10 + auto_migrate() + init_log() + if sys.version_info < (3, 10): + nonebot.logger.error("Requires Python3.10+ to run, please upgrade your Python Environment.") + exit(1) + + try: + # 检测git仓库 + repo = Repo(".") + except Exception as e: + nonebot.logger.error(f"Failed to load git repository: {e}, please clone this project from GitHub instead of downloading the zip file.") + + temp_data: TempConfig = common_db.where_one(TempConfig(), default=TempConfig()) + temp_data.data["start_time"] = time.time() + common_db.save(temp_data) + + # 在加载完成语言后再初始化日志 + nonebot.logger.info("Liteyuki is initializing...") + + if not os.path.exists("data/liteyuki/liteyuki.json"): + register_bot() + + if not os.path.exists("pyproject.toml"): + with open("pyproject.toml", "w", encoding="utf-8") as f: + f.write("[tool.nonebot]\n") + + nonebot.logger.info( + f"Run Liteyuki with Python{sys.version_info.major}.{sys.version_info.minor}.{sys.version_info.micro} " + f"at {sys.executable}" + ) + nonebot.logger.info(f"{__NAME__} {__VERSION__}({__VERSION_I__}) is running") diff --git a/liteyuki/utils/adapter_manager/__init__.py b/src/utils/adapter_manager/__init__.py similarity index 92% rename from liteyuki/utils/adapter_manager/__init__.py rename to src/utils/adapter_manager/__init__.py index daf4802..2a0e73e 100644 --- a/liteyuki/utils/adapter_manager/__init__.py +++ b/src/utils/adapter_manager/__init__.py @@ -1,14 +1,14 @@ -from . import ( - satori, - onebot -) - - -def init(config: dict): - onebot.init() - satori.init(config) - - -def register(): - onebot.register() - satori.register() +from . import ( + satori, + onebot +) + + +def init(config: dict): + onebot.init() + satori.init(config) + + +def register(): + onebot.register() + satori.register() diff --git a/liteyuki/utils/adapter_manager/onebot.py b/src/utils/adapter_manager/onebot.py similarity index 94% rename from liteyuki/utils/adapter_manager/onebot.py rename to src/utils/adapter_manager/onebot.py index 23d2a59..db19b4c 100644 --- a/liteyuki/utils/adapter_manager/onebot.py +++ b/src/utils/adapter_manager/onebot.py @@ -1,12 +1,12 @@ -import nonebot -from nonebot.adapters.onebot import v11, v12 - - -def init(): - pass - - -def register(): - driver = nonebot.get_driver() - driver.register_adapter(v11.Adapter) - driver.register_adapter(v12.Adapter) +import nonebot +from nonebot.adapters.onebot import v11, v12 + + +def init(): + pass + + +def register(): + driver = nonebot.get_driver() + driver.register_adapter(v11.Adapter) + driver.register_adapter(v12.Adapter) diff --git a/liteyuki/utils/adapter_manager/satori.py b/src/utils/adapter_manager/satori.py similarity index 97% rename from liteyuki/utils/adapter_manager/satori.py rename to src/utils/adapter_manager/satori.py index 7778296..c5edc80 100644 --- a/liteyuki/utils/adapter_manager/satori.py +++ b/src/utils/adapter_manager/satori.py @@ -1,26 +1,26 @@ -import json -import os - -import nonebot -from nonebot.adapters import satori - - -def init(config: dict): - if config.get("satori", None) is None: - nonebot.logger.info("Satori config not found, skip Satori init.") - return None - satori_config = config.get("satori") - if not satori_config.get("enable", False): - nonebot.logger.info("Satori not enabled, skip Satori init.") - return None - if os.getenv("SATORI_CLIENTS", None) is not None: - nonebot.logger.info("Satori clients already set in environment variable, skip.") - os.environ["SATORI_CLIENTS"] = json.dumps(satori_config.get("hosts", []), ensure_ascii=False) - config['satori_clients'] = satori_config.get("hosts", []) - return - - -def register(): - if os.getenv("SATORI_CLIENTS", None) is not None: - driver = nonebot.get_driver() - driver.register_adapter(satori.Adapter) +import json +import os + +import nonebot +from nonebot.adapters import satori + + +def init(config: dict): + if config.get("satori", None) is None: + nonebot.logger.info("Satori config not found, skip Satori init.") + return None + satori_config = config.get("satori") + if not satori_config.get("enable", False): + nonebot.logger.info("Satori not enabled, skip Satori init.") + return None + if os.getenv("SATORI_CLIENTS", None) is not None: + nonebot.logger.info("Satori clients already set in environment variable, skip.") + os.environ["SATORI_CLIENTS"] = json.dumps(satori_config.get("hosts", []), ensure_ascii=False) + config['satori_clients'] = satori_config.get("hosts", []) + return + + +def register(): + if os.getenv("SATORI_CLIENTS", None) is not None: + driver = nonebot.get_driver() + driver.register_adapter(satori.Adapter) diff --git a/src/utils/base/__init__.py b/src/utils/base/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/liteyuki/utils/base/config.py b/src/utils/base/config.py similarity index 96% rename from liteyuki/utils/base/config.py rename to src/utils/base/config.py index eaccbf4..a53f8f9 100644 --- a/liteyuki/utils/base/config.py +++ b/src/utils/base/config.py @@ -1,100 +1,100 @@ -import os -from typing import List - -import nonebot -import yaml -from pydantic import BaseModel - -from .data_manager import StoredConfig, TempConfig, common_db -from .ly_typing import T_Bot -from ..message.tools import random_hex_string - -config = {} # 全局配置,确保加载后读取 - - -class SatoriNodeConfig(BaseModel): - host: str = "" - port: str = "5500" - path: str = "" - token: str = "" - - -class SatoriConfig(BaseModel): - comment: str = "These features are still in development. Do not enable in production environment." - enable: bool = False - hosts: List[SatoriNodeConfig] = [SatoriNodeConfig()] - - -class BasicConfig(BaseModel): - host: str = "127.0.0.1" - port: int = 20216 - superusers: list[str] = [] - command_start: list[str] = ["/", ""] - nickname: list[str] = [f"LiteyukiBot-{random_hex_string(6)}"] - satori: SatoriConfig = SatoriConfig() - - -def load_from_yaml(file: str) -> dict: - global config - nonebot.logger.debug("Loading config from %s" % file) - if not os.path.exists(file): - nonebot.logger.warning(f"Config file {file} not found, created default config, please modify it and restart") - with open(file, "w", encoding="utf-8") as f: - yaml.dump(BasicConfig().dict(), f, default_flow_style=False) - - with open(file, "r", encoding="utf-8") as f: - conf = init_conf(yaml.load(f, Loader=yaml.FullLoader)) - config = conf - if conf is None: - nonebot.logger.warning(f"Config file {file} is empty, use default config. please modify it and restart") - conf = BasicConfig().dict() - return conf - - -def get_config(key: str, default=None): - """获取配置项,优先级:bot > config > db > yaml""" - try: - bot = nonebot.get_bot() - except: - bot = None - - if bot is None: - bot_config = {} - else: - bot_config = bot.config.dict() - - if key in bot_config: - return bot_config[key] - - elif key in config: - return config[key] - - elif key in common_db.where_one(StoredConfig(), default=StoredConfig()).config: - return common_db.where_one(StoredConfig(), default=StoredConfig()).config[key] - - elif key in load_from_yaml("config.yml"): - return load_from_yaml("config.yml")[key] - - else: - return default - - -def set_stored_config(key: str, value): - temp_config: TempConfig = common_db.where_one(TempConfig(), default=TempConfig()) - temp_config.data[key] = value - common_db.save(temp_config) - - -def init_conf(conf: dict) -> dict: - """ - 初始化配置文件,确保配置文件中的必要字段存在,且不会冲突 - Args: - conf: - - Returns: - - """ - # 若command_start中无"",则添加必要命令头,开启alconna_use_command_start防止冲突 - if "" not in conf.get("command_start", []): - conf["alconna_use_command_start"] = True - return conf +import os +from typing import List + +import nonebot +import yaml +from pydantic import BaseModel + +from .data_manager import StoredConfig, TempConfig, common_db +from .ly_typing import T_Bot +from ..message.tools import random_hex_string + +config = {} # 全局配置,确保加载后读取 + + +class SatoriNodeConfig(BaseModel): + host: str = "" + port: str = "5500" + path: str = "" + token: str = "" + + +class SatoriConfig(BaseModel): + comment: str = "These features are still in development. Do not enable in production environment." + enable: bool = False + hosts: List[SatoriNodeConfig] = [SatoriNodeConfig()] + + +class BasicConfig(BaseModel): + host: str = "127.0.0.1" + port: int = 20216 + superusers: list[str] = [] + command_start: list[str] = ["/", ""] + nickname: list[str] = [f"LiteyukiBot-{random_hex_string(6)}"] + satori: SatoriConfig = SatoriConfig() + + +def load_from_yaml(file: str) -> dict: + global config + nonebot.logger.debug("Loading config from %s" % file) + if not os.path.exists(file): + nonebot.logger.warning(f"Config file {file} not found, created default config, please modify it and restart") + with open(file, "w", encoding="utf-8") as f: + yaml.dump(BasicConfig().dict(), f, default_flow_style=False) + + with open(file, "r", encoding="utf-8") as f: + conf = init_conf(yaml.load(f, Loader=yaml.FullLoader)) + config = conf + if conf is None: + nonebot.logger.warning(f"Config file {file} is empty, use default config. please modify it and restart") + conf = BasicConfig().dict() + return conf + + +def get_config(key: str, default=None): + """获取配置项,优先级:bot > config > db > yaml""" + try: + bot = nonebot.get_bot() + except: + bot = None + + if bot is None: + bot_config = {} + else: + bot_config = bot.config.dict() + + if key in bot_config: + return bot_config[key] + + elif key in config: + return config[key] + + elif key in common_db.where_one(StoredConfig(), default=StoredConfig()).config: + return common_db.where_one(StoredConfig(), default=StoredConfig()).config[key] + + elif key in load_from_yaml("config.yml"): + return load_from_yaml("config.yml")[key] + + else: + return default + + +def set_stored_config(key: str, value): + temp_config: TempConfig = common_db.where_one(TempConfig(), default=TempConfig()) + temp_config.data[key] = value + common_db.save(temp_config) + + +def init_conf(conf: dict) -> dict: + """ + 初始化配置文件,确保配置文件中的必要字段存在,且不会冲突 + Args: + conf: + + Returns: + + """ + # 若command_start中无"",则添加必要命令头,开启alconna_use_command_start防止冲突 + if "" not in conf.get("command_start", []): + conf["alconna_use_command_start"] = True + return conf diff --git a/liteyuki/utils/base/data.py b/src/utils/base/data.py similarity index 97% rename from liteyuki/utils/base/data.py rename to src/utils/base/data.py index 453690e..e558848 100644 --- a/liteyuki/utils/base/data.py +++ b/src/utils/base/data.py @@ -1,405 +1,405 @@ -import os -import pickle -import sqlite3 -from types import NoneType -from typing import Any, Callable -from packaging.version import parse -import inspect -import nonebot -import pydantic -from pydantic import BaseModel - - -class LiteModel(BaseModel): - TABLE_NAME: str = None - id: int = None - - def dump(self, *args, **kwargs): - if parse(pydantic.__version__) < parse("2.0.0"): - return self.dict(*args, **kwargs) - else: - return self.model_dump(*args, **kwargs) - - -class Database: - def __init__(self, db_name: str): - - if os.path.dirname(db_name) != "" and not os.path.exists(os.path.dirname(db_name)): - os.makedirs(os.path.dirname(db_name)) - - self.db_name = db_name - self.conn = sqlite3.connect(db_name) - self.cursor = self.conn.cursor() - - self._on_save_callbacks = [] - - def where_one(self, model: LiteModel, condition: str = "", *args: Any, default: Any = None) -> LiteModel | Any | None: - """查询第一个 - Args: - model: 数据模型实例 - condition: 查询条件,不给定则查询所有 - *args: 参数化查询参数 - default: 默认值 - - Returns: - - """ - all_results = self.where_all(model, condition, *args) - return all_results[0] if all_results else default - - def where_all(self, model: LiteModel, condition: str = "", *args: Any, default: Any = None) -> list[LiteModel | Any] | None: - """查询所有 - Args: - model: 数据模型实例 - condition: 查询条件,不给定则查询所有 - *args: 参数化查询参数 - default: 默认值 - - Returns: - - """ - table_name = model.TABLE_NAME - model_type = type(model) - nonebot.logger.debug(f"Selecting {model.TABLE_NAME} WHERE {condition.replace('?', '%s') % args}") - if not table_name: - raise ValueError(f"数据模型{model_type.__name__}未提供表名") - - # condition = f"WHERE {condition}" - # print(f"SELECT * FROM {table_name} {condition}", args) - # if len(args) == 0: - # results = self.cursor.execute(f"SELECT * FROM {table_name} {condition}").fetchall() - # else: - # results = self.cursor.execute(f"SELECT * FROM {table_name} {condition}", args).fetchall() - if condition: - results = self.cursor.execute(f"SELECT * FROM {table_name} WHERE {condition}", args).fetchall() - else: - results = self.cursor.execute(f"SELECT * FROM {table_name}").fetchall() - fields = [description[0] for description in self.cursor.description] - if not results: - return default - else: - return [model_type(**self._load(dict(zip(fields, result)))) for result in results] - - def save(self, *args: LiteModel): - """增/改操作 - Args: - *args: - Returns: - """ - table_list = [item[0] for item in self.cursor.execute("SELECT name FROM sqlite_master WHERE type='table'").fetchall()] - for model in args: - nonebot.logger.debug(f"Upserting {model}") - if not model.TABLE_NAME: - raise ValueError(f"数据模型 {model.__class__.__name__} 未提供表名") - elif model.TABLE_NAME not in table_list: - raise ValueError(f"数据模型 {model.__class__.__name__} 表 {model.TABLE_NAME} 不存在,请先迁移") - else: - self._save(model.dump(by_alias=True)) - - for callback in self._on_save_callbacks: - callback(model) - - def _save(self, obj: Any) -> Any: - # obj = copy.deepcopy(obj) - if isinstance(obj, dict): - table_name = obj.get("TABLE_NAME") - row_id = obj.get("id") - new_obj = {} - for field, value in obj.items(): - if isinstance(value, self.ITERABLE_TYPE): - new_obj[self._get_stored_field_prefix(value) + field] = self._save(value) # self._save(value) # -> bytes - elif isinstance(value, self.BASIC_TYPE): - new_obj[field] = value - else: - raise ValueError(f"数据模型{table_name}包含不支持的数据类型,字段:{field} 值:{value} 值类型:{type(value)}") - if table_name: - fields, values = [], [] - for n_field, n_value in new_obj.items(): - if n_field not in ["TABLE_NAME", "id"]: - fields.append(n_field) - values.append(n_value) - # 移除TABLE_NAME和id - fields = list(fields) - values = list(values) - if row_id is not None: - # 如果 _id 不为空,将 'id' 插入到字段列表的开始 - fields.insert(0, 'id') - # 将 _id 插入到值列表的开始 - values.insert(0, row_id) - fields = ', '.join([f'"{field}"' for field in fields]) - placeholders = ', '.join('?' for _ in values) - self.cursor.execute(f"INSERT OR REPLACE INTO {table_name}({fields}) VALUES ({placeholders})", tuple(values)) - self.conn.commit() - foreign_id = self.cursor.execute("SELECT last_insert_rowid()").fetchone()[0] - return f"{self.FOREIGN_KEY_PREFIX}{foreign_id}@{table_name}" # -> FOREIGN_KEY_123456@{table_name} id@{table_name} - else: - return pickle.dumps(new_obj) # -> bytes - elif isinstance(obj, (list, set, tuple)): - obj_type = type(obj) # 到时候转回去 - new_obj = [] - for item in obj: - if isinstance(item, self.ITERABLE_TYPE): - new_obj.append(self._save(item)) - elif isinstance(item, self.BASIC_TYPE): - new_obj.append(item) - else: - raise ValueError(f"数据模型包含不支持的数据类型,值:{item} 值类型:{type(item)}") - return pickle.dumps(obj_type(new_obj)) # -> bytes - else: - raise ValueError(f"数据模型包含不支持的数据类型,值:{obj} 值类型:{type(obj)}") - - def _load(self, obj: Any) -> Any: - - if isinstance(obj, dict): - - new_obj = {} - - for field, value in obj.items(): - - field: str - - if field.startswith(self.BYTES_PREFIX): - if isinstance(value, bytes): - new_obj[field.replace(self.BYTES_PREFIX, "")] = self._load(pickle.loads(value)) - else: # 从value字段可能为None,fix at 2024/6/13 - pass - # 暂时不作处理,后面再修 - - elif field.startswith(self.FOREIGN_KEY_PREFIX): - - new_obj[field.replace(self.FOREIGN_KEY_PREFIX, "")] = self._load(self._get_foreign_data(value)) - - else: - new_obj[field] = value - return new_obj - elif isinstance(obj, (list, set, tuple)): - - new_obj = [] - for item in obj: - - if isinstance(item, bytes): - - # 对bytes进行尝试解析,解析失败则返回原始bytes - try: - new_obj.append(self._load(pickle.loads(item))) - except Exception as e: - new_obj.append(self._load(item)) - - elif isinstance(item, str) and item.startswith(self.FOREIGN_KEY_PREFIX): - new_obj.append(self._load(self._get_foreign_data(item))) - else: - new_obj.append(self._load(item)) - return new_obj - else: - return obj - - def delete(self, model: LiteModel, condition: str, *args: Any, allow_empty: bool = False): - """ - 删除满足条件的数据 - Args: - allow_empty: 允许空条件删除整个表 - model: - condition: - *args: - - Returns: - - """ - table_name = model.TABLE_NAME - nonebot.logger.debug(f"Deleting {model} WHERE {condition} {args}") - if not table_name: - raise ValueError(f"数据模型{model.__class__.__name__}未提供表名") - if model.id is not None: - condition = f"id = {model.id}" - if not condition and not allow_empty: - raise ValueError("删除操作必须提供条件") - self.cursor.execute(f"DELETE FROM {table_name} WHERE {condition}", args) - self.conn.commit() - - def auto_migrate(self, *args: LiteModel): - - """ - 自动迁移模型 - Args: - *args: 模型类实例化对象,支持空默认值,不支持嵌套迁移 - - Returns: - - """ - for model in args: - if not model.TABLE_NAME: - raise ValueError(f"数据模型{type(model).__name__}未提供表名") - - # 若无则创建表 - self.cursor.execute( - f'CREATE TABLE IF NOT EXISTS "{model.TABLE_NAME}" (id INTEGER PRIMARY KEY AUTOINCREMENT)' - ) - - # 获取表结构,field -> SqliteType - new_structure = {} - for n_field, n_value in model.dump(by_alias=True).items(): - if n_field not in ["TABLE_NAME", "id"]: - new_structure[self._get_stored_field_prefix(n_value) + n_field] = self._get_stored_type(n_value) - - # 原有的字段列表 - existing_structure = dict([(column[1], column[2]) for column in self.cursor.execute(f'PRAGMA table_info({model.TABLE_NAME})').fetchall()]) - # 检测缺失字段,由于SQLite是动态类型,所以不需要检测类型 - for n_field, n_type in new_structure.items(): - if n_field not in existing_structure.keys() and n_field.lower() not in ["id", "table_name"]: - default_value = self.DEFAULT_MAPPING.get(n_type, 'NULL') - self.cursor.execute( - f"ALTER TABLE '{model.TABLE_NAME}' ADD COLUMN {n_field} {n_type} DEFAULT {self.DEFAULT_MAPPING.get(n_type, default_value)}" - ) - - # 检测多余字段进行删除 - for e_field in existing_structure.keys(): - if e_field not in new_structure.keys() and e_field.lower() not in ['id']: - self.cursor.execute( - f'ALTER TABLE "{model.TABLE_NAME}" DROP COLUMN "{e_field}"' - ) - self.conn.commit() - # 已完成 - - def _get_stored_field_prefix(self, value) -> str: - """根据类型获取存储字段前缀,一定在后加上字段名 - * -> "" - Args: - value: 储存的值 - - Returns: - Sqlite3存储字段 - """ - - if isinstance(value, LiteModel) or isinstance(value, dict) and "TABLE_NAME" in value: - return self.FOREIGN_KEY_PREFIX - elif type(value) in self.ITERABLE_TYPE: - return self.BYTES_PREFIX - return "" - - def _get_stored_type(self, value) -> str: - """获取存储类型 - - Args: - value: 储存的值 - - Returns: - Sqlite3存储类型 - """ - if isinstance(value, dict) and "TABLE_NAME" in value: - # 是一个模型字典,储存外键 - return "INTEGER" - return self.TYPE_MAPPING.get(type(value), "TEXT") - - def _get_foreign_data(self, foreign_value: str) -> dict: - """ - 获取外键数据 - Args: - foreign_value: - - Returns: - - """ - foreign_value = foreign_value.replace(self.FOREIGN_KEY_PREFIX, "") - table_name = foreign_value.split("@")[-1] - foreign_id = foreign_value.split("@")[0] - fields = [description[1] for description in self.cursor.execute(f"PRAGMA table_info({table_name})").fetchall()] - result = self.cursor.execute(f"SELECT * FROM {table_name} WHERE id = ?", (foreign_id,)).fetchone() - return dict(zip(fields, result)) - - def on_save(self, func: Callable[[LiteModel | Any], None]): - """ - 装饰一个可调用对象使其在储存数据模型时被调用 - Args: - func: - Returns: - """ - - def wrapper(model): - # 检查被装饰函数声明的model类型和传入的model类型是否一致 - sign = inspect.signature(func) - if param := sign.parameters.get("model"): - if isinstance(model, param.annotation): - pass - else: - return - else: - return - result = func(model) - for callback in self._on_save_callbacks: - callback(result) - return result - - self._on_save_callbacks.append(wrapper) - return wrapper - - TYPE_MAPPING = { - int : "INTEGER", - float : "REAL", - str : "TEXT", - bool : "INTEGER", - bytes : "BLOB", - NoneType : "NULL", - # dict : "TEXT", - # list : "TEXT", - # tuple : "TEXT", - # set : "TEXT", - - dict : "BLOB", # LITEYUKIDICT{key_name} - list : "BLOB", # LITEYUKILIST{key_name} - tuple : "BLOB", # LITEYUKITUPLE{key_name} - set : "BLOB", # LITEYUKISET{key_name} - LiteModel: "TEXT" # FOREIGN_KEY_{table_name} - } - DEFAULT_MAPPING = { - "TEXT" : "''", - "INTEGER": 0, - "REAL" : 0.0, - "BLOB" : None, - "NULL" : None - } - - # 基础类型 - BASIC_TYPE = (int, float, str, bool, bytes, NoneType) - # 可序列化类型 - ITERABLE_TYPE = (dict, list, tuple, set, LiteModel) - - # 外键前缀 - FOREIGN_KEY_PREFIX = "FOREIGN_KEY_" - # 转换为的字节前缀 - BYTES_PREFIX = "PICKLE_BYTES_" - - # transaction tx 事务操作 - def first(self, model: LiteModel) -> "Database": - pass - - def where(self, condition: str, *args) -> "Database": - pass - - def limit(self, limit: int) -> "Database": - pass - - def order(self, order: str) -> "Database": - pass - - -def check_sqlite_keyword(name): - sqlite_keywords = [ - "ABORT", "ACTION", "ADD", "AFTER", "ALL", "ALTER", "ANALYZE", "AND", "AS", "ASC", - "ATTACH", "AUTOINCREMENT", "BEFORE", "BEGIN", "BETWEEN", "BY", "CASCADE", "CASE", - "CAST", "CHECK", "COLLATE", "COLUMN", "COMMIT", "CONFLICT", "CONSTRAINT", "CREATE", - "CROSS", "CURRENT_DATE", "CURRENT_TIME", "CURRENT_TIMESTAMP", "DATABASE", "DEFAULT", - "DEFERRABLE", "DEFERRED", "DELETE", "DESC", "DETACH", "DISTINCT", "DROP", "EACH", - "ELSE", "END", "ESCAPE", "EXCEPT", "EXCLUSIVE", "EXISTS", "EXPLAIN", "FAIL", "FOR", - "FOREIGN", "FROM", "FULL", "GLOB", "GROUP", "HAVING", "IF", "IGNORE", "IMMEDIATE", - "IN", "INDEX", "INDEXED", "INITIALLY", "INNER", "INSERT", "INSTEAD", "INTERSECT", - "INTO", "IS", "ISNULL", "JOIN", "KEY", "LEFT", "LIKE", "LIMIT", "MATCH", "NATURAL", - "NO", "NOT", "NOTNULL", "NULL", "OF", "OFFSET", "ON", "OR", "ORDER", "OUTER", "PLAN", - "PRAGMA", "PRIMARY", "QUERY", "RAISE", "RECURSIVE", "REFERENCES", "REGEXP", "REINDEX", - "RELEASE", "RENAME", "REPLACE", "RESTRICT", "RIGHT", "ROLLBACK", "ROW", "SAVEPOINT", - "SELECT", "SET", "TABLE", "TEMP", "TEMPORARY", "THEN", "TO", "TRANSACTION", "TRIGGER", - "UNION", "UNIQUE", "UPDATE", "USING", "VACUUM", "VALUES", "VIEW", "VIRTUAL", "WHEN", - "WHERE", "WITH", "WITHOUT" - ] - return True - # if name.upper() in sqlite_keywords: - # raise ValueError(f"'{name}' 是SQLite保留字,不建议使用,请更换名称") +import os +import pickle +import sqlite3 +from types import NoneType +from typing import Any, Callable +from packaging.version import parse +import inspect +import nonebot +import pydantic +from pydantic import BaseModel + + +class LiteModel(BaseModel): + TABLE_NAME: str = None + id: int = None + + def dump(self, *args, **kwargs): + if parse(pydantic.__version__) < parse("2.0.0"): + return self.dict(*args, **kwargs) + else: + return self.model_dump(*args, **kwargs) + + +class Database: + def __init__(self, db_name: str): + + if os.path.dirname(db_name) != "" and not os.path.exists(os.path.dirname(db_name)): + os.makedirs(os.path.dirname(db_name)) + + self.db_name = db_name + self.conn = sqlite3.connect(db_name) + self.cursor = self.conn.cursor() + + self._on_save_callbacks = [] + + def where_one(self, model: LiteModel, condition: str = "", *args: Any, default: Any = None) -> LiteModel | Any | None: + """查询第一个 + Args: + model: 数据模型实例 + condition: 查询条件,不给定则查询所有 + *args: 参数化查询参数 + default: 默认值 + + Returns: + + """ + all_results = self.where_all(model, condition, *args) + return all_results[0] if all_results else default + + def where_all(self, model: LiteModel, condition: str = "", *args: Any, default: Any = None) -> list[LiteModel | Any] | None: + """查询所有 + Args: + model: 数据模型实例 + condition: 查询条件,不给定则查询所有 + *args: 参数化查询参数 + default: 默认值 + + Returns: + + """ + table_name = model.TABLE_NAME + model_type = type(model) + nonebot.logger.debug(f"Selecting {model.TABLE_NAME} WHERE {condition.replace('?', '%s') % args}") + if not table_name: + raise ValueError(f"数据模型{model_type.__name__}未提供表名") + + # condition = f"WHERE {condition}" + # print(f"SELECT * FROM {table_name} {condition}", args) + # if len(args) == 0: + # results = self.cursor.execute(f"SELECT * FROM {table_name} {condition}").fetchall() + # else: + # results = self.cursor.execute(f"SELECT * FROM {table_name} {condition}", args).fetchall() + if condition: + results = self.cursor.execute(f"SELECT * FROM {table_name} WHERE {condition}", args).fetchall() + else: + results = self.cursor.execute(f"SELECT * FROM {table_name}").fetchall() + fields = [description[0] for description in self.cursor.description] + if not results: + return default + else: + return [model_type(**self._load(dict(zip(fields, result)))) for result in results] + + def save(self, *args: LiteModel): + """增/改操作 + Args: + *args: + Returns: + """ + table_list = [item[0] for item in self.cursor.execute("SELECT name FROM sqlite_master WHERE type='table'").fetchall()] + for model in args: + nonebot.logger.debug(f"Upserting {model}") + if not model.TABLE_NAME: + raise ValueError(f"数据模型 {model.__class__.__name__} 未提供表名") + elif model.TABLE_NAME not in table_list: + raise ValueError(f"数据模型 {model.__class__.__name__} 表 {model.TABLE_NAME} 不存在,请先迁移") + else: + self._save(model.dump(by_alias=True)) + + for callback in self._on_save_callbacks: + callback(model) + + def _save(self, obj: Any) -> Any: + # obj = copy.deepcopy(obj) + if isinstance(obj, dict): + table_name = obj.get("TABLE_NAME") + row_id = obj.get("id") + new_obj = {} + for field, value in obj.items(): + if isinstance(value, self.ITERABLE_TYPE): + new_obj[self._get_stored_field_prefix(value) + field] = self._save(value) # self._save(value) # -> bytes + elif isinstance(value, self.BASIC_TYPE): + new_obj[field] = value + else: + raise ValueError(f"数据模型{table_name}包含不支持的数据类型,字段:{field} 值:{value} 值类型:{type(value)}") + if table_name: + fields, values = [], [] + for n_field, n_value in new_obj.items(): + if n_field not in ["TABLE_NAME", "id"]: + fields.append(n_field) + values.append(n_value) + # 移除TABLE_NAME和id + fields = list(fields) + values = list(values) + if row_id is not None: + # 如果 _id 不为空,将 'id' 插入到字段列表的开始 + fields.insert(0, 'id') + # 将 _id 插入到值列表的开始 + values.insert(0, row_id) + fields = ', '.join([f'"{field}"' for field in fields]) + placeholders = ', '.join('?' for _ in values) + self.cursor.execute(f"INSERT OR REPLACE INTO {table_name}({fields}) VALUES ({placeholders})", tuple(values)) + self.conn.commit() + foreign_id = self.cursor.execute("SELECT last_insert_rowid()").fetchone()[0] + return f"{self.FOREIGN_KEY_PREFIX}{foreign_id}@{table_name}" # -> FOREIGN_KEY_123456@{table_name} id@{table_name} + else: + return pickle.dumps(new_obj) # -> bytes + elif isinstance(obj, (list, set, tuple)): + obj_type = type(obj) # 到时候转回去 + new_obj = [] + for item in obj: + if isinstance(item, self.ITERABLE_TYPE): + new_obj.append(self._save(item)) + elif isinstance(item, self.BASIC_TYPE): + new_obj.append(item) + else: + raise ValueError(f"数据模型包含不支持的数据类型,值:{item} 值类型:{type(item)}") + return pickle.dumps(obj_type(new_obj)) # -> bytes + else: + raise ValueError(f"数据模型包含不支持的数据类型,值:{obj} 值类型:{type(obj)}") + + def _load(self, obj: Any) -> Any: + + if isinstance(obj, dict): + + new_obj = {} + + for field, value in obj.items(): + + field: str + + if field.startswith(self.BYTES_PREFIX): + if isinstance(value, bytes): + new_obj[field.replace(self.BYTES_PREFIX, "")] = self._load(pickle.loads(value)) + else: # 从value字段可能为None,fix at 2024/6/13 + pass + # 暂时不作处理,后面再修 + + elif field.startswith(self.FOREIGN_KEY_PREFIX): + + new_obj[field.replace(self.FOREIGN_KEY_PREFIX, "")] = self._load(self._get_foreign_data(value)) + + else: + new_obj[field] = value + return new_obj + elif isinstance(obj, (list, set, tuple)): + + new_obj = [] + for item in obj: + + if isinstance(item, bytes): + + # 对bytes进行尝试解析,解析失败则返回原始bytes + try: + new_obj.append(self._load(pickle.loads(item))) + except Exception as e: + new_obj.append(self._load(item)) + + elif isinstance(item, str) and item.startswith(self.FOREIGN_KEY_PREFIX): + new_obj.append(self._load(self._get_foreign_data(item))) + else: + new_obj.append(self._load(item)) + return new_obj + else: + return obj + + def delete(self, model: LiteModel, condition: str, *args: Any, allow_empty: bool = False): + """ + 删除满足条件的数据 + Args: + allow_empty: 允许空条件删除整个表 + model: + condition: + *args: + + Returns: + + """ + table_name = model.TABLE_NAME + nonebot.logger.debug(f"Deleting {model} WHERE {condition} {args}") + if not table_name: + raise ValueError(f"数据模型{model.__class__.__name__}未提供表名") + if model.id is not None: + condition = f"id = {model.id}" + if not condition and not allow_empty: + raise ValueError("删除操作必须提供条件") + self.cursor.execute(f"DELETE FROM {table_name} WHERE {condition}", args) + self.conn.commit() + + def auto_migrate(self, *args: LiteModel): + + """ + 自动迁移模型 + Args: + *args: 模型类实例化对象,支持空默认值,不支持嵌套迁移 + + Returns: + + """ + for model in args: + if not model.TABLE_NAME: + raise ValueError(f"数据模型{type(model).__name__}未提供表名") + + # 若无则创建表 + self.cursor.execute( + f'CREATE TABLE IF NOT EXISTS "{model.TABLE_NAME}" (id INTEGER PRIMARY KEY AUTOINCREMENT)' + ) + + # 获取表结构,field -> SqliteType + new_structure = {} + for n_field, n_value in model.dump(by_alias=True).items(): + if n_field not in ["TABLE_NAME", "id"]: + new_structure[self._get_stored_field_prefix(n_value) + n_field] = self._get_stored_type(n_value) + + # 原有的字段列表 + existing_structure = dict([(column[1], column[2]) for column in self.cursor.execute(f'PRAGMA table_info({model.TABLE_NAME})').fetchall()]) + # 检测缺失字段,由于SQLite是动态类型,所以不需要检测类型 + for n_field, n_type in new_structure.items(): + if n_field not in existing_structure.keys() and n_field.lower() not in ["id", "table_name"]: + default_value = self.DEFAULT_MAPPING.get(n_type, 'NULL') + self.cursor.execute( + f"ALTER TABLE '{model.TABLE_NAME}' ADD COLUMN {n_field} {n_type} DEFAULT {self.DEFAULT_MAPPING.get(n_type, default_value)}" + ) + + # 检测多余字段进行删除 + for e_field in existing_structure.keys(): + if e_field not in new_structure.keys() and e_field.lower() not in ['id']: + self.cursor.execute( + f'ALTER TABLE "{model.TABLE_NAME}" DROP COLUMN "{e_field}"' + ) + self.conn.commit() + # 已完成 + + def _get_stored_field_prefix(self, value) -> str: + """根据类型获取存储字段前缀,一定在后加上字段名 + * -> "" + Args: + value: 储存的值 + + Returns: + Sqlite3存储字段 + """ + + if isinstance(value, LiteModel) or isinstance(value, dict) and "TABLE_NAME" in value: + return self.FOREIGN_KEY_PREFIX + elif type(value) in self.ITERABLE_TYPE: + return self.BYTES_PREFIX + return "" + + def _get_stored_type(self, value) -> str: + """获取存储类型 + + Args: + value: 储存的值 + + Returns: + Sqlite3存储类型 + """ + if isinstance(value, dict) and "TABLE_NAME" in value: + # 是一个模型字典,储存外键 + return "INTEGER" + return self.TYPE_MAPPING.get(type(value), "TEXT") + + def _get_foreign_data(self, foreign_value: str) -> dict: + """ + 获取外键数据 + Args: + foreign_value: + + Returns: + + """ + foreign_value = foreign_value.replace(self.FOREIGN_KEY_PREFIX, "") + table_name = foreign_value.split("@")[-1] + foreign_id = foreign_value.split("@")[0] + fields = [description[1] for description in self.cursor.execute(f"PRAGMA table_info({table_name})").fetchall()] + result = self.cursor.execute(f"SELECT * FROM {table_name} WHERE id = ?", (foreign_id,)).fetchone() + return dict(zip(fields, result)) + + def on_save(self, func: Callable[[LiteModel | Any], None]): + """ + 装饰一个可调用对象使其在储存数据模型时被调用 + Args: + func: + Returns: + """ + + def wrapper(model): + # 检查被装饰函数声明的model类型和传入的model类型是否一致 + sign = inspect.signature(func) + if param := sign.parameters.get("model"): + if isinstance(model, param.annotation): + pass + else: + return + else: + return + result = func(model) + for callback in self._on_save_callbacks: + callback(result) + return result + + self._on_save_callbacks.append(wrapper) + return wrapper + + TYPE_MAPPING = { + int : "INTEGER", + float : "REAL", + str : "TEXT", + bool : "INTEGER", + bytes : "BLOB", + NoneType : "NULL", + # dict : "TEXT", + # list : "TEXT", + # tuple : "TEXT", + # set : "TEXT", + + dict : "BLOB", # LITEYUKIDICT{key_name} + list : "BLOB", # LITEYUKILIST{key_name} + tuple : "BLOB", # LITEYUKITUPLE{key_name} + set : "BLOB", # LITEYUKISET{key_name} + LiteModel: "TEXT" # FOREIGN_KEY_{table_name} + } + DEFAULT_MAPPING = { + "TEXT" : "''", + "INTEGER": 0, + "REAL" : 0.0, + "BLOB" : None, + "NULL" : None + } + + # 基础类型 + BASIC_TYPE = (int, float, str, bool, bytes, NoneType) + # 可序列化类型 + ITERABLE_TYPE = (dict, list, tuple, set, LiteModel) + + # 外键前缀 + FOREIGN_KEY_PREFIX = "FOREIGN_KEY_" + # 转换为的字节前缀 + BYTES_PREFIX = "PICKLE_BYTES_" + + # transaction tx 事务操作 + def first(self, model: LiteModel) -> "Database": + pass + + def where(self, condition: str, *args) -> "Database": + pass + + def limit(self, limit: int) -> "Database": + pass + + def order(self, order: str) -> "Database": + pass + + +def check_sqlite_keyword(name): + sqlite_keywords = [ + "ABORT", "ACTION", "ADD", "AFTER", "ALL", "ALTER", "ANALYZE", "AND", "AS", "ASC", + "ATTACH", "AUTOINCREMENT", "BEFORE", "BEGIN", "BETWEEN", "BY", "CASCADE", "CASE", + "CAST", "CHECK", "COLLATE", "COLUMN", "COMMIT", "CONFLICT", "CONSTRAINT", "CREATE", + "CROSS", "CURRENT_DATE", "CURRENT_TIME", "CURRENT_TIMESTAMP", "DATABASE", "DEFAULT", + "DEFERRABLE", "DEFERRED", "DELETE", "DESC", "DETACH", "DISTINCT", "DROP", "EACH", + "ELSE", "END", "ESCAPE", "EXCEPT", "EXCLUSIVE", "EXISTS", "EXPLAIN", "FAIL", "FOR", + "FOREIGN", "FROM", "FULL", "GLOB", "GROUP", "HAVING", "IF", "IGNORE", "IMMEDIATE", + "IN", "INDEX", "INDEXED", "INITIALLY", "INNER", "INSERT", "INSTEAD", "INTERSECT", + "INTO", "IS", "ISNULL", "JOIN", "KEY", "LEFT", "LIKE", "LIMIT", "MATCH", "NATURAL", + "NO", "NOT", "NOTNULL", "NULL", "OF", "OFFSET", "ON", "OR", "ORDER", "OUTER", "PLAN", + "PRAGMA", "PRIMARY", "QUERY", "RAISE", "RECURSIVE", "REFERENCES", "REGEXP", "REINDEX", + "RELEASE", "RENAME", "REPLACE", "RESTRICT", "RIGHT", "ROLLBACK", "ROW", "SAVEPOINT", + "SELECT", "SET", "TABLE", "TEMP", "TEMPORARY", "THEN", "TO", "TRANSACTION", "TRIGGER", + "UNION", "UNIQUE", "UPDATE", "USING", "VACUUM", "VALUES", "VIEW", "VIRTUAL", "WHEN", + "WHERE", "WITH", "WITHOUT" + ] + return True + # if name.upper() in sqlite_keywords: + # raise ValueError(f"'{name}' 是SQLite保留字,不建议使用,请更换名称") diff --git a/liteyuki/utils/base/data_manager.py b/src/utils/base/data_manager.py similarity index 96% rename from liteyuki/utils/base/data_manager.py rename to src/utils/base/data_manager.py index 87abbed..63d510c 100644 --- a/liteyuki/utils/base/data_manager.py +++ b/src/utils/base/data_manager.py @@ -1,96 +1,96 @@ -import os - -from pydantic import Field - -from .data import Database, LiteModel, Database - -DATA_PATH = "data/liteyuki" - -user_db: Database = Database(os.path.join(DATA_PATH, "users.ldb")) -group_db: Database = Database(os.path.join(DATA_PATH, "groups.ldb")) -plugin_db: Database = Database(os.path.join(DATA_PATH, "plugins.ldb")) -common_db: Database = Database(os.path.join(DATA_PATH, "common.ldb")) - -# 内存数据库,临时用于存储数据 -memory_database = { - -} - - -class User(LiteModel): - TABLE_NAME: str = "user" - user_id: str = Field(str(), alias="user_id") - username: str = Field(str(), alias="username") - profile: dict[str, str] = Field(dict(), alias="profile") - enabled_plugins: list[str] = Field(list(), alias="enabled_plugins") - disabled_plugins: list[str] = Field(list(), alias="disabled_plugins") - - -class Group(LiteModel): - TABLE_NAME: str = "group_chat" - # Group是一个关键字,所以这里用GroupChat - group_id: str = Field(str(), alias="group_id") - group_name: str = Field(str(), alias="group_name") - enabled_plugins: list[str] = Field([], alias="enabled_plugins") - disabled_plugins: list[str] = Field([], alias="disabled_plugins") - enable: bool = Field(True, alias="enable") # 群聊全局机器人是否启用 - config: dict = Field({}, alias="config") - - -class InstalledPlugin(LiteModel): - TABLE_NAME: str = "installed_plugin" - module_name: str = Field(str(), alias="module_name") - version: str = Field(str(), alias="version") - - -class GlobalPlugin(LiteModel): - TABLE_NAME: str = "global_plugin" - liteyuki: bool = Field(True, alias="liteyuki") # 是否为LiteYuki插件 - module_name: str = Field(str(), alias="module_name") - enabled: bool = Field(True, alias="enabled") - - -class StoredConfig(LiteModel): - TABLE_NAME: str = "stored_config" - config: dict = {} - - -class TempConfig(LiteModel): - """储存临时键值对的表""" - TABLE_NAME: str = "temp_data" - data: dict = {} - - -def auto_migrate(): - user_db.auto_migrate(User()) - group_db.auto_migrate(Group()) - plugin_db.auto_migrate(InstalledPlugin(), GlobalPlugin()) - common_db.auto_migrate(GlobalPlugin(), StoredConfig(), TempConfig()) - - -def set_memory_data(key: str, value) -> None: - """ - 设置内存数据库的数据,类似于redis - Args: - key: - value: - - Returns: - - """ - return memory_database.update({ - key: value - }) - - -def get_memory_data(key: str, default=None) -> any: - """ - 获取内存数据库的数据,类似于redis - Args: - key: - default: - - Returns: - - """ - return memory_database.get(key, default) +import os + +from pydantic import Field + +from .data import Database, LiteModel, Database + +DATA_PATH = "data/liteyuki" + +user_db: Database = Database(os.path.join(DATA_PATH, "users.ldb")) +group_db: Database = Database(os.path.join(DATA_PATH, "groups.ldb")) +plugin_db: Database = Database(os.path.join(DATA_PATH, "plugins.ldb")) +common_db: Database = Database(os.path.join(DATA_PATH, "common.ldb")) + +# 内存数据库,临时用于存储数据 +memory_database = { + +} + + +class User(LiteModel): + TABLE_NAME: str = "user" + user_id: str = Field(str(), alias="user_id") + username: str = Field(str(), alias="username") + profile: dict[str, str] = Field(dict(), alias="profile") + enabled_plugins: list[str] = Field(list(), alias="enabled_plugins") + disabled_plugins: list[str] = Field(list(), alias="disabled_plugins") + + +class Group(LiteModel): + TABLE_NAME: str = "group_chat" + # Group是一个关键字,所以这里用GroupChat + group_id: str = Field(str(), alias="group_id") + group_name: str = Field(str(), alias="group_name") + enabled_plugins: list[str] = Field([], alias="enabled_plugins") + disabled_plugins: list[str] = Field([], alias="disabled_plugins") + enable: bool = Field(True, alias="enable") # 群聊全局机器人是否启用 + config: dict = Field({}, alias="config") + + +class InstalledPlugin(LiteModel): + TABLE_NAME: str = "installed_plugin" + module_name: str = Field(str(), alias="module_name") + version: str = Field(str(), alias="version") + + +class GlobalPlugin(LiteModel): + TABLE_NAME: str = "global_plugin" + liteyuki: bool = Field(True, alias="liteyuki") # 是否为LiteYuki插件 + module_name: str = Field(str(), alias="module_name") + enabled: bool = Field(True, alias="enabled") + + +class StoredConfig(LiteModel): + TABLE_NAME: str = "stored_config" + config: dict = {} + + +class TempConfig(LiteModel): + """储存临时键值对的表""" + TABLE_NAME: str = "temp_data" + data: dict = {} + + +def auto_migrate(): + user_db.auto_migrate(User()) + group_db.auto_migrate(Group()) + plugin_db.auto_migrate(InstalledPlugin(), GlobalPlugin()) + common_db.auto_migrate(GlobalPlugin(), StoredConfig(), TempConfig()) + + +def set_memory_data(key: str, value) -> None: + """ + 设置内存数据库的数据,类似于redis + Args: + key: + value: + + Returns: + + """ + return memory_database.update({ + key: value + }) + + +def get_memory_data(key: str, default=None) -> any: + """ + 获取内存数据库的数据,类似于redis + Args: + key: + default: + + Returns: + + """ + return memory_database.get(key, default) diff --git a/liteyuki/utils/base/language.py b/src/utils/base/language.py similarity index 96% rename from liteyuki/utils/base/language.py rename to src/utils/base/language.py index a38987d..fe0319d 100644 --- a/liteyuki/utils/base/language.py +++ b/src/utils/base/language.py @@ -1,216 +1,216 @@ -""" -语言模块,添加对多语言的支持 -""" - -import json -import locale -import os -from typing import Any, overload - -import nonebot - -from .config import config, get_config -from .data_manager import User, user_db - -_language_data = { - "en": { - "name": "English", - } -} - -_user_lang = { - "user_id": "zh-CN" -} - - -def load_from_lang(file_path: str, lang_code: str = None): - """ - 从lang文件中加载语言数据,用于简单的文本键值对 - - Args: - file_path: lang文件路径 - lang_code: 语言代码,如果为None则从文件名中获取 - """ - try: - if lang_code is None: - lang_code = os.path.basename(file_path).split(".")[0] - with open(file_path, "r", encoding="utf-8") as file: - data = {} - for line in file: - line = line.strip() - if not line or line.startswith("#"): # 空行或注释 - continue - key, value = line.split("=", 1) - data[key.strip()] = value.strip() - if lang_code not in _language_data: - _language_data[lang_code] = {} - _language_data[lang_code].update(data) - nonebot.logger.debug(f"Loaded language data from {file_path}") - except Exception as e: - nonebot.logger.error(f"Failed to load language data from {file_path}: {e}") - - -def load_from_json(file_path: str, lang_code: str = None): - """ - 从json文件中加载语言数据,可以定义一些变量 - - Args: - lang_code: 语言代码,如果为None则从文件名中获取 - file_path: json文件路径 - """ - try: - if lang_code is None: - lang_code = os.path.basename(file_path).split(".")[0] - with open(file_path, "r", encoding="utf-8") as file: - data = json.load(file) - if lang_code not in _language_data: - _language_data[lang_code] = {} - _language_data[lang_code].update(data) - nonebot.logger.debug(f"Loaded language data from {file_path}") - except Exception as e: - nonebot.logger.error(f"Failed to load language data from {file_path}: {e}") - - -def load_from_dir(dir_path: str): - """ - 从目录中加载语言数据 - - Args: - dir_path: 目录路径 - """ - for file in os.listdir(dir_path): - try: - file_path = os.path.join(dir_path, file) - if os.path.isfile(file_path): - if file.endswith(".lang"): - load_from_lang(file_path) - elif file.endswith(".json"): - load_from_json(file_path) - except Exception as e: - nonebot.logger.error(f"Failed to load language data from {file}: {e}") - continue - - -def load_from_dict(data: dict, lang_code: str): - """ - 从字典中加载语言数据 - - Args: - lang_code: 语言代码 - data: 字典数据 - """ - if lang_code not in _language_data: - _language_data[lang_code] = {} - _language_data[lang_code].update(data) - - -class Language: - # 三重fallback - # 用户语言 > 默认语言/系统语言 > zh-CN - def __init__(self, lang_code: str = None, fallback_lang_code: str = None): - self.lang_code = lang_code - - if self.lang_code is None: - self.lang_code = get_default_lang_code() - - self.fallback_lang_code = fallback_lang_code - if self.fallback_lang_code is None: - self.fallback_lang_code = config.get("default_language", get_system_lang_code()) - - def get(self, item: str, *args, **kwargs) -> str | Any: - """ - 获取当前语言文本,kwargs中的default参数为默认文本 - Args: - item: 文本键 - *args: 格式化参数 - **kwargs: 格式化参数 - - Returns: - str: 当前语言的文本 - - """ - default = kwargs.pop("default", None) - fallback = (self.lang_code, self.fallback_lang_code, "zh-CN") - - for lang_code in fallback: - if lang_code in _language_data and item in _language_data[lang_code]: - trans: str = _language_data[lang_code][item] - try: - return trans.format(*args, **kwargs) - except Exception as e: - nonebot.logger.warning(f"Failed to format language data: {e}") - return trans - return default or item - - def get_many(self, *args: str, **kwargs) -> dict[str, str]: - """ - 获取多个文本 - Args: - *args: 文本键 - **kwargs: 文本键和默认文本 - - Returns: - dict: 多个文本 - """ - args_data = {item: self.get(item) for item in args} - kwargs_data = {item: self.get(item, default=default) for item, default in kwargs.items()} - args_data.update(kwargs_data) - return args_data - - -def change_user_lang(user_id: str, lang_code: str): - """ - 修改用户的语言,同时储存到数据库和内存中 - """ - user = user_db.where_one(User(), "user_id = ?", user_id, default=User(user_id=user_id)) - user.profile["lang"] = lang_code - user_db.save(user) - _user_lang[user_id] = lang_code - - -def get_user_lang(user_id: str) -> Language: - """ - 获取用户的语言实例,优先从内存中获取 - """ - user_id = str(user_id) - - if user_id not in _user_lang: - nonebot.logger.debug(f"Loading user language for {user_id}") - user = user_db.where_one( - User(), "user_id = ?", user_id, default=User( - user_id=user_id, - username="Unknown" - ) - ) - lang_code = user.profile.get("lang", get_default_lang_code()) - _user_lang[user_id] = lang_code - - return Language(_user_lang[user_id]) - - -def get_system_lang_code() -> str: - """ - 获取系统语言代码 - """ - return locale.getdefaultlocale()[0].replace('_', '-') - - -def get_default_lang_code() -> str: - """ - 获取默认语言代码,若没有设置则使用系统语言 - Returns: - - """ - return get_config("default_language", default=get_system_lang_code()) - - -def get_all_lang() -> dict[str, str]: - """ - 获取所有语言 - Returns - {'en': 'English'} - """ - d = {} - for key in _language_data: - d[key] = _language_data[key].get("language.name", key) - return d +""" +语言模块,添加对多语言的支持 +""" + +import json +import locale +import os +from typing import Any, overload + +import nonebot + +from .config import config, get_config +from .data_manager import User, user_db + +_language_data = { + "en": { + "name": "English", + } +} + +_user_lang = { + "user_id": "zh-CN" +} + + +def load_from_lang(file_path: str, lang_code: str = None): + """ + 从lang文件中加载语言数据,用于简单的文本键值对 + + Args: + file_path: lang文件路径 + lang_code: 语言代码,如果为None则从文件名中获取 + """ + try: + if lang_code is None: + lang_code = os.path.basename(file_path).split(".")[0] + with open(file_path, "r", encoding="utf-8") as file: + data = {} + for line in file: + line = line.strip() + if not line or line.startswith("#"): # 空行或注释 + continue + key, value = line.split("=", 1) + data[key.strip()] = value.strip() + if lang_code not in _language_data: + _language_data[lang_code] = {} + _language_data[lang_code].update(data) + nonebot.logger.debug(f"Loaded language data from {file_path}") + except Exception as e: + nonebot.logger.error(f"Failed to load language data from {file_path}: {e}") + + +def load_from_json(file_path: str, lang_code: str = None): + """ + 从json文件中加载语言数据,可以定义一些变量 + + Args: + lang_code: 语言代码,如果为None则从文件名中获取 + file_path: json文件路径 + """ + try: + if lang_code is None: + lang_code = os.path.basename(file_path).split(".")[0] + with open(file_path, "r", encoding="utf-8") as file: + data = json.load(file) + if lang_code not in _language_data: + _language_data[lang_code] = {} + _language_data[lang_code].update(data) + nonebot.logger.debug(f"Loaded language data from {file_path}") + except Exception as e: + nonebot.logger.error(f"Failed to load language data from {file_path}: {e}") + + +def load_from_dir(dir_path: str): + """ + 从目录中加载语言数据 + + Args: + dir_path: 目录路径 + """ + for file in os.listdir(dir_path): + try: + file_path = os.path.join(dir_path, file) + if os.path.isfile(file_path): + if file.endswith(".lang"): + load_from_lang(file_path) + elif file.endswith(".json"): + load_from_json(file_path) + except Exception as e: + nonebot.logger.error(f"Failed to load language data from {file}: {e}") + continue + + +def load_from_dict(data: dict, lang_code: str): + """ + 从字典中加载语言数据 + + Args: + lang_code: 语言代码 + data: 字典数据 + """ + if lang_code not in _language_data: + _language_data[lang_code] = {} + _language_data[lang_code].update(data) + + +class Language: + # 三重fallback + # 用户语言 > 默认语言/系统语言 > zh-CN + def __init__(self, lang_code: str = None, fallback_lang_code: str = None): + self.lang_code = lang_code + + if self.lang_code is None: + self.lang_code = get_default_lang_code() + + self.fallback_lang_code = fallback_lang_code + if self.fallback_lang_code is None: + self.fallback_lang_code = config.get("default_language", get_system_lang_code()) + + def get(self, item: str, *args, **kwargs) -> str | Any: + """ + 获取当前语言文本,kwargs中的default参数为默认文本 + Args: + item: 文本键 + *args: 格式化参数 + **kwargs: 格式化参数 + + Returns: + str: 当前语言的文本 + + """ + default = kwargs.pop("default", None) + fallback = (self.lang_code, self.fallback_lang_code, "zh-CN") + + for lang_code in fallback: + if lang_code in _language_data and item in _language_data[lang_code]: + trans: str = _language_data[lang_code][item] + try: + return trans.format(*args, **kwargs) + except Exception as e: + nonebot.logger.warning(f"Failed to format language data: {e}") + return trans + return default or item + + def get_many(self, *args: str, **kwargs) -> dict[str, str]: + """ + 获取多个文本 + Args: + *args: 文本键 + **kwargs: 文本键和默认文本 + + Returns: + dict: 多个文本 + """ + args_data = {item: self.get(item) for item in args} + kwargs_data = {item: self.get(item, default=default) for item, default in kwargs.items()} + args_data.update(kwargs_data) + return args_data + + +def change_user_lang(user_id: str, lang_code: str): + """ + 修改用户的语言,同时储存到数据库和内存中 + """ + user = user_db.where_one(User(), "user_id = ?", user_id, default=User(user_id=user_id)) + user.profile["lang"] = lang_code + user_db.save(user) + _user_lang[user_id] = lang_code + + +def get_user_lang(user_id: str) -> Language: + """ + 获取用户的语言实例,优先从内存中获取 + """ + user_id = str(user_id) + + if user_id not in _user_lang: + nonebot.logger.debug(f"Loading user language for {user_id}") + user = user_db.where_one( + User(), "user_id = ?", user_id, default=User( + user_id=user_id, + username="Unknown" + ) + ) + lang_code = user.profile.get("lang", get_default_lang_code()) + _user_lang[user_id] = lang_code + + return Language(_user_lang[user_id]) + + +def get_system_lang_code() -> str: + """ + 获取系统语言代码 + """ + return locale.getdefaultlocale()[0].replace('_', '-') + + +def get_default_lang_code() -> str: + """ + 获取默认语言代码,若没有设置则使用系统语言 + Returns: + + """ + return get_config("default_language", default=get_system_lang_code()) + + +def get_all_lang() -> dict[str, str]: + """ + 获取所有语言 + Returns + {'en': 'English'} + """ + d = {} + for key in _language_data: + d[key] = _language_data[key].get("language.name", key) + return d diff --git a/liteyuki/utils/base/log.py b/src/utils/base/log.py similarity index 96% rename from liteyuki/utils/base/log.py rename to src/utils/base/log.py index 3e2b09a..65362bf 100644 --- a/liteyuki/utils/base/log.py +++ b/src/utils/base/log.py @@ -1,79 +1,79 @@ -import sys -import loguru -from typing import TYPE_CHECKING -from .config import load_from_yaml -from .language import Language, get_default_lang_code - -logger = loguru.logger -if TYPE_CHECKING: - # avoid sphinx autodoc resolve annotation failed - # because loguru module do not have `Logger` class actually - from loguru import Record - - -def default_filter(record: "Record"): - """默认的日志过滤器,根据 `config.log_level` 配置改变日志等级。""" - log_level = record["extra"].get("nonebot_log_level", "INFO") - levelno = logger.level(log_level).no if isinstance(log_level, str) else log_level - return record["level"].no >= levelno - - -# DEBUG日志格式 -debug_format: str = ( - "{time:YYYY-MM-DD HH:mm:ss} " - "[{level.icon}] " - "<{name}.{module}.{function}:{line}> " - "{message}" -) - -# 默认日志格式 -default_format: str = ( - "{time:MM-DD HH:mm:ss} " - "[{level.icon}] " - "<{name}> " - "{message}" -) - - -def get_format(level: str) -> str: - if level == "DEBUG": - return debug_format - else: - return default_format - - -logger = loguru.logger.bind() - - -def init_log(): - """ - 在语言加载完成后执行 - Returns: - - """ - global logger - - config = load_from_yaml("config.yml") - - logger.remove() - logger.add( - sys.stdout, - level=0, - diagnose=False, - filter=default_filter, - format=get_format(config.get("log_level", "INFO")), - ) - show_icon = config.get("log_icon", True) - lang = Language(get_default_lang_code()) - - debug = lang.get("log.debug", default="==DEBUG") - info = lang.get("log.info", default="===INFO") - success = lang.get("log.success", default="SUCCESS") - warning = lang.get("log.warning", default="WARNING") - error = lang.get("log.error", default="==ERROR") - - logger.level("DEBUG", color="", icon=f"{'🐛' if show_icon else ''}{debug}") - logger.level("INFO", color="", icon=f"{'ℹ️' if show_icon else ''}{info}") - logger.level("SUCCESS", color="", icon=f"{'✅' if show_icon else ''}{success}") - logger.level("WARNING", color="", icon=f"{'⚠️' if show_icon else ''}{warning}") - logger.level("ERROR", color="", icon=f"{'⭕' if show_icon else ''}{error}") +import sys +import loguru +from typing import TYPE_CHECKING +from .config import load_from_yaml +from .language import Language, get_default_lang_code + +logger = loguru.logger +if TYPE_CHECKING: + # avoid sphinx autodoc resolve annotation failed + # because loguru module do not have `Logger` class actually + from loguru import Record + + +def default_filter(record: "Record"): + """默认的日志过滤器,根据 `config.log_level` 配置改变日志等级。""" + log_level = record["extra"].get("nonebot_log_level", "INFO") + levelno = logger.level(log_level).no if isinstance(log_level, str) else log_level + return record["level"].no >= levelno + + +# DEBUG日志格式 +debug_format: str = ( + "{time:YYYY-MM-DD HH:mm:ss} " + "[{level.icon}] " + "<{name}.{module}.{function}:{line}> " + "{message}" +) + +# 默认日志格式 +default_format: str = ( + "{time:MM-DD HH:mm:ss} " + "[{level.icon}] " + "<{name}> " + "{message}" +) + + +def get_format(level: str) -> str: + if level == "DEBUG": + return debug_format + else: + return default_format + + +logger = loguru.logger.bind() + + +def init_log(): + """ + 在语言加载完成后执行 + Returns: + + """ + global logger + + config = load_from_yaml("config.yml") + + logger.remove() + logger.add( + sys.stdout, + level=0, + diagnose=False, + filter=default_filter, + format=get_format(config.get("log_level", "INFO")), + ) + show_icon = config.get("log_icon", True) + lang = Language(get_default_lang_code()) + + debug = lang.get("log.debug", default="==DEBUG") + info = lang.get("log.info", default="===INFO") + success = lang.get("log.success", default="SUCCESS") + warning = lang.get("log.warning", default="WARNING") + error = lang.get("log.error", default="==ERROR") + + logger.level("DEBUG", color="", icon=f"{'🐛' if show_icon else ''}{debug}") + logger.level("INFO", color="", icon=f"{'ℹ️' if show_icon else ''}{info}") + logger.level("SUCCESS", color="", icon=f"{'✅' if show_icon else ''}{success}") + logger.level("WARNING", color="", icon=f"{'⚠️' if show_icon else ''}{warning}") + logger.level("ERROR", color="", icon=f"{'⭕' if show_icon else ''}{error}") diff --git a/liteyuki/utils/base/ly_api.py b/src/utils/base/ly_api.py similarity index 97% rename from liteyuki/utils/base/ly_api.py rename to src/utils/base/ly_api.py index 19e123e..9b8d16d 100644 --- a/liteyuki/utils/base/ly_api.py +++ b/src/utils/base/ly_api.py @@ -1,90 +1,90 @@ -import json -import os.path -import platform - -import aiohttp -import nonebot -import psutil -import requests -from aiohttp import FormData - -from .. import __VERSION_I__, __VERSION__, __NAME__ -from .config import load_from_yaml - - -class LiteyukiAPI: - def __init__(self): - self.liteyuki_id = None - if os.path.exists("data/liteyuki/liteyuki.json"): - with open("data/liteyuki/liteyuki.json", "rb") as f: - self.data = json.loads(f.read()) - self.liteyuki_id = self.data.get("liteyuki_id") - self.report = load_from_yaml("config.yml").get("auto_report", True) - if self.report: - nonebot.logger.info("Auto bug report is enabled") - - @property - def device_info(self) -> dict: - """ - 获取设备信息 - Returns: - - """ - return { - "name" : __NAME__, - "version" : __VERSION__, - "version_i" : __VERSION_I__, - "python" : f"{platform.python_implementation()} {platform.python_version()}", - "os" : f"{platform.system()} {platform.version()} {platform.machine()}", - "cpu" : f"{psutil.cpu_count(logical=False)}c{psutil.cpu_count()}t{psutil.cpu_freq().current}MHz", - "memory_total": f"{psutil.virtual_memory().total / 1024 / 1024 / 1024:.2f}GB", - "memory_used" : f"{psutil.virtual_memory().used / 1024 / 1024 / 1024:.2f}GB", - "memory_bot" : f"{psutil.Process(os.getpid()).memory_info().rss / 1024 / 1024:.2f}MB", - "disk" : f"{psutil.disk_usage('/').total / 1024 / 1024 / 1024:.2f}GB" - } - - def bug_report(self, content: str): - """ - 提交bug报告 - Args: - content: - - Returns: - - """ - if self.report: - nonebot.logger.warning(f"Reporting bug...: {content}") - url = "https://api.liteyuki.icu/bug_report" - data = { - "liteyuki_id": self.liteyuki_id, - "content" : content, - "device_info": self.device_info - } - resp = requests.post(url, json=data) - if resp.status_code == 200: - nonebot.logger.success(f"Bug report sent successfully, report_id: {resp.json().get('report_id')}") - else: - nonebot.logger.error(f"Bug report failed: {resp.text}") - else: - nonebot.logger.warning(f"Bug report is disabled: {content}") - - async def heartbeat_report(self): - """ - 提交心跳,预留接口 - Returns: - - """ - url = "https://api.liteyuki.icu/heartbeat" - data = { - "liteyuki_id": self.liteyuki_id, - "version": __VERSION__, - } - async with aiohttp.ClientSession() as session: - async with session.post(url, json=data) as resp: - if resp.status == 200: - nonebot.logger.success("Heartbeat sent successfully") - else: - nonebot.logger.error(f"Heartbeat failed: {await resp.text()}") - - -liteyuki_api = LiteyukiAPI() +import json +import os.path +import platform + +import aiohttp +import nonebot +import psutil +import requests +from aiohttp import FormData + +from .. import __VERSION_I__, __VERSION__, __NAME__ +from .config import load_from_yaml + + +class LiteyukiAPI: + def __init__(self): + self.liteyuki_id = None + if os.path.exists("data/liteyuki/liteyuki.json"): + with open("data/liteyuki/liteyuki.json", "rb") as f: + self.data = json.loads(f.read()) + self.liteyuki_id = self.data.get("liteyuki_id") + self.report = load_from_yaml("config.yml").get("auto_report", True) + if self.report: + nonebot.logger.info("Auto bug report is enabled") + + @property + def device_info(self) -> dict: + """ + 获取设备信息 + Returns: + + """ + return { + "name" : __NAME__, + "version" : __VERSION__, + "version_i" : __VERSION_I__, + "python" : f"{platform.python_implementation()} {platform.python_version()}", + "os" : f"{platform.system()} {platform.version()} {platform.machine()}", + "cpu" : f"{psutil.cpu_count(logical=False)}c{psutil.cpu_count()}t{psutil.cpu_freq().current}MHz", + "memory_total": f"{psutil.virtual_memory().total / 1024 / 1024 / 1024:.2f}GB", + "memory_used" : f"{psutil.virtual_memory().used / 1024 / 1024 / 1024:.2f}GB", + "memory_bot" : f"{psutil.Process(os.getpid()).memory_info().rss / 1024 / 1024:.2f}MB", + "disk" : f"{psutil.disk_usage('/').total / 1024 / 1024 / 1024:.2f}GB" + } + + def bug_report(self, content: str): + """ + 提交bug报告 + Args: + content: + + Returns: + + """ + if self.report: + nonebot.logger.warning(f"Reporting bug...: {content}") + url = "https://api.liteyuki.icu/bug_report" + data = { + "liteyuki_id": self.liteyuki_id, + "content" : content, + "device_info": self.device_info + } + resp = requests.post(url, json=data) + if resp.status_code == 200: + nonebot.logger.success(f"Bug report sent successfully, report_id: {resp.json().get('report_id')}") + else: + nonebot.logger.error(f"Bug report failed: {resp.text}") + else: + nonebot.logger.warning(f"Bug report is disabled: {content}") + + async def heartbeat_report(self): + """ + 提交心跳,预留接口 + Returns: + + """ + url = "https://api.liteyuki.icu/heartbeat" + data = { + "liteyuki_id": self.liteyuki_id, + "version": __VERSION__, + } + async with aiohttp.ClientSession() as session: + async with session.post(url, json=data) as resp: + if resp.status == 200: + nonebot.logger.success("Heartbeat sent successfully") + else: + nonebot.logger.error(f"Heartbeat failed: {await resp.text()}") + + +liteyuki_api = LiteyukiAPI() diff --git a/liteyuki/utils/base/ly_function.py b/src/utils/base/ly_function.py similarity index 96% rename from liteyuki/utils/base/ly_function.py rename to src/utils/base/ly_function.py index 7308461..f97a508 100644 --- a/liteyuki/utils/base/ly_function.py +++ b/src/utils/base/ly_function.py @@ -1,197 +1,197 @@ -""" -liteyuki function是一种类似于mcfunction的函数,用于在liteyuki中实现一些功能,例如自定义指令等,也可与Python函数绑定 -使用 /function function_name *args **kwargs来调用 -例如 /function test/hello user_id=123456 -可以用于一些轻量级插件的编写,无需Python代码 -SnowyKami -""" -import asyncio -import functools -# cmd *args **kwargs -# api api_name **kwargs -import os -from typing import Any, Awaitable, Callable, Coroutine - -import nonebot -from nonebot import Bot -from nonebot.adapters.satori import bot -from nonebot.internal.matcher import Matcher - -ly_function_extensions = ( - "lyf", - "lyfunction", - "mcfunction" -) - -loaded_functions = dict() - - -class LiteyukiFunction: - def __init__(self, name: str): - self.name = name - self.functions: list[str] = list() - self.bot: Bot = None - self.kwargs_data = dict() - self.args_data = list() - self.matcher: Matcher = None - self.end = False - - self.sub_tasks: list[asyncio.Task] = list() - - async def __call__(self, *args, **kwargs): - self.kwargs_data.update(kwargs) - self.args_data = list(set(self.args_data + list(args))) - for i, cmd in enumerate(self.functions): - r = await self.execute_line(cmd, i, *args, **kwargs) - if r == 0: - msg = f"End function {self.name} by line {i}" - nonebot.logger.debug(msg) - for task in self.sub_tasks: - task.cancel(msg) - return - - def __str__(self): - return f"LiteyukiFunction({self.name})" - - def __repr__(self): - return self.__str__() - - async def execute_line(self, cmd: str, line: int = 0, *args, **kwargs) -> Any: - """ - 解析一行轻雪函数 - Args: - cmd: 命令 - line: 行数 - Returns: - """ - - try: - if "${" in cmd: - # 此种情况下,{}内容不用管,只对${}内的内容进行format - for i in range(len(cmd) - 1): - if cmd[i] == "$" and cmd[i + 1] == "{": - end = cmd.find("}", i) - key = cmd[i + 2:end] - cmd = cmd.replace(f"${{{key}}}", str(self.kwargs_data.get(key, ""))) - else: - cmd = cmd.format(*self.args_data, **self.kwargs_data) - except Exception as e: - pass - - no_head = cmd.split(" ", 1)[1] if len(cmd.split(" ")) > 1 else "" - try: - head, cmd_args, cmd_kwargs = self.get_args(cmd) - except Exception as e: - error_msg = f"Parsing error in {self.name} at line {line}: {e}" - nonebot.logger.error(error_msg) - await self.matcher.send(error_msg) - return - - if head == "var": - # 变量定义 - self.kwargs_data.update(cmd_kwargs) - - elif head == "cmd": - # 在当前计算机上执行命令 - os.system(no_head) - - elif head == "api": - # 调用Bot API 需要Bot实例 - await self.bot.call_api(cmd_args[1], **cmd_kwargs) - - elif head == "function": - # 调用轻雪函数 - func = get_function(cmd_args[1]) - func.bot = self.bot - func.matcher = self.matcher - await func(*cmd_args[2:], **cmd_kwargs) - - elif head == "sleep": - # 等待一段时间 - await asyncio.sleep(float(cmd_args[1])) - - elif head == "nohup": - # 挂起运行 - task = asyncio.create_task(self.execute_line(no_head)) - self.sub_tasks.append(task) - - elif head == "end": - # 结束所有函数 - self.end = True - return 0 - - - elif head == "await": - # 等待所有协程执行完毕 - await asyncio.gather(*self.sub_tasks) - - def get_args(self, line: str) -> tuple[str, tuple[str, ...], dict[str, Any]]: - """ - 获取参数 - Args: - line: 命令 - Returns: - 命令头 参数 关键字 - """ - line = line.replace("\\=", "EQUAL_SIGN") - head = "" - args = list() - kwargs = dict() - for i, arg in enumerate(line.split(" ")): - if "=" in arg: - key, value = arg.split("=", 1) - value = value.replace("EQUAL_SIGN", "=") - try: - value = eval(value) - except: - value = self.kwargs_data.get(value, value) - kwargs[key] = value - else: - if i == 0: - head = arg - args.append(arg) - return head, tuple(args), kwargs - - -def get_function(name: str) -> LiteyukiFunction | None: - """ - 获取一个轻雪函数 - Args: - name: 函数名 - Returns: - """ - return loaded_functions.get(name) - - -def load_from_dir(path: str): - """ - 从目录及其子目录中递归加载所有轻雪函数,类似mcfunction - - Args: - path: 目录路径 - """ - for f in os.listdir(path): - f = os.path.join(path, f) - if os.path.isfile(f): - if f.endswith(ly_function_extensions): - load_from_file(f) - if os.path.isdir(f): - load_from_dir(f) - - -def load_from_file(path: str): - """ - 从文件中加载轻雪函数 - Args: - path: - Returns: - """ - with open(path, "r", encoding="utf-8") as f: - name = ".".join(os.path.basename(path).split(".")[:-1]) - func = LiteyukiFunction(name) - for i, line in enumerate(f.read().split("\n")): - if line.startswith("#") or line.strip() == "": - continue - func.functions.append(line) - loaded_functions[name] = func - nonebot.logger.debug(f"Loaded function {name}") +""" +liteyuki function是一种类似于mcfunction的函数,用于在liteyuki中实现一些功能,例如自定义指令等,也可与Python函数绑定 +使用 /function function_name *args **kwargs来调用 +例如 /function test/hello user_id=123456 +可以用于一些轻量级插件的编写,无需Python代码 +SnowyKami +""" +import asyncio +import functools +# cmd *args **kwargs +# api api_name **kwargs +import os +from typing import Any, Awaitable, Callable, Coroutine + +import nonebot +from nonebot import Bot +from nonebot.adapters.satori import bot +from nonebot.internal.matcher import Matcher + +ly_function_extensions = ( + "lyf", + "lyfunction", + "mcfunction" +) + +loaded_functions = dict() + + +class LiteyukiFunction: + def __init__(self, name: str): + self.name = name + self.functions: list[str] = list() + self.bot: Bot = None + self.kwargs_data = dict() + self.args_data = list() + self.matcher: Matcher = None + self.end = False + + self.sub_tasks: list[asyncio.Task] = list() + + async def __call__(self, *args, **kwargs): + self.kwargs_data.update(kwargs) + self.args_data = list(set(self.args_data + list(args))) + for i, cmd in enumerate(self.functions): + r = await self.execute_line(cmd, i, *args, **kwargs) + if r == 0: + msg = f"End function {self.name} by line {i}" + nonebot.logger.debug(msg) + for task in self.sub_tasks: + task.cancel(msg) + return + + def __str__(self): + return f"LiteyukiFunction({self.name})" + + def __repr__(self): + return self.__str__() + + async def execute_line(self, cmd: str, line: int = 0, *args, **kwargs) -> Any: + """ + 解析一行轻雪函数 + Args: + cmd: 命令 + line: 行数 + Returns: + """ + + try: + if "${" in cmd: + # 此种情况下,{}内容不用管,只对${}内的内容进行format + for i in range(len(cmd) - 1): + if cmd[i] == "$" and cmd[i + 1] == "{": + end = cmd.find("}", i) + key = cmd[i + 2:end] + cmd = cmd.replace(f"${{{key}}}", str(self.kwargs_data.get(key, ""))) + else: + cmd = cmd.format(*self.args_data, **self.kwargs_data) + except Exception as e: + pass + + no_head = cmd.split(" ", 1)[1] if len(cmd.split(" ")) > 1 else "" + try: + head, cmd_args, cmd_kwargs = self.get_args(cmd) + except Exception as e: + error_msg = f"Parsing error in {self.name} at line {line}: {e}" + nonebot.logger.error(error_msg) + await self.matcher.send(error_msg) + return + + if head == "var": + # 变量定义 + self.kwargs_data.update(cmd_kwargs) + + elif head == "cmd": + # 在当前计算机上执行命令 + os.system(no_head) + + elif head == "api": + # 调用Bot API 需要Bot实例 + await self.bot.call_api(cmd_args[1], **cmd_kwargs) + + elif head == "function": + # 调用轻雪函数 + func = get_function(cmd_args[1]) + func.bot = self.bot + func.matcher = self.matcher + await func(*cmd_args[2:], **cmd_kwargs) + + elif head == "sleep": + # 等待一段时间 + await asyncio.sleep(float(cmd_args[1])) + + elif head == "nohup": + # 挂起运行 + task = asyncio.create_task(self.execute_line(no_head)) + self.sub_tasks.append(task) + + elif head == "end": + # 结束所有函数 + self.end = True + return 0 + + + elif head == "await": + # 等待所有协程执行完毕 + await asyncio.gather(*self.sub_tasks) + + def get_args(self, line: str) -> tuple[str, tuple[str, ...], dict[str, Any]]: + """ + 获取参数 + Args: + line: 命令 + Returns: + 命令头 参数 关键字 + """ + line = line.replace("\\=", "EQUAL_SIGN") + head = "" + args = list() + kwargs = dict() + for i, arg in enumerate(line.split(" ")): + if "=" in arg: + key, value = arg.split("=", 1) + value = value.replace("EQUAL_SIGN", "=") + try: + value = eval(value) + except: + value = self.kwargs_data.get(value, value) + kwargs[key] = value + else: + if i == 0: + head = arg + args.append(arg) + return head, tuple(args), kwargs + + +def get_function(name: str) -> LiteyukiFunction | None: + """ + 获取一个轻雪函数 + Args: + name: 函数名 + Returns: + """ + return loaded_functions.get(name) + + +def load_from_dir(path: str): + """ + 从目录及其子目录中递归加载所有轻雪函数,类似mcfunction + + Args: + path: 目录路径 + """ + for f in os.listdir(path): + f = os.path.join(path, f) + if os.path.isfile(f): + if f.endswith(ly_function_extensions): + load_from_file(f) + if os.path.isdir(f): + load_from_dir(f) + + +def load_from_file(path: str): + """ + 从文件中加载轻雪函数 + Args: + path: + Returns: + """ + with open(path, "r", encoding="utf-8") as f: + name = ".".join(os.path.basename(path).split(".")[:-1]) + func = LiteyukiFunction(name) + for i, line in enumerate(f.read().split("\n")): + if line.startswith("#") or line.strip() == "": + continue + func.functions.append(line) + loaded_functions[name] = func + nonebot.logger.debug(f"Loaded function {name}") diff --git a/liteyuki/utils/base/ly_typing.py b/src/utils/base/ly_typing.py similarity index 98% rename from liteyuki/utils/base/ly_typing.py rename to src/utils/base/ly_typing.py index 31242e1..bbda42e 100644 --- a/liteyuki/utils/base/ly_typing.py +++ b/src/utils/base/ly_typing.py @@ -1,8 +1,8 @@ -from nonebot.adapters.onebot import v11, v12 -from nonebot.adapters import satori - -T_Bot = v11.Bot | v12.Bot | satori.Bot -T_GroupMessageEvent = v11.GroupMessageEvent | v12.GroupMessageEvent -T_PrivateMessageEvent = v11.PrivateMessageEvent | v12.PrivateMessageEvent -T_MessageEvent = v11.MessageEvent | v12.MessageEvent | satori.MessageEvent -T_Message = v11.Message | v12.Message | satori.Message +from nonebot.adapters.onebot import v11, v12 +from nonebot.adapters import satori + +T_Bot = v11.Bot | v12.Bot | satori.Bot +T_GroupMessageEvent = v11.GroupMessageEvent | v12.GroupMessageEvent +T_PrivateMessageEvent = v11.PrivateMessageEvent | v12.PrivateMessageEvent +T_MessageEvent = v11.MessageEvent | v12.MessageEvent | satori.MessageEvent +T_Message = v11.Message | v12.Message | satori.Message diff --git a/liteyuki/utils/base/permission.py b/src/utils/base/permission.py similarity index 95% rename from liteyuki/utils/base/permission.py rename to src/utils/base/permission.py index 581e88c..8626ac3 100644 --- a/liteyuki/utils/base/permission.py +++ b/src/utils/base/permission.py @@ -1,5 +1,5 @@ -from nonebot.adapters.onebot import v11 - -GROUP_ADMIN = v11.GROUP_ADMIN -GROUP_OWNER = v11.GROUP_OWNER - +from nonebot.adapters.onebot import v11 + +GROUP_ADMIN = v11.GROUP_ADMIN +GROUP_OWNER = v11.GROUP_OWNER + diff --git a/liteyuki/utils/base/reloader.py b/src/utils/base/reloader.py similarity index 96% rename from liteyuki/utils/base/reloader.py rename to src/utils/base/reloader.py index 2b90dd9..6b27342 100644 --- a/liteyuki/utils/base/reloader.py +++ b/src/utils/base/reloader.py @@ -1,61 +1,61 @@ -import threading -from multiprocessing import get_context - -import nonebot -from nonebot import logger - -reboot_grace_time_limit: int = 20 - -_nb_run = nonebot.run - - -class Reloader: - event: threading.Event = None - - @classmethod - def reload(cls, delay: int = 0): - if cls.event is None: - raise RuntimeError() - if delay > 0: - threading.Timer(delay, function=cls.event.set).start() - return - cls.event.set() - - -def _run(ev: threading.Event, *args, **kwargs): - Reloader.event = ev - _nb_run(*args, **kwargs) - - -def run(*args, **kwargs): - should_exit = False - ctx = get_context("spawn") - while not should_exit: - event = ctx.Event() - process = ctx.Process( - target=_run, - args=( - event, - *args, - ), - kwargs=kwargs, - ) - process.start() - while not should_exit: - if event.wait(1): - logger.info("Receive reboot event") - process.terminate() - process.join(reboot_grace_time_limit) - if process.is_alive(): - logger.warning( - f"Cannot shutdown gracefully in {reboot_grace_time_limit} second, force kill process." - ) - process.kill() - break - elif process.is_alive(): - continue - else: - should_exit = True - - -nonebot.run = run +import threading +from multiprocessing import get_context + +import nonebot +from nonebot import logger + +reboot_grace_time_limit: int = 20 + +_nb_run = nonebot.run + + +class Reloader: + event: threading.Event = None + + @classmethod + def reload(cls, delay: int = 0): + if cls.event is None: + raise RuntimeError() + if delay > 0: + threading.Timer(delay, function=cls.event.set).start() + return + cls.event.set() + + +def _run(ev: threading.Event, *args, **kwargs): + Reloader.event = ev + _nb_run(*args, **kwargs) + + +def run(*args, **kwargs): + should_exit = False + ctx = get_context("spawn") + while not should_exit: + event = ctx.Event() + process = ctx.Process( + target=_run, + args=( + event, + *args, + ), + kwargs=kwargs, + ) + process.start() + while not should_exit: + if event.wait(1): + logger.info("Receive reboot event") + process.terminate() + process.join(reboot_grace_time_limit) + if process.is_alive(): + logger.warning( + f"Cannot shutdown gracefully in {reboot_grace_time_limit} second, force kill process." + ) + process.kill() + break + elif process.is_alive(): + continue + else: + should_exit = True + + +nonebot.run = run diff --git a/liteyuki/utils/base/resource.py b/src/utils/base/resource.py similarity index 94% rename from liteyuki/utils/base/resource.py rename to src/utils/base/resource.py index f68f3ef..717ac41 100644 --- a/liteyuki/utils/base/resource.py +++ b/src/utils/base/resource.py @@ -1,260 +1,260 @@ -import json -import os -import shutil -import zipfile -from typing import Any - -import nonebot -import yaml - -from .data import LiteModel -from .language import Language, get_default_lang_code -from .ly_function import loaded_functions - -_loaded_resource_packs: list["ResourceMetadata"] = [] # 按照加载顺序排序 -temp_resource_root = "data/liteyuki/resources" -temp_extract_root = "data/liteyuki/temp" -lang = Language(get_default_lang_code()) - - -class ResourceMetadata(LiteModel): - name: str = "Unknown" - version: str = "0.0.1" - description: str = "Unknown" - path: str = "" - folder: str = "" - - -def load_resource_from_dir(path: str): - """ - 把资源包按照文件相对路径复制到运行临时文件夹data/liteyuki/resources - Args: - path: 资源文件夹 - Returns: - """ - if os.path.exists(os.path.join(path, "metadata.yml")): - with open(os.path.join(path, "metadata.yml"), "r", encoding="utf-8") as f: - metadata = yaml.safe_load(f) - elif os.path.isfile(path) and path.endswith(".zip"): - # zip文件 - # 临时解压并读取metadata.yml - with zipfile.ZipFile(path, "r") as zip_ref: - # 解压至临时目录 data/liteyuki/temp/{pack_name}.zip - zip_ref.extractall(os.path.join(temp_extract_root, os.path.basename(path))) - with zip_ref.open("metadata.yml") as f: - metadata = yaml.safe_load(f) - path = os.path.join(temp_extract_root, os.path.basename(path)) - else: - # 没有metadata.yml文件,不是一个资源包 - return - for root, dirs, files in os.walk(path): - for file in files: - relative_path = os.path.relpath(os.path.join(root, file), path) - copy_file(os.path.join(root, file), os.path.join(temp_resource_root, relative_path)) - metadata["path"] = path - metadata["folder"] = os.path.basename(path) - - if os.path.exists(os.path.join(path, "lang")): - # 加载语言 - from liteyuki.utils.base.language import load_from_dir - load_from_dir(os.path.join(path, "lang")) - - if os.path.exists(os.path.join(path, "functions")): - # 加载功能 - from liteyuki.utils.base.ly_function import load_from_dir - load_from_dir(os.path.join(path, "functions")) - - if os.path.exists(os.path.join(path, "word_bank")): - # 加载词库 - from liteyuki.utils.base.word_bank import load_from_dir - load_from_dir(os.path.join(path, "word_bank")) - - _loaded_resource_packs.insert(0, ResourceMetadata(**metadata)) - - -def get_path(path: str, abs_path: bool = True, default: Any = None, debug: bool = False) -> str | Any: - """ - 获取资源包中的文件 - Args: - debug: 启用调试,每次都会先重载资源 - abs_path: 是否返回绝对路径 - default: 默认 - path: 文件相对路径 - Returns: 文件绝对路径 - """ - if debug: - nonebot.logger.debug("Enable resource debug, Reloading resources") - load_resources() - resource_relative_path = os.path.join(temp_resource_root, path) - if os.path.exists(resource_relative_path): - return os.path.abspath(resource_relative_path) if abs_path else resource_relative_path - else: - return default - - -def get_files(path: str, abs_path: bool = False) -> list[str]: - """ - 获取资源包中一个文件夹的所有文件 - Args: - abs_path: - path: 文件夹相对路径 - Returns: 文件绝对路径 - """ - resource_relative_path = os.path.join(temp_resource_root, path) - if os.path.exists(resource_relative_path): - return [os.path.abspath(os.path.join(resource_relative_path, file)) if abs_path else os.path.join(resource_relative_path, file) for file in - os.listdir(resource_relative_path)] - else: - return [] - - -def get_loaded_resource_packs() -> list[ResourceMetadata]: - """ - 获取已加载的资源包,优先级从前到后 - Returns: 资源包列表 - """ - return _loaded_resource_packs - - -def copy_file(src, dst): - # 获取目标文件的目录 - dst_dir = os.path.dirname(dst) - # 如果目标目录不存在,创建它 - if not os.path.exists(dst_dir): - os.makedirs(dst_dir) - # 复制文件 - shutil.copy(src, dst) - - -def load_resources(): - """用于外部主程序调用的资源加载函数 - Returns: - """ - # 加载默认资源和语言 - # 清空临时资源包路径data/liteyuki/resources - _loaded_resource_packs.clear() - loaded_functions.clear() - if os.path.exists(temp_resource_root): - shutil.rmtree(temp_resource_root) - os.makedirs(temp_resource_root, exist_ok=True) - - # 加载内置资源 - standard_resources_path = "liteyuki/resources" - for resource_dir in os.listdir(standard_resources_path): - load_resource_from_dir(os.path.join(standard_resources_path, resource_dir)) - - # 加载其他资源包 - if not os.path.exists("resources"): - os.makedirs("resources", exist_ok=True) - - if not os.path.exists("resources/index.json"): - json.dump([], open("resources/index.json", "w", encoding="utf-8")) - - resource_index: list[str] = json.load(open("resources/index.json", "r", encoding="utf-8")) - resource_index.reverse() # 优先级高的后加载,但是排在前面 - for resource in resource_index: - load_resource_from_dir(os.path.join("resources", resource)) - - -def check_status(name: str) -> bool: - """ - 检查资源包是否已加载 - Args: - name: 资源包名称,文件夹名 - Returns: 是否已加载 - """ - return name in [rp.folder for rp in get_loaded_resource_packs()] - - -def check_exist(name: str) -> bool: - """ - 检查资源包文件夹是否存在于resources文件夹 - Args: - name: 资源包名称,文件夹名 - Returns: 是否存在 - """ - path = os.path.join("resources", name) - return os.path.exists(os.path.join(path, "metadata.yml")) or (os.path.isfile(path) and name.endswith(".zip")) - - -def add_resource_pack(name: str) -> bool: - """ - 添加资源包,该操作仅修改index.json文件,不会加载资源包,要生效请重载资源 - Args: - name: 资源包名称,文件夹名 - Returns: - """ - if check_exist(name): - old_index: list[str] = json.load(open("resources/index.json", "r", encoding="utf-8")) - if name not in old_index: - old_index.append(name) - json.dump(old_index, open("resources/index.json", "w", encoding="utf-8")) - load_resource_from_dir(os.path.join("resources", name)) - return True - else: - nonebot.logger.warning(lang.get("liteyuki.resource_loaded", name=name)) - return False - else: - nonebot.logger.warning(lang.get("liteyuki.resource_not_exist", name=name)) - return False - - -def remove_resource_pack(name: str) -> bool: - """ - 移除资源包,该操作仅修改加载索引,要生效请重载资源 - Args: - name: 资源包名称,文件夹名 - Returns: - """ - if check_exist(name): - old_index: list[str] = json.load(open("resources/index.json", "r", encoding="utf-8")) - if name in old_index: - old_index.remove(name) - json.dump(old_index, open("resources/index.json", "w", encoding="utf-8")) - return True - else: - nonebot.logger.warning(lang.get("liteyuki.resource_not_loaded", name=name)) - return False - else: - nonebot.logger.warning(lang.get("liteyuki.resource_not_exist", name=name)) - return False - - -def change_priority(name: str, delta: int) -> bool: - """ - 修改资源包优先级 - Args: - name: 资源包名称,文件夹名 - delta: 优先级变化,正数表示后移,负数表示前移,0表示移到最前 - Returns: - """ - # 正数表示前移,负数表示后移 - old_resource_list: list[str] = json.load(open("resources/index.json", "r", encoding="utf-8")) - new_resource_list = old_resource_list.copy() - if name in old_resource_list: - index = old_resource_list.index(name) - if 0 <= index + delta < len(old_resource_list): - new_index = index + delta - new_resource_list.remove(name) - new_resource_list.insert(new_index, name) - json.dump(new_resource_list, open("resources/index.json", "w", encoding="utf-8")) - return True - else: - nonebot.logger.warning("Priority change failed, out of range") - return False - else: - nonebot.logger.debug("Priority change failed, resource not loaded") - return False - - -def get_resource_metadata(name: str) -> ResourceMetadata: - """ - 获取资源包元数据 - Args: - name: 资源包名称,文件夹名 - Returns: - """ - for rp in get_loaded_resource_packs(): - if rp.folder == name: - return rp - return ResourceMetadata() +import json +import os +import shutil +import zipfile +from typing import Any + +import nonebot +import yaml + +from .data import LiteModel +from .language import Language, get_default_lang_code +from .ly_function import loaded_functions + +_loaded_resource_packs: list["ResourceMetadata"] = [] # 按照加载顺序排序 +temp_resource_root = "data/liteyuki/resources" +temp_extract_root = "data/liteyuki/temp" +lang = Language(get_default_lang_code()) + + +class ResourceMetadata(LiteModel): + name: str = "Unknown" + version: str = "0.0.1" + description: str = "Unknown" + path: str = "" + folder: str = "" + + +def load_resource_from_dir(path: str): + """ + 把资源包按照文件相对路径复制到运行临时文件夹data/liteyuki/resources + Args: + path: 资源文件夹 + Returns: + """ + if os.path.exists(os.path.join(path, "metadata.yml")): + with open(os.path.join(path, "metadata.yml"), "r", encoding="utf-8") as f: + metadata = yaml.safe_load(f) + elif os.path.isfile(path) and path.endswith(".zip"): + # zip文件 + # 临时解压并读取metadata.yml + with zipfile.ZipFile(path, "r") as zip_ref: + # 解压至临时目录 data/liteyuki/temp/{pack_name}.zip + zip_ref.extractall(os.path.join(temp_extract_root, os.path.basename(path))) + with zip_ref.open("metadata.yml") as f: + metadata = yaml.safe_load(f) + path = os.path.join(temp_extract_root, os.path.basename(path)) + else: + # 没有metadata.yml文件,不是一个资源包 + return + for root, dirs, files in os.walk(path): + for file in files: + relative_path = os.path.relpath(os.path.join(root, file), path) + copy_file(os.path.join(root, file), os.path.join(temp_resource_root, relative_path)) + metadata["path"] = path + metadata["folder"] = os.path.basename(path) + + if os.path.exists(os.path.join(path, "lang")): + # 加载语言 + from src.utils.base.language import load_from_dir + load_from_dir(os.path.join(path, "lang")) + + if os.path.exists(os.path.join(path, "functions")): + # 加载功能 + from src.utils.base.ly_function import load_from_dir + load_from_dir(os.path.join(path, "functions")) + + if os.path.exists(os.path.join(path, "word_bank")): + # 加载词库 + from src.utils.base.word_bank import load_from_dir + load_from_dir(os.path.join(path, "word_bank")) + + _loaded_resource_packs.insert(0, ResourceMetadata(**metadata)) + + +def get_path(path: str, abs_path: bool = True, default: Any = None, debug: bool = False) -> str | Any: + """ + 获取资源包中的文件 + Args: + debug: 启用调试,每次都会先重载资源 + abs_path: 是否返回绝对路径 + default: 默认 + path: 文件相对路径 + Returns: 文件绝对路径 + """ + if debug: + nonebot.logger.debug("Enable resource debug, Reloading resources") + load_resources() + resource_relative_path = os.path.join(temp_resource_root, path) + if os.path.exists(resource_relative_path): + return os.path.abspath(resource_relative_path) if abs_path else resource_relative_path + else: + return default + + +def get_files(path: str, abs_path: bool = False) -> list[str]: + """ + 获取资源包中一个文件夹的所有文件 + Args: + abs_path: + path: 文件夹相对路径 + Returns: 文件绝对路径 + """ + resource_relative_path = os.path.join(temp_resource_root, path) + if os.path.exists(resource_relative_path): + return [os.path.abspath(os.path.join(resource_relative_path, file)) if abs_path else os.path.join(resource_relative_path, file) for file in + os.listdir(resource_relative_path)] + else: + return [] + + +def get_loaded_resource_packs() -> list[ResourceMetadata]: + """ + 获取已加载的资源包,优先级从前到后 + Returns: 资源包列表 + """ + return _loaded_resource_packs + + +def copy_file(src, dst): + # 获取目标文件的目录 + dst_dir = os.path.dirname(dst) + # 如果目标目录不存在,创建它 + if not os.path.exists(dst_dir): + os.makedirs(dst_dir) + # 复制文件 + shutil.copy(src, dst) + + +def load_resources(): + """用于外部主程序调用的资源加载函数 + Returns: + """ + # 加载默认资源和语言 + # 清空临时资源包路径data/liteyuki/resources + _loaded_resource_packs.clear() + loaded_functions.clear() + if os.path.exists(temp_resource_root): + shutil.rmtree(temp_resource_root) + os.makedirs(temp_resource_root, exist_ok=True) + + # 加载内置资源 + standard_resources_path = "src/resources" + for resource_dir in os.listdir(standard_resources_path): + load_resource_from_dir(os.path.join(standard_resources_path, resource_dir)) + + # 加载其他资源包 + if not os.path.exists("resources"): + os.makedirs("resources", exist_ok=True) + + if not os.path.exists("resources/index.json"): + json.dump([], open("resources/index.json", "w", encoding="utf-8")) + + resource_index: list[str] = json.load(open("resources/index.json", "r", encoding="utf-8")) + resource_index.reverse() # 优先级高的后加载,但是排在前面 + for resource in resource_index: + load_resource_from_dir(os.path.join("resources", resource)) + + +def check_status(name: str) -> bool: + """ + 检查资源包是否已加载 + Args: + name: 资源包名称,文件夹名 + Returns: 是否已加载 + """ + return name in [rp.folder for rp in get_loaded_resource_packs()] + + +def check_exist(name: str) -> bool: + """ + 检查资源包文件夹是否存在于resources文件夹 + Args: + name: 资源包名称,文件夹名 + Returns: 是否存在 + """ + path = os.path.join("resources", name) + return os.path.exists(os.path.join(path, "metadata.yml")) or (os.path.isfile(path) and name.endswith(".zip")) + + +def add_resource_pack(name: str) -> bool: + """ + 添加资源包,该操作仅修改index.json文件,不会加载资源包,要生效请重载资源 + Args: + name: 资源包名称,文件夹名 + Returns: + """ + if check_exist(name): + old_index: list[str] = json.load(open("resources/index.json", "r", encoding="utf-8")) + if name not in old_index: + old_index.append(name) + json.dump(old_index, open("resources/index.json", "w", encoding="utf-8")) + load_resource_from_dir(os.path.join("resources", name)) + return True + else: + nonebot.logger.warning(lang.get("liteyuki.resource_loaded", name=name)) + return False + else: + nonebot.logger.warning(lang.get("liteyuki.resource_not_exist", name=name)) + return False + + +def remove_resource_pack(name: str) -> bool: + """ + 移除资源包,该操作仅修改加载索引,要生效请重载资源 + Args: + name: 资源包名称,文件夹名 + Returns: + """ + if check_exist(name): + old_index: list[str] = json.load(open("resources/index.json", "r", encoding="utf-8")) + if name in old_index: + old_index.remove(name) + json.dump(old_index, open("resources/index.json", "w", encoding="utf-8")) + return True + else: + nonebot.logger.warning(lang.get("liteyuki.resource_not_loaded", name=name)) + return False + else: + nonebot.logger.warning(lang.get("liteyuki.resource_not_exist", name=name)) + return False + + +def change_priority(name: str, delta: int) -> bool: + """ + 修改资源包优先级 + Args: + name: 资源包名称,文件夹名 + delta: 优先级变化,正数表示后移,负数表示前移,0表示移到最前 + Returns: + """ + # 正数表示前移,负数表示后移 + old_resource_list: list[str] = json.load(open("resources/index.json", "r", encoding="utf-8")) + new_resource_list = old_resource_list.copy() + if name in old_resource_list: + index = old_resource_list.index(name) + if 0 <= index + delta < len(old_resource_list): + new_index = index + delta + new_resource_list.remove(name) + new_resource_list.insert(new_index, name) + json.dump(new_resource_list, open("resources/index.json", "w", encoding="utf-8")) + return True + else: + nonebot.logger.warning("Priority change failed, out of range") + return False + else: + nonebot.logger.debug("Priority change failed, resource not loaded") + return False + + +def get_resource_metadata(name: str) -> ResourceMetadata: + """ + 获取资源包元数据 + Args: + name: 资源包名称,文件夹名 + Returns: + """ + for rp in get_loaded_resource_packs(): + if rp.folder == name: + return rp + return ResourceMetadata() diff --git a/liteyuki/utils/base/word_bank.py b/src/utils/base/word_bank.py similarity index 95% rename from liteyuki/utils/base/word_bank.py rename to src/utils/base/word_bank.py index 43ad477..81772dc 100644 --- a/liteyuki/utils/base/word_bank.py +++ b/src/utils/base/word_bank.py @@ -1,57 +1,57 @@ -import json -import os -import random -from typing import Iterable - -import nonebot - -word_bank: dict[str, set[str]] = {} - - -def load_from_file(file_path: str): - """ - 从json文件中加载词库 - - Args: - file_path: 文件路径 - """ - with open(file_path, "r", encoding="utf-8") as file: - data = json.load(file) - for key, value_list in data.items(): - if key not in word_bank: - word_bank[key] = set() - word_bank[key].update(value_list) - - nonebot.logger.debug(f"Loaded word bank from {file_path}") - - -def load_from_dir(dir_path: str): - """ - 从目录中加载词库 - - Args: - dir_path: 目录路径 - """ - for file in os.listdir(dir_path): - try: - file_path = os.path.join(dir_path, file) - if os.path.isfile(file_path): - if file.endswith(".json"): - load_from_file(file_path) - except Exception as e: - nonebot.logger.error(f"Failed to load language data from {file}: {e}") - continue - - -def get_reply(kws: Iterable[str]) -> str | None: - """ - 获取回复 - Args: - kws: 关键词 - Returns: - """ - for kw in kws: - if kw in word_bank: - return random.choice(list(word_bank[kw])) - - return None +import json +import os +import random +from typing import Iterable + +import nonebot + +word_bank: dict[str, set[str]] = {} + + +def load_from_file(file_path: str): + """ + 从json文件中加载词库 + + Args: + file_path: 文件路径 + """ + with open(file_path, "r", encoding="utf-8") as file: + data = json.load(file) + for key, value_list in data.items(): + if key not in word_bank: + word_bank[key] = set() + word_bank[key].update(value_list) + + nonebot.logger.debug(f"Loaded word bank from {file_path}") + + +def load_from_dir(dir_path: str): + """ + 从目录中加载词库 + + Args: + dir_path: 目录路径 + """ + for file in os.listdir(dir_path): + try: + file_path = os.path.join(dir_path, file) + if os.path.isfile(file_path): + if file.endswith(".json"): + load_from_file(file_path) + except Exception as e: + nonebot.logger.error(f"Failed to load language data from {file}: {e}") + continue + + +def get_reply(kws: Iterable[str]) -> str | None: + """ + 获取回复 + Args: + kws: 关键词 + Returns: + """ + for kw in kws: + if kw in word_bank: + return random.choice(list(word_bank[kw])) + + return None diff --git a/liteyuki/utils/canvas/__init__.py b/src/utils/canvas/__init__.py similarity index 100% rename from liteyuki/utils/canvas/__init__.py rename to src/utils/canvas/__init__.py diff --git a/liteyuki/utils/driver_manager/__init__.py b/src/utils/driver_manager/__init__.py similarity index 94% rename from liteyuki/utils/driver_manager/__init__.py rename to src/utils/driver_manager/__init__.py index 89d9009..d5cfd6a 100644 --- a/liteyuki/utils/driver_manager/__init__.py +++ b/src/utils/driver_manager/__init__.py @@ -1,6 +1,6 @@ -from .auto_set_env import auto_set_env - - -def init(config: dict): - auto_set_env(config) - return +from .auto_set_env import auto_set_env + + +def init(config: dict): + auto_set_env(config) + return diff --git a/liteyuki/utils/driver_manager/auto_set_env.py b/src/utils/driver_manager/auto_set_env.py similarity index 97% rename from liteyuki/utils/driver_manager/auto_set_env.py rename to src/utils/driver_manager/auto_set_env.py index 94e5b3b..f3b2f20 100644 --- a/liteyuki/utils/driver_manager/auto_set_env.py +++ b/src/utils/driver_manager/auto_set_env.py @@ -1,21 +1,21 @@ -import os - -import dotenv -import nonebot - -from .defines import * - - -def auto_set_env(config: dict): - dotenv.load_dotenv(".env") - if os.getenv("DRIVER", None) is not None: - print(os.getenv("DRIVER")) - nonebot.logger.info("Driver already set in environment variable, skip auto configure.") - return - if config.get("satori", {'enable': False}).get("enable", False): - os.environ["DRIVER"] = get_driver_string(ASGI_DRIVER, HTTPX_DRIVER, WEBSOCKETS_DRIVER) - nonebot.logger.info("Enable Satori, set driver to ASGI+HTTPX+WEBSOCKETS") - else: - os.environ["DRIVER"] = get_driver_string(ASGI_DRIVER) - nonebot.logger.info("Disable Satori, set driver to ASGI") - return +import os + +import dotenv +import nonebot + +from .defines import * + + +def auto_set_env(config: dict): + dotenv.load_dotenv(".env") + if os.getenv("DRIVER", None) is not None: + print(os.getenv("DRIVER")) + nonebot.logger.info("Driver already set in environment variable, skip auto configure.") + return + if config.get("satori", {'enable': False}).get("enable", False): + os.environ["DRIVER"] = get_driver_string(ASGI_DRIVER, HTTPX_DRIVER, WEBSOCKETS_DRIVER) + nonebot.logger.info("Enable Satori, set driver to ASGI+HTTPX+WEBSOCKETS") + else: + os.environ["DRIVER"] = get_driver_string(ASGI_DRIVER) + nonebot.logger.info("Disable Satori, set driver to ASGI") + return diff --git a/liteyuki/utils/driver_manager/defines.py b/src/utils/driver_manager/defines.py similarity index 96% rename from liteyuki/utils/driver_manager/defines.py rename to src/utils/driver_manager/defines.py index b4756bf..98a250a 100644 --- a/liteyuki/utils/driver_manager/defines.py +++ b/src/utils/driver_manager/defines.py @@ -1,17 +1,17 @@ -ASGI_DRIVER = "~fastapi" -HTTPX_DRIVER = "~httpx" -WEBSOCKETS_DRIVER = "~websockets" - - -def get_driver_string(*argv): - output_string = "" - if ASGI_DRIVER in argv: - output_string += ASGI_DRIVER - for arg in argv: - if arg != ASGI_DRIVER: - output_string = f"{output_string}+{arg}" - return output_string - - -def get_driver_full_string(*argv): - return f"DRIVER={get_driver_string(argv)}" +ASGI_DRIVER = "~fastapi" +HTTPX_DRIVER = "~httpx" +WEBSOCKETS_DRIVER = "~websockets" + + +def get_driver_string(*argv): + output_string = "" + if ASGI_DRIVER in argv: + output_string += ASGI_DRIVER + for arg in argv: + if arg != ASGI_DRIVER: + output_string = f"{output_string}+{arg}" + return output_string + + +def get_driver_full_string(*argv): + return f"DRIVER={get_driver_string(argv)}" diff --git a/liteyuki/utils/event/__init__.py b/src/utils/event/__init__.py similarity index 96% rename from liteyuki/utils/event/__init__.py rename to src/utils/event/__init__.py index b028cac..766f64b 100644 --- a/liteyuki/utils/event/__init__.py +++ b/src/utils/event/__init__.py @@ -1 +1 @@ -from .get_info import * +from .get_info import * diff --git a/liteyuki/utils/event/get_info.py b/src/utils/event/get_info.py similarity index 87% rename from liteyuki/utils/event/get_info.py rename to src/utils/event/get_info.py index d6fa569..218b6e2 100644 --- a/liteyuki/utils/event/get_info.py +++ b/src/utils/event/get_info.py @@ -1,24 +1,24 @@ -from nonebot.adapters import satori - -from liteyuki.utils.base.ly_typing import T_MessageEvent - - -def get_user_id(event: T_MessageEvent): - if isinstance(event, satori.event.Event): - return event.user.id - else: - return event.user_id - - -def get_group_id(event: T_MessageEvent): - if isinstance(event, satori.event.Event): - return event.guild.id - else: - return event.group_id - - -def get_message_type(event: T_MessageEvent) -> str: - if isinstance(event, satori.event.Event): - return "private" if event.guild is None else "group" - else: - return event.message_type +from nonebot.adapters import satori + +from src.utils.base.ly_typing import T_MessageEvent + + +def get_user_id(event: T_MessageEvent): + if isinstance(event, satori.event.Event): + return event.user.id + else: + return event.user_id + + +def get_group_id(event: T_MessageEvent): + if isinstance(event, satori.event.Event): + return event.guild.id + else: + return event.group_id + + +def get_message_type(event: T_MessageEvent) -> str: + if isinstance(event, satori.event.Event): + return "private" if event.guild is None else "group" + else: + return event.message_type diff --git a/src/utils/external/__init__.py b/src/utils/external/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/liteyuki/utils/external/logo.py b/src/utils/external/logo.py similarity index 96% rename from liteyuki/utils/external/logo.py rename to src/utils/external/logo.py index 96d9192..c714d96 100644 --- a/liteyuki/utils/external/logo.py +++ b/src/utils/external/logo.py @@ -1,40 +1,40 @@ -async def get_user_icon(platform: str, user_id: str) -> str: - """ - 获取用户头像 - Args: - platform: qq, telegram, discord... - user_id: 1234567890 - - Returns: - str: 头像链接 - """ - match platform: - case "qq": - return f"http://q1.qlogo.cn/g?b=qq&nk={user_id}&s=640" - case "telegram": - return f"https://t.me/i/userpic/320/{user_id}.jpg" - case "discord": - return f"https://cdn.discordapp.com/avatars/{user_id}/" - case _: - return "" - - -async def get_group_icon(platform: str, group_id: str) -> str: - """ - 获取群组头像 - Args: - platform: qq, telegram, discord... - group_id: 1234567890 - - Returns: - str: 头像链接 - """ - match platform: - case "qq": - return f"http://p.qlogo.cn/gh/{group_id}/{group_id}/640" - case "telegram": - return f"https://t.me/c/{group_id}/" - case "discord": - return f"https://cdn.discordapp.com/icons/{group_id}/" - case _: - return "" +async def get_user_icon(platform: str, user_id: str) -> str: + """ + 获取用户头像 + Args: + platform: qq, telegram, discord... + user_id: 1234567890 + + Returns: + str: 头像链接 + """ + match platform: + case "qq": + return f"http://q1.qlogo.cn/g?b=qq&nk={user_id}&s=640" + case "telegram": + return f"https://t.me/i/userpic/320/{user_id}.jpg" + case "discord": + return f"https://cdn.discordapp.com/avatars/{user_id}/" + case _: + return "" + + +async def get_group_icon(platform: str, group_id: str) -> str: + """ + 获取群组头像 + Args: + platform: qq, telegram, discord... + group_id: 1234567890 + + Returns: + str: 头像链接 + """ + match platform: + case "qq": + return f"http://p.qlogo.cn/gh/{group_id}/{group_id}/640" + case "telegram": + return f"https://t.me/c/{group_id}/" + case "discord": + return f"https://cdn.discordapp.com/icons/{group_id}/" + case _: + return "" diff --git a/src/utils/message/__init__.py b/src/utils/message/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/liteyuki/utils/message/html_tool.py b/src/utils/message/html_tool.py similarity index 96% rename from liteyuki/utils/message/html_tool.py rename to src/utils/message/html_tool.py index c35b99a..13e8cf0 100644 --- a/liteyuki/utils/message/html_tool.py +++ b/src/utils/message/html_tool.py @@ -1,113 +1,113 @@ -import os.path -import time -from os import getcwd - -import aiofiles -import nonebot -from nonebot_plugin_htmlrender import * -from .tools import random_hex_string - - -async def html2image( - html: str, - wait: int = 0, -): - pass - - -async def template2html( - template: str, - templates: dict, -) -> str: - """ - Args: - template: str: 模板文件 - **templates: dict: 模板参数 - Returns: - HTML 正文 - """ - template_path = os.path.dirname(template) - template_name = os.path.basename(template) - return await template_to_html(template_path, template_name, **templates) - - -async def template2image( - template: str, - templates: dict, - pages=None, - wait: int = 0, - scale_factor: float = 1, - debug: bool = False, -) -> bytes: - """ - template -> html -> image - Args: - debug: 输入渲染好的 html - wait: 等待时间,单位秒 - pages: 页面参数 - template: str: 模板文件 - templates: dict: 模板参数 - scale_factor: 缩放因子,越高越清晰 - Returns: - 图片二进制数据 - """ - if pages is None: - pages = { - "viewport": { - "width" : 1080, - "height": 10 - }, - "base_url": f"file://{getcwd()}", - } - template_path = os.path.dirname(template) - template_name = os.path.basename(template) - - if debug: - # 重载资源 - raw_html = await template_to_html( - template_name=template_name, - template_path=template_path, - **templates, - ) - random_file_name = f"debug-{random_hex_string(6)}.html" - async with aiofiles.open(os.path.join(template_path, random_file_name), "w", encoding="utf-8") as f: - await f.write(raw_html) - nonebot.logger.info("Debug HTML: %s" % f"{random_file_name}") - - return await template_to_pic( - template_name=template_name, - template_path=template_path, - templates=templates, - pages=pages, - wait=wait, - device_scale_factor=scale_factor, - ) - - -async def url2image( - url: str, - wait: int = 0, - scale_factor: float = 1, - type: str = "png", - quality: int = 100, - **kwargs -) -> bytes: - """ - Args: - quality: - type: - url: str: URL - wait: int: 等待时间 - scale_factor: float: 缩放因子 - **kwargs: page 参数 - Returns: - 图片二进制数据 - """ - async with get_new_page(scale_factor) as page: - await page.goto(url) - await page.wait_for_timeout(wait) - return await page.screenshot( - full_page=True, - type=type, - quality=quality - ) +import os.path +import time +from os import getcwd + +import aiofiles +import nonebot +from nonebot_plugin_htmlrender import * +from .tools import random_hex_string + + +async def html2image( + html: str, + wait: int = 0, +): + pass + + +async def template2html( + template: str, + templates: dict, +) -> str: + """ + Args: + template: str: 模板文件 + **templates: dict: 模板参数 + Returns: + HTML 正文 + """ + template_path = os.path.dirname(template) + template_name = os.path.basename(template) + return await template_to_html(template_path, template_name, **templates) + + +async def template2image( + template: str, + templates: dict, + pages=None, + wait: int = 0, + scale_factor: float = 1, + debug: bool = False, +) -> bytes: + """ + template -> html -> image + Args: + debug: 输入渲染好的 html + wait: 等待时间,单位秒 + pages: 页面参数 + template: str: 模板文件 + templates: dict: 模板参数 + scale_factor: 缩放因子,越高越清晰 + Returns: + 图片二进制数据 + """ + if pages is None: + pages = { + "viewport": { + "width" : 1080, + "height": 10 + }, + "base_url": f"file://{getcwd()}", + } + template_path = os.path.dirname(template) + template_name = os.path.basename(template) + + if debug: + # 重载资源 + raw_html = await template_to_html( + template_name=template_name, + template_path=template_path, + **templates, + ) + random_file_name = f"debug-{random_hex_string(6)}.html" + async with aiofiles.open(os.path.join(template_path, random_file_name), "w", encoding="utf-8") as f: + await f.write(raw_html) + nonebot.logger.info("Debug HTML: %s" % f"{random_file_name}") + + return await template_to_pic( + template_name=template_name, + template_path=template_path, + templates=templates, + pages=pages, + wait=wait, + device_scale_factor=scale_factor, + ) + + +async def url2image( + url: str, + wait: int = 0, + scale_factor: float = 1, + type: str = "png", + quality: int = 100, + **kwargs +) -> bytes: + """ + Args: + quality: + type: + url: str: URL + wait: int: 等待时间 + scale_factor: float: 缩放因子 + **kwargs: page 参数 + Returns: + 图片二进制数据 + """ + async with get_new_page(scale_factor) as page: + await page.goto(url) + await page.wait_for_timeout(wait) + return await page.screenshot( + full_page=True, + type=type, + quality=quality + ) diff --git a/liteyuki/utils/message/markdown.py b/src/utils/message/markdown.py similarity index 96% rename from liteyuki/utils/message/markdown.py rename to src/utils/message/markdown.py index bed2073..35605ca 100644 --- a/liteyuki/utils/message/markdown.py +++ b/src/utils/message/markdown.py @@ -1,209 +1,209 @@ -import base64 -from io import BytesIO -from urllib.parse import quote - -import aiohttp -from PIL import Image - -from ..base.config import get_config -from ..base.data import LiteModel -from ..base.ly_typing import T_Bot - - -def escape_md(text: str) -> str: - """ - 转义Markdown特殊字符 - Args: - text: str: 文本 - - Returns: - str: 转义后文本 - """ - spacial_chars = r"\`*_{}[]()#+-.!" - for char in spacial_chars: - text = text.replace(char, "\\\\" + char) - return text.replace("\n", r"\n").replace('"', r'\\\"') - - -def escape_decorator(func): - def wrapper(text: str): - return func(escape_md(text)) - - return wrapper - - -def compile_md(comps: list[str]) -> str: - """ - 合成Markdown文本 - Args: - comps: list[str]: 组件列表 - - Returns: - str: 编译后文本 - """ - return "".join(comps) - - -class MarkdownComponent: - @staticmethod - def heading(text: str, level: int = 1) -> str: - """标题""" - assert 1 <= level <= 6, "标题级别应在 1-6 之间" - return f"{'#' * level} {text}\n" - - @staticmethod - def bold(text: str) -> str: - """粗体""" - return f"**{text}**" - - @staticmethod - def italic(text: str) -> str: - """斜体""" - return f"*{text}*" - - @staticmethod - def strike(text: str) -> str: - """删除线""" - return f"~~{text}~~" - - @staticmethod - def code(text: str) -> str: - """行内代码""" - return f"`{text}`" - - @staticmethod - def code_block(text: str, language: str = "") -> str: - """代码块""" - return f"```{language}\n{text}\n```\n" - - @staticmethod - def quote(text: str) -> str: - """引用""" - return f"> {text}\n\n" - - @staticmethod - def link(text: str, url: str, symbol: bool = True) -> str: - """ - 链接 - - Args: - text: 链接文本 - url: 链接地址 - symbol: 是否显示链接图标, mqqapi请使用False - """ - return f"[{'🔗' if symbol else ''}{text}]({url})" - - @staticmethod - def image(url: str, *, size: tuple[int, int]) -> str: - """ - 图片,本地图片不建议直接使用 - Args: - url: 图片链接 - size: 图片大小 - - Returns: - markdown格式的图片 - """ - return f"![image #{size[0]}px #{size[1]}px]({url})" - - @staticmethod - async def auto_image(image: str | bytes, bot: T_Bot) -> str: - """ - 自动获取图片大小 - Args: - image: 本地图片路径 | 图片url http/file | 图片bytes - bot: bot对象,用于上传图片到图床 - - Returns: - markdown格式的图片 - """ - if isinstance(image, bytes): - # 传入为二进制图片 - image_obj = Image.open(BytesIO(image)) - base64_string = base64.b64encode(image_obj.tobytes()).decode("utf-8") - url = await bot.call_api("upload_image", file=f"base64://{base64_string}") - size = image_obj.size - elif isinstance(image, str): - # 传入链接或本地路径 - if image.startswith("http"): - # 网络请求 - async with aiohttp.ClientSession() as session: - async with session.get(image) as resp: - image_data = await resp.read() - url = image - size = Image.open(BytesIO(image_data)).size - - else: - # 本地路径/file:// - image_obj = Image.open(image.replace("file://", "")) - base64_string = base64.b64encode(image_obj.tobytes()).decode("utf-8") - url = await bot.call_api("upload_image", file=f"base64://{base64_string}") - size = image_obj.size - else: - raise ValueError("图片类型错误") - - return MarkdownComponent.image(url, size=size) - - @staticmethod - def table(data: list[list[any]]) -> str: - """ - 表格 - Args: - data: 表格数据,二维列表 - Returns: - markdown格式的表格 - """ - # 表头 - table = "|".join(map(str, data[0])) + "\n" - table += "|".join([":-:" for _ in range(len(data[0]))]) + "\n" - # 表内容 - for row in data[1:]: - table += "|".join(map(str, row)) + "\n" - return table - - @staticmethod - def paragraph(text: str) -> str: - """ - 段落 - Args: - text: 段落内容 - Returns: - markdown格式的段落 - """ - return f"{text}\n" - - -class Mqqapi: - @staticmethod - @escape_decorator - def cmd(text: str, cmd: str, enter: bool = True, reply: bool = False, use_cmd_start: bool = True) -> str: - """ - 生成点击回调文本 - Args: - text: 显示内容 - cmd: 命令 - enter: 是否自动发送 - reply: 是否回复 - use_cmd_start: 是否使用配置的命令前缀 - - Returns: - [text](mqqapi://) markdown格式的可点击回调文本,类似于链接 - """ - - if use_cmd_start: - command_start = get_config("command_start", []) - if command_start: - # 若命令前缀不为空,则使用配置的第一个命令前缀 - cmd = f"{command_start[0]}{cmd}" - return f"[{text}](mqqapi://aio/inlinecmd?command={quote(cmd)}&reply={str(reply).lower()}&enter={str(enter).lower()})" - - -class RenderData(LiteModel): - label: str - visited_label: str - style: int - - -class Button(LiteModel): - id: int - render_data: RenderData +import base64 +from io import BytesIO +from urllib.parse import quote + +import aiohttp +from PIL import Image + +from ..base.config import get_config +from ..base.data import LiteModel +from ..base.ly_typing import T_Bot + + +def escape_md(text: str) -> str: + """ + 转义Markdown特殊字符 + Args: + text: str: 文本 + + Returns: + str: 转义后文本 + """ + spacial_chars = r"\`*_{}[]()#+-.!" + for char in spacial_chars: + text = text.replace(char, "\\\\" + char) + return text.replace("\n", r"\n").replace('"', r'\\\"') + + +def escape_decorator(func): + def wrapper(text: str): + return func(escape_md(text)) + + return wrapper + + +def compile_md(comps: list[str]) -> str: + """ + 合成Markdown文本 + Args: + comps: list[str]: 组件列表 + + Returns: + str: 编译后文本 + """ + return "".join(comps) + + +class MarkdownComponent: + @staticmethod + def heading(text: str, level: int = 1) -> str: + """标题""" + assert 1 <= level <= 6, "标题级别应在 1-6 之间" + return f"{'#' * level} {text}\n" + + @staticmethod + def bold(text: str) -> str: + """粗体""" + return f"**{text}**" + + @staticmethod + def italic(text: str) -> str: + """斜体""" + return f"*{text}*" + + @staticmethod + def strike(text: str) -> str: + """删除线""" + return f"~~{text}~~" + + @staticmethod + def code(text: str) -> str: + """行内代码""" + return f"`{text}`" + + @staticmethod + def code_block(text: str, language: str = "") -> str: + """代码块""" + return f"```{language}\n{text}\n```\n" + + @staticmethod + def quote(text: str) -> str: + """引用""" + return f"> {text}\n\n" + + @staticmethod + def link(text: str, url: str, symbol: bool = True) -> str: + """ + 链接 + + Args: + text: 链接文本 + url: 链接地址 + symbol: 是否显示链接图标, mqqapi请使用False + """ + return f"[{'🔗' if symbol else ''}{text}]({url})" + + @staticmethod + def image(url: str, *, size: tuple[int, int]) -> str: + """ + 图片,本地图片不建议直接使用 + Args: + url: 图片链接 + size: 图片大小 + + Returns: + markdown格式的图片 + """ + return f"![image #{size[0]}px #{size[1]}px]({url})" + + @staticmethod + async def auto_image(image: str | bytes, bot: T_Bot) -> str: + """ + 自动获取图片大小 + Args: + image: 本地图片路径 | 图片url http/file | 图片bytes + bot: bot对象,用于上传图片到图床 + + Returns: + markdown格式的图片 + """ + if isinstance(image, bytes): + # 传入为二进制图片 + image_obj = Image.open(BytesIO(image)) + base64_string = base64.b64encode(image_obj.tobytes()).decode("utf-8") + url = await bot.call_api("upload_image", file=f"base64://{base64_string}") + size = image_obj.size + elif isinstance(image, str): + # 传入链接或本地路径 + if image.startswith("http"): + # 网络请求 + async with aiohttp.ClientSession() as session: + async with session.get(image) as resp: + image_data = await resp.read() + url = image + size = Image.open(BytesIO(image_data)).size + + else: + # 本地路径/file:// + image_obj = Image.open(image.replace("file://", "")) + base64_string = base64.b64encode(image_obj.tobytes()).decode("utf-8") + url = await bot.call_api("upload_image", file=f"base64://{base64_string}") + size = image_obj.size + else: + raise ValueError("图片类型错误") + + return MarkdownComponent.image(url, size=size) + + @staticmethod + def table(data: list[list[any]]) -> str: + """ + 表格 + Args: + data: 表格数据,二维列表 + Returns: + markdown格式的表格 + """ + # 表头 + table = "|".join(map(str, data[0])) + "\n" + table += "|".join([":-:" for _ in range(len(data[0]))]) + "\n" + # 表内容 + for row in data[1:]: + table += "|".join(map(str, row)) + "\n" + return table + + @staticmethod + def paragraph(text: str) -> str: + """ + 段落 + Args: + text: 段落内容 + Returns: + markdown格式的段落 + """ + return f"{text}\n" + + +class Mqqapi: + @staticmethod + @escape_decorator + def cmd(text: str, cmd: str, enter: bool = True, reply: bool = False, use_cmd_start: bool = True) -> str: + """ + 生成点击回调文本 + Args: + text: 显示内容 + cmd: 命令 + enter: 是否自动发送 + reply: 是否回复 + use_cmd_start: 是否使用配置的命令前缀 + + Returns: + [text](mqqapi://) markdown格式的可点击回调文本,类似于链接 + """ + + if use_cmd_start: + command_start = get_config("command_start", []) + if command_start: + # 若命令前缀不为空,则使用配置的第一个命令前缀 + cmd = f"{command_start[0]}{cmd}" + return f"[{text}](mqqapi://aio/inlinecmd?command={quote(cmd)}&reply={str(reply).lower()}&enter={str(enter).lower()})" + + +class RenderData(LiteModel): + label: str + visited_label: str + style: int + + +class Button(LiteModel): + id: int + render_data: RenderData diff --git a/liteyuki/utils/message/message.py b/src/utils/message/message.py similarity index 97% rename from liteyuki/utils/message/message.py rename to src/utils/message/message.py index 1ef1163..6fbefa6 100644 --- a/liteyuki/utils/message/message.py +++ b/src/utils/message/message.py @@ -1,297 +1,297 @@ -import base64 -import io -from urllib.parse import quote - -import aiofiles -from PIL import Image -import aiohttp -import nonebot -from nonebot import require -from nonebot.adapters import satori -from nonebot.adapters.onebot import v11 -from typing import Any, Type - -from nonebot.internal.adapter import MessageSegment -from nonebot.internal.adapter.message import TM - -from .. import load_from_yaml -from ..base.ly_typing import T_Bot, T_Message, T_MessageEvent - -require("nonebot_plugin_htmlrender") -from nonebot_plugin_htmlrender import md_to_pic - -config = load_from_yaml("config.yml") - -can_send_markdown = {} # 用于存储机器人是否支持发送markdown消息,id->bool - - -class TencentBannedMarkdownError(BaseException): - pass - - -async def broadcast_to_superusers(message: str | T_Message, markdown: bool = False): - """广播消息给超级用户""" - for bot in nonebot.get_bots().values(): - for user_id in config.get("superusers", []): - if markdown: - await MarkdownMessage.send_md(message, bot, message_type="private", session_id=user_id) - else: - await bot.send_private_msg(user_id=user_id, message=message) - - -class MarkdownMessage: - @staticmethod - async def send_md( - markdown: str, - bot: T_Bot, *, - message_type: str = None, - session_id: str | int = None, - event: T_MessageEvent = None, - retry_as_image: bool = True, - **kwargs - ) -> dict[str, Any] | None: - """ - 发送Markdown消息,支持自动转为图片发送 - Args: - markdown: - bot: - message_type: - session_id: - event: - retry_as_image: 发送失败后是否尝试以图片形式发送,否则失败返回None - **kwargs: - - Returns: - - """ - formatted_md = v11.unescape(markdown).replace("\n", r"\n").replace('"', r'\\\"') - if event is not None and message_type is None: - if isinstance(event, satori.event.Event): - message_type = "private" if event.guild is None else "group" - group_id = event.guild.id if event.guild is not None else None - else: - assert event is not None - message_type = event.message_type - group_id = event.group_id if message_type == "group" else None - user_id = event.user.id if isinstance(event, satori.event.Event) else event.user_id - session_id = user_id if message_type == "private" else group_id - else: - pass - try: - raise TencentBannedMarkdownError("Tencent banned markdown") - forward_id = await bot.call_api( - "send_private_forward_msg", - messages=[ - { - "type": "node", - "data": { - "content": [ - { - "data": { - "content": "{\"content\":\"%s\"}" % formatted_md, - }, - "type": "markdown" - } - ], - "name": "[]", - "uin": bot.self_id - } - } - ], - user_id=bot.self_id - - ) - data = await bot.send_msg( - user_id=session_id, - group_id=session_id, - message_type=message_type, - message=[ - { - "type": "longmsg", - "data": { - "id": forward_id - } - }, - ], - **kwargs - ) - except BaseException as e: - nonebot.logger.error(f"send markdown error, retry as image: {e}") - # 发送失败,渲染为图片发送 - # if not retry_as_image: - # return None - - plain_markdown = markdown.replace("[🔗", "[") - md_image_bytes = await md_to_pic( - md=plain_markdown, - width=540, - device_scale_factor=4 - ) - if isinstance(bot, satori.Bot): - msg_seg = satori.MessageSegment.image(raw=md_image_bytes,mime="image/png") - data = await bot.send( - event=event, - message=msg_seg - ) - else: - data = await bot.send_msg( - message_type=message_type, - group_id=session_id, - user_id=session_id, - message=v11.MessageSegment.image(md_image_bytes), - ) - return data - - @staticmethod - async def send_image( - image: bytes | str, - bot: T_Bot, *, - message_type: str = None, - session_id: str | int = None, - event: T_MessageEvent = None, - **kwargs - ) -> dict: - """ - 发送单张装逼大图 - Args: - image: 图片字节流或图片本地路径,链接请使用Markdown.image_async方法获取后通过send_md发送 - bot: bot instance - message_type: message type - session_id: session id - event: event - kwargs: other arguments - Returns: - dict: response data - - """ - if isinstance(image, str): - async with aiofiles.open(image, "rb") as f: - image = await f.read() - method = 2 - # 1.轻雪图床方案 - # if method == 1: - # image_url = await liteyuki_api.upload_image(image) - # image_size = Image.open(io.BytesIO(image)).size - # image_md = Markdown.image(image_url, image_size) - # data = await Markdown.send_md(image_md, bot, message_type=message_type, session_id=session_id, event=event, - # retry_as_image=False, - # **kwargs) - - # Lagrange.OneBot方案 - if method == 2: - base64_string = base64.b64encode(image).decode("utf-8") - data = await bot.call_api("upload_image", file=f"base64://{base64_string}") - await MarkdownMessage.send_md(MarkdownMessage.image(data, Image.open(io.BytesIO(image)).size), bot, - event=event, message_type=message_type, - session_id=session_id, **kwargs) - - # 其他实现端方案 - else: - image_message_id = (await bot.send_private_msg( - user_id=bot.self_id, - message=[ - v11.MessageSegment.image(file=image) - ] - ))["message_id"] - image_url = (await bot.get_msg(message_id=image_message_id))["message"][0]["data"]["url"] - image_size = Image.open(io.BytesIO(image)).size - image_md = MarkdownMessage.image(image_url, image_size) - return await MarkdownMessage.send_md(image_md, bot, message_type=message_type, session_id=session_id, - event=event, **kwargs) - - if data is None: - data = await bot.send_msg( - message_type=message_type, - group_id=session_id, - user_id=session_id, - message=v11.MessageSegment.image(image), - **kwargs - ) - return data - - @staticmethod - async def get_image_url(image: bytes | str, bot: T_Bot) -> str: - """把图片上传到图床,返回链接 - Args: - bot: 发送的bot - image: 图片字节流或图片本地路径 - Returns: - """ - # 等林文轩修好Lagrange.OneBot再说 - - @staticmethod - def btn_cmd(name: str, cmd: str, reply: bool = False, enter: bool = True) -> str: - """生成点击回调按钮 - Args: - name: 按钮显示内容 - cmd: 发送的命令,已在函数内url编码,不需要再次编码 - reply: 是否以回复的方式发送消息 - enter: 自动发送消息则为True,否则填充到输入框 - - Returns: - markdown格式的可点击回调按钮 - - """ - if "" not in config.get("command_start", ["/"]) and config.get("alconna_use_command_start", False): - cmd = f"{config['command_start'][0]}{cmd}" - return f"[{name}](mqqapi://aio/inlinecmd?command={quote(cmd)}&reply={str(reply).lower()}&enter={str(enter).lower()})" - - @staticmethod - def btn_link(name: str, url: str) -> str: - """生成点击链接按钮 - Args: - name: 链接显示内容 - url: 链接地址 - - Returns: - markdown格式的链接 - - """ - return f"[🔗{name}]({url})" - - @staticmethod - def image(url: str, size: tuple[int, int]) -> str: - """构建图片链接 - Args: - size: - url: 图片链接 - - Returns: - markdown格式的图片 - - """ - return f"![image #{size[0]}px #{size[1]}px]({url})" - - @staticmethod - async def image_async(url: str) -> str: - """获取图片,自动请求获取大小,异步 - Args: - url: 图片链接 - - Returns: - 图片Markdown语法: ![image #{width}px #{height}px](link) - - """ - try: - async with aiohttp.ClientSession() as session: - async with session.get(url) as resp: - image = Image.open(io.BytesIO(await resp.read())) - return MarkdownMessage.image(url, image.size) - except Exception as e: - nonebot.logger.error(f"get image error: {e}") - return "[Image Error]" - - @staticmethod - def escape(text: str) -> str: - """转义特殊字符 - Args: - text: 需要转义的文本,请勿直接把整个markdown文本传入,否则会转义掉所有字符 - - Returns: - 转义后的文本 - - """ - chars = "*[]()~_`>#+=|{}.!" - for char in chars: - text = text.replace(char, f"\\\\{char}") - return text +import base64 +import io +from urllib.parse import quote + +import aiofiles +from PIL import Image +import aiohttp +import nonebot +from nonebot import require +from nonebot.adapters import satori +from nonebot.adapters.onebot import v11 +from typing import Any, Type + +from nonebot.internal.adapter import MessageSegment +from nonebot.internal.adapter.message import TM + +from .. import load_from_yaml +from ..base.ly_typing import T_Bot, T_Message, T_MessageEvent + +require("nonebot_plugin_htmlrender") +from nonebot_plugin_htmlrender import md_to_pic + +config = load_from_yaml("config.yml") + +can_send_markdown = {} # 用于存储机器人是否支持发送markdown消息,id->bool + + +class TencentBannedMarkdownError(BaseException): + pass + + +async def broadcast_to_superusers(message: str | T_Message, markdown: bool = False): + """广播消息给超级用户""" + for bot in nonebot.get_bots().values(): + for user_id in config.get("superusers", []): + if markdown: + await MarkdownMessage.send_md(message, bot, message_type="private", session_id=user_id) + else: + await bot.send_private_msg(user_id=user_id, message=message) + + +class MarkdownMessage: + @staticmethod + async def send_md( + markdown: str, + bot: T_Bot, *, + message_type: str = None, + session_id: str | int = None, + event: T_MessageEvent = None, + retry_as_image: bool = True, + **kwargs + ) -> dict[str, Any] | None: + """ + 发送Markdown消息,支持自动转为图片发送 + Args: + markdown: + bot: + message_type: + session_id: + event: + retry_as_image: 发送失败后是否尝试以图片形式发送,否则失败返回None + **kwargs: + + Returns: + + """ + formatted_md = v11.unescape(markdown).replace("\n", r"\n").replace('"', r'\\\"') + if event is not None and message_type is None: + if isinstance(event, satori.event.Event): + message_type = "private" if event.guild is None else "group" + group_id = event.guild.id if event.guild is not None else None + else: + assert event is not None + message_type = event.message_type + group_id = event.group_id if message_type == "group" else None + user_id = event.user.id if isinstance(event, satori.event.Event) else event.user_id + session_id = user_id if message_type == "private" else group_id + else: + pass + try: + raise TencentBannedMarkdownError("Tencent banned markdown") + forward_id = await bot.call_api( + "send_private_forward_msg", + messages=[ + { + "type": "node", + "data": { + "content": [ + { + "data": { + "content": "{\"content\":\"%s\"}" % formatted_md, + }, + "type": "markdown" + } + ], + "name": "[]", + "uin": bot.self_id + } + } + ], + user_id=bot.self_id + + ) + data = await bot.send_msg( + user_id=session_id, + group_id=session_id, + message_type=message_type, + message=[ + { + "type": "longmsg", + "data": { + "id": forward_id + } + }, + ], + **kwargs + ) + except BaseException as e: + nonebot.logger.error(f"send markdown error, retry as image: {e}") + # 发送失败,渲染为图片发送 + # if not retry_as_image: + # return None + + plain_markdown = markdown.replace("[🔗", "[") + md_image_bytes = await md_to_pic( + md=plain_markdown, + width=540, + device_scale_factor=4 + ) + if isinstance(bot, satori.Bot): + msg_seg = satori.MessageSegment.image(raw=md_image_bytes,mime="image/png") + data = await bot.send( + event=event, + message=msg_seg + ) + else: + data = await bot.send_msg( + message_type=message_type, + group_id=session_id, + user_id=session_id, + message=v11.MessageSegment.image(md_image_bytes), + ) + return data + + @staticmethod + async def send_image( + image: bytes | str, + bot: T_Bot, *, + message_type: str = None, + session_id: str | int = None, + event: T_MessageEvent = None, + **kwargs + ) -> dict: + """ + 发送单张装逼大图 + Args: + image: 图片字节流或图片本地路径,链接请使用Markdown.image_async方法获取后通过send_md发送 + bot: bot instance + message_type: message type + session_id: session id + event: event + kwargs: other arguments + Returns: + dict: response data + + """ + if isinstance(image, str): + async with aiofiles.open(image, "rb") as f: + image = await f.read() + method = 2 + # 1.轻雪图床方案 + # if method == 1: + # image_url = await liteyuki_api.upload_image(image) + # image_size = Image.open(io.BytesIO(image)).size + # image_md = Markdown.image(image_url, image_size) + # data = await Markdown.send_md(image_md, bot, message_type=message_type, session_id=session_id, event=event, + # retry_as_image=False, + # **kwargs) + + # Lagrange.OneBot方案 + if method == 2: + base64_string = base64.b64encode(image).decode("utf-8") + data = await bot.call_api("upload_image", file=f"base64://{base64_string}") + await MarkdownMessage.send_md(MarkdownMessage.image(data, Image.open(io.BytesIO(image)).size), bot, + event=event, message_type=message_type, + session_id=session_id, **kwargs) + + # 其他实现端方案 + else: + image_message_id = (await bot.send_private_msg( + user_id=bot.self_id, + message=[ + v11.MessageSegment.image(file=image) + ] + ))["message_id"] + image_url = (await bot.get_msg(message_id=image_message_id))["message"][0]["data"]["url"] + image_size = Image.open(io.BytesIO(image)).size + image_md = MarkdownMessage.image(image_url, image_size) + return await MarkdownMessage.send_md(image_md, bot, message_type=message_type, session_id=session_id, + event=event, **kwargs) + + if data is None: + data = await bot.send_msg( + message_type=message_type, + group_id=session_id, + user_id=session_id, + message=v11.MessageSegment.image(image), + **kwargs + ) + return data + + @staticmethod + async def get_image_url(image: bytes | str, bot: T_Bot) -> str: + """把图片上传到图床,返回链接 + Args: + bot: 发送的bot + image: 图片字节流或图片本地路径 + Returns: + """ + # 等林文轩修好Lagrange.OneBot再说 + + @staticmethod + def btn_cmd(name: str, cmd: str, reply: bool = False, enter: bool = True) -> str: + """生成点击回调按钮 + Args: + name: 按钮显示内容 + cmd: 发送的命令,已在函数内url编码,不需要再次编码 + reply: 是否以回复的方式发送消息 + enter: 自动发送消息则为True,否则填充到输入框 + + Returns: + markdown格式的可点击回调按钮 + + """ + if "" not in config.get("command_start", ["/"]) and config.get("alconna_use_command_start", False): + cmd = f"{config['command_start'][0]}{cmd}" + return f"[{name}](mqqapi://aio/inlinecmd?command={quote(cmd)}&reply={str(reply).lower()}&enter={str(enter).lower()})" + + @staticmethod + def btn_link(name: str, url: str) -> str: + """生成点击链接按钮 + Args: + name: 链接显示内容 + url: 链接地址 + + Returns: + markdown格式的链接 + + """ + return f"[🔗{name}]({url})" + + @staticmethod + def image(url: str, size: tuple[int, int]) -> str: + """构建图片链接 + Args: + size: + url: 图片链接 + + Returns: + markdown格式的图片 + + """ + return f"![image #{size[0]}px #{size[1]}px]({url})" + + @staticmethod + async def image_async(url: str) -> str: + """获取图片,自动请求获取大小,异步 + Args: + url: 图片链接 + + Returns: + 图片Markdown语法: ![image #{width}px #{height}px](link) + + """ + try: + async with aiohttp.ClientSession() as session: + async with session.get(url) as resp: + image = Image.open(io.BytesIO(await resp.read())) + return MarkdownMessage.image(url, image.size) + except Exception as e: + nonebot.logger.error(f"get image error: {e}") + return "[Image Error]" + + @staticmethod + def escape(text: str) -> str: + """转义特殊字符 + Args: + text: 需要转义的文本,请勿直接把整个markdown文本传入,否则会转义掉所有字符 + + Returns: + 转义后的文本 + + """ + chars = "*[]()~_`>#+=|{}.!" + for char in chars: + text = text.replace(char, f"\\\\{char}") + return text diff --git a/liteyuki/utils/message/string_tool.py b/src/utils/message/string_tool.py similarity index 95% rename from liteyuki/utils/message/string_tool.py rename to src/utils/message/string_tool.py index 32cf9a0..6193bd5 100644 --- a/liteyuki/utils/message/string_tool.py +++ b/src/utils/message/string_tool.py @@ -1,101 +1,101 @@ -import nonebot - - -def convert_duration(text: str, default) -> float: - """ - 转换自然语言时间为秒数 - Args: - text: 1d2h3m - default: 出错时返回 - - Returns: - float: 总秒数 - """ - units = { - "d" : 86400, - "h" : 3600, - "m" : 60, - "s" : 1, - "ms": 0.001 - } - - duration = 0 - current_number = '' - current_unit = '' - try: - for char in text: - if char.isdigit(): - current_number += char - else: - if current_number: - duration += int(current_number) * units[current_unit] - current_number = '' - if char in units: - current_unit = char - else: - current_unit = '' - - if current_number: - duration += int(current_number) * units[current_unit] - - return duration - - except BaseException as e: - nonebot.logger.info(f"convert_duration error: {e}") - return default - - -def convert_time_to_seconds(time_str): - """转换自然语言时长为秒数 - Args: - time_str: 1d2m3s - - Returns: - - """ - seconds = 0 - current_number = '' - - for char in time_str: - if char.isdigit() or char == '.': - current_number += char - elif char == 'd': - seconds += float(current_number) * 24 * 60 * 60 - current_number = '' - elif char == 'h': - seconds += float(current_number) * 60 * 60 - current_number = '' - elif char == 'm': - seconds += float(current_number) * 60 - current_number = '' - elif char == 's': - seconds += float(current_number) - current_number = '' - - return int(seconds) - - -def convert_seconds_to_time(seconds): - """转换秒数为自然语言时长 - Args: - seconds: 10000 - - Returns: - - """ - d = seconds // (24 * 60 * 60) - h = (seconds % (24 * 60 * 60)) // (60 * 60) - m = (seconds % (60 * 60)) // 60 - s = seconds % 60 - - # 若值为0则不显示 - time_str = '' - if d: - time_str += f"{d}d" - if h: - time_str += f"{h}h" - if m: - time_str += f"{m}m" - if not time_str: - time_str = f"{s}s" - return time_str +import nonebot + + +def convert_duration(text: str, default) -> float: + """ + 转换自然语言时间为秒数 + Args: + text: 1d2h3m + default: 出错时返回 + + Returns: + float: 总秒数 + """ + units = { + "d" : 86400, + "h" : 3600, + "m" : 60, + "s" : 1, + "ms": 0.001 + } + + duration = 0 + current_number = '' + current_unit = '' + try: + for char in text: + if char.isdigit(): + current_number += char + else: + if current_number: + duration += int(current_number) * units[current_unit] + current_number = '' + if char in units: + current_unit = char + else: + current_unit = '' + + if current_number: + duration += int(current_number) * units[current_unit] + + return duration + + except BaseException as e: + nonebot.logger.info(f"convert_duration error: {e}") + return default + + +def convert_time_to_seconds(time_str): + """转换自然语言时长为秒数 + Args: + time_str: 1d2m3s + + Returns: + + """ + seconds = 0 + current_number = '' + + for char in time_str: + if char.isdigit() or char == '.': + current_number += char + elif char == 'd': + seconds += float(current_number) * 24 * 60 * 60 + current_number = '' + elif char == 'h': + seconds += float(current_number) * 60 * 60 + current_number = '' + elif char == 'm': + seconds += float(current_number) * 60 + current_number = '' + elif char == 's': + seconds += float(current_number) + current_number = '' + + return int(seconds) + + +def convert_seconds_to_time(seconds): + """转换秒数为自然语言时长 + Args: + seconds: 10000 + + Returns: + + """ + d = seconds // (24 * 60 * 60) + h = (seconds % (24 * 60 * 60)) // (60 * 60) + m = (seconds % (60 * 60)) // 60 + s = seconds % 60 + + # 若值为0则不显示 + time_str = '' + if d: + time_str += f"{d}d" + if h: + time_str += f"{h}h" + if m: + time_str += f"{m}m" + if not time_str: + time_str = f"{s}s" + return time_str diff --git a/liteyuki/utils/message/tools.py b/src/utils/message/tools.py similarity index 95% rename from liteyuki/utils/message/tools.py rename to src/utils/message/tools.py index e458ee2..7d05113 100644 --- a/liteyuki/utils/message/tools.py +++ b/src/utils/message/tools.py @@ -1,99 +1,99 @@ -import random -from importlib.metadata import PackageNotFoundError, version - - -def clamp(value: float, min_value: float, max_value: float) -> float | int: - """将值限制在最小值和最大值之间 - - Args: - value (float): 要限制的值 - min_value (float): 最小值 - max_value (float): 最大值 - - Returns: - float: 限制后的值 - """ - return max(min(value, max_value), min_value) - - -def convert_size(size: int, precision: int = 2, add_unit: bool = True, suffix: str = " XiB") -> str | float: - """把字节数转换为人类可读的字符串,计算正负 - - Args: - - add_unit: 是否添加单位,False后则suffix无效 - suffix: XiB或XB - precision: 浮点数的小数点位数 - size (int): 字节数 - - Returns: - - str: The human-readable string, e.g. "1.23 GB". - """ - is_negative = size < 0 - size = abs(size) - for unit in ("", "K", "M", "G", "T", "P", "E", "Z"): - if size < 1024: - break - size /= 1024 - if is_negative: - size = -size - if add_unit: - return f"{size:.{precision}f}{suffix.replace('X', unit)}" - else: - return size - - -def keywords_in_text(keywords: list[str], text: str, all_matched: bool) -> bool: - """ - 检查关键词是否在文本中 - Args: - keywords: 关键词列表 - text: 文本 - all_matched: 是否需要全部匹配 - - Returns: - - """ - if all_matched: - for keyword in keywords: - if keyword not in text: - return False - return True - else: - for keyword in keywords: - if keyword in text: - return True - return False - - -def check_for_package(package_name: str) -> bool: - try: - version(package_name) - return True - except PackageNotFoundError: - return False - - -def random_ascii_string(length: int) -> str: - """ - 生成随机ASCII字符串 - Args: - length: - - Returns: - - """ - return "".join([chr(random.randint(33, 126)) for _ in range(length)]) - - -def random_hex_string(length: int) -> str: - """ - 生成随机十六进制字符串 - Args: - length: - - Returns: - - """ - return "".join([random.choice("0123456789abcdef") for _ in range(length)]) +import random +from importlib.metadata import PackageNotFoundError, version + + +def clamp(value: float, min_value: float, max_value: float) -> float | int: + """将值限制在最小值和最大值之间 + + Args: + value (float): 要限制的值 + min_value (float): 最小值 + max_value (float): 最大值 + + Returns: + float: 限制后的值 + """ + return max(min(value, max_value), min_value) + + +def convert_size(size: int, precision: int = 2, add_unit: bool = True, suffix: str = " XiB") -> str | float: + """把字节数转换为人类可读的字符串,计算正负 + + Args: + + add_unit: 是否添加单位,False后则suffix无效 + suffix: XiB或XB + precision: 浮点数的小数点位数 + size (int): 字节数 + + Returns: + + str: The human-readable string, e.g. "1.23 GB". + """ + is_negative = size < 0 + size = abs(size) + for unit in ("", "K", "M", "G", "T", "P", "E", "Z"): + if size < 1024: + break + size /= 1024 + if is_negative: + size = -size + if add_unit: + return f"{size:.{precision}f}{suffix.replace('X', unit)}" + else: + return size + + +def keywords_in_text(keywords: list[str], text: str, all_matched: bool) -> bool: + """ + 检查关键词是否在文本中 + Args: + keywords: 关键词列表 + text: 文本 + all_matched: 是否需要全部匹配 + + Returns: + + """ + if all_matched: + for keyword in keywords: + if keyword not in text: + return False + return True + else: + for keyword in keywords: + if keyword in text: + return True + return False + + +def check_for_package(package_name: str) -> bool: + try: + version(package_name) + return True + except PackageNotFoundError: + return False + + +def random_ascii_string(length: int) -> str: + """ + 生成随机ASCII字符串 + Args: + length: + + Returns: + + """ + return "".join([chr(random.randint(33, 126)) for _ in range(length)]) + + +def random_hex_string(length: int) -> str: + """ + 生成随机十六进制字符串 + Args: + length: + + Returns: + + """ + return "".join([random.choice("0123456789abcdef") for _ in range(length)]) diff --git a/src/utils/message/union.py b/src/utils/message/union.py new file mode 100644 index 0000000..e69de29 diff --git a/src/utils/nb/__init__.py b/src/utils/nb/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/liteyuki/utils/network/__init__.py b/src/utils/network/__init__.py similarity index 94% rename from liteyuki/utils/network/__init__.py rename to src/utils/network/__init__.py index 81521c5..62c4eac 100644 --- a/liteyuki/utils/network/__init__.py +++ b/src/utils/network/__init__.py @@ -1,15 +1,15 @@ -from aiohttp import ClientSession - - -async def simple_get(url: str) -> str: - """ - 简单异步get请求 - Args: - url: - - Returns: - - """ - async with ClientSession() as session: - async with session.get(url) as resp: - return await resp.text() +from aiohttp import ClientSession + + +async def simple_get(url: str) -> str: + """ + 简单异步get请求 + Args: + url: + + Returns: + + """ + async with ClientSession() as session: + async with session.get(url) as resp: + return await resp.text() diff --git a/liteyuki/utils/satori_utils/__init__.py b/src/utils/satori_utils/__init__.py similarity index 97% rename from liteyuki/utils/satori_utils/__init__.py rename to src/utils/satori_utils/__init__.py index 192714b..33e7964 100644 --- a/liteyuki/utils/satori_utils/__init__.py +++ b/src/utils/satori_utils/__init__.py @@ -1,3 +1,3 @@ -from .user_info import user_infos -from .count_friends import count_friends -from .count_groups import count_groups +from .user_info import user_infos +from .count_friends import count_friends +from .count_groups import count_groups diff --git a/liteyuki/utils/satori_utils/count_friends.py b/src/utils/satori_utils/count_friends.py similarity index 96% rename from liteyuki/utils/satori_utils/count_friends.py rename to src/utils/satori_utils/count_friends.py index 3f7b18e..2752aac 100644 --- a/liteyuki/utils/satori_utils/count_friends.py +++ b/src/utils/satori_utils/count_friends.py @@ -1,13 +1,13 @@ -from nonebot.adapters import satori - - -async def count_friends(bot: satori.Bot) -> int: - cnt: int = 0 - - friend_response = await bot.friend_list() - while friend_response.next is not None: - cnt += len(friend_response.data) - friend_response = await bot.friend_list(next_token=friend_response.next) - - cnt += len(friend_response.data) - return cnt - 1 +from nonebot.adapters import satori + + +async def count_friends(bot: satori.Bot) -> int: + cnt: int = 0 + + friend_response = await bot.friend_list() + while friend_response.next is not None: + cnt += len(friend_response.data) + friend_response = await bot.friend_list(next_token=friend_response.next) + + cnt += len(friend_response.data) + return cnt - 1 diff --git a/liteyuki/utils/satori_utils/count_groups.py b/src/utils/satori_utils/count_groups.py similarity index 96% rename from liteyuki/utils/satori_utils/count_groups.py rename to src/utils/satori_utils/count_groups.py index 789a40b..4cd30bd 100644 --- a/liteyuki/utils/satori_utils/count_groups.py +++ b/src/utils/satori_utils/count_groups.py @@ -1,13 +1,13 @@ -from nonebot.adapters import satori - - -async def count_groups(bot: satori.Bot) -> int: - cnt: int = 0 - - group_response = await bot.guild_list() - while group_response.next is not None: - cnt += len(group_response.data) - group_response = await bot.friend_list(next_token=group_response.next) - - cnt += len(group_response.data) - return cnt - 1 +from nonebot.adapters import satori + + +async def count_groups(bot: satori.Bot) -> int: + cnt: int = 0 + + group_response = await bot.guild_list() + while group_response.next is not None: + cnt += len(group_response.data) + group_response = await bot.friend_list(next_token=group_response.next) + + cnt += len(group_response.data) + return cnt - 1 diff --git a/liteyuki/utils/satori_utils/user_info.py b/src/utils/satori_utils/user_info.py similarity index 97% rename from liteyuki/utils/satori_utils/user_info.py rename to src/utils/satori_utils/user_info.py index 6500e71..4518429 100644 --- a/liteyuki/utils/satori_utils/user_info.py +++ b/src/utils/satori_utils/user_info.py @@ -1,64 +1,64 @@ -import nonebot - -from nonebot.adapters import satori -from nonebot.adapters.satori.models import User - - -class UserInfo: - user_infos: dict = {} - - async def load_friends(self, bot: satori.Bot): - nonebot.logger.info("Update user info from friends") - friend_response = await bot.friend_list() - while friend_response.next is not None: - for i in friend_response.data: - i: User = i - self.user_infos[str(i.id)] = i - friend_response = await bot.friend_list(next_token=friend_response.next) - - for i in friend_response.data: - i: User = i - self.user_infos[str(i.id)] = i - - nonebot.logger.info("Finish update user info") - - async def get(self, uid: int | str) -> User | None: - try: - return self.user_infos[str(uid)] - except KeyError: - return None - - async def put(self, user: User) -> bool: - """ - 向用户信息数据库中添加/修改一项,返回值仅代表数据是否变更,不代表操作是否成功 - Args: - user: 要加入数据库的用户 - - Returns: 当数据库中用户信息发生变化时返回 True, 否则返回 False - - """ - try: - old_user: User = self.user_infos[str(user.id)] - attr_edited = False - if user.name is not None: - if old_user.name != user.name: - attr_edited = True - self.user_infos[str(user.id)].name = user.name - if user.nick is not None: - if old_user.nick != user.nick: - attr_edited = True - self.user_infos[str(user.id)].nick = user.nick - if user.avatar is not None: - if old_user.avatar != user.avatar: - attr_edited = True - self.user_infos[str(user.id)].avatar = user.avatar - return attr_edited - except KeyError: - self.user_infos[str(user.id)] = user - return True - - def __init__(self): - pass - - -user_infos = UserInfo() +import nonebot + +from nonebot.adapters import satori +from nonebot.adapters.satori.models import User + + +class UserInfo: + user_infos: dict = {} + + async def load_friends(self, bot: satori.Bot): + nonebot.logger.info("Update user info from friends") + friend_response = await bot.friend_list() + while friend_response.next is not None: + for i in friend_response.data: + i: User = i + self.user_infos[str(i.id)] = i + friend_response = await bot.friend_list(next_token=friend_response.next) + + for i in friend_response.data: + i: User = i + self.user_infos[str(i.id)] = i + + nonebot.logger.info("Finish update user info") + + async def get(self, uid: int | str) -> User | None: + try: + return self.user_infos[str(uid)] + except KeyError: + return None + + async def put(self, user: User) -> bool: + """ + 向用户信息数据库中添加/修改一项,返回值仅代表数据是否变更,不代表操作是否成功 + Args: + user: 要加入数据库的用户 + + Returns: 当数据库中用户信息发生变化时返回 True, 否则返回 False + + """ + try: + old_user: User = self.user_infos[str(user.id)] + attr_edited = False + if user.name is not None: + if old_user.name != user.name: + attr_edited = True + self.user_infos[str(user.id)].name = user.name + if user.nick is not None: + if old_user.nick != user.nick: + attr_edited = True + self.user_infos[str(user.id)].nick = user.nick + if user.avatar is not None: + if old_user.avatar != user.avatar: + attr_edited = True + self.user_infos[str(user.id)].avatar = user.avatar + return attr_edited + except KeyError: + self.user_infos[str(user.id)] = user + return True + + def __init__(self): + pass + + +user_infos = UserInfo()