diff --git a/main.js b/main.js index 64040bf..4c947bd 100644 --- a/main.js +++ b/main.js @@ -18,7 +18,7 @@ const client = new Client({ const solanaPriceChannelId = process.env.SOLANA_PRICE_CHANNEL_ID; const announcementsChannelId = process.env.ANNOUNCEMENTS_CHANNEL_ID; const solanaDataFile = './data/solana.json'; -let lastKnownPriceAtStartup; +let lastAnnouncedPrice; let lastPriceMessageId; client.once('ready', async () => { @@ -26,7 +26,7 @@ client.once('ready', async () => { let solanaData = readSolanaData(); if (solanaData) { priceHistory = solanaData; - lastKnownPriceAtStartup = solanaData.currentPrice; + lastAnnouncedPrice = solanaData.lastAnnouncedPrice; lastPriceMessageId = solanaData.lastPriceMessageId; } immediatePriceCheckAndAnnounce(); @@ -134,6 +134,8 @@ async function checkPriceContinuously() { await fetchSolanaPriceAndUpdateHistory(); const { oneMinChange, fiveMinChange, oneHourChange } = calculateChanges(); + console.log(`Current Price: ${priceHistory.currentPrice}`); + const embed = new EmbedBuilder() .setColor(0x0099ff) .setThumbnail('https://solana.com/src/img/branding/solanaLogoMark.png') @@ -164,10 +166,11 @@ async function checkPriceContinuously() { sendNewPriceMessage(solanaPriceChannel, embed); } - if (lastKnownPriceAtStartup !== null && (parseFloat(priceHistory.currentPrice) - lastKnownPriceAtStartup >= 2.5)) { + if (lastAnnouncedPrice !== null && (parseFloat(priceHistory.currentPrice) - lastAnnouncedPrice >= 2.5)) { const announcementsChannel = await client.channels.fetch(announcementsChannelId); await announcementsChannel.send(`@everyone Solana price has increased significantly! Current price: $${priceHistory.currentPrice}`); - lastKnownPriceAtStartup = parseFloat(priceHistory.currentPrice); + lastAnnouncedPrice = parseFloat(priceHistory.currentPrice); + saveSolanaData({ ...priceHistory, lastAnnouncedPrice }); } setTimeout(checkPriceContinuously, 60000); @@ -179,14 +182,22 @@ function saveSolanaData(data) { fs.mkdirSync(dir, { recursive: true }); } - fs.writeFileSync(solanaDataFile, JSON.stringify(data, null, 2), 'utf8'); + const dataToSave = { + ...data, + lastAnnouncedPrice: lastAnnouncedPrice, + }; + + fs.writeFileSync(solanaDataFile, JSON.stringify(dataToSave, null, 2), 'utf8'); } function readSolanaData() { try { if (fs.existsSync(solanaDataFile)) { const fileContent = fs.readFileSync(solanaDataFile, 'utf8'); - return JSON.parse(fileContent); + const data = JSON.parse(fileContent); + + lastAnnouncedPrice = data.lastAnnouncedPrice || null; + return data; } } catch (error) { console.error('Error reading Solana data:', error);