diff --git a/Lagrange.Core/Internal/Context/FlashTransferContext.cs b/Lagrange.Core/Internal/Context/FlashTransferContext.cs index d5124819..f9d248a6 100644 --- a/Lagrange.Core/Internal/Context/FlashTransferContext.cs +++ b/Lagrange.Core/Internal/Context/FlashTransferContext.cs @@ -22,7 +22,7 @@ internal FlashTransferContext(BotContext botContext) _url = "https://multimedia.qfile.qq.com/sliceupload"; } - public async Task UploadFile(string uKey, Stream bodyStream) + public async Task UploadFile(string uKey, uint appId, Stream bodyStream) { var sha1StateVs = new FlashTransferSha1StateV { State = [] }; var chunkCount = (uint)((bodyStream.Length + ChunkSize - 1) / ChunkSize); @@ -61,19 +61,19 @@ public async Task UploadFile(string uKey, Stream bodyStream) var uploadBuffer = new byte[chunkLength]; await bodyStream.ReadExactlyAsync(uploadBuffer, 0, chunkLength); - var success = await UploadChunk(uKey, (uint)chunkStart, sha1StateVs, uploadBuffer); + var success = await UploadChunk(uKey, appId, (uint)chunkStart, sha1StateVs, uploadBuffer); if (!success) return false; } return true; } - private async Task UploadChunk(string uKey, uint start, FlashTransferSha1StateV chunkSha1S, byte[] body) + private async Task UploadChunk(string uKey, uint appId, uint start, FlashTransferSha1StateV chunkSha1S, byte[] body) { var req = new FlashTransferUploadReq { FieId1 = 0, - AppId = 1407, + AppId = appId, FileId3 = 2, Body = new FlashTransferUploadBody { diff --git a/Lagrange.Core/Internal/Packets/Service/FlashTransferUploadReq.cs b/Lagrange.Core/Internal/Packets/Service/FlashTransferUploadReq.cs index f44213e1..7859cf27 100644 --- a/Lagrange.Core/Internal/Packets/Service/FlashTransferUploadReq.cs +++ b/Lagrange.Core/Internal/Packets/Service/FlashTransferUploadReq.cs @@ -7,7 +7,7 @@ namespace Lagrange.Core.Internal.Packets.Service; internal partial class FlashTransferUploadReq { [ProtoMember(1)] public uint FieId1 { get; set; } // 0 - [ProtoMember(2)] public uint AppId { get; set; } // 1407 + [ProtoMember(2)] public uint AppId { get; set; } // 1402: 私信语音, 1403: 群语音, 1413: 私信视频, 1414: 私信视频封面, 1415: 群视频, 1416: 群视频封面, 1406: 私信图片, 1407: 群聊图片, 14901: 闪传, 14903: 闪传封面 [ProtoMember(3)] public uint FileId3 { get; set; } // 0 [ProtoMember(107)] public FlashTransferUploadBody Body { get; set; } } diff --git a/Lagrange.Core/Message/Entities/ImageEntity.cs b/Lagrange.Core/Message/Entities/ImageEntity.cs index 9d830634..9ac5ddf0 100644 --- a/Lagrange.Core/Message/Entities/ImageEntity.cs +++ b/Lagrange.Core/Message/Entities/ImageEntity.cs @@ -48,11 +48,11 @@ public override async Task Preprocess(BotContext context, BotMessage message) // Aot 和 MacOS 下使用 FlashTransfer 上传 if (RuntimeFeature.IsDynamicCodeCompiled && !RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) { - await context.HighwayContext.UploadFile(Stream.Value, message.IsGroup() ? 1004 : 1003, ProtoHelper.Serialize(result.Ext)); + await context.HighwayContext.UploadFile(Stream.Value, IsGroup ? 1004 : 1003, ProtoHelper.Serialize(result.Ext)); } else { - await context.FlashTransferContext.UploadFile(result.Ext.UKey, Stream.Value); + await context.FlashTransferContext.UploadFile(result.Ext.UKey, (uint)(IsGroup ? 1407 : 1406), Stream.Value); } } }