He estado siguiendo algunas guías diferentes para programar un bot de discordia simple. Todo funciona excepto que no puedo hacer que envíe una imagen. He mirado estas preguntas anteriores 1 2 , pero sus soluciones no me funcionan. Este es mi código:
const {Client, Intents} = require('discord.js'); const client = new Client({ intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES] }); const prefix = '?'; client.once('ready', () => { console.log("Dog is online!"); }); client.on('messageCreate', message => { if(!message.content.startsWith(prefix) || message.author.bot) return; const args = message.content.slice(prefix.length).split(/ +/); const command = args.shift().toLowerCase(); if(command === 'ping') { message.channel.send('pong!'); } else if (command === 'bark') { message.channel.send('bark bark bark grrrr...') } else if(command === 'nick') { message.channel.send('grrr...'); } else if (command === 'pic') { message.channel.send("little dog", {files: ["https://i.imgur.com/xxXXXxx.jpeg"] }); } }); //must be last line client.login('');
mi inicio de sesión de cliente está en mi editor, pero no lo comparto aquí. el comando "pic" es lo que no funciona. Muestra el texto "perrito", pero no envía la imagen. La única razón por la que estoy usando imgur es porque no estoy seguro si puedes enviar imágenes locales; si alguien conoce una solución usando archivos locales, la aceptaré.
Puedes usar
files: [{ attachment: "YourImage.jpg" }] });
También puede cambiar el nombre de la imagen con
files: [{ attachment: <images>.toBuffer(), name: 'newName.png' }] });
Ejemplo:
message.channel.send({ files: [{ attachment: 'YourImage.png' }] });
las <images>
es su variable de imagen
const images = blablabla
Según el discordia V13.js
Puedes hacer lo siguiente, esto también está funcionando para mí.
const { MessageAttachment } = require('discord.js') const attachment = new MessageAttachment('URL'); //ex. https://i.imgur.com/random.jpg message.channel.send({ content: "I sent you a photo!", files: [attachment] })
Este ejemplo enviará una foto con el texto I sent you a photo!