Bygg en aktiebevakningsbot för Slack och Discord

Lär dig hur du skapar ett enkelt script i Node.js för att skicka notiser till Slack eller Discord när dina favoritbolag publicerar nya rapporter.

10 juli 20266 min läsning

Att manuellt söka efter nya delårsrapporter är tidskrävande. Genom att bygga en enkel serverless bot eller ett schemalagt Node.js-skript kan du få ett direktmeddelande i din Slack- eller Discord-kanal så fort dina favoritbolag publicerar sina bokslut.

Hur fungerar bevakningen?

Vi skapar ett Node.js-skript som:

  1. Anropar BörsAPI:s rapport-endpoint för dina bevakade aktier.
  2. Sparar den senaste rapporterade perioden i en lokal textfil eller minnescache.
  3. Jämför perioden mot föregående körning — om en ny period har dykt upp, skickar skriptet ett meddelande till en Discord/Slack-webhook.

Skapa en Webhook i Discord eller Slack

Innan du börjar behöver du skapa en inkommande webhook:

  • Discord: Gå till kanalinställningar → Integrationer → Webhooks. Skapa en ny webhook och kopiera dess URL.
  • Slack: Skapa en app på Slack API-hemsida, aktivera "Incoming Webhooks" och anslut den till din kanal.

Node.js-kod för boten

Nedan är ett komplett skript i JavaScript för Node.js. Installera först axios för att göra anropen:

npm install axios
const axios = require('axios');
const fs = require('fs');

const API_KEY = "fd_din_api_nyckel_här";
const WEBHOOK_URL = "https://discord.com/api/webhooks/din_webhook_url";
const CACHE_FILE = "reports_cache.json";

// Listan med ISIN-koder för bolagen du vill bevaka
const WATCHLIST = [
  { isin: "SE0000115446", name: "Volvo AB" },
  { isin: "SE0011166610", name: "Atlas Copco" }
];

// Ladda historisk cache från disk
let cache = {};
if (fs.existsSync(CACHE_FILE)) {
  cache = JSON.parse(fs.readFileSync(CACHE_FILE, 'utf8'));
}

async function sendNotification(companyName, report) {
  const message = {
    content: `📢 **Ny rapport publicerad!**\n**Bolag:** ${companyName}\n**Period:** ${report.period}\n**Omsättning:** ${(report.revenue / 1000000).toFixed(1)} Mkr\n**Rörelseresultat:** ${(report.operating_income / 1000000).toFixed(1)} Mkr\n[Logga in på BörsAPI för att se mer](https://borsapi.se)`
  };

  await axios.post(WEBHOOK_URL, message);
}

async function checkReports() {
  console.log("Söker efter nya finansiella rapporter...");
  
  for (const item of WATCHLIST) {
    try {
      const url = `https://borsapi.se/api/v1/companies/${item.isin}/reports?limit=1`;
      const response = await axios.get(url, {
        headers: { "Authorization": `Bearer ${API_KEY}` }
      });
      
      const reports = response.data;
      if (reports.length === 0) continue;
      
      const latestReport = reports[0];
      const cacheKey = item.isin;
      
      // Kontrollera om perioden skiljer sig från sparad cache
      if (cache[cacheKey] !== latestReport.period) {
        console.log(`Ny rapport hittad för ${item.name}: ${latestReport.period}`);
        await sendNotification(item.name, latestReport);
        
        // Uppdatera cachen
        cache[cacheKey] = latestReport.period;
      }
    } catch (err) {
      console.error(`Misslyckades att hämta data för ${item.name}:`, err.message);
    }
  }
  
  // Spara uppdaterad cache till fil
  fs.writeFileSync(CACHE_FILE, JSON.stringify(cache, null, 2));
  console.log("Sökning klar.");
}

// Kör bevakningskontrollen
checkReports();

Schemalägg körningen

För att boten ska köra automatiskt varje morgon kan du lägga till den som ett **cron-jobb** på din server eller använda en molnbaserad tjänst som AWS Lambda, Google Cloud Functions eller GitHub Actions (med workflow_dispatch och en tidsinställd trigger).

Kom igång med BörsAPI

För att använda dessa mallar och skript behöver du ett personligt konto och en API-nyckel. Det är helt kostnadsfritt under vår beta-period.

1. Skapa konto

Registrera dig på några sekunder via registreringssidan.

2. Generera API-nyckel

Gå till din Dashboard och klicka på "Generera API-nyckel".

3. Anslut i mallen

Ersätt placeholder-nyckeln i källkoden eller kalkylarket med din personliga nyckel.

    Bygg en aktiebevakningsbot för Slack och Discord - BörsAPI.se