java - 我正在尝试添加一个单词过滤器,但它似乎不起作用
问题描述
我知道你不应该遵循 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();
}
}
}
}
}
解决方案
那是因为您的方法名称中有错字,它应该是
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();
}
}
}
}
推荐阅读
- swift - 无法在 init() 中使用已定义的状态变量
- vb.net - 阅读电子邮件正文
- angular10 - Angular 自定义管道 - 多级过滤
- statistics - 伽马分布的 Fisher 信息
- c# - 为什么我的文本框中的数据绑定不起作用?
- c - 警告:函数“vasprintf”的隐式声明?
- c# - C# 将 DateTime 类型数据控制器传递给 webapi 服务方法问题
- vba - 如果找到零(0)值vba excel,文本框显示下一个值
- javascript - Javascript:为什么滚动高度值在 Chrome 和 Firefox 浏览器中不同?
- r - 迭代地重命名列中相同特定值的第一次和第二次出现