paint-brush
Crear un bot de Discord que automatice los mensajes secretos con Node.jspor@courier
24,470 lecturas
24,470 lecturas

Crear un bot de Discord que automatice los mensajes secretos con Node.js

por Courier10m2022/09/29
Read on Terminal Reader
Read this story w/o Javascript

Demasiado Largo; Para Leer

¡El Courier Hackathon finaliza el 28 de septiembre y estamos regalando más de $ 1K en premios! Únase a nosotros para construir un proyecto genial y ganar cualquiera de los siguientes premios. El hackathon termina pronto,** y construiremos un bot de Discord que envíe mensajes automáticos diarios encriptados en código Morse con Node.js y la API de Courier. Regístrese ahora para enviar este proyecto y tener la oportunidad de ganar fantásticos premios, incluidos $1000 a través de Zelle o PayPal. El ganador favorito del público recibirá un teclado Keychron y una tarjeta de regalo de Amazon de $20.

Companies Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - Crear un bot de Discord que automatice los mensajes secretos con Node.js
Courier HackerNoon profile picture
0-item

Antes de empezar

Repositorio GitHub: https://github.com/shreythecray/infiltración


¡El hackathon termina pronto y estamos regalando más de $ 1K en premios! Únase a nosotros para construir un proyecto genial y ganar cualquiera de los siguientes premios. 🏆


  • Courier Hacks 1er lugar: la mejor presentación para uso de notificaciones y demostración de notificaciones adecuadas de aplicación a usuario con la API de Courier recibirá $ 1000 a través de Zelle o PayPal.

  • Courier Hacks 2do lugar: la presentación del 2do lugar para su uso en notificaciones y demostración de notificaciones adecuadas de aplicación a usuario con la API de Courier recibirá el Apple AirPods Pro.

  • Favorito del público: el ganador del favorito del público recibirá un teclado Keychron.

  • Finalistas: las presentaciones de los finalistas recibirán un Hydro Flask.


¡Además, todos los que envíen un proyecto que integre con éxito la API de Courier recibirán una tarjeta de regalo de Amazon de $20! Las inscripciones cierran el 28 de septiembre . Regístrese ahora para enviar este proyecto y tener la oportunidad de ganar algunos premios geniales.


Regístrese para el Hackathon: https://courier-hacks.devpost.com/


¿No estás seguro por dónde empezar? En este tutorial, crearemos un bot de Discord que envíe mensajes automatizados diarios encriptados en código Morse con Node.js y la API de Courier.

¿Que esta pasando?

Resumen

Somos agentes secretos y previamente construimos una aplicación para enviar mensajes secretos encriptados en código Morse para comunicarnos con nuestra red de espionaje. Más información >

La última vez, el cuartel general nos dijo que uno de nuestros espías había filtrado información confidencial de alto secreto a nuestros enemigos, por lo que construimos un detector de mentiras que alertó a nuestra red de espionaje cuando identificamos al topo. Utilizamos los servicios cognitivos de Azure para realizar el reconocimiento facial de todos los miembros de nuestro equipo y Courier para transmitir la identidad del topo a nuestra red de espionaje. Más información >

Que sigue:

¡Hemos identificado con éxito a la mula y hemos alertado a nuestra red de espionaje! En un desafortunado giro de los acontecimientos, la mula resulta ser nuestro socio, el Agente X, y ahora también se sospecha que somos traidores. Dado que somos muy hábiles, el Cuartel General sabe que el detector de mentiras no funcionará con nosotros, pero nos han puesto fuera de servicio hasta que podamos probar que somos inocentes.

Antes de que nos retiraran del servicio, pudimos usar el detector de mentiras para descubrir que el enemigo tenía a miles de civiles bajo control en un servidor secreto de Discord. A los civiles se les lava el cerebro con propaganda enemiga todos los días. Para demostrar nuestra inocencia, decidimos ir de incógnito e infiltrarnos en el servidor Discord del enemigo. Con la ayuda del Agente X, hemos sido agregados al servidor como administradores. Nuestro plan es crear e instalar un bot de Discord que automatice los mensajes encriptados a los civiles y los alerte sobre la situación para que puedan escapar.

Construyamos

Requisitos previos:

  • Acceso de administrador a un servidor Discord

  • Un genial nombre de agente encubierto para nuestro bot de Discord

  • Opcional: una genial foto de perfil de agente encubierto para nuestro bot de Discord


Parte 1: configurar el proyecto Node.js

