【问题标题】:Block messages in certain channels discord.js阻止某些频道中的消息 discord.js
【发布时间】:2020-10-15 23:37:00
【问题描述】:

我想阻止某些频道中的某些消息,但是使用我现在拥有的代码,这些词在 Discord 的每个频道中都被阻止了。我只想在数据库中的频道中阻止这个词。有没有办法做到这一点?

  if (message.content.includes('discord.gg/'||'discordapp.com/invite/'||'discord.me/'||'discord.com/')) 
    return blacklist.set(message.author.id, 'blacklisted');

【问题讨论】:

  • 什么数据库?另外,为什么不直接查询数据库并检查message.channel.id 是否在您的数据库中?

标签: javascript node.js discord discord.js


【解决方案1】:

这是你可以做的。

let forbiddenWords = ["discord.gg", "discordapp.com/invite"];
let forbiddenChannels = ["a channel id", "another one"];

for (var i = 0; i < forbiddenWords.length; i++) {
    if (message.content.includes(forbiddenWords[i])) {
        if (forbiddenChannels.includes(message.channel.id)) {
            return blacklist.set(message.author.id, 'blacklisted');
        }
    }
}

【讨论】:

  • 你需要把forbiddenChannels.includes[message.channel.id]改成forbiddenChannels.includes(message.channel.id)
  • 您应该使用Array.prototype.some() 而不是for 循环。
  • 不太确定。也许 OP 想知道哪些词被屏蔽了——不仅仅是找到的第一个。
【解决方案2】:

您需要做的是检查消息来自的频道是否实际上是您要阻止单词的频道。您可以使用channel.id 参数来做到这一点。

if (message.channel.id === "your id here") {
    // the rest of your code
}

编辑:

如果你想屏蔽多个频道,你应该使用

let YourDatabaseForChannels = ["Your channel", "Your other channel"];

if (YourDatabaseForChannels.includes(message.channel.id)) {
    // the rest of your code
}

【讨论】:

  • 我认为 OP 想屏蔽几个频道。
猜你喜欢
  • 2021-07-15
  • 1970-01-01
  • 2021-04-27
  • 1970-01-01
  • 2021-08-06
  • 1970-01-01
  • 2020-06-20
  • 2016-07-25
  • 2020-06-19
相关资源
最近更新 更多