web-dev-qa-db-fra.com

Faire en sorte que le bot Discord envoie une image avec un message avec NodeJS

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
}
3
Kaito Kid

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 .

7
Caleb

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');
2
koubi

É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.

1
Premier Bromanov