From de01151d12c181cd9f71492c0ba5ac5fa98dc785 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AD=B1=E5=82=91?= Date: Thu, 12 Jan 2023 21:56:06 +0800 Subject: [PATCH] Fix ban issue Add ban and limit feedback --- README-en-US.md | 9 ++++++++- README.md | 9 ++++++++- .../com/github/jie65535/openchat/OpenChatConfig.java | 11 +++++++++++ .../com/github/jie65535/openchat/OpenChatSystem.java | 9 ++++++++- .../openchat/commands/ChatServerCommands.java | 10 +++++++--- 5 files changed, 42 insertions(+), 6 deletions(-) diff --git a/README-en-US.md b/README-en-US.md index 59689e5..5920978 100644 --- a/README-en-US.md +++ b/README-en-US.md @@ -47,7 +47,14 @@ Server command (requires `server.chat.others` permissions) : // The content of the message sent when the player joins // Can be used to prompt the player how to switch the chat function - joinMessage: "本服已启用聊天,/chat on 开启(默认),/chat off 屏蔽" + joinMessage: "本服已启用聊天,/chat on 开启(默认),/chat off 屏蔽", + + // Banned Feedback Message + bannedFeedback: "你已经被禁言!", + + // Message too frequent feedback message + // {limit} messageFreLimitPerMinute + msgTooFrequentFeedback: "服务器设置每分钟仅允许发言{limit}次" } ``` diff --git a/README.md b/README.md index 5895c13..b1fe63d 100644 --- a/README.md +++ b/README.md @@ -53,7 +53,14 @@ sendJoinMessage: true, // 玩家加入时发送消息 - joinMessage: "本服已启用聊天,/chat on 开启(默认),/chat off 屏蔽" + joinMessage: "本服已启用聊天,/chat on 开启(默认),/chat off 屏蔽", + + // 被禁言反馈消息 + bannedFeedback: "你已经被禁言!", + + // 消息太频繁反馈消息 + // {limit} 服务器设置的限制次数 + msgTooFrequentFeedback: "服务器设置每分钟仅允许发言{limit}次" } ``` diff --git a/src/main/java/com/github/jie65535/openchat/OpenChatConfig.java b/src/main/java/com/github/jie65535/openchat/OpenChatConfig.java index 79c9ba4..e94f549 100644 --- a/src/main/java/com/github/jie65535/openchat/OpenChatConfig.java +++ b/src/main/java/com/github/jie65535/openchat/OpenChatConfig.java @@ -46,4 +46,15 @@ public class OpenChatConfig { * 玩家加入消息 */ public String joinMessage = "本服已启用聊天,/chat on 开启(默认),/chat off 屏蔽"; + + /** + * 被禁言反馈消息 + */ + public String bannedFeedback = "你已经被禁言!"; + + /** + * 消息太频繁反馈消息 + * {limit} 服务器设置的限制次数 + */ + public String msgTooFrequentFeedback = "服务器设置每分钟仅允许发言{limit}次"; } diff --git a/src/main/java/com/github/jie65535/openchat/OpenChatSystem.java b/src/main/java/com/github/jie65535/openchat/OpenChatSystem.java index 2e54186..7de83b3 100644 --- a/src/main/java/com/github/jie65535/openchat/OpenChatSystem.java +++ b/src/main/java/com/github/jie65535/openchat/OpenChatSystem.java @@ -47,9 +47,11 @@ public class OpenChatSystem extends ChatSystem { // 检测是否正在禁言中 if (checkIsBanning(player)) { - // 可提示也可忽略,忽略可让玩家以为自己发送成功,其实别人看不到 plugin.getLogger().warn(String.format("Message blocked (banning): player=%s(%d): \"%s\"", player.getNickname(), player.getUid(), message)); + if (!plugin.getConfig().bannedFeedback.isEmpty()) { + player.dropMessage(plugin.getConfig().bannedFeedback); + } return; } @@ -58,6 +60,11 @@ public class OpenChatSystem extends ChatSystem { // 可提示也可忽略,忽略可让玩家以为自己发送成功,其实别人看不到 plugin.getLogger().warn(String.format("Message blocked (too often): player=%s(%d): \"%s\"", player.getNickname(), player.getUid(), message)); + if (!plugin.getConfig().msgTooFrequentFeedback.isEmpty()) { + player.dropMessage( + plugin.getConfig().msgTooFrequentFeedback + .replace("{limit}", String.valueOf(plugin.getConfig().messageFreLimitPerMinute))); + } return; } diff --git a/src/main/java/com/github/jie65535/openchat/commands/ChatServerCommands.java b/src/main/java/com/github/jie65535/openchat/commands/ChatServerCommands.java index f99bc01..7524050 100644 --- a/src/main/java/com/github/jie65535/openchat/commands/ChatServerCommands.java +++ b/src/main/java/com/github/jie65535/openchat/commands/ChatServerCommands.java @@ -40,14 +40,18 @@ public class ChatServerCommands implements CommandHandler { var time = new Date(2051190000); if (args.size() == 2) { try { - time = new Date(System.currentTimeMillis() / 1000 + Integer.parseInt(args.get(1)) * 60L); + time = new Date(System.currentTimeMillis() + Integer.parseInt(args.get(1)) * 60_000L); } catch (NumberFormatException ignored) { CommandHandler.sendTranslatedMessage(sender, "commands.ban.invalid_time"); return; } } - plugin.getData().banList.put(targetPlayer.getUid(), time); - CommandHandler.sendMessage(sender, "OK"); + if (targetPlayer == null) { + sendUsageMessage(sender); + } else { + plugin.getData().banList.put(targetPlayer.getUid(), time); + CommandHandler.sendMessage(sender, "OK"); + } } case "limit" -> { var times = 20;