diff --git a/NapCatRobotClient/NapCatRobotClient.API/.config/dotnet-tools.json b/NapCatRobotClient/NapCatRobotClient.API/.config/dotnet-tools.json
new file mode 100644
index 0000000..d4937e0
--- /dev/null
+++ b/NapCatRobotClient/NapCatRobotClient.API/.config/dotnet-tools.json
@@ -0,0 +1,13 @@
+{
+ "version": 1,
+ "isRoot": true,
+ "tools": {
+ "dotnet-ef": {
+ "version": "9.0.10",
+ "commands": [
+ "dotnet-ef"
+ ],
+ "rollForward": false
+ }
+ }
+}
\ No newline at end of file
diff --git a/NapCatRobotClient/NapCatRobotClient.API/Controllers/EntryController.cs b/NapCatRobotClient/NapCatRobotClient.API/Controllers/EntryController.cs
index 1b0e8bc..66dde85 100644
--- a/NapCatRobotClient/NapCatRobotClient.API/Controllers/EntryController.cs
+++ b/NapCatRobotClient/NapCatRobotClient.API/Controllers/EntryController.cs
@@ -1,3 +1,4 @@
+锘縰sing Furion.Logging;
using Microsoft.AspNetCore.Mvc;
using NapCatRobotClient.Service.Dispatcher.Service;
@@ -15,7 +16,7 @@ namespace NapCatRobotClient.API.Controllers
}
///
- /// 接收消息入口
+ /// 鎺ユ敹娑堟伅鍏ュ彛
///
///
[HttpPost]
@@ -23,6 +24,7 @@ namespace NapCatRobotClient.API.Controllers
{
using StreamReader reader = new(Request.Body);
string body = await reader.ReadToEndAsync();
+ Log.Information($"鎺ユ敹鍒扮兢娑堟伅:{body}");
bool result = await _dispatcherService.ReceiveMessageAndProcess(body);
return Ok(result);
}
diff --git a/NapCatRobotClient/NapCatRobotClient.API/appsettings.json b/NapCatRobotClient/NapCatRobotClient.API/appsettings.json
index 9c15ef2..bb67b33 100644
--- a/NapCatRobotClient/NapCatRobotClient.API/appsettings.json
+++ b/NapCatRobotClient/NapCatRobotClient.API/appsettings.json
@@ -13,11 +13,13 @@
"Redis": "127.0.0.1:6379,defaultDatabase=0,max pool size=50,tryit=0"
},
"QQConfig": {
- "SendApiUrl": "http://192.168.142.133:3000",// NapCat HTTP鏈嶅姟绔湴鍧
- "AccessToken": "123456",// NapCat HTTP鏈嶅姟绔疶oken
- "RobotQQ": "3902582794",// 褰撳墠鐧诲綍鏈哄櫒浜篞Q鍙
- "XiaoXiaoRobotQQ": "3889001741",// 灏忓皬鏈哄櫒浜篞Q鍙
- "XiuXianGroupId": [ 705807264 ] // 瑕佺洃鍚殑缇ゅ彿
+ "SendApiUrl": "http://192.168.142.133:3000", // NapCat HTTP鏈嶅姟绔湴鍧
+ "AccessToken": "123456", // NapCat HTTP鏈嶅姟绔疶oken
+ "RobotQQ": "3902582794", // 褰撳墠鐧诲綍鏈哄櫒浜篞Q鍙
+ "XiaoXiaoRobotQQ": "3889001741", // 灏忓皬鏈哄櫒浜篞Q鍙
+ "XiuXianGroupId": [ 705807264 ], // 瑕佺洃鍚殑缇ゅ彿
+ "AutoTaskGroupId": [ 1035078191 ], // 鑷姩鍋氫换鍔$殑缇,涓昏妫鏌ユ槸鍚﹁Е鍙戜簡楠岃瘉鐮 缁欐寚瀹歈Q鍙戞秷鎭
+ "SendMsgQQ": "123456789" // 鍙戦佺鑱婃秷鎭殑QQ
},
"涓规柟": {
"鐏鍙や父": "閰嶆柟涓昏嵂涓夊熬椋庡彾1鑽紩琛鑿╂彁1杈呰嵂娣峰厓鏋1涓圭倝瀵掗搧閾稿績鐐塡r\n閰嶆柟涓昏嵂鍐扮伒鐒拌崏1鑽紩璇卞鑽1杈呰嵂娣峰厓鏋1涓圭倝瀵掗搧閾稿績鐐",
diff --git a/NapCatRobotClient/NapCatRobotClient.Core/RobotAPI/Dto/Request/PrivateSendMessageRequest.cs b/NapCatRobotClient/NapCatRobotClient.Core/RobotAPI/Dto/Request/PrivateSendMessageRequest.cs
new file mode 100644
index 0000000..cb067af
--- /dev/null
+++ b/NapCatRobotClient/NapCatRobotClient.Core/RobotAPI/Dto/Request/PrivateSendMessageRequest.cs
@@ -0,0 +1,20 @@
+锘縩amespace NapCatRobotClient.Core.RobotAPI.Dto.Request
+{
+ ///
+ /// 鍙戦佺鑱婃秷鎭姹
+ ///
+ public class PrivateSendMessageRequest
+ {
+ ///
+ /// QQ鍙风爜
+ ///
+ [JsonProperty("user_id")]
+ public string UserId { get; set; }
+
+ ///
+ /// 娑堟伅鍐呭
+ ///
+ [JsonProperty("message")]
+ public List Message { get; set; }
+ }
+}
diff --git a/NapCatRobotClient/NapCatRobotClient.Core/RobotAPI/RobotAPI.cs b/NapCatRobotClient/NapCatRobotClient.Core/RobotAPI/RobotAPI.cs
index c5dd606..4e4b738 100644
--- a/NapCatRobotClient/NapCatRobotClient.Core/RobotAPI/RobotAPI.cs
+++ b/NapCatRobotClient/NapCatRobotClient.Core/RobotAPI/RobotAPI.cs
@@ -1,4 +1,5 @@
锘縰sing Flurl.Http;
+using Furion.Logging;
using NapCatRobotClient.Core.RobotAPI.Dto.Request;
namespace NapCatRobotClient.Core.RobotAPI
@@ -6,16 +7,25 @@ namespace NapCatRobotClient.Core.RobotAPI
public class RobotAPI
{
///
- /// 鍙戦佺兢鏂囨湰娑堟伅
+ /// 鍙戦佺兢娑堟伅
///
- ///
- ///
+ ///
///
public static async Task SendGroupText(GroupSendMessageRequest request)
{
return await Post(JsonConvert.SerializeObject(request), "/send_group_msg");
}
+ ///
+ /// 鍙戦佺鑱婃秷鎭
+ ///
+ ///
+ ///
+ public static async Task SendPrivateText(PrivateSendMessageRequest request)
+ {
+ return await Post(JsonConvert.SerializeObject(request), "/send_private_msg");
+ }
+
private static async Task Post(string parameters, string action)
{
string url = App.Configuration["QQConfig:SendApiUrl"] + action;
diff --git a/NapCatRobotClient/NapCatRobotClient.Service/Group/Service/GroupService.cs b/NapCatRobotClient/NapCatRobotClient.Service/Group/Service/GroupService.cs
index 39f28be..f3a0cd6 100644
--- a/NapCatRobotClient/NapCatRobotClient.Service/Group/Service/GroupService.cs
+++ b/NapCatRobotClient/NapCatRobotClient.Service/Group/Service/GroupService.cs
@@ -4,7 +4,15 @@ namespace NapCatRobotClient.Service.Group.Service
{
public class GroupService : IGroupService, IScoped
{
- private static List GroupQQ = App.GetConfig>("QQConfig:XiuXianGroupId");
+ ///
+ /// 淇粰澶х兢
+ ///
+ private static List XiuXianGroup = App.GetConfig>("QQConfig:XiuXianGroupId");
+
+ ///
+ /// 鑷姩鍋氫换鍔$兢
+ ///
+ private static List AutoTaskGroup = App.GetConfig>("QQConfig:AutoTaskGroupId");
///
/// 澶勭悊缇ゆ秷鎭
@@ -16,7 +24,7 @@ namespace NapCatRobotClient.Service.Group.Service
JObject json = JObject.Parse(message);
string groupId = json["group_id"]?.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);
@@ -32,6 +40,10 @@ namespace NapCatRobotClient.Service.Group.Service
_ = ImmortalElixirProcess.ProcessGroupRequest(groupId, message);
}
+ if (AutoTaskGroup.Contains(groupId) && string.IsNullOrWhiteSpace(groupMsg) is false)
+ {
+ _= VerifyMsgProcess.ProcessGroupRequest(groupId, message);
+ }
return await Task.FromResult(true);
}
diff --git a/NapCatRobotClient/NapCatRobotClient.Service/Group/Service/IGroupService.cs b/NapCatRobotClient/NapCatRobotClient.Service/Group/Service/IGroupService.cs
index dc94116..4d089d5 100644
--- a/NapCatRobotClient/NapCatRobotClient.Service/Group/Service/IGroupService.cs
+++ b/NapCatRobotClient/NapCatRobotClient.Service/Group/Service/IGroupService.cs
@@ -7,6 +7,6 @@
///
///
///
- public Task ProcessGroupRequest(string message);
+ public TaskProcessGroupRequest(string message);
}
}
diff --git a/NapCatRobotClient/NapCatRobotClient.Service/Group/TextProcess/LingTianProcess.cs b/NapCatRobotClient/NapCatRobotClient.Service/Group/TextProcess/LingTianProcess.cs
index 9427b37..1aaf683 100644
--- a/NapCatRobotClient/NapCatRobotClient.Service/Group/TextProcess/LingTianProcess.cs
+++ b/NapCatRobotClient/NapCatRobotClient.Service/Group/TextProcess/LingTianProcess.cs
@@ -18,6 +18,12 @@ namespace NapCatRobotClient.Service.Group.TextProcess
try
{
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.IsNullOrWhiteSpace(o["data"]["text"].ToString()) && (o["data"]["text"].ToString().Contains("閬撳弸鏈閲囬泦鎴愭灉") || o["data"]["text"].ToString().Contains("閬撳弸鎴愬姛鏀惰幏鑽潗")))?["data"]?["text"]?.ToString();
if (string.IsNullOrWhiteSpace(groupMsg)) return false;
diff --git a/NapCatRobotClient/NapCatRobotClient.Service/Group/TextProcess/MiJingNotifyProcess.cs b/NapCatRobotClient/NapCatRobotClient.Service/Group/TextProcess/MiJingNotifyProcess.cs
index f88a368..731ac73 100644
--- a/NapCatRobotClient/NapCatRobotClient.Service/Group/TextProcess/MiJingNotifyProcess.cs
+++ b/NapCatRobotClient/NapCatRobotClient.Service/Group/TextProcess/MiJingNotifyProcess.cs
@@ -14,11 +14,22 @@ namespace NapCatRobotClient.Service.Group.TextProcess
try
{
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());
- string groupMsg = messageArray.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();
+
+ List keywords = new() { "杩涘叆绉樺", "閬撳弸宸茶笍鍏", "閬撳弸宸茬牬鐣", "閬撳弸宸查亖鍏", "閬撳弸宸查檷涓" };
+
+ 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();
if (string.IsNullOrWhiteSpace(groupMsg)) return false;
var minutes = ParseMinutes(groupMsg);
diff --git a/NapCatRobotClient/NapCatRobotClient.Service/Group/TextProcess/VerifyMsgProcess.cs b/NapCatRobotClient/NapCatRobotClient.Service/Group/TextProcess/VerifyMsgProcess.cs
new file mode 100644
index 0000000..08bf07d
--- /dev/null
+++ b/NapCatRobotClient/NapCatRobotClient.Service/Group/TextProcess/VerifyMsgProcess.cs
@@ -0,0 +1,57 @@
+锘縰sing Furion.Logging;
+using NapCatRobotClient.Core.RobotAPI.Dto.Request;
+
+namespace NapCatRobotClient.Service.Group.TextProcess
+{
+ ///
+ /// 鑷姩鍋氫换鍔$兢瑙﹀彂楠岃瘉娑堟伅缁欐寚瀹氱殑QQ鎻愮ず
+ ///
+ public class VerifyMsgProcess
+ {
+ ///
+ /// 澶勭悊缇ゆ秷鎭
+ ///
+ ///
+ ///
+ public static async Task 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 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);
+ }
+
+ }
+}