How do I filter words with a discord bot? (JavaScr

2019-09-22 07:24发布

I have recently created a bot for my discord server. Now I want him to filter bad words.

For example:


User (without bot): You are an asshole


User (with bot): You are an [I'm stupid because I swear]


Is this even possible in Discord? I have given my bot all permissions! (including removing messages, it can't edit message with the program self tho)

If that is not possible^ Can we do the following?

The ability to directly delete the message and write the following:


Bot: @username Do not swear!


Now I have the following code (I dont know if useful):

const Discord = require('discord.js');
const client = new Discord.Client();

client.on('ready', () => {
    console.log('Hello, the bot is online!')
});

client.on('message', message => {
    if(message.content === '--Trump'){
        message.reply('He is the president of the United States of 
America!');
    }
    if(message.content === '--Putin'){
        message.reply('He is the president of Russia!');
    }
});

client.login('MzAwMzM5NzAyMD*1NDUxNzc4.C8rH5w.M44LW*nrfbCR_zHzd**vtMqkr6nI');

2条回答
Viruses.
2楼-- · 2019-09-22 07:58

try:

client.on('message', message => {
    message.edit(message.content.replace(/asshole/gi, "[I'm stupid because I swear]"))
       .then(msg => console.log(`Updated the content of a message from ${msg.author}`))
       .catch(console.error);
});

credit to @André Dion for bringing up the right method from the API

查看更多
在下西门庆
3楼-- · 2019-09-22 08:00

Docs. Currently in the Discord API there is no possible way to edit a message from another user. You could completely delete the message or you could resend it but edited. If you want to resend it then you could use:

let censor = "[Sorry, I Swear]"; /* Replace this with what you want */
client.on('message', message => {
    let edit = message.content.replace(/asshole/gi, censor);
    message.delete();
    message.channel.send(`${message.author.username}: ${edit}`);
}

Input >>> Hello asshole

Output <<< AkiraMiura: Hello [Sorry, I Swear]

Take note that if the user sends a 2000 byte (Charater) long message you won't be able to send a fixed version and it would just get deleted.

查看更多
登录 后发表回答