Estoy usando una API y quería extraer las URL de la API, para esto hice un código, pero solo aparece una url, daré un ejemplo del código JSON de la API. Sin mencionar que viene un título, luego viene en orden primero el título y luego la URL
{ "items": [ { "title":"YouTube", "url":"https://www.youtube.com/"}, { "title":"Google", "url":"https://www.google.com/"}, { "title":"Facebook", "url":"https://www.facebook.com/"}, { "title":"Github", "url":"https://www.github.com"}, { "title":"Microsoft", "url":"https://www.microsoft.com"} ] }No son exactamente estas URL, las usé como ejemplo.
Quisiera extraer esta información y dejarla de la siguiente manera:
[Title](Url)Quiero que se vea así, porque el título se volverá azul y cuando hagas clic irá a la URL del sitio.
Mi código que no funcionó es este:
let response, channel, info; try { response = await axios.get(url) channel = response.data info = channel.items[0] } catch (e) { return message.channel.send(`Error`) } let btn = new disbut.MessageButton() .setLabel("Site") .setStyle("url") .setURL("https://youtube.com") const embed = new MessageEmbed() .setColor("#ffff00") .setDescription(`[${info.title}](${info.url})\n`) await message.channel.send({ embed: embed, buttons: btn });Este info.url es donde obtienes la URL e info.title es donde obtienes el título, solo que solo hay 1 problema, solo se necesita 1 título y 1 url, me gustaría que los tomes a todos y formes una lista en The Robot de discordia
Este es el resultado del código:
Pero quería que se viera así: Youtube Google Facebook Github Microsoft
Para que solo aparezca youtube necesito que muestres mínimo 1 y máximo 10. Y al hacer clic en cada título, será redirigido al sitio.
info solo se refiere a channel.items[0] , que es el primer elemento
Puede usar <Array>.map para mapear los elementos en su formato []() y luego <Array>.join para concatenarlos en una cadena separada por saltos de línea.
.setDescription(channel.items.map(info => `[${info.title}](${info.url})`).join('\n'))Debe formatear la matriz de items como una lista Markdown .
Asigne la matriz channel.items a una matriz de cadenas de elementos de lista, luego úna todo junto con líneas nuevas.
.setDescription( channel.items.map(info => `* [${info.title}](${info.url})`).join("\n") )