From 3b4073c7d589941e6b26e6515ff7edef5ccc7b00 Mon Sep 17 00:00:00 2001 From: Wx-2025 <351320169@qq.com> Date: Tue, 8 Jul 2025 18:45:55 +0800 Subject: [PATCH] Update index.js --- index.js | 103 ++++++++++++++++++++++++++++++++----------------------- 1 file changed, 60 insertions(+), 43 deletions(-) diff --git a/index.js b/index.js index c45cfdc..cc6d2ac 100644 --- a/index.js +++ b/index.js @@ -1,16 +1,48 @@ - import { createDrawer } from "./ui/drawer.js"; import { registerSlashCommands } from "./core/commands.js"; import { onMessageReceived, onChatChanged } from "./core/events.js"; import { eventSource, event_types } from '/script.js'; +import { checkForUpdates } from './core/api.js'; +import { setUpdateInfo } from './ui/state.js'; +import { pluginVersion } from './utils/settings.js'; + + +function compareVersions(v1, v2) { + const parts1 = v1.split('.').map(Number); + const parts2 = v2.split('.').map(Number); + const len = Math.max(parts1.length, parts2.length); + + for (let i = 0; i < len; i++) { + const p1 = parts1[i] || 0; + const p2 = parts2[i] || 0; + if (p1 > p2) return true; + if (p1 < p2) return false; + } + return false; +} + +async function handleUpdateCheck() { + console.log("【Amily2号】帝国已就绪,现派遣外交官,为陛下探查外界新情报..."); + const updateInfo = await checkForUpdates(); + + if (updateInfo && updateInfo.version) { + const isNew = compareVersions(updateInfo.version, pluginVersion); + if(isNew) { + console.log(`【Amily2号-情报部】捷报!发现新版本: ${updateInfo.version}。情报已转交内务府。`); + } else { + console.log(`【Amily2号-情报部】一切安好,帝国已是最新版本。情报已转交内务府备案。`); + } + setUpdateInfo(isNew, updateInfo); + } +} function loadPluginStyles() { const styleId = "amily2-styles"; - if (document.getElementById(styleId)) return; + if (document.getElementById(styleId)) return; const extensionName = "ST-Amily2-Chat-Optimisation"; - const stylePath = `scripts/extensions/third-party/${extensionName}/assets/style.css?v=${Date.now()}`; + const stylePath = `scripts/extensions/third-party/${extensionName}/assets/style.css?v=${Date.now()}`; const link = document.createElement("link"); link.id = styleId; @@ -20,38 +52,18 @@ function loadPluginStyles() { document.head.appendChild(link); } + window.addEventListener("error", (event) => { const stackTrace = event.error?.stack || ""; - if (stackTrace.includes("ST-Amily2-Chat-Optimisation")) { console.error("[Amily2-全局卫队] 捕获到严重错误:", event.error); - toastr.error( - `Amily2插件错误: ${event.error?.message || "未知错误"}`, - "严重错误", - { timeOut: 10000 }, - ); + toastr.error(`Amily2插件错误: ${event.error?.message || "未知错误"}`, "严重错误", { timeOut: 10000 }); } }); -window.addEventListener("error", (event) => { - const stackTrace = event.error?.stack || ""; - - if (stackTrace.includes("ST-Amily2-Chat-Optimisation")) { - console.error("[Amily2-全局错误]", event.error); - try { - toastr.error( - `Amily2插件错误: ${event.error?.message || "未知错误"}`, - "严重错误", - { timeOut: 10000 }, - ); - } catch (err) { - - console.error("无法显示错误提示", err); - } - } -}); jQuery(async () => { + console.log("[Amily2号-帝国枢密院] 开始执行开国大典..."); let attempts = 0; const maxAttempts = 100; @@ -61,35 +73,40 @@ jQuery(async () => { const deploymentInterval = setInterval(async () => { if ($(targetSelector).length > 0) { clearInterval(deploymentInterval); - console.log( - `[Amily2号] 目标邻居(${targetSelector})已定位,开始建造府邸...` - ); + console.log("[Amily2号-帝国枢密院] 目标邻居已确认,开国大典正式开始!"); + try { + console.log("[Amily2号-开国大典] 步骤一:为宫殿披上华服..."); + loadPluginStyles(); - loadPluginStyles(); + console.log("[Amily2号-开国大典] 步骤二:皇家仪仗队就位..."); + await registerSlashCommands(); + console.log("[Amily2号-开国大典] 步骤三:开始召唤府邸..."); + createDrawer(); - await registerSlashCommands(); + console.log("[Amily2号-开国大典] 步骤四:部署帝国哨兵网络..."); + if (!window.amily2EventsRegistered) { + eventSource.on(event_types.MESSAGE_RECEIVED, onMessageReceived); + eventSource.on(event_types.IMPERSONATE_READY, onMessageReceived); + eventSource.on(event_types.CHAT_CHANGED, onChatChanged); + window.amily2EventsRegistered = true; + } - createDrawer(); + console.log("【Amily2号】帝国秩序已完美建立。Amily2号的府邸已恭候陛下的莅临。"); - if (!window.amily2EventsRegistered) { - eventSource.on(event_types.MESSAGE_RECEIVED, onMessageReceived); - eventSource.on(event_types.IMPERSONATE_READY, onMessageReceived); - eventSource.on(event_types.CHAT_CHANGED, onChatChanged); - window.amily2EventsRegistered = true; + handleUpdateCheck(); + + } catch (error) { + console.error("!!!【开国大典失败】在执行系列法令时发生严重错误:", error); } - console.log("【Amily2号】帝国秩序已建立。恭迎陛下检阅!"); } else { attempts++; if (attempts >= maxAttempts) { clearInterval(deploymentInterval); - console.error( - `[Amily2号] 部署失败:等待 ${targetSelector} 超时。帝国号角未能吹响。` - ); - toastr.error("Amily2号UI部署失败。", "部署错误"); + console.error(`[Amily2号] 部署失败:等待 ${targetSelector} 超时。`); } } }, checkInterval); -}); \ No newline at end of file +});