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; -}