feat: 秘境结算通知功能
This commit is contained in:
@@ -19,6 +19,7 @@ namespace RoBot.Core.Helper
|
|||||||
Deserialize = JsonConvert.DeserializeObject
|
Deserialize = JsonConvert.DeserializeObject
|
||||||
};
|
};
|
||||||
Client.Set(Guid.NewGuid().ToString(), "", 10);
|
Client.Set(Guid.NewGuid().ToString(), "", 10);
|
||||||
|
Console.WriteLine("初始化Redis...");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 秘境结束通知
|
||||||
|
/// </summary>
|
||||||
|
public class MiJingNotify
|
||||||
|
{
|
||||||
|
public static async Task<bool> Execute(MessageChain chain)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
MarkdownEntity miJingEntity = chain.Where(o => o is MarkdownEntity)
|
||||||
|
.Cast<MarkdownEntity>()
|
||||||
|
.Where(o => o.Data.Content.Contains("进入秘境"))
|
||||||
|
.FirstOrDefault();
|
||||||
|
if (miJingEntity is not null)
|
||||||
|
{
|
||||||
|
MentionEntity callQQMember = chain.Where(o => o is MentionEntity).Cast<MentionEntity>().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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -17,5 +17,19 @@ namespace RoBot.Start.Message
|
|||||||
var groupMessageChain = MessageBuilder.Group(groupId).Text(message);
|
var groupMessageChain = MessageBuilder.Group(groupId).Text(message);
|
||||||
return await bot.SendMessage(groupMessageChain.Build());
|
return await bot.SendMessage(groupMessageChain.Build());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 给指定QQ发送消息
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="bot">bo</param>
|
||||||
|
/// <param name="groupId">群组</param>
|
||||||
|
/// <param name="mentionId">指定QQ</param>
|
||||||
|
/// <param name="message">消息</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static async Task<MessageResult> 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());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -87,6 +87,10 @@ else
|
|||||||
LoadLoginConfig();
|
LoadLoginConfig();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void HandleGroupMessage(MessageChain chain)
|
void HandleGroupMessage(MessageChain chain)
|
||||||
{
|
{
|
||||||
// 悬赏令查价
|
// 悬赏令查价
|
||||||
@@ -109,6 +113,9 @@ void HandleGroupMessage(MessageChain chain)
|
|||||||
|
|
||||||
// 查丹方
|
// 查丹方
|
||||||
_ = ImmortalElixirCmd.Execute(chain);
|
_ = ImmortalElixirCmd.Execute(chain);
|
||||||
|
|
||||||
|
// 秘境通知
|
||||||
|
_ = MiJingNotify.Execute(chain);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Init()
|
void Init()
|
||||||
|
|||||||
@@ -118,6 +118,11 @@
|
|||||||
"🍊🐠⬇️🐦": "沉鱼落雁",
|
"🍊🐠⬇️🐦": "沉鱼落雁",
|
||||||
"🤍🐳🥩💃": "心惊肉跳",
|
"🤍🐳🥩💃": "心惊肉跳",
|
||||||
"👚💉🚀☃️": "一针见血",
|
"👚💉🚀☃️": "一针见血",
|
||||||
"💍🌸🧶🛕": "借花献佛"
|
"💍🌸🧶🛕": "借花献佛",
|
||||||
|
"🍊👗🎀✔️": "成群结队",
|
||||||
|
"☝️️👏🏻🐔🈴": "一拍即合",
|
||||||
|
"🍏♣🎋🐎": "青梅竹马",
|
||||||
|
"🚬👦👂👀": "掩人耳目",
|
||||||
|
"🌾💊😣👄": "良药苦口"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user