Usando Node.js 16.9.0
¡Hola todos!
Así que en mi servidor de discordia tengo algunos amigos a los que les gusta "Llamar dormidos", pero necesitan que un moderador los desconecte unas horas después de que se duerman. Me gustaría agregar un comando a mi bot de discordia que funcione como ".sleepcall 3h", y luego en 3 horas se desconectarían del VC en el que se encuentran. Mi pensamiento actual es crear una entrada en mi sql db con el desconecte el tiempo (hora actual + tiempo de espera deseado), y luego haga que se ejecute un ciclo cada minuto para ver si alguien necesita ser desconectado. Alguien me mencionó que hay una manera de hacer eso con bucles en lugar de JS, y necesito un poco de dirección para comenzar. Creo que podré hacer todo el código de soporte, pero estoy un poco perdido sobre cómo hacer el temporizador. Soy competente en C++, pero nunca antes había incursionado en lenguajes asincrónicos.
¿Cómo haría una función que, después de ser llamada, esperaría 1 hora (por ejemplo) y luego llamaría a otra función MIENTRAS también es asíncrona que permite que varios temporizadores funcionen a la vez?
Mi sudocódigo:
//userID = 8 digit integer //timeout = time until disconnect in seconds function disconnect (userID, timeout){ while (timeout >0){ timeout-1 second wait 1 second } if (timeout == 0){ disconnect(userID) } }
Necesitaría varias instancias de la función de cuenta regresiva para poder ejecutarse al mismo tiempo para permitir que varios usuarios usen el bot
Le recomendaría usar las funciones setTimeout() y clearTimeout() en javascript. Lea más sobre ellos aquí .
Como función de devolución de llamada, proporcionaría su función de desconexión. En la llamada, javascript iniciará el temporizador y, después de la cantidad proporcionada de tiempo de espera, se ejecutará la función de devolución de llamada. La cuenta regresiva ocurrirá detrás de escena (asincrónica) mientras que todas las demás funciones funcionarán normalmente.