mirror of
https://github.com/NapNeko/NapCatQQ.git
synced 2025-07-19 12:03:37 +00:00
feat: 追踪退出
This commit is contained in:
@@ -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,
|
||||
}
|
||||
};
|
||||
|
||||
|
@@ -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();
|
||||
|
@@ -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());
|
||||
|
||||
|
Reference in New Issue
Block a user