Skip to content

Commit

Permalink
chore: 添加错误追踪
Browse files Browse the repository at this point in the history
  • Loading branch information
clansty committed Jul 10, 2024
1 parent 07e6194 commit 9353923
Show file tree
Hide file tree
Showing 15 changed files with 85 additions and 4 deletions.
3 changes: 3 additions & 0 deletions main/src/controllers/FileAndFlashPhotoController.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import { CustomFile } from 'telegram/client/uploads';
import { fetchFile, getImageUrlByMd5 } from '../utils/urls';
import Instance from '../models/Instance';
import { QQClient } from '../client/QQClient';
import posthog from '../models/posthog';

const REGEX = /^\/start (file|flash)-(\d+)$/;

Expand Down Expand Up @@ -45,6 +46,7 @@ export default class FileAndFlashPhotoController {
});
}
catch (e) {
posthog.capture('获取文件下载地址失败', { error: e });
this.log.error('获取文件下载地址失败', e);
await message.reply({
message: `获取文件下载地址失败:${e.message}\n${e}`,
Expand Down Expand Up @@ -74,6 +76,7 @@ export default class FileAndFlashPhotoController {
});
}
catch (e) {
posthog.capture('获取闪照失败', { error: e });
this.log.error('获取闪照失败', e);
await message.reply({
message: `获取闪照失败:${e.message}\n${e}`,
Expand Down
5 changes: 5 additions & 0 deletions main/src/controllers/ForwardController.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import {
GroupMemberInfo,
} from '../client/QQClient';
import { Member as OicqGroupMember } from '@icqqjs/icqq';
import posthog from '../models/posthog';

export default class ForwardController {
private readonly forwardService: ForwardService;
Expand Down Expand Up @@ -91,6 +92,7 @@ export default class ForwardController {
}
catch (e) {
this.log.error('处理 QQ 消息时遇到问题', e);
posthog.capture('处理 QQ 消息时遇到问题', { error: e });
}
};

Expand Down Expand Up @@ -139,6 +141,7 @@ export default class ForwardController {
}
catch (e) {
this.log.error('处理 Telegram 消息时遇到问题', e);
posthog.capture('处理 Telegram 消息时遇到问题', { error: e });
}
};

Expand All @@ -155,6 +158,7 @@ export default class ForwardController {
}
catch (e) {
this.log.error('处理 QQ 群成员增加事件时遇到问题', e);
posthog.capture('处理 QQ 群成员增加事件时遇到问题', { error: e });
}
};

Expand All @@ -173,6 +177,7 @@ export default class ForwardController {
}
catch (e) {
this.log.error('处理 TG 群成员增加事件时遇到问题', e);
posthog.capture('处理 TG 群成员增加事件时遇到问题', { error: e });
}
};

Expand Down
3 changes: 3 additions & 0 deletions main/src/controllers/QuotLyController.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import { Pair } from '../models/Pair';
import env from '../models/env';
import flags from '../constants/flags';
import { MessageEvent, QQClient, Group } from '../client/QQClient';
import posthog from '../models/posthog';

export default class {
private readonly log: Logger;
Expand Down Expand Up @@ -60,6 +61,7 @@ export default class {
// 异步发送,为了让 /q 先到达
this.sendQuote(pair, sourceMessage).catch(async e => {
this.log.error(e);
posthog.capture('sendQuote 错误', { error: e });
await event.reply(e.toString(), true);
});
};
Expand Down Expand Up @@ -94,6 +96,7 @@ export default class {
// 异步发送,为了让 /q 先到达
this.sendQuote(pair, sourceMessage).catch(async e => {
this.log.error(e);
posthog.capture('sendQuote 错误', { error: e });
await message.reply({
message: e.toString(),
});
Expand Down
3 changes: 3 additions & 0 deletions main/src/controllers/RequestController.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import { getAvatar } from '../utils/urls';
import { CustomFile } from 'telegram/client/uploads';
import { Button } from 'telegram/tl/custom/button';
import { QQClient } from '../client/QQClient';
import posthog from '../models/posthog';

export default class RequestController {
private readonly log: Logger;
Expand Down Expand Up @@ -51,6 +52,7 @@ export default class RequestController {
}
}
catch (e) {
posthog.capture('同意申请失败', { error: e });
await message.edit({ text: `同意失败:${e.message}`, buttons: Button.clear() });
}
await message.edit({ text: '已同意请求', buttons: Button.clear() });
Expand All @@ -62,6 +64,7 @@ export default class RequestController {
}
}
catch (e) {
posthog.capture('拒绝申请失败', { error: e });
await message.edit({ text: `拒绝失败:${e.message}`, buttons: Button.clear() });
}
await message.edit({ text: '已拒绝请求', buttons: Button.clear() });
Expand Down
5 changes: 5 additions & 0 deletions main/src/controllers/SetupController.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import { md5Hex } from '../utils/hashing';
import Instance from '../models/Instance';
import env from '../models/env';
import { QQClient } from '../client/QQClient';
import posthog from '../models/posthog';

export default class SetupController {
private readonly setupService: SetupService;
Expand Down Expand Up @@ -50,6 +51,7 @@ export default class SetupController {
}
catch (e) {
this.log.error('Claim Owner 失败', e);
posthog.capture('Claim Owner 失败', { error: e });
this.isInProgress = false;
throw e;
}
Expand All @@ -68,6 +70,7 @@ export default class SetupController {
}
catch (e) {
this.log.error('设置工作模式失败', e);
posthog.capture('设置工作模式失败', { error: e });
this.isInProgress = false;
throw e;
}
Expand Down Expand Up @@ -137,6 +140,7 @@ export default class SetupController {
}
catch (e) {
this.log.error('登录 OICQ 失败', e);
posthog.capture('登录 OICQ 失败', { error: e });
await this.setupService.informOwner(`登录失败\n${e.message}`);
this.isInProgress = false;
throw e;
Expand All @@ -156,6 +160,7 @@ export default class SetupController {
}
catch (e) {
this.log.error('创建 UserBot 失败', e);
posthog.capture('创建 UserBot 失败', { error: e });
await this.setupService.informOwner(`登录失败\n${e.message}`);
this.isInProgress = false;
throw e;
Expand Down
3 changes: 3 additions & 0 deletions main/src/helpers/forwardHelper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import { Api } from 'telegram';
import { imageSize } from 'image-size';
import env from '../models/env';
import { md5Hex } from '../utils/hashing';
import posthog from '../models/posthog';

const log = getLogger('ForwardHelper');

Expand Down Expand Up @@ -70,6 +71,7 @@ export default {
}
catch (err) {
log.error('解析群公告时出错', err);
posthog.capture('解析群公告时出错', { error: err });
return { type: 'text', text: '[群公告]' };
}
}
Expand All @@ -85,6 +87,7 @@ export default {
}
}
catch (err) {
posthog.capture('解析转发消息时出错', { error: err });
}
}
let appurl: string;
Expand Down
5 changes: 4 additions & 1 deletion main/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import Instance from './models/Instance';
import db from './models/db';
import api from './api';
import env from './models/env';
import './models/posthog';
import posthog from './models/posthog';

(async () => {
configure({
Expand All @@ -18,6 +18,7 @@ import './models/posthog';

process.on('unhandledRejection', error => {
log.error('UnhandledException: ', error);
posthog.capture('UnhandledException', { error });
});

await api.startListening();
Expand All @@ -33,6 +34,8 @@ import './models/posthog';
}
}

posthog.capture('启动完成', { instanceCount: instanceEntries.length });

setTimeout(async () => {
for (const instance of Instance.instances.filter(it => it.workMode === 'group')) {
try {
Expand Down
1 change: 1 addition & 0 deletions main/src/models/ForwardPairs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import { BigInteger } from 'big-integer';
import { Pair } from './Pair';
import { getLogger, Logger } from 'log4js';
import Instance from './Instance';
import posthog from './posthog';

export default class ForwardPairs {
private pairs: Pair[] = [];
Expand Down
6 changes: 5 additions & 1 deletion main/src/models/Instance.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import MiraiSkipFilterController from '../controllers/MiraiSkipFilterController'
import env from './env';
import AliveCheckController from '../controllers/AliveCheckController';
import { QQClient } from '../client/QQClient';
import posthog from './posthog';

export default class Instance {
public static readonly instances: Instance[] = [];
Expand Down Expand Up @@ -145,7 +146,10 @@ export default class Instance {
this.forwardPairs = await ForwardPairs.load(this.id, this.oicq, this.tgBot, this.tgUser);
this.setupCommands()
.then(() => this.log.info('命令设置成功'))
.catch(e => this.log.error('命令设置错误', e));
.catch(e => {
this.log.error('命令设置错误', e);
posthog.capture('命令设置错误', { error: e });
});
if (this.id === 0) {
this.instanceManageController = new InstanceManageController(this, this.tgBot);
}
Expand Down
1 change: 1 addition & 0 deletions main/src/models/env.ts
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ const configParsed = z.object({
UI_PATH: z.string().optional(),
UI_PROXY: z.string().url().optional(),
WEB_ENDPOINT: z.string().url().optional(),
POSTHOG_OPTOUT: z.string().transform((v) => ['true', '1', 'yes'].includes(v.toLowerCase())).default('false'),
}).safeParse(process.env);

if (!configParsed.success) {
Expand Down
22 changes: 21 additions & 1 deletion main/src/models/posthog.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,26 @@
import { PostHog } from 'posthog-node';
import os from 'os';
import env from './env';

export default new PostHog(
const client = new PostHog(
'phc_LmyAmIzRPk8Eoy5kMCFhwKVckY11vQS3KbGba2q4Hhm',
{ host: 'https://eu.i.posthog.com' },
);

const hostname = os.hostname();

if (env.POSTHOG_OPTOUT) {
client.optOut();
}
else {
client.optIn();
}

export default {
capture(event: string, properties: Record<string, any>) {
client.capture({
event, properties,
distinctId: hostname,
});
},
};
8 changes: 8 additions & 0 deletions main/src/services/ConfigService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import Instance from '../models/Instance';
import getAboutText from '../utils/getAboutText';
import random from '../utils/random';
import { Friend, Group, QQClient } from '../client/QQClient';
import posthog from '../models/posthog';

const DEFAULT_FILTER_ID = 114; // 514

Expand Down Expand Up @@ -96,6 +97,7 @@ export default class ConfigService {
catch (e) {
avatar = null;
this.log.error(`加载 ${group.name} (${gin}) 的头像失败`, e);
posthog.capture('加载头像失败', { error: e });
}
const message = `${group.name}\n${group.gid}`;
await (await this.owner).sendMessage({
Expand Down Expand Up @@ -172,6 +174,7 @@ export default class ConfigService {
}
catch (e) {
errorMessage += `\n添加到文件夹失败:${e.message}`;
posthog.capture('添加到文件夹失败', { error: e });
}

// 关闭【添加成员】快捷条
Expand All @@ -181,6 +184,7 @@ export default class ConfigService {
}
catch (e) {
errorMessage += `\n关闭【添加成员】快捷条失败:${e.message}`;
posthog.capture('关闭【添加成员】快捷条失败', { error: e });
}

// 关联写入数据库
Expand All @@ -201,6 +205,7 @@ export default class ConfigService {
}
catch (e) {
errorMessage += `\n更新头像失败:${e.message}`;
posthog.capture('更新头像失败', { error: e });
}

// 完成
Expand All @@ -215,6 +220,7 @@ export default class ConfigService {
}
catch (e) {
this.log.error('创建群组并关联失败', e);
posthog.capture('创建群组并关联失败', { error: e });
await (await this.owner).sendMessage(`创建群组并关联${isFinish ? '成功了但没完全成功' : '失败'}\n<code>${e}</code>`);
}
}
Expand Down Expand Up @@ -253,6 +259,7 @@ export default class ConfigService {
}
catch (e) {
this.log.error(e);
posthog.capture('createLinkGroup 出错', { error: e });
await (await this.owner).sendMessage(`错误:<code>${e}</code>`);
}
}
Expand Down Expand Up @@ -294,6 +301,7 @@ export default class ConfigService {
}
catch (e) {
this.log.error(errorText, e);
posthog.capture('设置文件夹失败', { error: e });
await (await this.owner).sendMessage(errorText + `\n<code>${e}</code>`);
}
}
Expand Down
6 changes: 6 additions & 0 deletions main/src/services/DeleteMessageService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import { consumer } from '../utils/highLevelFunces';
import forwardHelper from '../helpers/forwardHelper';
import flags from '../constants/flags';
import { MessageRecallEvent, Group, Friend } from '../client/QQClient';
import posthog from '../models/posthog';

export default class DeleteMessageService {
private readonly log: Logger;
Expand Down Expand Up @@ -35,6 +36,7 @@ export default class DeleteMessageService {
}
catch (e) {
this.log.error('撤回失败', e);
posthog.capture('撤回 QQ 消息失败', { error: e });
if (noSendError) return;
const tipMsg = await pair.tg.sendMessage({
message: '<i>撤回 QQ 中对应的消息失败' +
Expand Down Expand Up @@ -82,6 +84,7 @@ export default class DeleteMessageService {
}
catch (e) {
this.log.error(e);
posthog.capture('telegramDeleteMessage 出错', { error: e });
}
}
}
Expand Down Expand Up @@ -122,6 +125,7 @@ export default class DeleteMessageService {
await pair.tg.deleteMessages(message.replyToMsgId);
}
catch (e) {
posthog.capture('撤回 TG 消息失败', { error: e });
await pair.tg.sendMessage(`<i>删除消息失败</i>:${e.message}`);
}
}
Expand All @@ -138,6 +142,7 @@ export default class DeleteMessageService {
await message.delete({ revoke: true });
}
catch (e) {
posthog.capture('Bot 目前无法撤回其他用户的消息,Bot 需要「删除消息」权限', { error: e });
const tipMsg = await message.reply({
message: '<i>Bot 目前无法撤回其他用户的消息,Bot 需要「删除消息」权限</i>',
silent: true,
Expand Down Expand Up @@ -174,6 +179,7 @@ export default class DeleteMessageService {
}
}
catch (e) {
posthog.capture('处理 QQ 消息撤回失败', { error: e });
this.log.error('处理 QQ 消息撤回失败', e);
}
}
Expand Down
Loading

0 comments on commit 9353923

Please sign in to comment.