Hoy, construiremos esto con Node.js. Si tiene curiosidad acerca de cómo construir este proyecto usando Ruby, cURL, Powershell, Go, PHP, Python o Java, infórmenos: https://discord.com/invite/courier . También puede acceder al código para estos dentro de nuestro Referencia de la API . Empecemos:


  • Cree una nueva carpeta de proyecto.

  • Cree tres nuevos archivos: "index.js", ".env" y ".gitignore".


  • Instalar paquete dotenv npm para almacenar variables: npm install dotenv --save


  • Importe y configure dotenv agregando a la parte superior de index.js: require("dotenv").config();


  • Del mismo modo, instale paquete nodo-fetch npm para realizar llamadas a la API: npm install node-fetch@2


  • Importe y configure node-fetch agregando a la parte superior de index.js: const fetch = require("node-fetch");

Parte 2: crea un bot de Discord

  • Regístrese en (o inicie sesión) Courier >

  • Abra el proveedor de Discord en Canales. Aquí necesitaremos nuestro token de bot de Discord para continuar.

  • Para acceder a un token de bot de Discord, crearemos una aplicación de Discord y agregaremos un bot de Discord.

    • Haga clic en "Nueva aplicación" dentro de la Panel de desarrolladores de Discord .
    • Escriba el nombre de la aplicación y haga clic en "Crear".
    • En el menú de la izquierda, abra la página "Bot" y haga clic en "Agregar bot". Podemos actualizar el ícono y el nombre de usuario (el archivo del ícono del bot se puede encontrar en el GitHub vinculado anteriormente).
  • Una vez que se haya creado el bot, copie el token de bot provisto y péguelo en Courier (asegúrese de mantener este token en privado).

  • Tendremos que dar permiso a esta aplicación para publicar como el bot dentro de nuestro servidor. Revisar la Documentación de permisos de bot .

    • Dentro de la aplicación, dirígete a OAuth2 y haz clic en Generador de URL
    • Seleccione el alcance del bot
    • Seleccione los siguientes permisos: View Channels , Send Messages y Read Message History
    • Vaya a la URL generada a continuación. Esta URL invitará al bot al servidor y lo autorizará con los permisos elegidos.
  • En Discord, haga clic en Configuración de usuario (junto al nombre de usuario en la parte inferior izquierda). Accede a la página de configuración avanzada y habilita el modo de desarrollador ✅.

  • De vuelta en el servidor de Discord, haga clic derecho en el canal y copie la ID del canal (al final de la lista). Agregue esto como el valor de channelID en el archivo .env dentro del proyecto y guárdelo como una variable dentro del archivo index.js:

     1const channelID = process.env.channelID

Ahora, Courier tiene acceso para enviar mensajes a este servidor como bot.

Parte 3: Enviar mensajes

  • Crear una nueva notificación dentro de la Diseñador de notificaciones

  • Agregue el canal de notificación de Chat con Discord como proveedor

  • Seleccione en el canal de Chat a la derecha para editar el mensaje



  • Redactar y publicar el mensaje. Necesitamos crear un mensaje claro que indique a nuestros civiles cómo escapar. Nuestro mensaje será: Run while you can. You can find shelter here: https://discord.com/invite/courier.


  • Copie el ID de la plantilla de notificación de la configuración de la notificación y agréguelo como el valor de templateID en el archivo .env dentro del proyecto y guárdelo como una variable dentro del archivo index.js:


     const templateID = process.env.templateID 


  • Cree un evento de prueba y reemplace channel_id en el JSON con el channel_id que recibimos de Discord anteriormente.


 { "courier": {}, "data": {}, "profile": { "discord": { "channel_id": "768866348853383208" } }, "override": {} }


  • Pruebe un mensaje para asegurarse de que la integración del proveedor de Discord funcione correctamente.

  • Sustituye el mensaje por una variable {secretMessage} para que, posteriormente, podamos editar el mensaje directamente desde nuestro código.




Parte 4: Cifrar mensajes con la API de Morse

  • Cree una función asincrónica llamada encryptMessage() , que tome originalMessage como parámetro. Esta función llamará a la API Morse, que nos permitirá traducir cualquier mensaje del inglés al código Morse. El enemigo tendrá que dedicar más tiempo y recursos a descifrar nuestros mensajes, lo que dará tiempo a nuestros civiles para escapar del servidor.


 async function encryptMessage(originalMessage) { }


  • Definamos las opciones de llamada de la API GET:


 const morseOptions = { method: 'GET', headers: { Accept: 'application/json', 'Content-Type': 'application/json' } };


  • Necesitamos adjuntar el parámetro de la función originalMessage al extremo de la API de Morse:


 const morseEndpoint = "https://api.funtranslations.com/translate/morse.json?text="+originalMessage


  • Necesitamos poder acceder a la traducción de esta llamada a la API en el cuerpo de la llamada a la API de Courier. Para llamar a la API, podemos usar node-fetch como lo hicimos antes.


  • Cree una variable llamada morseResponse , que contendrá la respuesta completa de esta llamada.

  • Convierta el objeto JSON en un objeto JavaScript morseResponseJSON para que podamos leerlo dentro de nuestro código.

  • Saca el mensaje traducido de ese objeto y guárdalo en una nueva variable llamada encryptedMessage .


  • Devuelva encryptedMessage para que podamos llamar a esta función para acceder a ella en otro lugar.


 const morseResponse = await fetch(morseEndpoint, morseOptions); const morseResponseJSON = await morseResponse.json(); const encryptedMessage = morseResponseJSON.contents.translated; console.log(encryptedMessage); return encryptedMessage; 


