Estado actual: actualmente estoy usando next.js para crear una aplicación web. Me gustaría que esta aplicación web también publicara en mi cuenta de Twitter. Ya he creado una cuenta de desarrollador en Twitter y una API en nextjs. Llamar a la API activará la solicitud de publicación y creará una publicación en mi cuenta de Twitter ya que toda la autenticación está configurada.
Lo que me gustaría: Me gustaría que mi cuenta publique un tweet cada 24 horas, así que digamos todos los días a las 5 de la mañana (mi hora local). Necesitaría que se publique este tweet, también cuando nadie solicite el sitio web. Desafortunadamente, no he descubierto cómo configurar esto todavía. Cualquier ayuda es apreciada.
Estuve pensando en usar getStaticProps con la función de revalidación de nextjs, pero me di cuenta de que cuando nadie solicita la página web, todavía no funciona. Incluso cuando el código se ejecuta en el lado del servidor.
Así es como se ve actualmente el código en mi API:
import type { NextApiRequest, NextApiResponse } from 'next' import Twitter from 'twitter' export default async function postTweet(req: NextApiRequest, res: NextApiResponse){ const client = new Twitter({ consumer_key: process.env.TWITTER_CONSUMER_KEY ?? "", consumer_secret: process.env.TWITTER_CONSUMER_SECRET ?? "", access_token_key: process.env.ACCESS_TOKEN_KEY ?? "", access_token_secret: process.env.ACCESS_TOKEN_SECRET ?? "", }); client.post( 'statuses/update', { status: message + `(${currentDate})` }, function (error, tweet, response) { if (error) throw error; // console.log(tweet); // Tweet body. // console.log(response); // Raw response object. } ); }¡Cualquier idea de cómo podría realizar esto es bienvenida!
es muy buena pregunta. Puede lograr esto configurando un CRON JOB . Es una forma de decirle al servidor que ejecute una tarea específica con un intervalo de tiempo o en un momento específico de un día/semana/mes, etc.
Si desea usar GitHub Actions, tiene una función CRON JOB, puede leer más aquí https://vercel.com/docs/concepts/solutions/cron-jobs Puede generar la expresión cron https://crontab.cronhub.io / como p. ej.: para todos los días a las 5 a. m.: 0 5 * * *
name: tweet-at-morning on: schedule: - cron: '0 5 * * *' jobs: cron: runs-on: ubuntu-latest steps: - name: Call our API route run: | curl --request POST \ --url 'https://yoursite.com/api/cron' \ --header 'Authorization: Bearer ${{ secrets.API_SECRET_KEY }}'De lo contrario, puede usar una biblioteca de nodos para hacer una cola de trabajos. Encontré Bull.js https://github.com/OptimalBits/bull esta biblioteca como la más fácil y confiable para crear un servidor de trabajo.