首页 > 解决方案 > discord.js 链接拦截器

问题描述

我目前正在尝试编写 Discord 链接阻止程序:

我的代码:

client.on('message', (message) => {
    if (message.content.includes('discord.gg/')) {
        message.delete()
        .then(message.channel.send('<@!' + message.member + '>' + config.link_deleted_chat_message))
        .then(message.member.send('<@!' + message.member + '>' + config.link_deleted_dm_message))
    }
    if (message.content.includes('discordapp.com/')) {
        message.delete()
        .then(message.channel.send('<@!' + message.member + '>' + config.link_deleted_chat_message))
        .then(message.member.send('<@!' + message.member + '>' + config.link_deleted_dm_message))
        }
    if (message.content.includes('https:')) {
        message.delete()
        .then(message.channel.send('<@!' + message.member + '>' + config.link_deleted_chat_message))
        .then(message.member.send('<@!' + message.member + '>' + config.link_deleted_dm_message))
        }
    if (message.content.includes('http:')) {
        message.delete()
        .then(message.channel.send('<@!' + message.member + '>' + config.link_deleted_chat_message))
        .then(message.member.send('<@!' + message.member + '>' + config.link_deleted_dm_message))
        }
    if (message.content.includes('www.')) {
        message.delete()
        .then(message.channel.send('<@!' + message.member + '>' + config.link_deleted_chat_message))
        .then(message.member.send('<@!' + message.member + '>' + config.link_deleted_dm_message))
        }
  })

如何将所有关键字(http: ; discord.gg/ ; 等)放在一个“if part”中?

我需要那个,因为我希望机器人只写一次消息,即使你写了“https://discord.gg/”。如果您只写“https://discord.gg/”,则消息会因为第一个“https://”而出现两次,而因为“discord.gg/”而出现一次。

标签: javascriptnode.jsdiscord.js

解决方案


选项 1 - 否则如果

当其中一个if语句匹配时,else if将跳过所有后续块。

client.on('message', (message) => {
    if (message.content.includes('discord.gg/')) {
        message.delete()
        .then(message.channel.send('<@!' + message.member + '>' + config.link_deleted_chat_message))
        .then(message.member.send('<@!' + message.member + '>' + config.link_deleted_dm_message))
    }
    else if (message.content.includes('discordapp.com/')) {
        message.delete()
        .then(message.channel.send('<@!' + message.member + '>' + config.link_deleted_chat_message))
        .then(message.member.send('<@!' + message.member + '>' + config.link_deleted_dm_message))
        }
    else if (message.content.includes('https:')) {
        message.delete()
        .then(message.channel.send('<@!' + message.member + '>' + config.link_deleted_chat_message))
        .then(message.member.send('<@!' + message.member + '>' + config.link_deleted_dm_message))
        }
    else if (message.content.includes('http:')) {
        message.delete()
        .then(message.channel.send('<@!' + message.member + '>' + config.link_deleted_chat_message))
        .then(message.member.send('<@!' + message.member + '>' + config.link_deleted_dm_message))
        }
    else if (message.content.includes('www.')) {
        message.delete()
        .then(message.channel.send('<@!' + message.member + '>' + config.link_deleted_chat_message))
        .then(message.member.send('<@!' + message.member + '>' + config.link_deleted_dm_message))
        }
  })

选项 2 - 正则表达式

您可以将所有搜索组合成一个正则表达式

client.on('message', (message) => {
    if (message.content.match(/discord\.gg|discordapp\.com|https?:|www\./) !== null) {
        message.delete()
        .then(message.channel.send('<@!' + message.member + '>' + config.link_deleted_chat_message))
        .then(message.member.send('<@!' + message.member + '>' + config.link_deleted_dm_message))
    }
  })

推荐阅读