如何防止 Discord bot 将 GIF 和图像从一个频道复制并粘贴到另一个频道? (discord.js)

How to prevent Discord bot copying and paste GIFs and images from a channel to another ? (discord.js)

我正在尝试编写一个机器人程序,该机器人能够将专门包含 URL 和附件(.pdf、.docx 等)的消息从一个频道复制到另一个频道。

但是,我也希望它忽略包含 GIF 和图像的消息。我试着用 message.embeds[0].type === 并且控制台显示 TypeError: Cannot read property 'type' of undefined.

完整代码如下:

const Discord = require('discord.js');
const bot = new Discord.Client();

bot.login('TOKEN')
bot.on('ready', () => {
    console.log('The Librarian is online');
});

bot.on('message', message => {
    if (message.author.bot || message.embeds[0].type === 'gifv' || message.embeds[0].type === 'image') return;

    if (message.channel.id === 'channel1-ID' && (message.content.includes("http") || message.attachments.size >0)) {

        let ressourcesChannel = bot.channels.cache.get('channel2-ID');

        if (ressourcesChannel) {
            let embed = new Discord.MessageEmbed()
              .setAuthor(`${message.author.tag} nous transmet un peu de sa connaissance` , message.author.displayAvatarURL())
              .setColor('#FFAB32');

        ressourcesChannel.send(embed);
        ressourcesChannel.send(message.content , {files: message.attachments.array() })
            .then(message2 => {
             message.react(''); 
                })
            .then(() => console.log('Document filed : ' + message.content))
            .catch(console.error);
        }
    }
})

能否请您指出这段代码中可能存在的错误?

如果消息根本没有嵌入,您的代码将失败。
如果你使用 NodeJS ≥ v14.0.0 你可以使用 optional chaining:

if (
    message.author.bot
    || message.embeds[0]?.type === 'gifv'
    || message.embeds[0]?.type === 'image'
) return;

否则先检查是否有嵌入:

if (
    message.author.bot
    || message.embeds
    && (message.embeds[0].type === 'gifv' || message.embeds[0].type === 'image')
) return;