Mi comando urban-dictionary funciona bien como comando de texto común, pero cuando trato de hacer un comando de barra diagonal, mi código se rompe con TypeError: Cannot read properties of undefined (reading 'list') ! Aquí están mis options para el comando:
"options": [ { "name": "search", "description": "Term to search for", "type": 3, "required": true } ]y mi código de comando de barra:
let query = interaction.options.getString('search') query = encodeURIComponent(query); const { data: { list }, } = axios.get(`https://api.urbandictionary.com/v0/define?term=${query}`).catch((err) => {}) const [answer] = list; const embed = new MessageEmbed() .setTitle(answer.word) .setURL(answer.permalink) .setColor("#380002") .setDescription(trim(answer.definition)) .addField("Example", trim(answer.example), false) .addField("Upvotes", `** ** ${answer.thumbs_up}`, true) .addField("Downvotes", `** ** ${answer.thumbs_down}`, true) .setFooter(`Author: ${answer.author}`); interaction.reply({embeds: [embed], ephemeral: false}).catch((err) => {})Entonces, ¿alguna idea sobre lo que está mal? Si necesita más información, responderé en los comentarios porque no tengo idea de qué está mal.
axios.get devuelve una Promise . Esto significa que axios.get(...).data no estará definido. La solución simple es agregar await :
//async function const { data: { list }, } = await axios.get(`...`).catch((err) => {})