Make Discord bot send picture with message with NodeJS
ClientUser.sendMessage
is deprecated, as is the file
parameter in its options. You should be using Channel.send(message, options)
, with files
as an array of strings or FileOptions.
bot.on('message' message => {
message.channel.send("My Bot's message", {files: ["https://i.imgur.com/XxxXxXX.jpg"]});
});
If you want to stick to your deprecated methods, ClientUser.sendFile
might be something of interest to you, though I do recommend you move over to the stuff that's more current.
You can send local files in v11.2 like this:
var Discord = require('discord.js');
var bot = new Discord.Client();
bot.on('message', message => {
var prefix = '!'
var msg = message.content;
if (msg === prefix + 'image') {
message.channel.send('Message that goes above image', {
files: [
"./image-to-send.png"
]
});
}
});
bot.login('TOKEN');
Since this is one of the top results on google in 2019, I'm adding the new method of how to upload files with discord.io
First thing that's different is the on()
function takes some additional parameters.
Next is that there's a new method called uploadFile
that takes an uploadFileOpts
object. the file
can take a string that is a local path from your bot file to the image.
uploadFileOpts = {
to: string,
file: string|Buffer,
filename?: string,
message?: string
}
So, if you place your image next to your bot script, your code should look like this
bot.on('message', function (user, userID, channelID, message, evt) {
bot.uploadFile({
to: channelID,
file: 'myImage.jpg'
});
}
If you still want to snag that image from the internet, you'll need to convert it into a Buffer
object. However, storing the file locally is simpler.