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()]); Promise.all([this.loadCommands(), this.registerEvents()]);
} }
async getOwner() {
return this.users.fetch(this.ownerId);
}
async loadCommands() { async loadCommands() {
const commandsDir = path.join(import.meta.dir, "commands"); const commandsDir = path.join(import.meta.dir, "commands");
const categories = await fs const categories = await fs

View File

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

View File

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

View File

@ -12,7 +12,7 @@ import {
import { client } from "../client"; import { client } from "../client";
import { logger } from "../utils/logger"; import { logger } from "../utils/logger";
import { defineEvent } from "."; import { defineEvent } from ".";
import { isExplicitCommandError, notifyError } from "../utils/error"; import { isExplicitCommandError, sendErrorAlert } from "../utils/error";
import { nanoid } from "../utils/functions"; import { nanoid } from "../utils/functions";
import type { Command } from "../types/command"; import type { Command } from "../types/command";
@ -75,7 +75,7 @@ async function handleChatInputCommand(
const trace = nanoid(); const trace = nanoid();
content += `\ntrace: ${inlineCode(trace)}`; content += `\ntrace: ${inlineCode(trace)}`;
logger.error({ trace, err }); logger.error({ trace, err });
notifyError(err, trace); sendErrorAlert(err, trace);
} }
await interaction[ 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 { client } from "../client";
import { env } from "../env";
export class ExplicitCommandError extends Error {} export class ExplicitCommandError extends Error {}
@ -14,8 +13,9 @@ export function isExplicitCommandError(
return error instanceof ExplicitCommandError; return error instanceof ExplicitCommandError;
} }
export async function notifyError(error: any, trace?: string) { export async function sendErrorAlert(error: any, trace?: string) {
return (client.channels.cache.get(env.DEV_CHANNEL_ID) as TextChannel).send({ return client.getOwner().then(owner =>
owner.send({
content: trace, content: trace,
embeds: [ embeds: [
{ {
@ -24,5 +24,6 @@ export async function notifyError(error: any, trace?: string) {
color: 0xff0000, color: 0xff0000,
}, },
], ],
}); })
);
} }