Browse Source

bot: heartbeat fixes

Joystream Stats 4 years ago
parent
commit
67d2054b3b

+ 3 - 3
community-contributions/joystreamtelegrambot/config.ts

@@ -5,13 +5,13 @@ export const domain = "https://testnet.joystream.org";
 export const wsLocation = "wss://rome-rpc-endpoint.joystream.org:9944/";
 
 // telegram bot token
-export const token = "";
+export const token: string = "1168139699:AAHUWqHWqteAy55yM2yhF1XMvV1BgmYvfog";
 
 // telegram chat ID
-export const chatid = "";
+export const chatid: string = "-1001438587296";
 
 // time between heartbeat announcement in milliseconds
-export const heartbeat = 60000 * 60 * 24;
+export const heartbeat = 60000 * 60 * 6;
 
 // minutes between checking for proposal updates
 export const proposalDelay = 15

+ 7 - 6
community-contributions/joystreamtelegrambot/src/bot.ts

@@ -20,7 +20,7 @@ process.env.NTBA_FIX_319 ||
 
 const bot = token ? new TelegramBot(token, { polling: true }) : null;
 
-let startTime: number = moment().valueOf();
+let lastHeartbeat: number = moment().valueOf();
 
 const sendMessage = (msg: string) => {
   if (msg === "") return;
@@ -49,7 +49,7 @@ const main = async () => {
   let lastBlock: Block = {
     id: 0,
     duration: 6000,
-    timestamp: startTime,
+    timestamp: lastHeartbeat,
     stake: 0,
     noms: 0,
     vals: 0,
@@ -98,7 +98,7 @@ const main = async () => {
       const era = Number(await api.query.staking.currentEra());
 
       if (era > lastEra) {
-        vals = Number(await api.query.staking.validatorCount());
+        vals = (await api.query.session.validators()).length;
         stake = Number(await api.query.staking.erasTotalStake(era));
         issued = Number(await api.query.balances.totalIssuance());
         reward = (await getReward(era - 1)) || (await getReward(era - 2));
@@ -131,10 +131,10 @@ const main = async () => {
       blocks = blocks.concat(block);
 
       // heartbeat
-      if (timestamp > startTime + heartbeat) {
-        const time = passedTime(startTime, timestamp);
+      if (timestamp > lastHeartbeat + heartbeat) {
+        const time = passedTime(lastHeartbeat, timestamp);
         blocks = announce.heartbeat(api, blocks, time, proposals, sendMessage);
-        startTime = block.timestamp;
+        lastHeartbeat = block.timestamp;
       }
 
       // announcements
@@ -167,6 +167,7 @@ const main = async () => {
       }
 
       printStatus(opts, { block: id, cats, chain, posts, proposals });
+      lastBlock = block
     }
   );
 };

+ 6 - 6
community-contributions/joystreamtelegrambot/src/lib/announcements.ts

@@ -76,8 +76,8 @@ export const council = async (
     const block = councilEnd.toNumber() - termDuration.toNumber();
     if (currentBlock - block < 2000) {
       const remainingBlocks = councilEnd.toNumber() - currentBlock;
-      const moment = moment().add(remainingBlocks * 6, "s");
-      const endDate = formatTime(moment, "DD/MM/YYYY");
+      const m = moment().add(remainingBlocks * 6, "s");
+      const endDate = formatTime(m, "DD/MM/YYYY");
 
       const handles: string[] = await Promise.all(
         (await api.query.council.activeCouncil()).map(
@@ -91,8 +91,8 @@ export const council = async (
     }
   } else {
     const remainingBlocks = stage.toJSON()[stageString] - currentBlock;
-    const moment = moment().add(remainingBlocks * 6, "second");
-    const endDate = formatTime(moment, "DD-MM-YYYY HH:mm (UTC)");
+    const m = moment().add(remainingBlocks * 6, "second");
+    const endDate = formatTime(m, "DD-MM-YYYY HH:mm (UTC)");
 
     if (stageString === "Announcing")
       msg = `Council election started. You can <b><a href="${domain}/#/council/applicants">announce your application</a></b> until ${endDate}`;
@@ -182,7 +182,7 @@ export const proposals = async (
     const proposal: ProposalDetail = await proposalDetail(api, id);
     const { finalizedAt, message, parameters, result, stage } = proposal;
     if (stage === "Finalized") {
-      let label: string = result;
+      let label: string = result.toLowerCase();
       if (result === "Approved") {
         const executed = parameters.gracePeriod.toNumber() > 0 ? false : true;
         label = executed ? "executed" : "finalized";
@@ -243,7 +243,7 @@ export const heartbeat = (
   let props = active
     ? `\n<a href="${domain}/#/proposals">${active} active ${p(active)}</a> `
     : "";
-  if (executing) props += `{executing} ${p(executing)} to be executed.`;
+  if (executing) props += `${executing} ${p(executing)} to be executed.`;
 
   sendMessage(
     `  ${blocks.length} blocks produced in ${timePassed}