首页 > 解决方案 > 我正在尝试添加一个单词过滤器,但它似乎不起作用

问题描述

我知道你不应该遵循 youtube 教程,但我做到了,现在我后悔了,因为我在这里。

我会在我的不和谐频道中说“testautomod”或“pleasework”,但什么都不会发生。过去一个小时我一直对着我的电脑尖叫

package diabot;

import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent;
import net.dv8tion.jda.api.hooks.ListenerAdapter;

public class Automod extends ListenerAdapter {
    
    public void onGuildMessageRecived(GuildMessageReceivedEvent event) {
        
        String[] LIST_OF_BAD_WORDS = {"testautomod", "pleasework", "gamermomentitdoesntwork" };
        String[] message = event.getMessage().getContentRaw().split(" ");
        for (int i = 0; i < message.length; i++) {
            for (int b = 0; b < LIST_OF_BAD_WORDS.length; b++) {
                if (message[i].equalsIgnoreCase(LIST_OF_BAD_WORDS[b])) {
                    event.getMessage().delete().queue();
                    
                }
            }   
        }
    }
}

标签: javadiscordbotsdiscord-jda

解决方案


那是因为您的方法名称中有错字,它应该是 onGuildMessageReceived而不是onGuildMessageRecived.

为避免这种情况,请始终@Override在实现 JDA 定义的方法时使用。如果您这样做并且再次输入错误,您的 IDE 将通知您在父类中没有这样的方法。

您的代码应如下所示:

@Override
public void onGuildMessageReceived(GuildMessageReceivedEvent event) {
    
    String[] LIST_OF_BAD_WORDS = {"testautomod", "pleasework", "gamermomentitdoesntwork" };
    String[] message = event.getMessage().getContentRaw().split(" ");
    for (int i = 0; i < message.length; i++) {
        for (int b = 0; b < LIST_OF_BAD_WORDS.length; b++) {
            if (message[i].equalsIgnoreCase(LIST_OF_BAD_WORDS[b])) {
                event.getMessage().delete().queue();
                
            }
        }   
    }
}

推荐阅读