feat: 添加自动任务群监听触发验证码

main
LyMysterious 6 months ago
parent 9a6efc579f
commit e8cd8a0023

@ -0,0 +1,13 @@
{
"version": 1,
"isRoot": true,
"tools": {
"dotnet-ef": {
"version": "9.0.10",
"commands": [
"dotnet-ef"
],
"rollForward": false
}
}
}

@ -1,3 +1,4 @@
using Furion.Logging;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using NapCatRobotClient.Service.Dispatcher.Service; using NapCatRobotClient.Service.Dispatcher.Service;
@ -15,7 +16,7 @@ namespace NapCatRobotClient.API.Controllers
} }
/// <summary> /// <summary>
/// スモハユマ鋧「ネ<EFBFBD> /// 接收消息入口
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
[HttpPost] [HttpPost]
@ -23,6 +24,7 @@ namespace NapCatRobotClient.API.Controllers
{ {
using StreamReader reader = new(Request.Body); using StreamReader reader = new(Request.Body);
string body = await reader.ReadToEndAsync(); string body = await reader.ReadToEndAsync();
Log.Information($"接收到群消息:{body}");
bool result = await _dispatcherService.ReceiveMessageAndProcess(body); bool result = await _dispatcherService.ReceiveMessageAndProcess(body);
return Ok(result); return Ok(result);
} }

