Implemented RenameGroupMember
This commit is contained in:
parent
9635f3140d
commit
78dc62dee5
|
@ -13,4 +13,7 @@ public static class GroupExt
|
|||
|
||||
public static Task<bool> SetGroupAdmin(this BotContext bot, uint groupUin, uint targetUin, bool isAdmin)
|
||||
=> bot.ContextCollection.Business.OperationLogic.SetGroupAdmin(groupUin, targetUin, isAdmin);
|
||||
|
||||
public static Task<bool> RenameGroupMember(this BotContext bot, uint groupUin, uint targetUin, string targetName)
|
||||
=> bot.ContextCollection.Business.OperationLogic.RenameGroupMember(groupUin, targetUin, targetName);
|
||||
}
|
|
@ -78,6 +78,16 @@ internal class OperationLogic : LogicBase
|
|||
var events = await Collection.Business.SendEvent(muteGroupMemberEvent);
|
||||
return events.Count != 0 && ((GroupSetAdminEvent)events[0]).ResultCode == 0;
|
||||
}
|
||||
|
||||
public async Task<bool> RenameGroupMember(uint groupUin, uint targetUin, string targetName)
|
||||
{
|
||||
string? uid = await Collection.Business.CachingLogic.ResolveUid(groupUin, targetUin);
|
||||
if (uid == null) return false;
|
||||
|
||||
var renameGroupEvent = RenameMemberEvent.Create(groupUin, uid, targetName);
|
||||
var events = await Collection.Business.SendEvent(renameGroupEvent);
|
||||
return events.Count != 0 && ((GroupSetAdminEvent)events[0]).ResultCode == 0;
|
||||
}
|
||||
|
||||
public async Task<bool> GetHighwayAddress()
|
||||
{
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
namespace Lagrange.Core.Core.Event.Protocol.Action;
|
||||
|
||||
#pragma warning disable CS8618
|
||||
|
||||
internal class RenameMemberEvent : ProtocolEvent
|
||||
{
|
||||
public uint GroupUin { get; }
|
||||
|
||||
public string TargetUid { get; }
|
||||
|
||||
public string TargetName { get; }
|
||||
|
||||
private RenameMemberEvent(uint groupUin, string targetUid, string targetName) : base(true)
|
||||
{
|
||||
GroupUin = groupUin;
|
||||
TargetUid = targetUid;
|
||||
TargetName = targetName;
|
||||
}
|
||||
|
||||
private RenameMemberEvent(int resultCode) : base(resultCode) { }
|
||||
|
||||
public static RenameMemberEvent Create(uint groupUin, string targetUid, string targetName) => new(groupUin, targetUid, targetName);
|
||||
|
||||
public static RenameMemberEvent Result(int resultCode) => new(resultCode);
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
using ProtoBuf;
|
||||
|
||||
namespace Lagrange.Core.Core.Packets.Service.Oidb.Response;
|
||||
|
||||
// ReSharper disable InconsistentNaming
|
||||
|
||||
[ProtoContract]
|
||||
public class OidbSvcTrpcTcp0x8FC_3Response
|
||||
{
|
||||
[ProtoMember(1)] public uint GroupUin { get; set; }
|
||||
}
|
49
Lagrange.Core/Core/Service/Action/RenameMemberService.cs
Normal file
49
Lagrange.Core/Core/Service/Action/RenameMemberService.cs
Normal file
|
@ -0,0 +1,49 @@
|
|||
using Lagrange.Core.Common;
|
||||
using Lagrange.Core.Core.Event.Protocol;
|
||||
using Lagrange.Core.Core.Event.Protocol.Action;
|
||||
using Lagrange.Core.Core.Packets;
|
||||
using Lagrange.Core.Core.Packets.Service.Oidb;
|
||||
using Lagrange.Core.Core.Packets.Service.Oidb.Request;
|
||||
using Lagrange.Core.Core.Packets.Service.Oidb.Response;
|
||||
using Lagrange.Core.Core.Service.Abstraction;
|
||||
using Lagrange.Core.Utility.Binary;
|
||||
using ProtoBuf;
|
||||
|
||||
namespace Lagrange.Core.Core.Service.Action;
|
||||
|
||||
[EventSubscribe(typeof(RenameMemberEvent))]
|
||||
[Service("OidbSvcTrpcTcp.0x8fc_3")]
|
||||
internal class RenameMemberService : BaseService<RenameMemberEvent>
|
||||
{
|
||||
protected override bool Build(RenameMemberEvent input, BotKeystore keystore, BotAppInfo appInfo, BotDeviceInfo device,
|
||||
out BinaryPacket output, out List<BinaryPacket>? extraPackets)
|
||||
{
|
||||
var packet = new OidbSvcTrpcTcpBase<OidbSvcTrpcTcp0x8FC_3>(new OidbSvcTrpcTcp0x8FC_3
|
||||
{
|
||||
GroupUin = input.GroupUin,
|
||||
Body = new OidbSvcTrpcTcp0x8FC_3Body
|
||||
{
|
||||
TargetUid = input.TargetUid,
|
||||
TargetName = input.TargetName
|
||||
}
|
||||
});
|
||||
|
||||
using var stream = new MemoryStream();
|
||||
Serializer.Serialize(stream, packet);
|
||||
output = new BinaryPacket(stream);
|
||||
|
||||
extraPackets = null;
|
||||
return true;
|
||||
}
|
||||
|
||||
protected override bool Parse(SsoPacket input, BotKeystore keystore, BotAppInfo appInfo, BotDeviceInfo device,
|
||||
out RenameMemberEvent output, out List<ProtocolEvent>? extraEvents)
|
||||
{
|
||||
var payload = input.Payload.ReadBytes(BinaryPacket.Prefix.Uint32 | BinaryPacket.Prefix.WithPrefix);
|
||||
var packet = Serializer.Deserialize<OidbSvcTrpcTcpResponse<OidbSvcTrpcTcp0x8FC_3Response>>(payload.AsSpan());
|
||||
|
||||
output = RenameMemberEvent.Result((int)packet.ErrorCode);
|
||||
extraEvents = null;
|
||||
return true;
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue