diff options
| author | 8cy <[email protected]> | 2020-07-19 04:36:14 -0700 |
|---|---|---|
| committer | 8cy <[email protected]> | 2020-07-19 04:36:14 -0700 |
| commit | f00bcd79995bc8d7af3f297cab8085fd28b89435 (patch) | |
| tree | 9a4ddd1f0a945b1f20d98c20e621c0d8a69bb8ad /src/bot/util | |
| download | water-waifu-re-f00bcd79995bc8d7af3f297cab8085fd28b89435.tar.xz water-waifu-re-f00bcd79995bc8d7af3f297cab8085fd28b89435.zip | |
:star:
Diffstat (limited to 'src/bot/util')
| -rw-r--r-- | src/bot/util/constants.ts | 19 | ||||
| -rw-r--r-- | src/bot/util/index.ts | 17 | ||||
| -rw-r--r-- | src/bot/util/logger.ts | 44 |
3 files changed, 80 insertions, 0 deletions
diff --git a/src/bot/util/constants.ts b/src/bot/util/constants.ts new file mode 100644 index 0000000..e182023 --- /dev/null +++ b/src/bot/util/constants.ts @@ -0,0 +1,19 @@ +export const SENSITIVE_PATTERN_REPLACEMENT = '[REDACTED]'; + +export const MESSAGES = { + NOT_ACTIVATED: "this server hasn't been activated yet!", + COMMANDS: { + EVAL: { + LONG_OUTPUT: (link: string): string => `Output too long, uploading it to hastebin instead: ${link}.`, + INPUT: (code: string): string => `Input:\`\`\`js\n${code}\n\`\`\``, + OUTPUT: (code: string): string => `Output:\`\`\`js\n${code}\n\`\`\``, + TYPE: ``, + TIME: ``, + HASTEBIN: ``, + ERRORS: { + TOO_LONG: `Output too long, failed to upload to hastebin as well.`, + CODE_BLOCK: (err: Error): string => `Error:\`\`\`xl\n${err}\n\`\`\``, + }, + }, + }, +}; diff --git a/src/bot/util/index.ts b/src/bot/util/index.ts new file mode 100644 index 0000000..59c2ffa --- /dev/null +++ b/src/bot/util/index.ts @@ -0,0 +1,17 @@ +import fetch from 'node-fetch'; + +export async function postHaste(code: string, lang?: string): Promise<string> { + try { + if (code.length > 400000) { + return 'Document exceeds maximum length.'; + } + const res = await fetch('https://paste.nomsy.net/documents', { method: 'POST', body: code }); + const { key, message } = await res.json(); + if (!key) { + return message; + } + return `https://paste.nomsy.net/${key}${lang && `.${lang}`}`; + } catch (err) { + throw err; + } +} diff --git a/src/bot/util/logger.ts b/src/bot/util/logger.ts new file mode 100644 index 0000000..6b87806 --- /dev/null +++ b/src/bot/util/logger.ts @@ -0,0 +1,44 @@ +import { createLogger, transports, format, addColors } from 'winston'; + +const loggerLevels = { + levels: { + error: 0, + debug: 1, + warn: 2, + data: 3, + info: 4, + verbose: 5, + silly: 6, + custom: 7, + }, + colors: { + error: 'red', + debug: 'blue', + warn: 'yellow', + data: 'grey', + info: 'green', + verbose: 'cyan', + silly: 'magenta', + custom: 'yellow', + }, +}; + +addColors(loggerLevels.colors); + +export const logger = createLogger({ + levels: loggerLevels.levels, + format: format.combine( + format.colorize({ level: true }), + format.errors({ stack: true }), + format.splat(), + format.timestamp({ format: 'MM/DD/YYYY HH:mm:ss' }), + format.printf((data: any) => { + const { timestamp, level, message, ...rest } = data; + return `[${timestamp}] ${level}: ${message}${ + Object.keys(rest).length ? `\n${JSON.stringify(rest, null, 2)}` : '' + }`; + }), + ), + transports: new transports.Console(), + level: 'custom', +}); |