Skip to content
This repository was archived by the owner on Oct 12, 2025. It is now read-only.

Commit e6415e8

Browse files
authored
[Core] add ignore group request (#819)
1 parent 89dba7b commit e6415e8

File tree

8 files changed

+54
-35
lines changed

8 files changed

+54
-35
lines changed
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
namespace Lagrange.Core.Common.Entity;
2+
3+
public enum GroupRequestOperate
4+
{
5+
Allow = 1,
6+
Deny = 2,
7+
Ignore = 3,
8+
}

Lagrange.Core/Common/Interface/Api/GroupExt.cs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,10 +82,16 @@ public static Task<bool> InviteGroup(this BotContext bot, uint groupUin, Diction
8282
=> bot.ContextCollection.Business.OperationLogic.InviteGroup(groupUin, invitedUins);
8383

8484
public static Task<bool> SetGroupRequest(this BotContext bot, BotGroupRequest request, bool accept = true, string reason = "")
85-
=> bot.ContextCollection.Business.OperationLogic.SetGroupRequest(request.GroupUin, request.Sequence, (uint)request.EventType, accept, reason);
85+
=> bot.ContextCollection.Business.OperationLogic.SetGroupRequest(request.GroupUin, request.Sequence, (uint)request.EventType, accept ? GroupRequestOperate.Allow : GroupRequestOperate.Deny, reason);
86+
87+
public static Task<bool> SetGroupRequest(this BotContext bot, BotGroupRequest request, GroupRequestOperate operate, string reason = "")
88+
=> bot.ContextCollection.Business.OperationLogic.SetGroupRequest(request.GroupUin, request.Sequence, (uint)request.EventType, operate, reason);
8689

8790
public static Task<bool> SetGroupFilteredRequest(this BotContext bot, BotGroupRequest request, bool accept = true, string reason = "")
88-
=> bot.ContextCollection.Business.OperationLogic.SetGroupFilteredRequest(request.GroupUin, request.Sequence, (uint)request.EventType, accept, reason);
91+
=> bot.ContextCollection.Business.OperationLogic.SetGroupFilteredRequest(request.GroupUin, request.Sequence, (uint)request.EventType, accept ? GroupRequestOperate.Allow : GroupRequestOperate.Deny, reason);
92+
93+
public static Task<bool> SetGroupFilteredRequest(this BotContext bot, BotGroupRequest request, GroupRequestOperate operate, string reason = "")
94+
=> bot.ContextCollection.Business.OperationLogic.SetGroupFilteredRequest(request.GroupUin, request.Sequence, (uint)request.EventType, operate, reason);
8995

9096
public static Task<bool> SetFriendRequest(this BotContext bot, BotFriendRequest request, bool accept = true)
9197
=> bot.ContextCollection.Business.OperationLogic.SetFriendRequest(request.SourceUid, accept);

Lagrange.Core/Internal/Context/Logic/Implementation/OperationLogic.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -530,16 +530,16 @@ public async Task<bool> InviteGroup(uint targetGroupUin, Dictionary<uint, uint?>
530530
return events.Count == 0 ? null : ((FetchClientKeyEvent)events[0]).ClientKey;
531531
}
532532

533-
public async Task<bool> SetGroupRequest(uint groupUin, ulong sequence, uint type, bool accept, string reason)
533+
public async Task<bool> SetGroupRequest(uint groupUin, ulong sequence, uint type, GroupRequestOperate operate, string reason)
534534
{
535-
var inviteEvent = SetGroupRequestEvent.Create(accept, groupUin, sequence, type, reason);
535+
var inviteEvent = SetGroupRequestEvent.Create(operate, groupUin, sequence, type, reason);
536536
var results = await Collection.Business.SendEvent(inviteEvent);
537537
return results.Count != 0 && results[0].ResultCode == 0;
538538
}
539539

540-
public async Task<bool> SetGroupFilteredRequest(uint groupUin, ulong sequence, uint type, bool accept, string reason)
540+
public async Task<bool> SetGroupFilteredRequest(uint groupUin, ulong sequence, uint type, GroupRequestOperate operate, string reason)
541541
{
542-
var inviteEvent = SetGroupFilteredRequestEvent.Create(accept, groupUin, sequence, type, reason);
542+
var inviteEvent = SetGroupFilteredRequestEvent.Create(operate, groupUin, sequence, type, reason);
543543
var results = await Collection.Business.SendEvent(inviteEvent);
544544
return results.Count != 0 && results[0].ResultCode == 0;
545545
}
Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
using Lagrange.Core.Common.Entity;
2+
13
namespace Lagrange.Core.Internal.Event.Action;
24

35
internal class SetGroupFilteredRequestEvent : ProtocolEvent
@@ -6,15 +8,15 @@ internal class SetGroupFilteredRequestEvent : ProtocolEvent
68

79
public uint GroupUin { get; set; }
810

9-
public bool Accept { get; set; }
11+
public GroupRequestOperate Operate { get; set; }
1012

1113
public uint Type { get; }
1214

1315
public string Reason { get; set; } = string.Empty;
1416

15-
private SetGroupFilteredRequestEvent(bool accept, uint groupUin, ulong sequence, uint type, string? reason) : base(true)
17+
private SetGroupFilteredRequestEvent(GroupRequestOperate operate, uint groupUin, ulong sequence, uint type, string? reason) : base(true)
1618
{
17-
Accept = accept;
19+
Operate = operate;
1820
GroupUin = groupUin;
1921
Sequence = sequence;
2022
Type = type;
@@ -23,8 +25,8 @@ private SetGroupFilteredRequestEvent(bool accept, uint groupUin, ulong sequence,
2325

2426
private SetGroupFilteredRequestEvent(int resultCode) : base(resultCode) { }
2527

26-
public static SetGroupFilteredRequestEvent Create(bool accept, uint groupUin, ulong sequence, uint type, string? reason)
27-
=> new(accept, groupUin, sequence, type, reason);
28+
public static SetGroupFilteredRequestEvent Create(GroupRequestOperate operate, uint groupUin, ulong sequence, uint type, string? reason)
29+
=> new(operate, groupUin, sequence, type, reason);
2830

2931
public static SetGroupFilteredRequestEvent Result(int resultCode) => new(resultCode);
3032
}
Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,32 @@
1+
using Lagrange.Core.Common.Entity;
2+
13
namespace Lagrange.Core.Internal.Event.Action;
24

3-
internal class SetGroupRequestEvent : ProtocolEvent
5+
internal partial class SetGroupRequestEvent : ProtocolEvent
46
{
57
public ulong Sequence { get; set; }
68

79
public uint GroupUin { get; set; }
8-
9-
public bool Accept { get; set; }
10-
10+
11+
public GroupRequestOperate Operate { get; set; }
12+
1113
public uint Type { get; }
12-
14+
1315
public string Reason { get; set; } = string.Empty;
1416

15-
private SetGroupRequestEvent(bool accept, uint groupUin, ulong sequence, uint type, string? reason) : base(true)
17+
private SetGroupRequestEvent(GroupRequestOperate operate, uint groupUin, ulong sequence, uint type, string? reason) : base(true)
1618
{
17-
Accept = accept;
19+
Operate = operate;
1820
GroupUin = groupUin;
1921
Sequence = sequence;
2022
Type = type;
2123
Reason = reason ?? "";
2224
}
23-
25+
2426
private SetGroupRequestEvent(int resultCode) : base(resultCode) { }
25-
26-
public static SetGroupRequestEvent Create(bool accept, uint groupUin, ulong sequence, uint type, string? reason)
27-
=> new(accept, groupUin, sequence, type, reason);
28-
27+
28+
public static SetGroupRequestEvent Create(GroupRequestOperate operate, uint groupUin, ulong sequence, uint type, string? reason)
29+
=> new(operate, groupUin, sequence, type, reason);
30+
2931
public static SetGroupRequestEvent Result(int resultCode) => new(resultCode);
3032
}

Lagrange.Core/Internal/Service/Action/SetGroupFilteredRequestService.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ protected override bool Build(SetGroupFilteredRequestEvent input, BotKeystore ke
1717
{
1818
var packet = new OidbSvcTrpcTcpBase<OidbSvcTrpcTcp0x10C8>(new OidbSvcTrpcTcp0x10C8
1919
{
20-
Accept = Convert.ToUInt32(!input.Accept) + 1,
20+
Accept = (uint)input.Operate,
2121
Body = new OidbSvcTrpcTcp0x10C8Body
2222
{
2323
Sequence = input.Sequence,

Lagrange.Core/Internal/Service/Action/SetGroupRequestService.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ protected override bool Build(SetGroupRequestEvent input, BotKeystore keystore,
1717
{
1818
var packet = new OidbSvcTrpcTcpBase<OidbSvcTrpcTcp0x10C8>(new OidbSvcTrpcTcp0x10C8
1919
{
20-
Accept = Convert.ToUInt32(!input.Accept) + 1,
20+
Accept = (uint)input.Operate,
2121
Body = new OidbSvcTrpcTcp0x10C8Body
2222
{
2323
Sequence = input.Sequence,
@@ -26,17 +26,17 @@ protected override bool Build(SetGroupRequestEvent input, BotKeystore keystore,
2626
Message = input.Reason
2727
}
2828
}, 0x10c8, 1, false, true);
29-
29+
3030
output = packet.Serialize();
3131
extraPackets = null;
3232
return true;
3333
}
34-
35-
protected override bool Parse(Span<byte> input, BotKeystore keystore, BotAppInfo appInfo, BotDeviceInfo device,
34+
35+
protected override bool Parse(Span<byte> input, BotKeystore keystore, BotAppInfo appInfo, BotDeviceInfo device,
3636
out SetGroupRequestEvent output, out List<ProtocolEvent>? extraEvents)
3737
{
3838
var payload = Serializer.Deserialize<OidbSvcTrpcTcpBase<byte[]>>(input);
39-
39+
4040
output = SetGroupRequestEvent.Result((int)payload.ErrorCode);
4141
extraEvents = null;
4242
return true;

Lagrange.OneBot/Core/Operation/Request/SetGroupAddRequestOperation.cs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System.Text.Json;
22
using System.Text.Json.Nodes;
33
using Lagrange.Core;
4+
using Lagrange.Core.Common.Entity;
45
using Lagrange.OneBot.Core.Entity.Action;
56
using Lagrange.OneBot.Core.Operation.Converters;
67

@@ -18,13 +19,13 @@ public async Task<OneBotResult> HandleOperation(BotContext context, JsonNode? pa
1819
uint groupUin = uint.Parse(split[1]);
1920
uint eventType = uint.Parse(split[2]);
2021
bool isFiltered = Convert.ToBoolean(uint.Parse(split.Length > 3 ? split[3] : "0"));
21-
22+
var operate = request.Approve ? GroupRequestOperate.Allow : GroupRequestOperate.Deny;
23+
24+
var logic = context.ContextCollection.Business.OperationLogic;
2225
bool result = isFiltered
23-
? await context.ContextCollection.Business.OperationLogic.SetGroupFilteredRequest(groupUin, sequence,
24-
eventType, request.Approve, request.Reason)
25-
: await context.ContextCollection.Business.OperationLogic.SetGroupRequest(groupUin, sequence, eventType,
26-
request.Approve, request.Reason);
27-
return new OneBotResult(null, result ? 0 : 1, "ok");
26+
? await logic.SetGroupFilteredRequest(groupUin, sequence, eventType, operate, request.Reason)
27+
: await logic.SetGroupRequest(groupUin, sequence, eventType, operate, request.Reason);
28+
return new OneBotResult(null, result ? 0 : 1, result ? "ok" : "failed");
2829
}
2930

3031
throw new Exception();

0 commit comments

Comments
 (0)