misc: Ensure account info is verified before initiation

This commit is contained in:
WJG 2024-02-28 15:49:13 +08:00
parent 0f38e6b9cc
commit 64980c036e
No known key found for this signature in database
GPG Key ID: 258474EF8590014A
4 changed files with 22 additions and 11 deletions

View File

@ -1,6 +1,6 @@
{
"name": "mi-gpt",
"version": "1.2.0",
"version": "1.3.0",
"type": "module",
"description": "Seamlessly integrate your XiaoAI speaker and Mi Home devices with ChatGPT for an enhanced smart home experience.",
"license": "MIT",
@ -30,7 +30,7 @@
"axios": "^1.6.5",
"fs-extra": "^11.2.0",
"https-proxy-agent": "^7.0.4",
"mi-service-lite": "^2.0.0",
"mi-service-lite": "^2.1.0",
"openai": "^4.28.0",
"prisma": "^5.8.1"
},
@ -47,7 +47,9 @@
},
"sideEffects": false,
"files": [
"dist"
"dist",
"prisma/migrations",
"prisma/schema.prisma"
],
"main": "dist/index.cjs",
"module": "dist/index.js",

View File

@ -2,6 +2,7 @@ import { AISpeaker, AISpeakerConfig } from "./services/speaker/ai";
import { MyBot, MyBotConfig } from "./services/bot";
import { initDB, runWithDB } from "./services/db";
import { kBannerASCII } from "./utils/string";
import { Logger } from "./utils/log";
export type MiGPTConfig = Omit<MyBotConfig, "speaker"> & {
speaker: AISpeakerConfig;
@ -12,10 +13,15 @@ export class MiGPT {
static reset() {
MiGPT.instance = null;
}
static logger = Logger.create({ tag: "MiGPT" });
static create(config: MiGPTConfig) {
const hasAccount = config?.speaker?.userId && config?.speaker?.password;
MiGPT.logger.assert(hasAccount, "Missing userId or password.");
if (MiGPT.instance) {
console.log("🚨 注意MiGPT 是单例,暂不支持多设备、多账号!");
console.log("如果需要切换设备或账号,请先使用 MiGPT.reset() 重置实例。");
MiGPT.logger.log("🚨 注意MiGPT 是单例,暂不支持多设备、多账号!");
MiGPT.logger.log(
"如果需要切换设备或账号,请先使用 MiGPT.reset() 重置实例。"
);
} else {
MiGPT.instance = new MiGPT({ ...config, fromCreate: true });
}
@ -25,7 +31,10 @@ export class MiGPT {
ai: MyBot;
speaker: AISpeaker;
constructor(config: MiGPTConfig & { fromCreate?: boolean }) {
console.assert(config.fromCreate, "请使用 MiGPT.create() 获取客户端实例!");
MiGPT.logger.assert(
config.fromCreate,
"请使用 MiGPT.create() 获取客户端实例!"
);
const { speaker, ...myBotConfig } = config;
this.speaker = new AISpeaker(speaker);
this.ai = new MyBot({

View File

@ -8,7 +8,7 @@ export default defineConfig(() => ({
format: ["esm", "cjs"],
sourcemap: false,
treeshake: true,
minify: true,
minify: false,
clean: true,
shims: true,
dts: true, // Generate declaration file

View File

@ -927,10 +927,10 @@ merge2@^1.3.0, merge2@^1.4.1:
resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
mi-service-lite@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/mi-service-lite/-/mi-service-lite-2.0.0.tgz#c043a931574011c154a3113ecabe4fc2a61b328a"
integrity sha512-PqMWtvEHQ7a6mhKee9RAnT6Xh+rqf+RvhlCki/8VsSTnjREAzl/kxZh3U0ogFhN5iQzwlK4YC8Is0rnSljl2og==
mi-service-lite@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/mi-service-lite/-/mi-service-lite-2.1.0.tgz#a05d85340f18d3ee5278afc180294273235533c5"
integrity sha512-yy7q/7sR36PiE+0kIXgGDQ8ZUCrnLpMUxqtpmdIQgKBsyCaxBx0QNEcscwY+2ejx3WLwbB+ObMy6yR9fznx6hg==
dependencies:
axios "^1.6.5"
pako "^2.1.0"