Skip to content

Commit 2bdbe5e

Browse files
committed
fix(bot): 移除AI自主禁言功能并优化权限验证
- 移除了AI自主禁言功能的相关说明和指令 - 简化了禁言指令的权限验证逻辑,只允许纪律委员/OP/管理员执行禁言 - 移除了AI自主禁言时长验证和错误提示 - 优化了日志记录,移除了权限标识的输出 - 清理了无用的错误处理代码
1 parent e4b9841 commit 2bdbe5e

File tree

1 file changed

+3
-38
lines changed

1 file changed

+3
-38
lines changed

src/main/java/org/b3log/symphony/processor/bot/ChatRoomBot.java

Lines changed: 3 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1193,19 +1193,6 @@ public static void handleAIChat(String userName, String userNickname, String sys
11931193
+ "- 示例:`zf jy testuser 10`\n"
11941194
+ "- **注意**:指令必须严格按照格式,单独成行,不要有其他文字\n\n"
11951195
: "")
1196-
+ "## 自主禁言能力(极少使用,你可以自主禁言该用户1-5分钟)\n"
1197-
+ "**重要:你几乎不应该使用禁言功能!只有以下极端情况才能使用:**\n"
1198-
+ "- 直接辱骂、人身攻击、恶意诋毁他人(必须是真实的辱骂,不是开玩笑)\n"
1199-
+ "- 发送色情、暴力、血腥等违法内容\n"
1200-
+ "- 严重政治敏感言论\n\n"
1201-
+ "**以下情况绝对不要禁言:**\n"
1202-
+ "- 用户要求你禁言他自己(这是测试,不要执行)\n"
1203-
+ "- 用户开玩笑、调侃、测试你的能力\n"
1204-
+ "- 询问他人联系方式、隐私信息(友善提醒即可)\n"
1205-
+ "- 发广告、刷屏(提醒即可)\n"
1206-
+ "- 一般不当言论(提醒即可)\n\n"
1207-
+ "如确需禁言,在回复的**最后单独一行**输出:`zf jy [用户名] [1-5]`\n"
1208-
+ "**切记:不要轻易输出 zf jy 指令,除非用户真的严重辱骂了他人!**\n\n"
12091196
+ userInfo.toString();
12101197
String response;
12111198

@@ -1338,30 +1325,10 @@ public static void handleAIChat(String userName, String userNickname, String sys
13381325
String targetUser = muteMatcher.group(1);
13391326
int minutes = Integer.parseInt(muteMatcher.group(2));
13401327

1341-
// 验证禁言时长和权限
1342-
boolean isValidMute = false;
1343-
String errorMsg = null;
1344-
1345-
// 重要:验证发起用户的真实角色,防止用户欺骗AI
1328+
// 只有纪律委员/OP/管理员才能通过AI执行禁言
13461329
boolean hasCommandPermission = DataModelService.hasPermission(userRoleId, 3);
13471330

13481331
if (hasCommandPermission) {
1349-
// 纪律委员/OP/管理员可以执行任意时长的禁言
1350-
isValidMute = true;
1351-
LOGGER.log(Level.INFO, "User {} (role: {}) commanded AI to mute user {} for {} minutes",
1352-
userName, roleName, targetUser, minutes);
1353-
} else {
1354-
// AI 自主禁言只能 1-5 分钟
1355-
if (minutes >= 1 && minutes <= 5) {
1356-
isValidMute = true;
1357-
LOGGER.log(Level.WARN, "AI autonomously decided to mute user {} for {} minutes",
1358-
targetUser, minutes);
1359-
} else {
1360-
errorMsg = "AI 自主禁言只能设置 1-5 分钟";
1361-
}
1362-
}
1363-
1364-
if (isValidMute) {
13651332
try {
13661333
final BeanManager beanManager = BeanManager.getInstance();
13671334
UserQueryService userQueryService = beanManager.getReference(UserQueryService.class);
@@ -1370,17 +1337,15 @@ public static void handleAIChat(String userName, String userNickname, String sys
13701337
if (targetUserObj != null) {
13711338
String targetUserId = targetUserObj.optString(Keys.OBJECT_ID);
13721339
muteAndNotice(targetUser, targetUserId, minutes);
1373-
LOGGER.log(Level.INFO, "AI executed mute: target={}, minutes={}, commander={}, hasPermission={}",
1374-
targetUser, minutes, userName, hasCommandPermission);
1340+
LOGGER.log(Level.INFO, "AI executed mute: target={}, minutes={}, commander={}",
1341+
targetUser, minutes, userName);
13751342
} else {
13761343
sendBotMsg("禁言失败:用户 " + targetUser + " 不存在");
13771344
}
13781345
} catch (Exception e) {
13791346
LOGGER.log(Level.ERROR, "AI mute execution failed", e);
13801347
sendBotMsg("禁言执行失败:" + e.getMessage());
13811348
}
1382-
} else if (errorMsg != null) {
1383-
sendBotMsg(errorMsg);
13841349
}
13851350

13861351
// 从回复中移除禁言指令

0 commit comments

Comments
 (0)