feat: 追踪退出

This commit is contained in:
手瓜一十雪
2024-12-29 15:44:37 +08:00
parent 1f72863aba
commit eaf481799d
3 changed files with 26 additions and 8 deletions

View File

@@ -2,17 +2,25 @@ import https from 'node:https';
import { napCatVersion } from './version';
export class umamiTrace {
static napcatVersion = napCatVersion;
static qqversion = '1.0.0';
static init(qqversion: string) {
this.qqversion = qqversion;
setInterval(() => {
this.trackEvent('heartbeat');
}, 5 * 60 * 1000);
}
static trackEvent(eventName: string, info?: string) {
const StatesData = {
type: 'event',
payload: {
'website': '596cbbb2-1740-4373-a807-cf3d0637bfa7',
'hostname': 'trace.napneko.icu',
'language': process.env.LANG || 'en-US',
'title': 'NapCat ' + napCatVersion,
'url': '/' + napCatVersion + '/' + eventName,
'referrer': 'https://trace.napneko.icu/' + napCatVersion,
'info': info
'title': 'NapCat ' + umamiTrace.napcatVersion,
'url': '/' + umamiTrace.qqversion + '/' + umamiTrace.napcatVersion + '/' + eventName,
'referrer': 'https://napcat.onebot.napneko.icu/' + umamiTrace.qqversion + '/' + umamiTrace.napcatVersion + '/' + info,
}
};

View File

@@ -24,19 +24,26 @@ export async function NCoreInitFramework(
) {
//在进入本层前是否登录未进行判断
console.log('NapCat Framework App Loading...');
umamiTrace.trackEvent('framework/login');
process.on('uncaughtException', (err) => {
umamiTrace.trackEvent('framework/error', err.message);
console.log('[NapCat] [Error] Unhandled Exception:', err.message);
});
process.on('unhandledRejection', (reason, promise) => {
console.log('[NapCat] [Error] unhandledRejection:', reason);
});
process.on('exit', (code: number) => {
umamiTrace.trackEvent('framework/exit', code.toString());
});
const pathWrapper = new NapCatPathWrapper();
const logger = new LogWrapper(pathWrapper.logsPath);
const basicInfoWrapper = new QQBasicInfoWrapper({ logger });
const wrapper = loadQQWrapper(basicInfoWrapper.getFullQQVesion());
umamiTrace.init(basicInfoWrapper.getFullQQVesion());
umamiTrace.trackEvent('framework/login');
//直到登录成功后,执行下一步
const selfInfo = await new Promise<SelfInfo>((resolveSelfInfo) => {
const loginListener = new NodeIKernelLoginListener();

View File

@@ -270,10 +270,13 @@ export async function NCoreInitShell() {
const pathWrapper = new NapCatPathWrapper();
const logger = new LogWrapper(pathWrapper.logsPath);
handleUncaughtExceptions(logger);
umamiTrace.trackEvent('shell/boot');
process.on('exit', (code: number) => {
umamiTrace.trackEvent('framework/exit', code.toString());
});
const basicInfoWrapper = new QQBasicInfoWrapper({ logger });
const wrapper = loadQQWrapper(basicInfoWrapper.getFullQQVesion());
umamiTrace.init(basicInfoWrapper.getFullQQVesion());
umamiTrace.trackEvent('shell/boot');
const o3Service = wrapper.NodeIO3MiscService.get();
o3Service.addO3MiscListener(new NodeIO3MiscListener());