/[sudobot]/trunk/src/services/DebugLogger.ts
ViewVC logotype

Diff of /trunk/src/services/DebugLogger.ts

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 226 by rakin, Mon Jul 29 17:29:06 2024 UTC revision 237 by rakin, Mon Jul 29 17:29:09 2024 UTC
# Line 1  Line 1 
1  import DiscordClient from "../client/Client";  import DiscordClient from "../client/Client";
2  import { Guild } from "discord.js";  import { Guild, MessageEmbed, WebhookClient } from "discord.js";
3  import { appendFile } from "fs/promises";  import { appendFile } from "fs/promises";
4  import Service from "../utils/structures/Service";  import Service from "../utils/structures/Service";
5    import { splitMessage } from "../utils/util";
6    
7  export enum LogLevel {  export enum LogLevel {
8      LOG = 'log',      LOG = 'log',
# Line 26  export default class DebugLogger extends Line 27  export default class DebugLogger extends
27      async log(stream: string, level: LogLevel, message: string) {      async log(stream: string, level: LogLevel, message: string) {
28          await appendFile(stream, `[${new Date().toISOString()}] [${level}] ${message}\n`);          await appendFile(stream, `[${new Date().toISOString()}] [${level}] ${message}\n`);
29      }      }
30    
31        async logToHomeServer(message: string, logLevel: LogLevel = LogLevel.ERROR) {
32            if (!process.env.DEBUG_WEKHOOK_URL)
33                return;
34            
35            const webhookClient = new WebhookClient({ url: process.env.DEBUG_WEKHOOK_URL! });
36            const splitted = splitMessage(message);
37            const embed = new MessageEmbed({
38                color: logLevel === LogLevel.WARN ? 'GOLD' : 0xf14a60,
39                title: logLevel === LogLevel.WARN ? 'Core Warning' : 'Fatal Error',
40                description: splitted.shift(),
41            });
42    
43            if (splitted.length === 0) {
44                embed.setTimestamp();
45            }
46    
47            try {
48                await webhookClient.send({
49                    embeds: [
50                        embed
51                    ]
52                });
53    
54                for (const index in splitted) {
55                    const embed = new MessageEmbed({
56                        color: logLevel === LogLevel.WARN ? 'GOLD' : 0xf14a60,
57                        description: splitted[index],
58                    });
59    
60                    if (parseInt(index) === (splitted.length - 1)) {
61                        embed.setTimestamp();
62                    }
63    
64                    await webhookClient.send({
65                        embeds: [
66                            embed
67                        ]
68                    });
69                }
70            }
71            catch (e) {
72                console.log(e);
73            }
74        }
75  }  }

Legend:
Removed from v.226  
changed lines
  Added in v.237

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26