diff --git a/RoBot.Core/Helper/RedisHelper.cs b/RoBot.Core/Helper/RedisHelper.cs
index 9a608ed..5ed1469 100644
--- a/RoBot.Core/Helper/RedisHelper.cs
+++ b/RoBot.Core/Helper/RedisHelper.cs
@@ -19,6 +19,7 @@ namespace RoBot.Core.Helper
Deserialize = JsonConvert.DeserializeObject
};
Client.Set(Guid.NewGuid().ToString(), "", 10);
+ Console.WriteLine("初始化Redis...");
}
}
}
diff --git a/XiaoXiaoRoBot/Cmd/MiJingNotify.cs b/XiaoXiaoRoBot/Cmd/MiJingNotify.cs
new file mode 100644
index 0000000..bcd505c
--- /dev/null
+++ b/XiaoXiaoRoBot/Cmd/MiJingNotify.cs
@@ -0,0 +1,82 @@
+using Lagrange.Core.Message;
+using Lagrange.Core.Message.Entity;
+using RoBot.Start.Global;
+using RoBot.Start.LogConfig;
+using RoBot.Start.Message;
+using System.Globalization;
+using System.Text.RegularExpressions;
+
+namespace RoBot.Start.Cmd
+{
+ ///
+ /// 秘境结束通知
+ ///
+ public class MiJingNotify
+ {
+ public static async Task Execute(MessageChain chain)
+ {
+ try
+ {
+ MarkdownEntity miJingEntity = chain.Where(o => o is MarkdownEntity)
+ .Cast()
+ .Where(o => o.Data.Content.Contains("进入秘境"))
+ .FirstOrDefault();
+ if (miJingEntity is not null)
+ {
+ MentionEntity callQQMember = chain.Where(o => o is MentionEntity).Cast().FirstOrDefault();
+ if (callQQMember is not null)
+ {
+ string miJingContent = miJingEntity.Data.Content;
+ var minutes = ParseMinutes(miJingContent);
+ if (minutes > 0)
+ {
+ uint qqNumber = callQQMember.Uin;
+ ScheduleReminder(qqNumber, minutes);
+ }
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ Logs.Write($@"{DateTime.Now:yyyy-MM-dd HH:mm:ss} 秘境结束通知 发生异常,异常信息:{ex.Message},异常堆栈:{ex.StackTrace}", true);
+ }
+ return await Task.FromResult(true);
+ }
+
+ private static void ScheduleReminder(uint userId, int minutes)
+ {
+ TimeSpan delay = TimeSpan.FromMinutes(minutes);
+
+ Logs.Write($@"{DateTime.Now:yyyy-MM-dd HH:mm:ss} {userId} 秘境通知 {minutes}分钟");
+
+ _ = Task.Run(async () =>
+ {
+ await Task.Delay(delay);
+ Dto.ConfigDto.ConfigSetting systemConfig = GlobalConfig.ConfigSetting;
+ Lagrange.Core.BotContext bot = GlobalConfig.BotContext;
+ await bot.SendMentionMsg((uint)systemConfig.GroupQQ, userId, $"秘境结算通知,该结算奖励了!({minutes} 分钟)");
+ });
+ }
+
+ private static int ParseMinutes(string content)
+ {
+ if (string.IsNullOrWhiteSpace(content)) return 0;
+
+ var match = Regex.Match(content, @"花费时间[::]\s*(\d+(?:\.\d+)?)", RegexOptions.Compiled);
+ if (!match.Success)
+ {
+ match = Regex.Match(content, @"(\d+(?:\.\d+)?)", RegexOptions.Compiled);
+ }
+
+ if (match.Success)
+ {
+ if (double.TryParse(match.Groups[1].Value, NumberStyles.Float, CultureInfo.InvariantCulture, out double val))
+ {
+ return (int)Math.Round(val);
+ }
+ }
+
+ return 0;
+ }
+ }
+}
diff --git a/XiaoXiaoRoBot/Message/RoBotMessage.cs b/XiaoXiaoRoBot/Message/RoBotMessage.cs
index b2275f1..bad2f2a 100644
--- a/XiaoXiaoRoBot/Message/RoBotMessage.cs
+++ b/XiaoXiaoRoBot/Message/RoBotMessage.cs
@@ -17,5 +17,19 @@ namespace RoBot.Start.Message
var groupMessageChain = MessageBuilder.Group(groupId).Text(message);
return await bot.SendMessage(groupMessageChain.Build());
}
+
+ ///
+ /// 给指定QQ发送消息
+ ///
+ /// bo
+ /// 群组
+ /// 指定QQ
+ /// 消息
+ ///
+ public static async Task SendMentionMsg(this Lagrange.Core.BotContext bot, uint groupId, uint mentionId, string message)
+ {
+ var groupMessageChain = MessageBuilder.Group(groupId).Mention(mentionId).Text(message);
+ return await bot.SendMessage(groupMessageChain.Build());
+ }
}
}
diff --git a/XiaoXiaoRoBot/Program.cs b/XiaoXiaoRoBot/Program.cs
index 5405880..8381f62 100644
--- a/XiaoXiaoRoBot/Program.cs
+++ b/XiaoXiaoRoBot/Program.cs
@@ -87,6 +87,10 @@ else
LoadLoginConfig();
}
+
+
+
+
void HandleGroupMessage(MessageChain chain)
{
// 悬赏令查价
@@ -109,6 +113,9 @@ void HandleGroupMessage(MessageChain chain)
// 查丹方
_ = ImmortalElixirCmd.Execute(chain);
+
+ // 秘境通知
+ _ = MiJingNotify.Execute(chain);
}
void Init()
diff --git a/XiaoXiaoRoBot/appsettings.json b/XiaoXiaoRoBot/appsettings.json
index 4c7464c..fc98553 100644
--- a/XiaoXiaoRoBot/appsettings.json
+++ b/XiaoXiaoRoBot/appsettings.json
@@ -118,6 +118,11 @@
"🍊🐠⬇️🐦": "沉鱼落雁",
"🤍🐳🥩💃": "心惊肉跳",
"👚💉🚀☃️": "一针见血",
- "💍🌸🧶🛕": "借花献佛"
+ "💍🌸🧶🛕": "借花献佛",
+ "🍊👗🎀✔️": "成群结队",
+ "☝️️👏🏻🐔🈴": "一拍即合",
+ "🍏♣🎋🐎": "青梅竹马",
+ "🚬👦👂👀": "掩人耳目",
+ "🌾💊😣👄": "良药苦口"
}
}
\ No newline at end of file