summaryrefslogtreecommitdiff
path: root/src/bot/util
diff options
context:
space:
mode:
author8cy <[email protected]>2020-07-19 04:36:14 -0700
committer8cy <[email protected]>2020-07-19 04:36:14 -0700
commitf00bcd79995bc8d7af3f297cab8085fd28b89435 (patch)
tree9a4ddd1f0a945b1f20d98c20e621c0d8a69bb8ad /src/bot/util
downloadwater-waifu-re-f00bcd79995bc8d7af3f297cab8085fd28b89435.tar.xz
water-waifu-re-f00bcd79995bc8d7af3f297cab8085fd28b89435.zip
:star:
Diffstat (limited to 'src/bot/util')
-rw-r--r--src/bot/util/constants.ts19
-rw-r--r--src/bot/util/index.ts17
-rw-r--r--src/bot/util/logger.ts44
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',
+});