如何防止 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;
我正在尝试编写一个机器人程序,该机器人能够将专门包含 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;