11<script setup lang="ts">
22import { ProjectService } from ' @/client/api'
3- import { ref } from ' vue'
3+ import { computed , ref } from ' vue'
44import { useAddBotStore } from ' .'
55
66const store = useAddBotStore ()
77
88const inputValue = ref (' ' )
9+ const discoveredOnlyPluginDirs = computed (() =>
10+ store .discoveredPluginDirs .filter ((dir ) => ! store .pluginDirs .includes (dir ))
11+ )
912
1013const search = async () => {
1114 if (! inputValue .value ) {
@@ -28,6 +31,7 @@ const search = async () => {
2831 store .adapters = detail .adapters
2932 store .plugins = detail .plugins
3033 store .pluginDirs = detail .plugin_dirs
34+ store .discoveredPluginDirs = detail .discovered_plugin_dirs ?? []
3135 store .builtinPlugins = detail .builtin_plugins
3236 store .projectPath = inputValue .value
3337
@@ -96,7 +100,7 @@ const search = async () => {
96100 }"
97101 >
98102 <span class =" font-semibold" >
99- {{ store.plugins.length ? '已有插件 :' : '未找到插件 ' }}
103+ {{ store.plugins.length ? '已配置插件 :' : '未配置插件 ' }}
100104 </span >
101105 <div class =" flex items-center flex-wrap gap-2" >
102106 <span
@@ -108,11 +112,16 @@ const search = async () => {
108112 {{ plugin }}
109113 </span >
110114 </div >
115+ <span v-if =" !store.plugins.length" class =" text-sm opacity-70" >
116+ 这里显示的是 <span class =" font-mono" >tool.nonebot.plugins</span > 里声明的插件;
117+ 大多数通过 pip 安装的插件本体都在项目的
118+ <span class =" font-mono" >.venv/site-packages</span > 中,而不是本地插件目录。
119+ </span >
111120 </div >
112121
113122 <div class =" flex flex-col gap-2 rounded-lg p-4 bg-base-200" >
114123 <span class =" font-semibold" >
115- {{ store.pluginDirs.length ? '已有插件目录 :' : '未配置插件目录 ' }}
124+ {{ store.pluginDirs.length ? '已声明本地插件目录 :' : '未声明本地插件目录 ' }}
116125 </span >
117126 <div v-if =" store.pluginDirs.length" class =" flex items-center flex-wrap gap-2" >
118127 <span
@@ -125,8 +134,33 @@ const search = async () => {
125134 </span >
126135 </div >
127136 <span v-else class =" text-sm opacity-70" >
128- 当前项目没有在配置里声明 <span class =" font-mono" >plugin_dirs</span >,这不影响继续导入;
129- 已安装插件仍会按项目配置读取。
137+ 当前项目没有在 <span class =" font-mono" >tool.nonebot.plugin_dirs</span > 中声明本地插件目录。
138+ 这不影响继续导入,也不代表项目没有安装插件。
139+ </span >
140+ </div >
141+
142+ <div
143+ :class =" {
144+ 'flex flex-col gap-2 rounded-lg p-4 bg-base-200': true,
145+ 'opacity-50': !discoveredOnlyPluginDirs.length
146+ }"
147+ >
148+ <span class =" font-semibold" >
149+ {{ discoveredOnlyPluginDirs.length ? '扫描到的候选本地插件目录:' : '未扫描到额外候选目录' }}
150+ </span >
151+ <div v-if =" discoveredOnlyPluginDirs.length" class =" flex items-center flex-wrap gap-2" >
152+ <span
153+ v-for =" plugin_dir in discoveredOnlyPluginDirs"
154+ :key =" plugin_dir"
155+ role =" button"
156+ class =" badge badge-lg !bg-base-100"
157+ >
158+ {{ plugin_dir }}
159+ </span >
160+ </div >
161+ <span v-if =" discoveredOnlyPluginDirs.length" class =" text-sm opacity-70" >
162+ 这些目录是根据常见目录结构自动识别出来的,仅供你核对;
163+ 它们当前并不等于项目已经声明的 <span class =" font-mono" >plugin_dirs</span > 配置。
130164 </span >
131165 </div >
132166 </div >
0 commit comments