discord.js 链接拦截器

时间:2021-04-23 22:03:40

标签: javascript node.js 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 部分”中?

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

1 个答案:

答案 0 :(得分:2)

选项 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 - 正则表达式

您可以将所有搜索合并为一个regular expression

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))
    }
  })