node.js - How to handle time taking processes in slack app view - Stack Overflow

时间: 2025-01-06 admin 业界
  import { NextApiRequest, NextApiResponse } from 'next';
  import NextConnectReceiver from 'src/utils/NextConnectReceiver';
  import { App } from "@slack/bolt";
  //@ts-ignore
  import dotenv from 'dotenv';
  import { handleOpenReportModal, handleGenerateReport } from "../../events/report";
  import { handleAppLoad } from "../../events/home";
  import { handleCherryReaction } from "../../events/reaction";
  import initializeFirebase from "../../db";
  import { respondToReportQuestions } from 'src/utils/ask';

  dotenv.config();
  const receiver = new NextConnectReceiver({
    signingSecret: process.env.SLACK_SIGNING_SECRET || 'invalid',
    processBeforeResponse: true
  });

  const processedMessages = new Set<string>();
  const MESSAGE_EXPIRY = 60000;

  const app = new App({
    token: process.env.SLACK_BOT_TOKEN,
    signingSecret: process.env.SLACK_SIGNING_SECRET,
    receiver: receiver
  });

  // Single initialization flag
  let isInitialized = false;

  const initializeApp = async () => {
    if (!isInitialized) {
      try {
        await initializeFirebase();

        // Command handlers
        appmand("/report", async ({ ack, ...req }) => {
          await ack();
          await handleOpenReportModal(req);
        });

        // // View handlers
        app.view({ callback_id: "report_modal" }, async (req) => {
          const { ack } = req;
          await ack();
          console.log("Report modal view");
          try {
            handleGenerateReport(req);

          } catch (error) {
            console.error("Error adding job to queue:", error);
          }
        });

    
        app.error(async (error) => {
          console.error("Cherry app error:", error);
        });

        receiver.init(app);

        isInitialized = true;
        console.log("      
               
              
            
最新文章