From b41d576e74de7226cc16cdcf554d65c6d1f8d0c1 Mon Sep 17 00:00:00 2001 From: Charlie Laabs Date: Sat, 1 Jan 2022 23:10:02 -0600 Subject: [PATCH] Update to markov-strings-db 4.1 --- .vscode/launch.json | 3 ++- Dockerfile | 2 ++ package-lock.json | 14 +++++++------- package.json | 2 +- src/index.ts | 26 ++++++++++---------------- 5 files changed, 22 insertions(+), 25 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index 3df7e96..f545be4 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -14,7 +14,8 @@ ], "args": [ "${workspaceFolder}/src/index.ts" - ] + ], + "outputCapture": "std", } ] } \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 656f74c..0ce5f36 100644 --- a/Dockerfile +++ b/Dockerfile @@ -31,6 +31,8 @@ RUN npm run build ######## FROM base as deploy +USER node + # Steal node_modules from base image COPY --from=build /usr/app/node_modules node_modules diff --git a/package-lock.json b/package-lock.json index 098a028..8595bd5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23,7 +23,7 @@ "erlpack": "github:discord/erlpack", "fs-extra": "^10.0.0", "json5": "^2.2.0", - "markov-strings-db": "^4.0.1", + "markov-strings-db": "^4.1.1", "pino": "^7.5.1", "pino-pretty": "^7.3.0", "reflect-metadata": "^0.1.13", @@ -2681,9 +2681,9 @@ "dev": true }, "node_modules/markov-strings-db": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/markov-strings-db/-/markov-strings-db-4.0.1.tgz", - "integrity": "sha512-i7GANb+/6Ppm8DAEO6jp3dxso28Z1LQRW2B+KgJFgvN0dRS9L9r5Dh5zNwW3txye8AYIFhPbXo5zdmP1UknXMQ==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/markov-strings-db/-/markov-strings-db-4.1.1.tgz", + "integrity": "sha512-IRfqGlq8VajKXY2+CYvuLIOwHWSLoIWfruyYK8WP96fJ17UqqXLRO959jJLp5Yy+9JJuwGHfbvVt7fBd1xHxjw==", "dependencies": { "reflect-metadata": "^0.1.13", "typeorm": "^0.2.41" @@ -6431,9 +6431,9 @@ "dev": true }, "markov-strings-db": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/markov-strings-db/-/markov-strings-db-4.0.1.tgz", - "integrity": "sha512-i7GANb+/6Ppm8DAEO6jp3dxso28Z1LQRW2B+KgJFgvN0dRS9L9r5Dh5zNwW3txye8AYIFhPbXo5zdmP1UknXMQ==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/markov-strings-db/-/markov-strings-db-4.1.1.tgz", + "integrity": "sha512-IRfqGlq8VajKXY2+CYvuLIOwHWSLoIWfruyYK8WP96fJ17UqqXLRO959jJLp5Yy+9JJuwGHfbvVt7fBd1xHxjw==", "requires": { "reflect-metadata": "^0.1.13", "typeorm": "^0.2.41" diff --git a/package.json b/package.json index 3f22152..ca6bcf5 100644 --- a/package.json +++ b/package.json @@ -44,7 +44,7 @@ "erlpack": "github:discord/erlpack", "fs-extra": "^10.0.0", "json5": "^2.2.0", - "markov-strings-db": "^4.0.1", + "markov-strings-db": "^4.1.1", "pino": "^7.5.1", "pino-pretty": "^7.3.0", "reflect-metadata": "^0.1.13", diff --git a/src/index.ts b/src/index.ts index 989410b..4682da0 100644 --- a/src/index.ts +++ b/src/index.ts @@ -189,9 +189,13 @@ function messageToData(message: Discord.Message): AddDataProps { const attachmentUrls = message.attachments.map((a) => a.url); let custom: MarkovDataCustom | undefined; if (attachmentUrls.length) custom = { attachments: attachmentUrls }; + const tags: string[] = [message.id]; + if (message.channelId) tags.push(message.channelId); + if (message.guildId) tags.push(message.guildId); return { string: message.content, custom, + tags, }; } @@ -213,6 +217,7 @@ async function saveGuildMessageHistory( L.debug('Deleting old data'); await markov.delete(); + await markov.setup(); // TODO: temp fix until new markov-strings-db version const channelIds = channels.map((c) => c.id); L.debug({ channelIds }, `Training from text channels`); @@ -365,7 +370,7 @@ async function generateResponse( const messageOpts: Discord.MessageOptions = { tts }; const attachmentUrls = response.refs .filter((ref) => ref.custom && 'attachments' in ref.custom) - .flatMap((ref) => ref.custom.attachments); + .flatMap((ref) => (ref.custom as MarkovDataCustom).attachments); if (attachmentUrls.length > 0) { const randomRefAttachment = getRandomElement(attachmentUrls); messageOpts.files = [randomRefAttachment]; @@ -373,19 +378,8 @@ async function generateResponse( const randomMessage = await MarkovInputData.createQueryBuilder< MarkovInputData >('input') - .leftJoinAndSelect('input.fragment', 'fragment') - .leftJoinAndSelect('fragment.corpusEntry', 'corpusEntry') - .where([ - { - fragment: { startWordMarkov: markov.db }, - }, - { - fragment: { endWordMarkov: markov.db }, - }, - { - fragment: { corpusEntry: { markov: markov.db } }, - }, - ]) + .leftJoinAndSelect('input.markov', 'markov') + .where({ markov: markov.db }) .orderBy('RANDOM()') .limit(1) .getOne(); @@ -565,7 +559,7 @@ client.on('messageDelete', async (message) => { return; } const markov = await getMarkovByGuildId(message.guildId); - await markov.removeData([message.content]); + await markov.removeStrings([message.content]); }); client.on('messageUpdate', async (oldMessage, newMessage) => { @@ -575,7 +569,7 @@ client.on('messageUpdate', async (oldMessage, newMessage) => { return; } const markov = await getMarkovByGuildId(oldMessage.guildId); - await markov.removeData([oldMessage.content]); + await markov.removeStrings([oldMessage.content]); await markov.addData([newMessage.content]); });