discord.js 仅删除用户消息和机器人

时间:2021-05-17 07:57:31

标签: javascript node.js discord discord.js

我想让我的机器人只删除某个频道中的用户消息,而不是机器人的消息。我尝试使用下面的代码执行此操作,但它一直在删除机器人的消息和我的消息。

const Discord = require("discord.js");
const client = new Discord.Client();
const { MessageEmbed } = require("discord.js");
const avalibleFormats = ['png', 'gif', 'jpeg', 'jpg']
 
client.on("ready", () => {
  console.log("I am ready!");
});
 
client.on("message", message => {
    if (message.channel.id == '829616433985486848') {
        message.delete();
      }
    if (message.channel.id !== '829616433985486848') {
        return;
    }

    let image = getImage(message)
    if (!image) {
        return;
    }

    let embed = new MessageEmbed();
    embed.setImage(image.url)
    embed.setColor(`#2f3136`)
    message.channel.send(embed)

});
const getImage = (message) => message.attachments.find(attachment => checkFormat(attachment.url))
const checkFormat = (url) => avalibleFormats.some(format => url.endsWith(format))
 
client.login(token);

1 个答案:

答案 0 :(得分:2)

好吧,你只说如果频道ID是829616433985486848,就删除这条消息。您还应该使用 message.author.bot 属性检查 author 是否为 bot

const avalibleFormats = ['png', 'gif', 'jpeg', 'jpg'];

const checkFormat = (url) => avalibleFormats.some((format) => url.endsWith(format));
const getImage = (message) => message.attachments.find((attachment) => checkFormat(attachment.url));

client.on('message', (message) => {
  const certainChannelId = '829616433985486848';

  // if the channel is not 829616433985486848, return to exit
  if (message.channel.id !== certainChannelId)
    return;

  // the rest of the code only runs if the channel is 829616433985486848

  const image = getImage(message);

  // if author is not a bot, delete the message
  if (!message.author.bot)
    message.delete();

  if (!image)
    return;

  const embed = new MessageEmbed()
    .setImage(image.url)
    .setColor('#2f3136');

  message.channel.send(embed);
});

实际上,如果消息是由机器人发布的,您甚至不需要在其中运行任何内容,这样您就可以在开始时检查并尽早退出:

client.on('message', (message) => {
  if (message.author.bot || message.channel.id !== '829616433985486848')
    return;

  const image = getImage(message);

  if (image) {
    const embed = new MessageEmbed()
      .setImage(image.url)
      .setColor('#2f3136');

    message.channel.send(embed);
  }
  message.delete();
});

如果您希望它在多个频道中工作,您可以创建一个频道 ID 数组并使用 Array#includes() 来检查当前频道 ID 是否在该数组中:

client.on('message', (message) => {
  const channelIDs = ['829616433985486848', '829616433985480120', '829616433985485571'];
  if (message.author.bot || !channelIDs.includes(message.channel.id))
    return;

  const image = getImage(message);

  if (image) {
    const embed = new MessageEmbed()
      .setImage(image.url)
      .setColor('#2f3136');

    message.channel.send(embed);
  }
  message.delete();
});