From 372b7c1f665838d8e4578572f0a287c7f11a16f4 Mon Sep 17 00:00:00 2001 From: Maufeat Date: Fri, 18 Jul 2025 22:52:42 +0200 Subject: [PATCH] changes --- .env.example | 11 +++++++++++ src/client.js | 5 +++-- src/functions/description_watcher.js | 7 +++---- src/functions/release_watcher.js | 7 +++++-- 4 files changed, 22 insertions(+), 8 deletions(-) create mode 100644 .env.example diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..766cf71 --- /dev/null +++ b/.env.example @@ -0,0 +1,11 @@ +# Discord +DISCORD_TOKEN= +CHANNEL_ID=1389308172531011615 + +# GitHub +GITHUB_TOKEN= + +# Eden Git (Generate Personal Token on your Eden Git account) +EDEN_TOKEN= +GITHUB_REPO=Eden-CI/PR +POLL_INTERVAL_MS=30000 \ No newline at end of file diff --git a/src/client.js b/src/client.js index fe30e19..24235fe 100644 --- a/src/client.js +++ b/src/client.js @@ -8,7 +8,7 @@ import initializeDescriptionWatcher from './functions/description_watcher.js'; const { DISCORD_TOKEN } = process.env; if (!DISCORD_TOKEN) { - console.error('Fatal: DISCORD_TOKEN is not set in the .env file.'); + console.error('DISCORD_TOKEN is not set in the .env file.'); process.exit(1); } @@ -23,7 +23,8 @@ const client = new Client({ client.once('ready', () => { console.log(`Logged in as ${client.user.tag}!`); - initializeReleaseWatcher(client); + // Release Watcher disabled for now, after the RAID have to setup again + //initializeReleaseWatcher(client); initializeDescriptionWatcher(client); }); diff --git a/src/functions/description_watcher.js b/src/functions/description_watcher.js index 11268cd..d0486ec 100644 --- a/src/functions/description_watcher.js +++ b/src/functions/description_watcher.js @@ -15,7 +15,7 @@ let isCheckingDescriptions = false; function disabled() { console.log('[Description Watcher] Service is disabled due to missing environment variables.'); - console.log('[Description Watcher] CHANNEL_ID = ' + CHANNEL_ID + ' GITHUB_TOKEN = ' + GITHUB_TOKEN + ' EDEN_TOKEN = ' + EDEN_TOKEN); + console.log('[Description Watcher][DEBUG] CHANNEL_ID = ' + CHANNEL_ID + ' GITHUB_TOKEN = ' + GITHUB_TOKEN + ' EDEN_TOKEN = ' + EDEN_TOKEN); } const wait = ms => new Promise(res => setTimeout(res, ms)); @@ -24,16 +24,15 @@ async function buildThreadContent(buildNumber) { let release; let relRes = await fetch(`https://api.github.com/repos/${REPO}/releases/tags/${buildNumber}`, { headers: { - 'User-Agent': 'description-watcher', + 'User-Agent': 'description-watcher, EDEN', Authorization: `token ${GITHUB_TOKEN}`, }, }); if (relRes.status === 404) { - // Tag lookup failed – list the latest 100 releases and find one whose tag_name == buildNumber const listRes = await fetch(`https://api.github.com/repos/${REPO}/releases?per_page=100`, { headers: { - 'User-Agent': 'description-watcher', + 'User-Agent': 'description-watcher, EDEN', Authorization: `token ${GITHUB_TOKEN}`, }, }); diff --git a/src/functions/release_watcher.js b/src/functions/release_watcher.js index e18644d..cbadfb8 100644 --- a/src/functions/release_watcher.js +++ b/src/functions/release_watcher.js @@ -15,7 +15,7 @@ let isCheckingReleases = false; function disabled() { console.log('[Release Watcher] Service is disabled due to missing environment variables.'); - console.log('[Release Watcher] CHANNEL_ID = '+CHANNEL_ID+' GITHUB_TOKEN = '+GITHUB_TOKEN+' EDEN_TOKEN = '+EDEN_TOKEN); + console.log('[Release Watcher][DEBUG] CHANNEL_ID = '+CHANNEL_ID+' GITHUB_TOKEN = '+GITHUB_TOKEN+' EDEN_TOKEN = '+EDEN_TOKEN); } async function announceRelease(release, channel, baseTag) { @@ -31,6 +31,7 @@ async function announceRelease(release, channel, baseTag) { } const title = `Build ${baseTag}`; const prUrl = `https://git.eden-emu.dev/eden-emu/eden/pulls/${baseTag}`; + // maybe a better with templating? dunno yet let content = `**${title} - ${release.name}**\n\n${desc}\n\nšŸ”— [Go to pull request](${prUrl})\n\nšŸ“ [Go to downloads](${release.html_url})`; if (content.length > 2000) content = content.slice(0, 1997) + '...'; @@ -53,8 +54,9 @@ async function checkReleases(client) { isCheckingReleases = true; try { const res = await fetch(`https://api.github.com/repos/${REPO}/releases`, { - headers: { 'User-Agent': 'release-watcher', 'Authorization': `token ${GITHUB_TOKEN}` } + headers: { 'User-Agent': 'release-watcher, EDEN', 'Authorization': `token ${GITHUB_TOKEN}` } }); + // i hate checking for status code like this if (res.status === 403) { console.error('[Release Watcher] GitHub API error: Rate limit or access denied.'); return; @@ -76,6 +78,7 @@ async function checkReleases(client) { allUniqueReleases.sort((a, b) => parseInt(b.tag_name) - parseInt(a.tag_name)); const toProcess = allUniqueReleases.slice(0, 10).reverse(); + // currently, we only support one channel const channel = await client.channels.fetch(CHANNEL_ID); if (channel.type !== ChannelType.GuildForum) { console.error(`[Release Watcher] Channel ${CHANNEL_ID} is not a Forum Channel.`);