From 9348782e9c39b2b3943f7059850b8d2efa35151a Mon Sep 17 00:00:00 2001 From: milimoe Date: Sat, 22 Jun 2024 15:33:47 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=86=E4=B8=80=E4=BA=9B?= =?UTF-8?q?=E9=97=AE=E9=A2=98=EF=BC=8C=E6=96=B0=E5=A2=9Esayno=E6=8C=87?= =?UTF-8?q?=E4=BB=A4=E6=8C=87=E5=8D=97=EF=BC=8C=E6=96=B0=E5=A2=9Eshowlist?= =?UTF-8?q?=E6=8C=87=E4=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Command/MasterCommand.cs | 34 +++++++++++++- src/ListeningTask/GroupMessageTask.cs | 2 +- src/Main.cs | 2 +- src/Settings/GeneralSettings.cs | 25 ++++++++++ src/Settings/OSMCore.cs | 4 +- src/Settings/SayNo.cs | 68 +++++++++++++++++++++++++++ 6 files changed, 130 insertions(+), 5 deletions(-) diff --git a/src/Command/MasterCommand.cs b/src/Command/MasterCommand.cs index ed23490..c2e0a39 100644 --- a/src/Command/MasterCommand.cs +++ b/src/Command/MasterCommand.cs @@ -142,7 +142,39 @@ namespace Milimoe.RainBOT.Command } } } - SendMessage(send_group, target_id, Execute_Worker(".osm missingcommand", "")); + else + { + string msg = "欢迎访问OSM核心功能「随机反驳不」的操作菜单。\r\n" + + "① 添加词汇的指令是:.osm sayno <+/-> \r\n" + + "② 「随机反驳不」支持以下13个列表,前面6个是关键词表,后7个Say开头的才是词汇表,没特殊情况不要添加关键词:\r\n" + + "关键词列表:trigger(基本触发词)、triggerbeforeno(在不之前出现的特殊触发词)、ignoretriggerafterno(在不之后出现则忽略)、ignoretriggerbeforecan(在能之前出现则忽略)、" + + "triggerafteryes(在是之后出现则触发)、willnotsayno(不会触发反驳不的词)\r\n" + + "词汇表:saynowords(反驳不)、saydonthavewords(反驳没)、saynotyeswords(反驳是)、saydontwords(反驳别)、saywantwords(反驳要)、saythinkwords(反驳想)、" + + "sayspecialnowords(特殊反驳不,这个列表触发的可以反驳2个字)\r\n" + + "③ 指令中间必须有空格隔开。如果是关键词是不、别、没,可以使用{0}来指代关键词后面的字。"; + if (GeneralSettings.SayNoAccessGroup.Count > 0) + { + msg += "\r\n④ 仅有以下成员允许操作「随机反驳不」列表:\r\n" + string.Join("\r\n", GeneralSettings.SayNoAccessGroup); + } + SendMessage(send_group, target_id, msg); + } + } + else if (command.Contains(".osm showlist")) + { + string str = command.Replace(".osm showlist", "").Trim(); + string[] strs = Regex.Split(str, @"\s+"); + if (strs.Length > 0) + { + string part = strs[0].ToString().Trim(); + if (part.Contains("group")) + { + GeneralSettings.ShowAccessGroupMemberList(target_id, part, send_group); + } + else + { + SayNo.ShowList(target_id, part, send_group); + } + } } else if (command.Contains(".osm refresh")) { diff --git a/src/ListeningTask/GroupMessageTask.cs b/src/ListeningTask/GroupMessageTask.cs index 7374349..e4b0898 100644 --- a/src/ListeningTask/GroupMessageTask.cs +++ b/src/ListeningTask/GroupMessageTask.cs @@ -545,7 +545,7 @@ namespace Milimoe.RainBOT.ListeningTask } // 随机复读 - if (GeneralSettings.IsRepeat && !Ignore.RepeatIgnore.Contains(e.detail) && e.CheckThrow(GeneralSettings.PRepeat, out dice)) + if (GeneralSettings.IsRepeat && !Ignore.RepeatIgnore.Any(e.detail.Contains) && e.CheckThrow(GeneralSettings.PRepeat, out dice)) { int delay = GeneralSettings.RepeatDelay[0] + new Random().Next(GeneralSettings.RepeatDelay[1] - GeneralSettings.RepeatDelay[0]); Bot.ColorfulCheckPass(sender, "随机复读", dice, GeneralSettings.PRepeat, delay); diff --git a/src/Main.cs b/src/Main.cs index 2e5cb4f..599b7e5 100644 --- a/src/Main.cs +++ b/src/Main.cs @@ -206,7 +206,7 @@ try if (read.Length >= 4 && read[..4] == ".osm") { MasterCommand.Execute(read, GeneralSettings.Master, false, GeneralSettings.Master, false); - return; + continue; } switch (read.ToLower().Trim() ?? "") { diff --git a/src/Settings/GeneralSettings.cs b/src/Settings/GeneralSettings.cs index d6db5f4..b8d7a51 100644 --- a/src/Settings/GeneralSettings.cs +++ b/src/Settings/GeneralSettings.cs @@ -178,5 +178,30 @@ namespace Milimoe.RainBOT.Settings Configs.Add("OSMCoreGroup", OSMCoreGroup); Configs.Save(); } + + public static void ShowAccessGroupMemberList(long target, string group, bool isgroup) + { + List list = []; + switch (group.ToLower()) + { + case "muteaccessgroup": + list = MuteAccessGroup; + break; + case "unmuteaccessgroup": + list = UnMuteAccessGroup; + break; + case "recallaccessgroup": + list = RecallAccessGroup; + break; + case "saynoaccessgroup": + list = SayNoAccessGroup; + break; + case "osmcoregroup": + list = OSMCoreGroup; + break; + } + string msg = list.Count > 0 ? "权限组" + group + "拥有一下成员:" + "\r\n" + string.Join("\r\n", list) : "此权限组不存在或没有任何成员。"; + _ = isgroup ? Bot.SendGroupMessage(target, "显示列表成员", msg) : Bot.SendFriendMessage(target, "显示列表成员", msg); + } } } diff --git a/src/Settings/OSMCore.cs b/src/Settings/OSMCore.cs index f04cc32..bc6c715 100644 --- a/src/Settings/OSMCore.cs +++ b/src/Settings/OSMCore.cs @@ -3,8 +3,8 @@ public class OSMCore { public const string version = "v1.0"; - public const string version2 = "Patch5"; - public const string time = "Jun. 12th, 2024"; + public const string version2 = "Patch6"; + public const string time = "Jun. 22nd, 2024"; public static string Info => $"OSM Core {version} {version2}\r\nAuthor: Milimoe\r\nBuilt on {time}\r\nSee: https://github.com/milimoe"; } diff --git a/src/Settings/SayNo.cs b/src/Settings/SayNo.cs index 06fa3eb..4cd435d 100644 --- a/src/Settings/SayNo.cs +++ b/src/Settings/SayNo.cs @@ -172,5 +172,73 @@ namespace Milimoe.RainBOT.Settings } return true; } + + public static void ShowList(long target, string part, bool isgroup) + { + HashSet set = []; + List list = []; + bool islist = false; + switch (part.ToLower()) + { + case "trigger": + set = Trigger; + break; + case "triggerbeforeno": + set = TriggerBeforeNo; + break; + case "ignoretriggerafterno": + set = IgnoreTriggerAfterNo; + break; + case "ignoretriggerbeforecan": + set = IgnoreTriggerBeforeCan; + break; + case "triggerafteryes": + set = TriggerAfterYes; + break; + case "willnotsayno": + set = WillNotSayNo; + break; + case "saynowords": + islist = true; + list = SayNoWords; + break; + case "saydonthavewords": + islist = true; + list = SayDontHaveWords; + break; + case "saynotyeswords": + islist = true; + list = SayNotYesWords; + break; + case "saydontwords": + islist = true; + list = SayDontWords; + break; + case "saywantwords": + islist = true; + list = SayWantWords; + break; + case "saythinkwords": + islist = true; + list = SayThinkWords; + break; + case "sayspecialnowords": + islist = true; + list = SaySpecialNoWords; + break; + default: + break; + } + string msg; + if (islist) + { + msg = list.Count > 0 ? "列表" + part + "拥有一下成员:" + "\r\n"+ string.Join("\r\n", list) : "此列表不存在或没有任何成员。"; + } + else + { + msg = set.Count > 0 ? "列表" + part + "拥有一下成员:" + "\r\n" + string.Join("\r\n", set) : "此列表不存在或没有任何成员。"; + } + _ = isgroup ? Bot.SendGroupMessage(target, "显示列表成员", msg) : Bot.SendFriendMessage(target, "显示列表成员", msg); + } } } \ No newline at end of file