From 6914d2473c74b24e0938a35b53c575415312565e Mon Sep 17 00:00:00 2001 From: Andrzej Stepien Date: Sat, 12 Aug 2023 11:43:37 +0200 Subject: [PATCH] fixed after refactor --- package-lock.json | 156 +++++++++++++++++++++- package.json | 1 + src/checkAndPublish.mjs | 6 +- src/config.mjs | 6 + src/createNote.mjs | 2 +- src/data/database | Bin 39145472 -> 39145472 bytes src/getAcceptablePrompts.mjs | 6 +- src/getNewPrompt.mjs | 8 +- src/index.mjs | 2 + src/logger.mjs | 32 +++-- src/social-interaction/receiveMention.mjs | 26 ++++ 11 files changed, 219 insertions(+), 26 deletions(-) create mode 100644 src/config.mjs create mode 100644 src/social-interaction/receiveMention.mjs diff --git a/package-lock.json b/package-lock.json index 76f37fe..a46f7d0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,6 +14,7 @@ "node-cron": "^3.0.2", "pino": "^8.15.0", "pino-http": "^8.4.0", + "pino-pretty": "^10.2.0", "promised-sqlite3": "^2.1.0", "undici": "^5.23.0" }, @@ -413,8 +414,7 @@ "node_modules/colorette": { "version": "2.0.19", "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", - "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", - "dev": true + "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==" }, "node_modules/commander": { "version": "10.0.1", @@ -467,6 +467,14 @@ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" }, + "node_modules/dateformat": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz", + "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==", + "engines": { + "node": "*" + } + }, "node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -532,6 +540,14 @@ "iconv-lite": "^0.6.2" } }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dependencies": { + "once": "^1.4.0" + } + }, "node_modules/env-paths": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", @@ -683,6 +699,11 @@ "node": ">= 0.8" } }, + "node_modules/fast-copy": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fast-copy/-/fast-copy-3.0.1.tgz", + "integrity": "sha512-Knr7NOtK3HWRYGtHoJrjkaWepqT8thIVGAwt0p0aUs1zqkAzXZV4vo9fFNwyb5fcqK1GKYFYxldQdIDVKhUAfA==" + }, "node_modules/fast-redact": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.3.0.tgz", @@ -691,6 +712,11 @@ "node": ">=6" } }, + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" + }, "node_modules/finalhandler": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", @@ -864,6 +890,52 @@ "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" }, + "node_modules/help-me": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/help-me/-/help-me-4.2.0.tgz", + "integrity": "sha512-TAOnTB8Tz5Dw8penUuzHVrKNKlCIbwwbHnXraNJxPwf8LRtE2HlM84RYuezMFcwOJmoYOCWVDyJ8TQGxn9PgxA==", + "dependencies": { + "glob": "^8.0.0", + "readable-stream": "^3.6.0" + } + }, + "node_modules/help-me/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/help-me/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/help-me/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/http-cache-semantics": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", @@ -1088,6 +1160,14 @@ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "optional": true }, + "node_modules/joycon": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", + "integrity": "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==", + "engines": { + "node": ">=10" + } + }, "node_modules/knex": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/knex/-/knex-2.5.1.tgz", @@ -1290,6 +1370,14 @@ "node": "*" } }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/minipass": { "version": "3.3.6", "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", @@ -1683,6 +1771,45 @@ "process-warning": "^2.0.0" } }, + "node_modules/pino-pretty": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/pino-pretty/-/pino-pretty-10.2.0.tgz", + "integrity": "sha512-tRvpyEmGtc2D+Lr3FulIZ+R1baggQ4S3xD2Ar93KixFEDx6SEAUP3W5aYuEw1C73d6ROrNcB2IXLteW8itlwhA==", + "dependencies": { + "colorette": "^2.0.7", + "dateformat": "^4.6.3", + "fast-copy": "^3.0.0", + "fast-safe-stringify": "^2.1.1", + "help-me": "^4.0.1", + "joycon": "^3.1.1", + "minimist": "^1.2.6", + "on-exit-leak-free": "^2.1.0", + "pino-abstract-transport": "^1.0.0", + "pump": "^3.0.0", + "readable-stream": "^4.0.0", + "secure-json-parse": "^2.4.0", + "sonic-boom": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "bin": { + "pino-pretty": "bin.js" + } + }, + "node_modules/pino-pretty/node_modules/readable-stream": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.4.2.tgz", + "integrity": "sha512-Lk/fICSyIhodxy1IDK2HazkeGjSmezAWX2egdtJnYhtzKEsBPJowlI6F6LPb5tqIQILrMbx22S5o3GuJavPusA==", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, "node_modules/pino-std-serializers": { "version": "6.2.2", "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-6.2.2.tgz", @@ -1740,6 +1867,15 @@ "node": ">= 0.10" } }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, "node_modules/qs": { "version": "6.11.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", @@ -1906,6 +2042,11 @@ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, + "node_modules/secure-json-parse": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.7.0.tgz", + "integrity": "sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==" + }, "node_modules/semver": { "version": "7.5.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", @@ -2160,6 +2301,17 @@ "node": ">=8" } }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", diff --git a/package.json b/package.json index 3597af6..bf9015e 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,7 @@ "node-cron": "^3.0.2", "pino": "^8.15.0", "pino-http": "^8.4.0", + "pino-pretty": "^10.2.0", "promised-sqlite3": "^2.1.0", "undici": "^5.23.0" } diff --git a/src/checkAndPublish.mjs b/src/checkAndPublish.mjs index dd2028b..6238580 100644 --- a/src/checkAndPublish.mjs +++ b/src/checkAndPublish.mjs @@ -4,16 +4,14 @@ import makeText from "./makeText.mjs" import insertPublished from "./insertPublished.mjs" import logger from "./logger.mjs" import todaysPromptAlreadyPublished from "./todaysPromptAlreadyPublished.mjs" -const maxCount = 30000000 -const minCount = 200000 -const spamMode = false + export default async function checkAndPublish () { logger.trace("checkAndPublish called") logger.trace(todaysPromptAlreadyPublished()) if(!await todaysPromptAlreadyPublished()){ try { - const prompt = await getNewPrompt({ minCount, maxCount, rarityBias: 0.7 }) + const prompt = await getNewPrompt() try { const text = makeText(prompt) try { diff --git a/src/config.mjs b/src/config.mjs new file mode 100644 index 0000000..deb2f34 --- /dev/null +++ b/src/config.mjs @@ -0,0 +1,6 @@ +export default { + maxCount : 30000000, + minCount : 200000, + rarityBias: 0.7, + spamMode : false +} \ No newline at end of file diff --git a/src/createNote.mjs b/src/createNote.mjs index 4d93d7d..855973f 100644 --- a/src/createNote.mjs +++ b/src/createNote.mjs @@ -14,7 +14,7 @@ setGlobalDispatcher(agent) export default async function createNote(text) { const childLogger = logger.child({text}) childLogger.trace("createNote called") - const url = 'https://localhost:80/api/notes/create' + const url = 'http://localhost:3000/api/notes/create' const params = { text: text, } diff --git a/src/data/database b/src/data/database index 48854d03211649de56b06e1eb157273be391e9af..83d777f0ffe653d5d1d85db3e05edfd53138c143 100644 GIT binary patch delta 2337 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 diff --git a/src/getAcceptablePrompts.mjs b/src/getAcceptablePrompts.mjs index 6cb5226..d3b0a6d 100644 --- a/src/getAcceptablePrompts.mjs +++ b/src/getAcceptablePrompts.mjs @@ -1,5 +1,6 @@ import logger from "./logger.mjs" import { db } from "./db.mjs" +import config from "./config.mjs" const blocklist = db.union([ db('bad_words').select('word'), @@ -8,14 +9,15 @@ const blocklist = db.union([ ]) export default async () => { + logger.trace("getAcceptablePrompt called") return db('dictionary') .select('*') .where({ derivative: 0, scientific: 0, }) - .andWhere('count', '<', maxCount) - .andWhere('count', '>', minCount) + .andWhere('count', '<', config.maxCount) + .andWhere('count', '>', config.minCount) .andWhere('word', 'not in', blocklist) .whereRaw('length(word) > 3') .whereNotNull('pronunciation') diff --git a/src/getNewPrompt.mjs b/src/getNewPrompt.mjs index 728ba5e..bb98ada 100644 --- a/src/getNewPrompt.mjs +++ b/src/getNewPrompt.mjs @@ -1,9 +1,9 @@ import logger from "./logger.mjs" import getAcceptablePrompts from "./getAcceptablePrompts.mjs" +import config from "./config.mjs" -export default async function getNewPrompt({ minCount = 200000, maxCount = 30000000, rarityBias = 0.5 }) { - const childLogger = logger.child({minCount,maxCount,rarityBias}) - childLogger.trace("getNewPrompt called") +export default async function getNewPrompt() { + logger.trace("getNewPrompt called") const getBiasedRng = (min, max, bias, influence) => { const random = Math.random() * (max - min) + min @@ -12,7 +12,7 @@ export default async function getNewPrompt({ minCount = 200000, maxCount = 30000 } const randomEntry = (array) => { - const random = getBiasedRng(0, 1, rarityBias, 1) + const random = getBiasedRng(0, 1, config.rarityBias, 1) const mix = Math.random() return array[ parseInt( diff --git a/src/index.mjs b/src/index.mjs index 4ac4283..57db91d 100644 --- a/src/index.mjs +++ b/src/index.mjs @@ -3,6 +3,7 @@ import bodyParser from "body-parser"; import logger from "./logger.mjs"; import pinoHTTP from 'pino-http' import start from "./start.mjs"; +import receiveMention from "./social-interaction/receiveMention.mjs"; const app = express() const port = 4000 app.use(bodyParser.json()) @@ -12,6 +13,7 @@ app.use( }) ) app.post('/api', (req,res) => { + receiveMention(req.body) logger.info("webhook received:",req.body.body.note.text) res.sendStatus(200) }) diff --git a/src/logger.mjs b/src/logger.mjs index 8114318..3c1b596 100644 --- a/src/logger.mjs +++ b/src/logger.mjs @@ -4,19 +4,25 @@ import { fileURLToPath } from 'url'; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); -const fileTransport = pino.transport({ - target: 'pino/file', - options: { destination: `${__dirname}/app.log` }, - }); - -export default pino({ - level: process.env.PINO_LOG_LEVEL || 'trace', - formatters: { +// const transport = pino.transport({ +// targets: [{ +// level: 'trace', +// target: 'pino-pretty' // must be installed separately +// }, { +// level: 'trace', +// target: 'pino/file', +// options: { destination: `${__dirname}/app.log` } +// }] +// }) +export default pino( + { + level: 'trace', + formatters: { level: (label) => { - return { severity: label.toUpperCase() }; + return { level: label.toUpperCase() }; }, + }, + timestamp: pino.stdTimeFunctions.isoTime, }, - timestamp: pino.stdTimeFunctions.isoTime, -}, -fileTransport -) \ No newline at end of file + //pino.destination(`${__dirname}/app.log`) + ); \ No newline at end of file diff --git a/src/social-interaction/receiveMention.mjs b/src/social-interaction/receiveMention.mjs new file mode 100644 index 0000000..7b8591b --- /dev/null +++ b/src/social-interaction/receiveMention.mjs @@ -0,0 +1,26 @@ +import logger from "../logger.mjs" +import getAcceptablePrompts from "../getAcceptablePrompts.mjs" +import { checkSpelling } from "spellchecker" + +export default async function (note) { + const childLogger = logger.child({note}) + childLogger.trace("receiveMention called") + const textArray = note.text + .replace(/@[a-z,A-Z,0-9]* /g, "") + .trim() + .match(/[a-z]*/ig) + if(textArray.length===1){ + const word = textArray[0] + if(checkSpelling(word)){ + if(await getAcceptablePrompts().indexOf(word)!=-1){ + + } + } + + + //ETC + }else if(textArray.length>1){ + //"Please reply with one word, I'm only a bot etc etc" + } + +} \ No newline at end of file