Made announcement logic better
This commit is contained in:
parent
bcdfb07eb0
commit
af047f4183
23
main.js
23
main.js
|
@ -18,7 +18,7 @@ const client = new Client({
|
||||||
const solanaPriceChannelId = process.env.SOLANA_PRICE_CHANNEL_ID;
|
const solanaPriceChannelId = process.env.SOLANA_PRICE_CHANNEL_ID;
|
||||||
const announcementsChannelId = process.env.ANNOUNCEMENTS_CHANNEL_ID;
|
const announcementsChannelId = process.env.ANNOUNCEMENTS_CHANNEL_ID;
|
||||||
const solanaDataFile = './data/solana.json';
|
const solanaDataFile = './data/solana.json';
|
||||||
let lastKnownPriceAtStartup;
|
let lastAnnouncedPrice;
|
||||||
let lastPriceMessageId;
|
let lastPriceMessageId;
|
||||||
|
|
||||||
client.once('ready', async () => {
|
client.once('ready', async () => {
|
||||||
|
@ -26,7 +26,7 @@ client.once('ready', async () => {
|
||||||
let solanaData = readSolanaData();
|
let solanaData = readSolanaData();
|
||||||
if (solanaData) {
|
if (solanaData) {
|
||||||
priceHistory = solanaData;
|
priceHistory = solanaData;
|
||||||
lastKnownPriceAtStartup = solanaData.currentPrice;
|
lastAnnouncedPrice = solanaData.lastAnnouncedPrice;
|
||||||
lastPriceMessageId = solanaData.lastPriceMessageId;
|
lastPriceMessageId = solanaData.lastPriceMessageId;
|
||||||
}
|
}
|
||||||
immediatePriceCheckAndAnnounce();
|
immediatePriceCheckAndAnnounce();
|
||||||
|
@ -134,6 +134,8 @@ async function checkPriceContinuously() {
|
||||||
await fetchSolanaPriceAndUpdateHistory();
|
await fetchSolanaPriceAndUpdateHistory();
|
||||||
const { oneMinChange, fiveMinChange, oneHourChange } = calculateChanges();
|
const { oneMinChange, fiveMinChange, oneHourChange } = calculateChanges();
|
||||||
|
|
||||||
|
console.log(`Current Price: ${priceHistory.currentPrice}`);
|
||||||
|
|
||||||
const embed = new EmbedBuilder()
|
const embed = new EmbedBuilder()
|
||||||
.setColor(0x0099ff)
|
.setColor(0x0099ff)
|
||||||
.setThumbnail('https://solana.com/src/img/branding/solanaLogoMark.png')
|
.setThumbnail('https://solana.com/src/img/branding/solanaLogoMark.png')
|
||||||
|
@ -164,10 +166,11 @@ async function checkPriceContinuously() {
|
||||||
sendNewPriceMessage(solanaPriceChannel, embed);
|
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);
|
const announcementsChannel = await client.channels.fetch(announcementsChannelId);
|
||||||
await announcementsChannel.send(`@everyone Solana price has increased significantly! Current price: $${priceHistory.currentPrice}`);
|
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);
|
setTimeout(checkPriceContinuously, 60000);
|
||||||
|
@ -179,14 +182,22 @@ function saveSolanaData(data) {
|
||||||
fs.mkdirSync(dir, { recursive: true });
|
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() {
|
function readSolanaData() {
|
||||||
try {
|
try {
|
||||||
if (fs.existsSync(solanaDataFile)) {
|
if (fs.existsSync(solanaDataFile)) {
|
||||||
const fileContent = fs.readFileSync(solanaDataFile, 'utf8');
|
const fileContent = fs.readFileSync(solanaDataFile, 'utf8');
|
||||||
return JSON.parse(fileContent);
|
const data = JSON.parse(fileContent);
|
||||||
|
|
||||||
|
lastAnnouncedPrice = data.lastAnnouncedPrice || null;
|
||||||
|
return data;
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Error reading Solana data:', error);
|
console.error('Error reading Solana data:', error);
|
||||||
|
|
Loading…
Reference in New Issue