结构调整
视频解析多图/多媒体结构 消息体适配
This commit is contained in:
@@ -33,6 +33,7 @@ interface CatalogPlugin {
|
||||
name: string
|
||||
description: string
|
||||
usage: string
|
||||
type?: string
|
||||
enabled: boolean
|
||||
chat: string[]
|
||||
groups: Record<string, GroupOverride>
|
||||
@@ -304,6 +305,11 @@ export default function PluginsPage() {
|
||||
<div className="min-w-0 flex-1">
|
||||
<div className="flex flex-wrap items-center gap-2">
|
||||
<span className="text-sm font-semibold text-slate-800">{p.name}</span>
|
||||
{p.type && (
|
||||
<span className={'inline-block rounded-full text-xs px-2 py-0.5 ' + (p.type === 'library' ? 'bg-violet-50 text-violet-600' : 'bg-sky-50 text-sky-600')}>
|
||||
{p.type === 'library' ? 'lib' : 'app'}
|
||||
</span>
|
||||
)}
|
||||
{p.has_web && <span className="inline-block rounded-full bg-indigo-50 text-indigo-600 text-xs px-2 py-0.5">Web</span>}
|
||||
{p.has_config && <span className="inline-block rounded-full bg-amber-50 text-amber-600 text-xs px-2 py-0.5">配置</span>}
|
||||
<span className={'inline-block rounded-full text-xs px-2 py-0.5 ' + (on ? 'bg-emerald-50 text-emerald-600' : 'bg-slate-100 text-slate-400')}>{on ? '启用' : '停用'}</span>
|
||||
|
||||
@@ -17,6 +17,8 @@ interface BotConfigData {
|
||||
debug: boolean
|
||||
log_level: string
|
||||
log_level_options: string[]
|
||||
log_max_mb: number
|
||||
log_max_mb_default: number
|
||||
source: string
|
||||
notice?: string
|
||||
applied?: string[]
|
||||
@@ -46,6 +48,7 @@ export default function SettingsPage() {
|
||||
const [cfgNickname, setCfgNickname] = useState('')
|
||||
const [cfgDebug, setCfgDebug] = useState(false)
|
||||
const [cfgLogLevel, setCfgLogLevel] = useState('INFO')
|
||||
const [cfgLogMaxMb, setCfgLogMaxMb] = useState('20')
|
||||
const [cfgBusy, setCfgBusy] = useState(false)
|
||||
const [cfgLoaded, setCfgLoaded] = useState(false)
|
||||
|
||||
@@ -64,6 +67,7 @@ export default function SettingsPage() {
|
||||
setCfgNickname((c.nickname || []).join(', '))
|
||||
setCfgDebug(!!c.debug)
|
||||
setCfgLogLevel(c.log_level || 'INFO')
|
||||
setCfgLogMaxMb(String(c.log_max_mb ?? c.log_max_mb_default ?? 20))
|
||||
setCfgLoaded(true)
|
||||
} catch (e: any) {
|
||||
setCfgLoaded(false)
|
||||
@@ -95,18 +99,25 @@ export default function SettingsPage() {
|
||||
const saveBotConfig = async () => {
|
||||
setCfgBusy(true)
|
||||
try {
|
||||
const values = {
|
||||
const values: Record<string, any> = {
|
||||
superusers: (cfgSuperusers || '').split(/[,\s]+/).map(s => s.trim()).filter(Boolean),
|
||||
nickname: (cfgNickname || '').split(/[,\s]+/).map(s => s.trim()).filter(Boolean),
|
||||
debug: cfgDebug,
|
||||
log_level: cfgLogLevel,
|
||||
}
|
||||
const logMaxMbRaw = cfgLogMaxMb.trim()
|
||||
if (logMaxMbRaw !== '') {
|
||||
const logMaxMb = parseInt(logMaxMbRaw, 10)
|
||||
if (!(logMaxMb > 0)) { toast.warning('日志清理大小需为正整数(MB)'); setCfgBusy(false); return }
|
||||
values.log_max_mb = logMaxMb
|
||||
}
|
||||
const r = await hubBotConfigSave(values)
|
||||
setBotCfg(r)
|
||||
setCfgSuperusers((r.superusers || []).join(', '))
|
||||
setCfgNickname((r.nickname || []).join(', '))
|
||||
setCfgDebug(!!r.debug)
|
||||
setCfgLogLevel(r.log_level || 'INFO')
|
||||
setCfgLogMaxMb(String(r.log_max_mb ?? r.log_max_mb_default ?? 20))
|
||||
toast.success('BOT 配置已保存')
|
||||
if (r.notice) toast.info(r.notice)
|
||||
} catch (e: any) {
|
||||
@@ -199,6 +210,7 @@ export default function SettingsPage() {
|
||||
<p className="text-xs text-slate-400 mb-4">
|
||||
SUPERUSERS / NICKNAME 支持逗号或空格分隔;保存后会写入 .env 并尽量热应用。
|
||||
部分插件在启动时缓存了这些值,完全生效建议保存后重启 bot。
|
||||
日志清理大小保存后仅在下一个检查周期(约 1 分钟)内生效,无需重启。
|
||||
</p>
|
||||
<div className="grid gap-4 md:grid-cols-2">
|
||||
<TextField>
|
||||
@@ -230,6 +242,11 @@ export default function SettingsPage() {
|
||||
</Select>
|
||||
<span className="text-xs text-slate-400">日志等级(INFO 为默认)</span>
|
||||
</div>
|
||||
<TextField>
|
||||
<Label>日志清理大小 (MB)</Label>
|
||||
<Input type="number" min={1} value={cfgLogMaxMb} onChange={e => setCfgLogMaxMb(e.target.value)} placeholder="如: 20" />
|
||||
<span className="text-xs text-slate-400">_bot_run.log 超过该大小即清空(不归档)</span>
|
||||
</TextField>
|
||||
</div>
|
||||
<div className="mt-4 flex items-center gap-3">
|
||||
<Button isDisabled={cfgBusy || !cfgLoaded || !!restarting} onPress={saveBotConfig}>{cfgBusy ? '保存中…' : '保存 BOT 配置'}</Button>
|
||||
|
||||
Reference in New Issue
Block a user