@ -13,11 +13,13 @@
"Redis": "127.0.0.1:6379,defaultDatabase=0,max pool size=50,tryit=0" "Redis": "127.0.0.1:6379,defaultDatabase=0,max pool size=50,tryit=0"
}, },
"QQConfig": { "QQConfig": {
"SendApiUrl": "http://192.168.142.133:3000",// NapCat HTTP "SendApiUrl": "http://192.168.142.133:3000", // NapCat HTTP
"AccessToken": "123456",// NapCat HTTPToken "AccessToken": "123456", // NapCat HTTPToken
"RobotQQ": "3902582794",// QQ "RobotQQ": "3902582794", // QQ
"XiaoXiaoRobotQQ": "3889001741",// QQ "XiaoXiaoRobotQQ": "3889001741", // QQ
"XiuXianGroupId": [ 705807264 ] // "XiuXianGroupId": [ 705807264 ], //
"AutoTaskGroupId": [ 1035078191 ], // , QQ
"SendMsgQQ": "123456789" // QQ
}, },
"丹方": { "丹方": {
"灭神古丸": "配方主药三尾风叶1药引血菩提1辅药混元果1丹炉寒铁铸心炉\r\n配方主药冰灵焰草1药引诱妖草1辅药混元果1丹炉寒铁铸心炉", "灭神古丸": "配方主药三尾风叶1药引血菩提1辅药混元果1丹炉寒铁铸心炉\r\n配方主药冰灵焰草1药引诱妖草1辅药混元果1丹炉寒铁铸心炉",

@ -0,0 +1,20 @@
namespace NapCatRobotClient.Core.RobotAPI.Dto.Request
{
/// <summary>
/// 发送私聊消息请求
/// </summary>
public class PrivateSendMessageRequest
{
/// <summary>
/// QQ号码
/// </summary>
[JsonProperty("user_id")]
public string UserId { get; set; }
/// <summary>
/// 消息内容
/// </summary>
[JsonProperty("message")]
public List<MessageItem> Message { get; set; }
}
}

@ -1,4 +1,5 @@
using Flurl.Http; using Flurl.Http;
using Furion.Logging;
using NapCatRobotClient.Core.RobotAPI.Dto.Request; using NapCatRobotClient.Core.RobotAPI.Dto.Request;
namespace NapCatRobotClient.Core.RobotAPI namespace NapCatRobotClient.Core.RobotAPI
@ -6,16 +7,25 @@ namespace NapCatRobotClient.Core.RobotAPI
public class RobotAPI public class RobotAPI
{ {
/// <summary> /// <summary>
/// 发送群文本消息 /// 发送群消息
/// </summary> /// </summary>
/// <param name="groupId"></param> /// <param name="request"></param>
/// <param name="message"></param>
/// <returns></returns> /// <returns></returns>
public static async Task<string> SendGroupText(GroupSendMessageRequest request) public static async Task<string> SendGroupText(GroupSendMessageRequest request)
{ {
return await Post(JsonConvert.SerializeObject(request), "/send_group_msg"); return await Post(JsonConvert.SerializeObject(request), "/send_group_msg");
} }
/// <summary>
/// 发送私聊消息
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public static async Task<string> SendPrivateText(PrivateSendMessageRequest request)
{
return await Post(JsonConvert.SerializeObject(request), "/send_private_msg");
}
private static async Task<string> Post(string parameters, string action) private static async Task<string> Post(string parameters, string action)
{ {
string url = App.Configuration["QQConfig:SendApiUrl"] + action; string url = App.Configuration["QQConfig:SendApiUrl"] + action;

@ -4,7 +4,15 @@ namespace NapCatRobotClient.Service.Group.Service
{ {
public class GroupService : IGroupService, IScoped public class GroupService : IGroupService, IScoped
{ {
private static List<string> GroupQQ = App.GetConfig<List<string>>("QQConfig:XiuXianGroupId"); /// <summary>
/// 修仙大群
/// </summary>
private static List<string> XiuXianGroup = App.GetConfig<List<string>>("QQConfig:XiuXianGroupId");
/// <summary>
/// 自动做任务群
/// </summary>
private static List<string> AutoTaskGroup = App.GetConfig<List<string>>("QQConfig:AutoTaskGroupId");
/// <summary> /// <summary>
/// 处理群消息 /// 处理群消息
@ -16,7 +24,7 @@ namespace NapCatRobotClient.Service.Group.Service
JObject json = JObject.Parse(message); JObject json = JObject.Parse(message);
string groupId = json["group_id"]?.ToString() ?? string.Empty; string groupId = json["group_id"]?.ToString() ?? string.Empty;
string groupMsg = json["message"]?.ToString() ?? string.Empty; string groupMsg = json["message"]?.ToString() ?? string.Empty;
if (GroupQQ.Contains(groupId) && string.IsNullOrWhiteSpace(groupMsg) is false) if (XiuXianGroup.Contains(groupId) && string.IsNullOrWhiteSpace(groupMsg) is false)
{ {
_ = WantedPriceProcess.ProcessGroupRequest(groupId, message); _ = WantedPriceProcess.ProcessGroupRequest(groupId, message);
@ -32,6 +40,10 @@ namespace NapCatRobotClient.Service.Group.Service
_ = ImmortalElixirProcess.ProcessGroupRequest(groupId, message); _ = ImmortalElixirProcess.ProcessGroupRequest(groupId, message);
} }
if (AutoTaskGroup.Contains(groupId) && string.IsNullOrWhiteSpace(groupMsg) is false)
{
_= VerifyMsgProcess.ProcessGroupRequest(groupId, message);
}
return await Task.FromResult(true); return await Task.FromResult(true);
} }

@ -7,6 +7,6 @@
/// </summary> /// </summary>
/// <param name="message"></param> /// <param name="message"></param>
/// <returns></returns> /// <returns></returns>
public Task<bool> ProcessGroupRequest(string message); public Task<bool>ProcessGroupRequest(string message);
} }
} }

@ -18,6 +18,12 @@ namespace NapCatRobotClient.Service.Group.TextProcess
try try
{ {
JObject json = JObject.Parse(message); JObject json = JObject.Parse(message);
string xx = json["user_id"]?.ToString();
if (xx != App.Configuration["QQConfig:XiaoXiaoRobotQQ"])
{
return false;
}
string groupMsg = JArray.Parse(json["message"].ToString()).FirstOrDefault(o => o["type"].ToString() == "text" string groupMsg = JArray.Parse(json["message"].ToString()).FirstOrDefault(o => o["type"].ToString() == "text"
&& !string.IsNullOrWhiteSpace(o["data"]["text"].ToString()) && (o["data"]["text"].ToString().Contains("道友本次采集成果") || o["data"]["text"].ToString().Contains("道友成功收获药材")))?["data"]?["text"]?.ToString(); && !string.IsNullOrWhiteSpace(o["data"]["text"].ToString()) && (o["data"]["text"].ToString().Contains("道友本次采集成果") || o["data"]["text"].ToString().Contains("道友成功收获药材")))?["data"]?["text"]?.ToString();
if (string.IsNullOrWhiteSpace(groupMsg)) return false; if (string.IsNullOrWhiteSpace(groupMsg)) return false;

@ -14,10 +14,21 @@ namespace NapCatRobotClient.Service.Group.TextProcess
try try
{ {
JObject json = JObject.Parse(message); JObject json = JObject.Parse(message);
string xx = json["user_id"]?.ToString();
if (xx != App.Configuration["QQConfig:XiaoXiaoRobotQQ"])
{
return false;
}
var messageArray = JArray.Parse(json["message"].ToString()); var messageArray = JArray.Parse(json["message"].ToString());
string groupMsg = messageArray.FirstOrDefault(o => o["type"].ToString() == "text"
&& !string.IsNullOrWhiteSpace(o["data"]["text"].ToString()) List<string> keywords = new() { "进入秘境", "道友已踏入", "道友已破界", "道友已遁入", "道友已降临" };
&& (o["data"]["text"].ToString().Contains("进入秘境:") || o["data"]["text"].ToString().Contains("道友已踏入:"))
string groupMsg = messageArray
.FirstOrDefault(o =>
o["type"]?.ToString() == "text"
&& !string.IsNullOrWhiteSpace(o["data"]?["text"]?.ToString())
&& keywords.Any(k => o["data"]["text"].ToString().Contains(k))
)?["data"]?["text"]?.ToString(); )?["data"]?["text"]?.ToString();
if (string.IsNullOrWhiteSpace(groupMsg)) return false; if (string.IsNullOrWhiteSpace(groupMsg)) return false;

@ -0,0 +1,57 @@
using Furion.Logging;
using NapCatRobotClient.Core.RobotAPI.Dto.Request;
namespace NapCatRobotClient.Service.Group.TextProcess
{
/// <summary>
/// 自动做任务群触发验证消息给指定的QQ提示
/// </summary>
public class VerifyMsgProcess
{
/// <summary>
/// 处理群消息
/// </summary>
/// <param name="message"></param>
/// <returns></returns>
public static async Task<bool> ProcessGroupRequest(string groupId, string message)
{
try
{
JObject json = JObject.Parse(message);
string xx = json["user_id"]?.ToString();
if (xx != App.Configuration["QQConfig:XiaoXiaoRobotQQ"])
{
return false;
}
string groupName = json["group_name"]?.ToString();
List<string> text = ["请先验证", "请验证", "深色文字"];
if (text.Any(message.Contains))
{
PrivateSendMessageRequest request = new()
{
UserId = App.Configuration["QQConfig:SendMsgQQ"],
Message = new()
{
new MessageItem()
{
Type = "text",
Data = new()
{
Text = $"{DateTime.Now}\r\n触发小小验证消息\r\n群昵称:{groupName}\r\n群号:{groupId}"
}
}
}
};
await RobotAPI.SendPrivateText(request);
}
}
catch (Exception ex)
{
Log.Error($@"{DateTime.Now:yyyy-MM-dd HH:mm:ss} 自动修炼群触发验证消息 发生异常,异常信息:{ex.Message},异常堆栈:{ex.StackTrace}", true);
}
return await Task.FromResult(true);
}
}
}
Loading…
Cancel
Save