send errors to owner

This commit is contained in:
artie 2025-02-19 19:00:04 +01:00
parent 6846371810
commit bb88e335fd
5 changed files with 24 additions and 19 deletions

View File

@ -52,6 +52,10 @@ export class ArtemisClient extends Client {
Promise.all([this.loadCommands(), this.registerEvents()]);
}
async getOwner() {
return this.users.fetch(this.ownerId);
}
async loadCommands() {
const commandsDir = path.join(import.meta.dir, "commands");
const categories = await fs

View File

@ -13,7 +13,7 @@ import {
isTargetLanguage,
translate as translateDeepl,
} from "../../utils/deepl";
import { abort, notifyError } from "../../utils/error";
import { abort, sendErrorAlert } from "../../utils/error";
import type { OCRResult } from "../../types/ocr";
import { capitalize, languageCodeToName } from "../../utils/functions";
import { translate as translateGoogle } from "../../utils/gtrans";
@ -52,7 +52,7 @@ export async function translateImpl(
target
).catch(err => {
logger.error(err, "DeepL error, falling back to Google Translate");
notifyError(err);
sendErrorAlert(err);
return translateGoogle(text, "auto", "en");
});

View File

@ -6,7 +6,7 @@ import {
} from "discord.js";
import { defineCommand } from "..";
import { downloadFile } from "../../utils/http";
import { abort, notifyError } from "../../utils/error";
import { abort, sendErrorAlert } from "../../utils/error";
import { yandexOcr } from "../../utils/yandex";
import sharp from "sharp";
import {
@ -88,7 +88,7 @@ export async function ocrImpl(url: string) {
const result = await lensOcr(compressed)
.catch(err => {
logger.error(err, "Google Lens error, falling back to Yandex");
notifyError(err);
sendErrorAlert(err);
return yandexOcr(compressed, type.mime);
})
.catch(() => abort("Failed to OCR the image"));

View File

@ -12,7 +12,7 @@ import {
import { client } from "../client";
import { logger } from "../utils/logger";
import { defineEvent } from ".";
import { isExplicitCommandError, notifyError } from "../utils/error";
import { isExplicitCommandError, sendErrorAlert } from "../utils/error";
import { nanoid } from "../utils/functions";
import type { Command } from "../types/command";
@ -75,7 +75,7 @@ async function handleChatInputCommand(
const trace = nanoid();
content += `\ntrace: ${inlineCode(trace)}`;
logger.error({ trace, err });
notifyError(err, trace);
sendErrorAlert(err, trace);
}
await interaction[

View File

@ -1,6 +1,5 @@
import { codeBlock, type TextChannel } from "discord.js";
import { codeBlock } from "discord.js";
import { client } from "../client";
import { env } from "../env";
export class ExplicitCommandError extends Error {}
@ -14,15 +13,17 @@ export function isExplicitCommandError(
return error instanceof ExplicitCommandError;
}
export async function notifyError(error: any, trace?: string) {
return (client.channels.cache.get(env.DEV_CHANNEL_ID) as TextChannel).send({
content: trace,
embeds: [
{
title: "Unhandled Error",
description: codeBlock("js", error.stack ?? error.message),
color: 0xff0000,
},
],
});
export async function sendErrorAlert(error: any, trace?: string) {
return client.getOwner().then(owner =>
owner.send({
content: trace,
embeds: [
{
title: "Unhandled Error",
description: codeBlock("js", error.stack ?? error.message),
color: 0xff0000,
},
],
})
);
}