Reapply "Add image download proxy support to OneBot"

This reverts commit 38c320d2c9.
This commit is contained in:
手瓜一十雪
2026-01-29 20:40:19 +08:00
parent 38c320d2c9
commit 4bec3aa597
9 changed files with 119 additions and 64 deletions

View File

@@ -22,12 +22,14 @@ const OneBotConfigCard = () => {
musicSignUrl: '',
enableLocalFile2Url: false,
parseMultMsg: false,
imageDownloadProxy: '',
},
});
const reset = () => {
setOnebotValue('musicSignUrl', config.musicSignUrl);
setOnebotValue('enableLocalFile2Url', config.enableLocalFile2Url);
setOnebotValue('parseMultMsg', config.parseMultMsg);
setOnebotValue('imageDownloadProxy', config.imageDownloadProxy);
};
const onSubmit = handleOnebotSubmit(async (data) => {
@@ -104,6 +106,22 @@ const OneBotConfigCard = () => {
/>
)}
/>
<Controller
control={control}
name='imageDownloadProxy'
render={({ field }) => (
<Input
{...field}
label='图片下载代理'
placeholder='请输入代理地址,如 http://127.0.0.1:7890'
classNames={{
inputWrapper:
'bg-default-100/50 dark:bg-white/5 backdrop-blur-md border border-transparent hover:bg-default-200/50 dark:hover:bg-white/10 transition-all shadow-sm data-[hover=true]:border-default-300',
input: 'bg-transparent text-default-700 placeholder:text-default-400',
}}
/>
)}
/>
<SaveButtons
onSubmit={onSubmit}
reset={reset}

View File

@@ -3,7 +3,7 @@ import { PayloadAction, createSlice } from '@reduxjs/toolkit';
import type { RootState } from '@/store';
interface ConfigState {
value: OneBotConfig
value: OneBotConfig;
}
const initialState: ConfigState = {
@@ -18,6 +18,7 @@ const initialState: ConfigState = {
musicSignUrl: '',
enableLocalFile2Url: false,
parseMultMsg: true,
imageDownloadProxy: '',
},
};

View File

@@ -1,64 +1,65 @@
interface AdapterConfigInner {
name: string
enable: boolean
debug: boolean
token: string
name: string;
enable: boolean;
debug: boolean;
token: string;
}
interface AdapterConfig extends AdapterConfigInner {
[key: string]: string | boolean | number
[key: string]: string | boolean | number;
}
type MessageFormat = 'array' | 'string';
interface HttpServerConfig extends AdapterConfig {
port: number
host: string
enableCors: boolean
enableWebsocket: boolean
messagePostFormat: MessageFormat
port: number;
host: string;
enableCors: boolean;
enableWebsocket: boolean;
messagePostFormat: MessageFormat;
}
interface HttpClientConfig extends AdapterConfig {
url: string
messagePostFormat: MessageFormat
reportSelfMessage: boolean
url: string;
messagePostFormat: MessageFormat;
reportSelfMessage: boolean;
}
interface WebsocketServerConfig extends AdapterConfig {
host: string
port: number
messagePostFormat: MessageFormat
reportSelfMessage: boolean
enableForcePushEvent: boolean
heartInterval: number
host: string;
port: number;
messagePostFormat: MessageFormat;
reportSelfMessage: boolean;
enableForcePushEvent: boolean;
heartInterval: number;
}
interface WebsocketClientConfig extends AdapterConfig {
url: string
messagePostFormat: MessageFormat
reportSelfMessage: boolean
reconnectInterval: number
token: string
debug: boolean
heartInterval: number
url: string;
messagePostFormat: MessageFormat;
reportSelfMessage: boolean;
reconnectInterval: number;
token: string;
debug: boolean;
heartInterval: number;
}
interface HttpSseServerConfig extends HttpServerConfig {
reportSelfMessage: boolean
reportSelfMessage: boolean;
}
interface NetworkConfig {
httpServers: Array<HttpServerConfig>
httpClients: Array<HttpClientConfig>
httpSseServers: Array<HttpSseServerConfig>
websocketServers: Array<WebsocketServerConfig>
websocketClients: Array<WebsocketClientConfig>
httpServers: Array<HttpServerConfig>;
httpClients: Array<HttpClientConfig>;
httpSseServers: Array<HttpSseServerConfig>;
websocketServers: Array<WebsocketServerConfig>;
websocketClients: Array<WebsocketClientConfig>;
}
interface OneBotConfig {
network: NetworkConfig // 网络配置
musicSignUrl: string // 音乐签名地址
enableLocalFile2Url: boolean
parseMultMsg: boolean
network: NetworkConfig; // 网络配置
musicSignUrl: string; // 音乐签名地址
enableLocalFile2Url: boolean;
parseMultMsg: boolean;
imageDownloadProxy: string; // 图片下载代理地址
}