J'ai quelques photos, toutes sur imgur avec lien d'image direct (format: https://i.imgur.com/XXXXXX.jpg ), et un bot Discord fait avec NodeJS.
J'envoie des messages comme celui-ci:
bot.sendMessage({
to: channelID,
message: "My Bot's message"
});
J'ai essayé ceci:
bot.sendMessage({
to: channelID,
message: "My Bot's message",
file: "https://i.imgur.com/XxxXxXX.jpg"
});
mais je reçois seulement le texte. Je l'ai recherché, et cette question était le seul à même près de dire ce que je dois faire, et cela n'a pas fonctionné.
Alors, comment suis-je censé faire ça?
Voici comment le bot est créé:
var bot = new Discord.Client({
token: auth.token,
autorun: true
});
bot.on('ready', function (evt) {
logger.info('Connected');
logger.info('Logged in as: ');
logger.info(bot.username + ' - (' + bot.id + ')');
});
bot.on('message', function (user, userID, channelID, message, evt) {
// My code
}
ClientUser.sendMessage
Est déconseillé , tout comme le paramètre file
dans ses options. Vous devez utiliser Channel.send(message, options)
, avec files
comme tableau de chaînes ou FileOptions .
bot.on('message' message => {
message.channel.send("My Bot's message", {files: ["https://i.imgur.com/XxxXxXX.jpg"]});
});
Si vous souhaitez vous en tenir à vos méthodes obsolètes, ClientUser.sendFile
pourrait vous intéresser, bien que je vous recommande de passer à ce qui est le plus actuel .
Vous pouvez envoyer des fichiers locaux en v11.2 comme ceci:
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');
Étant donné que c'est l'un des meilleurs résultats sur Google en 2019, j'ajoute la nouvelle méthode de téléchargement de fichiers avec discord.io
La première chose qui est différente, c'est que la fonction on()
prend des paramètres supplémentaires.
Ensuite, il existe une nouvelle méthode appelée uploadFile
qui prend un objet uploadFileOpts
. file
peut prendre une chaîne qui est un chemin local de votre fichier bot vers l'image.
uploadFileOpts = {
to: string,
file: string|Buffer,
filename?: string,
message?: string
}
Donc, si vous placez votre image à côté de votre script bot, votre code devrait ressembler à ceci
bot.on('message', function (user, userID, channelID, message, evt) {
bot.uploadFile({
to: channelID,
file: 'myImage.jpg'
});
}
Si vous souhaitez toujours récupérer cette image sur Internet, vous devrez la convertir en objet Buffer
. Cependant, le stockage local du fichier est plus simple.