From ec56ff7c8ae468b9738552bdd16033e3a435c0c1 Mon Sep 17 00:00:00 2001 From: Sefa Eyeoglu Date: Tue, 14 Jun 2022 12:06:58 +0200 Subject: [PATCH 1/4] fix(docker): optimize build times --- Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 3c578c9..74f82d1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,6 @@ FROM docker.io/library/node:18-alpine WORKDIR /app -COPY . . +COPY package.json yarn.lock ./ RUN yarn install --frozen-lockfile +COPY . . CMD [ "yarn", "start" ] From fe821ecd36b4a9593e8764554d7ff8b4e262631a Mon Sep 17 00:00:00 2001 From: Sefa Eyeoglu Date: Tue, 14 Jun 2022 12:08:47 +0200 Subject: [PATCH 2/4] fix: update license in package.json --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 0c970b2..2ad17ed 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "roly-poly", "version": "1.0.0", - "license": "MIT", + "license": "GPL-3.0", "scripts": { "dev": "NODE_ENV=development tsx watch src/index.ts", "start": "tsx src/index.ts", From e1622eb545b06f69a7da64b0c83bb5603532d501 Mon Sep 17 00:00:00 2001 From: Sefa Eyeoglu Date: Tue, 14 Jun 2022 12:13:56 +0200 Subject: [PATCH 3/4] refactor: move ETA values to constants --- src/constants.ts | 19 +++++++++++++++++++ src/index.ts | 20 ++------------------ 2 files changed, 21 insertions(+), 18 deletions(-) diff --git a/src/constants.ts b/src/constants.ts index acc7490..7e95fa4 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -1,3 +1,22 @@ export const GUILD_ID = '923671181020766230'; export const DEBUG_CHANNEL_ID = '977401259260788756'; export const POLYCAT_CHANNEL_ID = '977797790749032448'; + +export const ETA_REGEX = /\beta\b/i; +export const ETA_MESSAGES = [ + 'Sometime', + 'Some day', + 'Not far', + 'The future', + 'Never', + 'Perhaps tomorrow?', + 'There are no ETAs', + 'No', + 'Nah', + 'Yes', + 'Yas', + 'Next month', + 'Next year', + 'Next week', + 'In PolyMC 2.0.0', +]; diff --git a/src/index.ts b/src/index.ts index 96957dd..fc77e23 100644 --- a/src/index.ts +++ b/src/index.ts @@ -105,25 +105,9 @@ client.once('ready', async () => { return; } - if (e.cleanContent.match(/(\b| )(eta|ETA)( |\?|!|\b)/)) { + if (e.cleanContent.match(BuildConfig.ETA_REGEX)) { await e.reply( - `${random([ - 'Sometime', - 'Some day', - 'Not far', - 'The future', - 'Never', - 'Perhaps tomorrow?', - 'There are no ETAs', - 'No', - 'Nah', - 'Yes', - 'Yas', - 'Next month', - 'Next year', - 'Next week', - 'In PolyMC 2.0.0', - ])} <:pofat:964546613194420294>` + `${random(BuildConfig.ETA_MESSAGES)} <:pofat:964546613194420294>` ); } From b5abe4e4160311c9e374ea56b8717fef9fda2821 Mon Sep 17 00:00:00 2001 From: Sefa Eyeoglu Date: Tue, 14 Jun 2022 12:37:51 +0200 Subject: [PATCH 4/4] refactor: move latest version logic --- src/index.ts | 8 ++++---- src/logs.ts | 4 ++-- src/utils/minecraftVersion.ts | 13 ------------- src/utils/remoteVersions.ts | 24 ++++++++++++++++++++++++ src/version.ts | 11 ----------- 5 files changed, 30 insertions(+), 30 deletions(-) delete mode 100644 src/utils/minecraftVersion.ts create mode 100644 src/utils/remoteVersions.ts delete mode 100644 src/version.ts diff --git a/src/index.ts b/src/index.ts index fc77e23..ab8555a 100644 --- a/src/index.ts +++ b/src/index.ts @@ -22,7 +22,7 @@ import { join } from 'path'; import { green, bold, blue, underline, yellow } from 'kleur/colors'; import 'dotenv/config'; -import { getLatestMinecraft } from './utils/minecraftVersion'; +import { getLatestMinecraftVersion } from './utils/remoteVersions'; export interface Command { name: string; @@ -79,7 +79,7 @@ client.once('ready', async () => { ); client.user?.presence.set({ - activities: [{ name: `Minecraft ${await getLatestMinecraft()}` }], + activities: [{ name: `Minecraft ${await getLatestMinecraftVersion()}` }], status: 'online', }); @@ -133,6 +133,7 @@ async function parseMsg(e: Message) { ); if (!cmd) { + // TODO: Do not read tags.json everytime there is a new message const tag = await getTags().then((r) => r.find( (t) => t.name == parsed.command || t.aliases?.includes(parsed.command) @@ -142,12 +143,11 @@ async function parseMsg(e: Message) { if (tag) { if (tag.text) { e.reply(tag.text); - return true; } else if (tag.embed) { const em = new MessageEmbed(tag.embed); e.reply({ embeds: [em] }); - return true; } + return true; } return false; } diff --git a/src/logs.ts b/src/logs.ts index d7d9cf6..b50a7bd 100644 --- a/src/logs.ts +++ b/src/logs.ts @@ -1,4 +1,4 @@ -import { getLatest } from './version'; +import { getLatestPolyMCVersion } from './utils/remoteVersions'; import { MessageEmbed } from 'discord.js'; // log providers @@ -34,7 +34,7 @@ const javaAnalyzer: Analyzer = async (text) => { const versionAnalyzer: Analyzer = async (text) => { const vers = text.match(/PolyMC version: [0-9].[0-9].[0-9]/g); if (vers && vers[0]) { - const latest = await getLatest(); + const latest = await getLatestPolyMCVersion(); const current = vers[0].replace('PolyMC version: ', ''); if (latest != current) { return [ diff --git a/src/utils/minecraftVersion.ts b/src/utils/minecraftVersion.ts deleted file mode 100644 index 8a6cf24..0000000 --- a/src/utils/minecraftVersion.ts +++ /dev/null @@ -1,13 +0,0 @@ -interface SimplifiedMetaVersion { - recommended: boolean; - type: 'release' | 'snapshot'; - version: string; -} - -export const getLatestMinecraft = async () => { - const meta = (await fetch( - 'https://meta.polymc.org/v1/net.minecraft/index.json' - ).then((r) => r.json())) as { versions: SimplifiedMetaVersion[] }; - - return meta.versions.filter((v) => v.recommended)[0].version; -}; diff --git a/src/utils/remoteVersions.ts b/src/utils/remoteVersions.ts new file mode 100644 index 0000000..6f259cf --- /dev/null +++ b/src/utils/remoteVersions.ts @@ -0,0 +1,24 @@ +interface MetaPackage { + formatVersion: int; + name: string; + recommended: string[]; + uid: string; +} + +interface SimplifiedGHReleases { + tag_name: string; +} + +// TODO: caching +export async function getLatestMinecraftVersion(): Promise { + const f = await fetch('https://meta.polymc.org/v1/net.minecraft/package.json'); + const package = await f.json() as MetaPackage; + return package.recommended[0]; +} + +// TODO: caching +export async function getLatestPolyMCVersion(): Promise { + const f = await fetch('https://api.github.com/repos/PolyMC/PolyMC/releases'); + const versions = await f.json() as SimplifiedGHReleases[]; + return versions[0].tag_name; +} diff --git a/src/version.ts b/src/version.ts deleted file mode 100644 index e4abff5..0000000 --- a/src/version.ts +++ /dev/null @@ -1,11 +0,0 @@ -let cachedVer: string; -let cachedTimestamp: number; - -export async function getLatest(): Promise { - if (cachedVer && Date.now() - cachedTimestamp < 600000) return cachedVer; // 10min - const f = await fetch('https://api.github.com/repos/PolyMC/PolyMC/releases'); - const versions = await f.json(); - cachedVer = versions[0].tag_name; - cachedTimestamp = Date.now(); - return versions[0].tag_name; -}