Skip to content

Commit 8fd36f4

Browse files
XeronOwONoirHare
andauthored
[Milky] Implemented set_group_name (#12)
Co-authored-by: DarkRRb <177549718+DarkRRb@users.noreply.github.com>
1 parent 2ee763a commit 8fd36f4

7 files changed

Lines changed: 228 additions & 1 deletion

File tree

Lagrange.Core/Common/Interface/MessageExt.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,4 +46,7 @@ public static Task SendFriendNudge(this BotContext context, long peerUin, long?
4646

4747
public static Task SendGroupNudge(this BotContext context, long peerUin, long targetUin)
4848
=> context.EventContext.GetLogic<OperationLogic>().SendNudge(true, peerUin, targetUin);
49+
50+
public static Task GroupRename(this BotContext context, long groupUin, string name)
51+
=> context.EventContext.GetLogic<OperationLogic>().GroupRename(groupUin, name);
4952
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
namespace Lagrange.Core.Internal.Events.System;
2+
3+
internal class GroupRenameEventReq(long groupUin, string targetName) : ProtocolEvent
4+
{
5+
public long GroupUin { get; } = groupUin;
6+
7+
public string TargetName { get; } = targetName;
8+
}
9+
10+
internal class GroupRenameEventResp : ProtocolEvent
11+
{
12+
public static readonly GroupRenameEventResp Default = new();
13+
}

Lagrange.Core/Internal/Logic/OperationLogic.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,12 @@ public async Task<bool> SendNudge(bool isGroup, long peerUin, long targetUin)
2727
await context.EventContext.SendEvent<NudgeEventResp>(new NudgeEventReq(isGroup, peerUin, targetUin));
2828
return true;
2929
}
30-
30+
31+
public async Task GroupRename(long groupUin, string name)
32+
{
33+
await context.EventContext.SendEvent<GroupRenameEventResp>(new GroupRenameEventReq(groupUin, name));
34+
}
35+
3136
public async Task<string> GroupFSDownload(long groupUin, string fileId)
3237
{
3338
var request = new GroupFSDownloadEventReq(groupUin, fileId);
Lines changed: 145 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,145 @@
1+
using Lagrange.Proto;
2+
3+
namespace Lagrange.Core.Internal.Packets.Service;
4+
5+
#pragma warning disable CS8618
6+
7+
[ProtoPackable]
8+
internal partial class D89AReqBody
9+
{
10+
[ProtoPackable]
11+
internal partial class GroupExInfoOnly
12+
{
13+
[ProtoMember(1)] public uint? TribeId { get; set; }
14+
15+
[ProtoMember(2)] public uint? MoneyForAddGroup { get; set; }
16+
}
17+
18+
[ProtoPackable]
19+
internal partial class GroupGeoInfo
20+
{
21+
[ProtoMember(1)] public uint? CityId { get; set; }
22+
23+
[ProtoMember(2)] public ulong? Longitude { get; set; }
24+
25+
[ProtoMember(3)] public ulong? Latitude { get; set; }
26+
27+
[ProtoMember(4)] public string? GeoContent { get; set; }
28+
29+
[ProtoMember(5)] public ulong? PoiId { get; set; }
30+
}
31+
32+
[ProtoPackable]
33+
internal partial class GroupNewGuidelinesInfo
34+
{
35+
[ProtoMember(1)] public bool? Enabled { get; set; }
36+
37+
[ProtoMember(2)] public string? Content { get; set; }
38+
}
39+
40+
[ProtoPackable]
41+
internal partial class GroupInfo
42+
{
43+
[ProtoMember(1)] public uint? GroupExtAdmNum { get; set; }
44+
45+
[ProtoMember(2)] public uint? Flag { get; set; }
46+
47+
[ProtoMember(3)] public string? GroupName { get; set; }
48+
49+
[ProtoMember(4)] public string? GroupMemo { get; set; }
50+
51+
[ProtoMember(5)] public string? GroupFingerMemo { get; set; }
52+
53+
[ProtoMember(6)] public string? GroupAioSkinUrl { get; set; }
54+
55+
[ProtoMember(7)] public string? GroupBoardSkinUrl { get; set; }
56+
57+
[ProtoMember(8)] public string? GroupCoverSkinUrl { get; set; }
58+
59+
[ProtoMember(9)] public uint? GroupGrade { get; set; }
60+
61+
[ProtoMember(10)] public uint? ActiveMemberNum { get; set; }
62+
63+
[ProtoMember(11)] public uint? CertificationType { get; set; }
64+
65+
[ProtoMember(12)] public string? CertificationText { get; set; }
66+
67+
[ProtoMember(13)] public string? GroupRichFingerMemo { get; set; }
68+
69+
[ProtoMember(14)] public GroupNewGuidelinesInfo? GroupNewGuidelines { get; set; }
70+
71+
[ProtoMember(15)] public uint? GroupFace { get; set; }
72+
73+
[ProtoMember(16)] public uint? AddOption { get; set; }
74+
75+
[ProtoMember(17)] public uint? ShutupTime { get; set; }
76+
77+
[ProtoMember(18)] public uint? GroupTypeFlag { get; set; }
78+
79+
[ProtoMember(19)] public List<string>? GroupTag { get; set; }
80+
81+
[ProtoMember(20)] public GroupGeoInfo? GroupGeo { get; set; }
82+
83+
[ProtoMember(21)] public uint? GroupClassExt { get; set; }
84+
85+
[ProtoMember(22)] public string? GroupClassText { get; set; }
86+
87+
[ProtoMember(23)] public uint? AppPrivilegeFlag { get; set; }
88+
89+
[ProtoMember(24)] public uint? AppPrivilegeMask { get; set; }
90+
91+
[ProtoMember(25)] public GroupExInfoOnly? GroupExInfo { get; set; }
92+
93+
[ProtoMember(26)] public uint? GroupSecLevel { get; set; }
94+
95+
[ProtoMember(27)] public uint? GroupSecLevelInfo { get; set; }
96+
97+
[ProtoMember(28)] public long? SubscriptionUin { get; set; }
98+
99+
[ProtoMember(29)] public uint? AllowMemberInvite { get; set; }
100+
101+
[ProtoMember(30)] public string? GroupQuestion { get; set; }
102+
103+
[ProtoMember(31)] public string? GroupAnswer { get; set; }
104+
105+
[ProtoMember(32)] public uint? GroupFlagExt3 { get; set; }
106+
107+
[ProtoMember(33)] public uint? GroupFlagExt3Mask { get; set; }
108+
109+
[ProtoMember(34)] public uint? GroupOpenAppid { get; set; }
110+
111+
[ProtoMember(35)] public uint? NoFingerOpenFlag { get; set; }
112+
113+
[ProtoMember(36)] public uint? NoCodeFingerOpenFlag { get; set; }
114+
115+
[ProtoMember(37)] public long? RootId { get; set; }
116+
117+
[ProtoMember(38)] public uint? MsgLimitFrequency { get; set; }
118+
119+
[ProtoMember(39)] public uint? HlGuildAppid { get; set; }
120+
121+
[ProtoMember(40)] public uint? HlGuildSubType { get; set; }
122+
123+
[ProtoMember(41)] public uint? HlGuildOrgid { get; set; }
124+
125+
[ProtoMember(42)] public uint? GroupFlagExt4 { get; set; }
126+
127+
[ProtoMember(43)] public uint? GroupFlagExt4Mask { get; set; }
128+
}
129+
130+
[ProtoMember(1)] public long? GroupCode { get; set; }
131+
132+
[ProtoMember(2)] public GroupInfo Group { get; set; }
133+
134+
[ProtoMember(3)] public long? OriginalOperatorUin { get; set; }
135+
136+
[ProtoMember(4)] public uint? ReqGroupOpenAppid { get; set; }
137+
}
138+
139+
[ProtoPackable]
140+
internal partial class D89ARspBody
141+
{
142+
[ProtoMember(1)] public long GroupCode { get; set; }
143+
144+
[ProtoMember(2)] public string ErrorInfo { get; set; }
145+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
using Lagrange.Core.Common;
2+
using Lagrange.Core.Internal.Events;
3+
using Lagrange.Core.Internal.Events.System;
4+
using Lagrange.Core.Internal.Packets.Service;
5+
6+
namespace Lagrange.Core.Internal.Services.System;
7+
8+
[EventSubscribe<GroupRenameEventReq>(Protocols.All)]
9+
[Service("OidbSvcTrpcTcp.0x89a_15")]
10+
internal class GroupRenameService : OidbService<GroupRenameEventReq, GroupRenameEventResp, D89AReqBody, D89ARspBody>
11+
{
12+
private protected override uint Command => 0x89a;
13+
14+
private protected override uint Service => 15;
15+
16+
private protected override Task<D89AReqBody> ProcessRequest(GroupRenameEventReq request, BotContext context)
17+
{
18+
return Task.FromResult(new D89AReqBody
19+
{
20+
GroupCode = request.GroupUin,
21+
Group = new()
22+
{
23+
GroupName = request.TargetName
24+
},
25+
});
26+
}
27+
28+
private protected override Task<GroupRenameEventResp> ProcessResponse(D89ARspBody response, BotContext context)
29+
{
30+
return Task.FromResult(GroupRenameEventResp.Default);
31+
}
32+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
using System.Text.Json.Serialization;
2+
using Lagrange.Core;
3+
using Lagrange.Core.Common.Interface;
4+
5+
namespace Lagrange.Milky.Api.Handler.Group;
6+
7+
[Api("set_group_name")]
8+
public class SetGroupNameHandler(BotContext bot) : IEmptyResultApiHandler<SetGroupNameParameter>
9+
{
10+
private readonly BotContext _bot = bot;
11+
12+
public async Task HandleAsync(SetGroupNameParameter parameter, CancellationToken token)
13+
{
14+
await _bot.GroupRename(parameter.GroupId, parameter.Name);
15+
}
16+
}
17+
18+
public class SetGroupNameParameter(long groupId, string name)
19+
{
20+
[JsonRequired]
21+
[JsonPropertyName("group_id")]
22+
public long GroupId { get; init; } = groupId;
23+
24+
[JsonRequired]
25+
[JsonPropertyName("name")]
26+
public string Name { get; init; } = name;
27+
}

Lagrange.Milky/Utility/JsonUtility.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,8 @@ public static partial class JsonUtility
7575
// == group ==
7676
// send_group_nudge
7777
[JsonSerializable(typeof(SendGroupNudgeParameter))]
78+
// set_group_name
79+
[JsonSerializable(typeof(SetGroupNameParameter))]
7880
// == file ==
7981
// upload_group_file
8082
[JsonSerializable(typeof(UploadGroupFileParameter))]

0 commit comments

Comments
 (0)