NapCatQQ/src/onebot11/config.ts
风宝宝 c40170db5d
feat(onebot11): Improve error handling in JSON parsing
发生错误直接被 catch 掉了,没有提示,[使用docker启动后,请求被重置](https://github.com/NapNeko/NapCat-Docker/issues/8)
2024-04-23 21:33:09 +08:00

88 lines
2.2 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import fs from 'node:fs';
import path from 'node:path';
import { selfInfo } from '@/common/data';
export interface OB11Config {
httpPort: number;
httpPostUrls: string[];
httpSecret: string;
wsPort: number;
wsReverseUrls: string[];
enableHttp: boolean;
enableHttpHeart: boolean;
enableHttpPost: boolean;
enableWs: boolean;
enableWsReverse: boolean;
messagePostFormat: 'array' | 'string';
reportSelfMessage: boolean;
enableLocalFile2Url: boolean;
debug: boolean;
heartInterval: number;
token: string;
read(): OB11Config;
save(config: OB11Config): void;
}
const ob11ConfigDir = path.resolve(__dirname, 'config');
fs.mkdirSync(ob11ConfigDir, { recursive: true });
class Config implements OB11Config {
httpPort: number = 3000;
httpPostUrls: string[] = [];
httpSecret = '';
wsPort = 3001;
wsReverseUrls: string[] = [];
enableHttp = false;
enableHttpPost = false;
enableHttpHeart = false;
enableWs = false;
enableWsReverse = false;
messagePostFormat: 'array' | 'string' = 'array';
reportSelfMessage = false;
debug = false;
enableLocalFile2Url = true;
heartInterval = 30000;
token = '';
constructor() {
}
getConfigPath() {
return path.join(ob11ConfigDir, `onebot11_${selfInfo.uin}.json`);
}
read() {
const ob11ConfigPath = this.getConfigPath();
if (!fs.existsSync(ob11ConfigPath)) {
console.log(`onebot11配置文件 ${ob11ConfigPath} 不存在, 现已创建请修改配置文件后重启NapCat`);
this.save();
return this;
}
const data = fs.readFileSync(ob11ConfigPath, 'utf-8');
try {
const jsonData = JSON.parse(data);
console.log('get config', jsonData);
Object.assign(this, jsonData);
// eslint-disable-next-line
} catch (e) {
if (e instanceof SyntaxError) {
console.error(`配置文件 ${ob11ConfigPath} 格式错误,请检查配置文件:`, e.message);
}else{
console.error(`读取配置文件 ${ob11ConfigPath} 时发生错误:`, e.message);
}
}
return this;
}
save(newConfig: OB11Config | null = null) {
if (newConfig) {
Object.assign(this, newConfig);
}
fs.writeFileSync(this.getConfigPath(), JSON.stringify(this, null, 4));
}
}
export const ob11Config = new Config();