NOTA: La API de Morse tiene un límite de velocidad, lo que puede generar un error si la ejecuta demasiadas veces en una hora. En este caso, deberá esperar un tiempo antes de continuar.

Parte 5: Automatizar mensajes

Más información sobre Automatizaciones >


Consulte la referencia de la API de automatizaciones >


  • Cree una nueva función asíncrona llamada runDiscordAutomation() , que llamará a la función encryptMessage() para traducir un mensaje y usar la API Courier para enviar automáticamente mensajes al servidor Discord enemigo todos los días.


 async function runDiscordAutomation() { }


  • Antes de que podamos ejecutar nuestro mensaje a través de la API de traducción de Morse, debemos asegurarnos de que esté en el formato correcto, con todos los espacios convertidos a su codificación de URL, %20 , como se muestra a continuación. Podemos llamar a encryptMessage() con originalMessage como parámetro para traducirlo. encryptedMessage se evaluará como el mensaje traducido.


 const originalMessage = "run%20while%20you%20can%20you%20can%20find%20shelter%20here"; const encryptedMessage = await encryptMessage(originalMessage);


  • Agregue el enlace al servidor seguro en la plantilla de notificación dentro del diseñador: “ https://discord.com/invite/courier
  • Definamos el punto final y las opciones de Courier Automation. Aquí necesitaremos acceso a nuestra clave API de Courier, que se puede encontrar dentro de la Página de configuración de mensajería . Guarde el primer valor en el archivo .env como apiKey y acceda a él en este archivo como process.env.apiKey.


 const automationsEndpoint = "https://api.courier.com/automations/invoke" const courierOptions = { method: "POST", headers: { Accept: "application/json", "Content-Type": "application/json", Authorization: 'Bearer ' + process.env.apiKey }, body: JSON.stringify({ //next steps }), };


  • El objeto del cuerpo dentro de las opciones abarcará dos objetos: automation y data


 body: JSON.stringify({ "automation": { }, "data": { } }),



  • El objeto automation incluirá una matriz de steps , que constará de todos los pasos necesarios para la automatización. Nuestra automatización consta de recordatorios que se envían una vez al día; en este caso, agregaremos tres pasos: un paso de envío, un retraso y otro paso de envío (y así sucesivamente).


 "automation": { "steps": [], },


  • Cada paso deberá definirse con dos objetos: el tipo de action (enviar, retrasar, cancelar, etc.) y message . El message consiste en el ID de la plantilla de notificación (lo guardamos anteriormente en el archivo .env) e información sobre dónde se envía este mensaje. Un mensaje de Discord requiere un user_id o un channel_id . Para llegar a la mayor cantidad posible de civiles inocentes, lo más rápido posible, enviaremos mensajes directamente en un canal.

  • Así es como se verían los pasos de envío y retraso:


 { "action": "send", "message": { "template": templateID, "to": { "discord": { "channel_id": process.env.channelID } } } }, { "action": "send", "duration":"1 day" },

.

  • El objeto de datos debería contener el encryptedMessage :


 "data": { "secretMessage": encryptedMessage }


 fetch(automationsEndpoint, courierOptions) .then((response) => response.json()) .then((response) => console.log(response)) .catch((err) => console.error(err)); 




Conclusión

Nuestro bot de Discord está listo para salvar a algunos civiles. Intenta crear tu propio bot de Discord y twittea una captura de pantalla de tus mensajes automatizados de Courier en acción, ¡y enviaremos un regalo a los tres primeros agentes secretos que completen esta tarea! Dirigirse a courier.com/hack-ahora Para empezar. No olvide enviar su proyecto a nuestro Hackatón ¡para tener la oportunidad de ganar más de $1000 en efectivo y premios!

enlaces rápidos

🔗 Repositorio GitHub: https://github.com/shreythecray/infiltración

🔗 Mensajero: app.courier.com

🔗 Regístrate en el Hackathon: https://courier-hacks.devpost.com/

🔗 Aplicación Discord y guía de bots: https://discord.com/developers/docs/getting-started

🔗 Documentos del proveedor de Courier Discord: https://www.courier.com/docs/guides/providers/direct-message/discord/

🔗 Documentos de automatizaciones de mensajería: https://www.courier.com/docs/automations/

🔗 Referencia de la API de automatizaciones de mensajería: https://www.courier.com/docs/reference/


Publicado originalmente aquí .