Knocklive
Knocklive

Reputation: 35

discord.js Link blocker

I am currently trying to code a Discord link blocker:

My code:

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

How can I put all keywords (http: ; discord.gg/ ; etc.) in a single "if part"?

I would need that, because I want the bot to write the message only once, even if you write "https://discord.gg/" for example. If you just write "https://discord.gg/" the message comes twice because of first "https://" and once because of "discord.gg/".

Upvotes: 0

Views: 534

Answers (1)

thesilican
thesilican

Reputation: 763

Option 1 - else if

When one of the if statements matches, all following else if blocks are skipped.

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

Option 2 - regex

You can combine all the searches into one 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))
    }
  })

Upvotes: 3

Related Questions