自动删除特定频道中的消息

问题描述 投票:0回答:2

我有一个建议渠道,我做了它,所以用户只允许在其中发布链接,机器人能够对他们发布的内容做出反应。我已经对链接做了自动反应,但是我无法让机器人删除不是链接。所以我希望删除其他所有不是链接的内容。

bot.on('message', message => { 
  // whenever a message is sent
  if (bot.id === '514484773171757061') {
    return;
  }

  if (message.channel.id === "508606903740268545" ){

    if (message.content.includes('playrust.io/')) {
      message.react('✅').then( () =>{
      message.react('❌')});
    } else if (message.delete()) {
      message.channel.sendMessage('Message has been Deleted ' + message.author)
    }
  }
});

它很好用,但不是很好。它删除了不是链接百万次的消息并发送了数百万次通知:/我想问题是else if部分

javascript node.js discord.js
2个回答
1
投票

我认为问题是你正在创造一种无限循环。在您的代码中,首先检查消息发送是否在特定通道中,然后检查它是否包含链接。如果不是,则向同一频道发送消息,说“我没找到链接”。

当您发送此消息时,您的机器人会再次被触发,因为已发送新消息。它检查它是否在特定通道中,如果它包含链接,它不包含,因此循环重复。

它可以通过一个简单的语句来修复,这也是创建机器人时非常好的做法。要修复它,您需要包含一些代码,用于检查机器人是否已发送消息。看下面的例子:

bot.on('message', message => { 
  // Ignore messages from all bots
  if (message.author.bot) return;

  /* All your other code here */

0
投票

client.id不是一件事,所以它需要

if (message.author.bot) return;

然后而不是

else if (message.delete()) {
      message.channel.send('Message has been Deleted ' + message.author)
    }

使用

else {
      message.delete(5000)
      message.channel.send('Message has been Deleted ' + message.author)
    }

结果是:

bot.on('message', message => { 
  // whenever a message is sent
  if (message.author.bot) return;


  if (message.channel.id === "508606903740268545" ){

    if (message.content.includes('playrust.io/')) {
      message.react('✅').then( () =>{
      message.react('❌')});
    } else {
message.delete(5000)
      message.channel.send('Message has been Deleted ' + message.author)
    }
  }
});
© www.soinside.com 2019 - 2024. All rights reserved.