From 1a93a4169014da194754fac411fe9e2b305013a2 Mon Sep 17 00:00:00 2001 From: milimoe Date: Thu, 20 Nov 2025 01:47:15 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=89=B9=E6=AE=8A=E6=9D=83?= =?UTF-8?q?=E9=99=90=E7=BB=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Command/MasterCommand.cs | 14 ++++++++++++++ src/ListeningTask/GroupMessageTask.cs | 6 +++--- src/Settings/GeneralSettings.cs | 10 ++++++++++ 3 files changed, 27 insertions(+), 3 deletions(-) diff --git a/src/Command/MasterCommand.cs b/src/Command/MasterCommand.cs index ac7fcda..fcb9a8e 100644 --- a/src/Command/MasterCommand.cs +++ b/src/Command/MasterCommand.cs @@ -675,6 +675,20 @@ namespace Milimoe.RainBOT.Command } } break; + case "specialaccessgroup": + if (args.Length > 1 && long.TryParse(args[1].Replace("@", "").Trim(), out long specialaccess_qq)) + { + string args0 = args[0].ToString().Trim(); + if (args0 == "add" || args0 == "remove" || args0 == "+" || args0 == "-") + { + isadd = args0 == "add" || args0 == "+"; + if (isadd) GeneralSettings.SpecialAccessGroup.Add(specialaccess_qq); + else GeneralSettings.SpecialAccessGroup.Remove(specialaccess_qq); + msg = AddRemoveAccessGroupMember("特殊权限组成员", isadd, specialaccess_qq); + return msg; + } + } + break; case "osmcoregroup": if (args.Length > 1 && long.TryParse(args[1].Trim(), out long osmcoregroup_id)) { diff --git a/src/ListeningTask/GroupMessageTask.cs b/src/ListeningTask/GroupMessageTask.cs index 274a2f1..03925bb 100644 --- a/src/ListeningTask/GroupMessageTask.cs +++ b/src/ListeningTask/GroupMessageTask.cs @@ -77,7 +77,7 @@ namespace Milimoe.RainBOT.ListeningTask } // 撤回消息 - if ((e.user_id == GeneralSettings.Master || GeneralSettings.RecallAccessGroup.Contains(e.user_id)) && e.detail.Contains("撤回;") && e.message.Any(m => m.type == "reply")) + if ((e.user_id == GeneralSettings.Master || GeneralSettings.RecallAccessGroup.Contains(e.user_id)) && Bot.IsAdmin(e.group_id, e.user_id) && e.detail.Contains("撤回;") && e.message.Any(m => m.type == "reply")) { ReplyMessage reply = (ReplyMessage)e.message.Where(m => m.type == "reply").First(); if (long.TryParse(reply.data.id, out long id)) @@ -89,7 +89,7 @@ namespace Milimoe.RainBOT.ListeningTask } // 精华消息 - if ((e.user_id == GeneralSettings.Master || Bot.IsAdmin(e.group_id, e.user_id)) && e.detail.Contains("精华;") && e.message.Any(m => m.type == "reply")) + if ((e.user_id == GeneralSettings.Master || GeneralSettings.SpecialAccessGroup.Contains(e.user_id)) && Bot.IsAdmin(e.group_id, e.user_id) && e.detail.Contains("精华;") && e.message.Any(m => m.type == "reply")) { ReplyMessage reply = (ReplyMessage)e.message.Where(m => m.type == "reply").First(); if (int.TryParse(reply.data.id, out int id)) @@ -109,7 +109,7 @@ namespace Milimoe.RainBOT.ListeningTask } } - if (e.user_id != GeneralSettings.Master && Ignore.CustomIgnore.Any(e.detail.Contains) && Bot.BotIsAdmin(e.group_id)) + if ((e.user_id != GeneralSettings.Master && !GeneralSettings.SpecialAccessGroup.Contains(e.user_id)) && Ignore.CustomIgnore.Any(e.detail.Contains) && Bot.BotIsAdmin(e.group_id)) { await Bot.SendMessage(SupportedAPI.delete_msg, e.group_id, "撤回", new DeleteMsgContent(e.message_id), true); await Bot.SendMessage(SupportedAPI.set_group_ban, e.group_id, "禁言", new SetGroupBanContent(e.group_id, e.user_id, 120), true); diff --git a/src/Settings/GeneralSettings.cs b/src/Settings/GeneralSettings.cs index db2b789..e10aba9 100644 --- a/src/Settings/GeneralSettings.cs +++ b/src/Settings/GeneralSettings.cs @@ -58,6 +58,8 @@ namespace Milimoe.RainBOT.Settings public static List SayNoAccessGroup { get; set; } = []; + public static List SpecialAccessGroup { get; set; } = []; + public static List OSMCoreGroup { get; set; } = []; public static List FunGameGroup { get; set; } = []; @@ -172,6 +174,10 @@ namespace Milimoe.RainBOT.Settings { SayNoAccessGroup = (List)value; } + if (configs.TryGetValue("SpecialAccessGroup", out value) && value != null) + { + SpecialAccessGroup = (List)value; + } if (configs.TryGetValue("OSMCoreGroup", out value) && value != null) { OSMCoreGroup = (List)value; @@ -223,6 +229,7 @@ namespace Milimoe.RainBOT.Settings Configs.Add("UnMuteAccessGroup", UnMuteAccessGroup); Configs.Add("RecallAccessGroup", RecallAccessGroup); Configs.Add("SayNoAccessGroup", SayNoAccessGroup); + Configs.Add("SpecialAccessGroup", SpecialAccessGroup); Configs.Add("OSMCoreGroup", OSMCoreGroup); Configs.Add("FunGameGroup", FunGameGroup); Configs.Add("FunGameWebSocketGroup", FunGameWebSocketGroup); @@ -249,6 +256,9 @@ namespace Milimoe.RainBOT.Settings case "saynoaccessgroup": list = SayNoAccessGroup; break; + case "specialaccessgroup": + list = SpecialAccessGroup; + break; case "osmcoregroup": list = OSMCoreGroup; break;