Repositorio GitHub:
¡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:
¿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.
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.
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.
¡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.
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
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
Cree una nueva carpeta de proyecto.
Cree tres nuevos archivos: "index.js", ".env" y ".gitignore".
Instalarnpm install dotenv --save
Importe y configure dotenv agregando a la parte superior de index.js: require("dotenv").config();
Del mismo modo, instalenpm install node-fetch@2
Importe y configure node-fetch agregando a la parte superior de index.js: const fetch = require("node-fetch");
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.
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
bot
View Channels
, Send Messages
y Read Message History
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.
Crear una nueva notificación dentro de la
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": {} }
Sustituye el mensaje por una variable {secretMessage}
para que, posteriormente, podamos editar el mensaje directamente desde nuestro código.
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) { }
const morseOptions = { method: 'GET', headers: { Accept: 'application/json', 'Content-Type': 'application/json' } };
originalMessage
al extremo de la API de Morse:
const morseEndpoint = "https://api.funtranslations.com/translate/morse.json?text="+originalMessage
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.
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() { }
%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);
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 }), };
automation
y data
body: JSON.stringify({ "automation": { }, "data": { } }),
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 }
Para fines de prueba, es más fácil eliminar 1 paso de retraso o mantenerlo en un período corto como 1 minute
Finalmente, podemos usar node-fetch nuevamente para llamar a la API de Automatizaciones y activar esta automatización.
fetch(automationsEndpoint, courierOptions) .then((response) => response.json()) .then((response) => console.log(response)) .catch((err) => console.error(err));
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
🔗 Repositorio GitHub:
🔗 Mensajero:
🔗 Regístrate en el Hackathon:
🔗 Aplicación Discord y guía de bots:
🔗 Documentos del proveedor de Courier Discord:
🔗 Documentos de automatizaciones de mensajería:
🔗 Referencia de la API de automatizaciones de mensajería:
Publicado originalmente aquí .