Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[All] add chat type #672

Merged
merged 2 commits into from
Nov 3, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions Lagrange.Core/Common/Interface/Api/OperationExt.cs
Original file line number Diff line number Diff line change
Expand Up @@ -273,11 +273,11 @@ public static Task<string> UploadImage(this BotContext bot, ImageEntity entity)
public static Task<ImageOcrResult?> OcrImage(this BotContext bot, ImageEntity entity)
=> bot.ContextCollection.Business.OperationLogic.ImageOcr(entity);

public static Task<(int Code, string ErrMsg, string? Url)> GetGroupGenerateAiRecordUrl(this BotContext bot, uint groupUin, string character, string text)
=> bot.ContextCollection.Business.OperationLogic.GetGroupGenerateAiRecordUrl(groupUin, character, text);
public static Task<(int Code, string ErrMsg, string? Url)> GetGroupGenerateAiRecordUrl(this BotContext bot, uint groupUin, string character, string text, uint chatType)
=> bot.ContextCollection.Business.OperationLogic.GetGroupGenerateAiRecordUrl(groupUin, character, text, chatType);

public static Task<(int Code, string ErrMsg, RecordEntity? RecordEntity)> GetGroupGenerateAiRecord(this BotContext bot, uint groupUin, string character, string text)
=> bot.ContextCollection.Business.OperationLogic.GetGroupGenerateAiRecord(groupUin, character, text);
public static Task<(int Code, string ErrMsg, RecordEntity? RecordEntity)> GetGroupGenerateAiRecord(this BotContext bot, uint groupUin, string character, string text, uint chatType)
=> bot.ContextCollection.Business.OperationLogic.GetGroupGenerateAiRecord(groupUin, character, text, chatType);

public static Task<(int Code, string ErrMsg, List<AiCharacterList>? Result)> GetAiCharacters(this BotContext bot, uint chatType, uint groupUin = 42)
=> bot.ContextCollection.Business.OperationLogic.GetAiCharacters(chatType, groupUin);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -723,9 +723,9 @@ public async Task<bool> FriendJoinEmojiChain(uint friendUin, uint emojiId, uint
return results.Count != 0 && results[0].ResultCode == 0;
}

public async Task<(int Code, string ErrMsg, string? Url)> GetGroupGenerateAiRecordUrl(uint groupUin, string character, string text)
public async Task<(int Code, string ErrMsg, string? Url)> GetGroupGenerateAiRecordUrl(uint groupUin, string character, string text, uint chatType)
{
var (code, errMsg, record) = await GetGroupGenerateAiRecord(groupUin, character, text);
var (code, errMsg, record) = await GetGroupGenerateAiRecord(groupUin, character, text, chatType);
if (code != 0)
return (code, errMsg, null);

Expand All @@ -739,9 +739,9 @@ public async Task<bool> FriendJoinEmojiChain(uint friendUin, uint emojiId, uint
: (finalResult.ResultCode, "Failed to get group ai record", null);
}

public async Task<(int Code, string ErrMsg, RecordEntity? Record)> GetGroupGenerateAiRecord(uint groupUin, string character, string text)
public async Task<(int Code, string ErrMsg, RecordEntity? Record)> GetGroupGenerateAiRecord(uint groupUin, string character, string text, uint chatType)
{
var groupAiRecordEvent = GroupAiRecordEvent.Create(groupUin, character, text);
var groupAiRecordEvent = GroupAiRecordEvent.Create(groupUin, character, text, chatType);
while (true)
{
var results = await Collection.Business.SendEvent(groupAiRecordEvent);
Expand Down
15 changes: 8 additions & 7 deletions Lagrange.Core/Internal/Event/Action/GroupAiRecordEvent.cs
Original file line number Diff line number Diff line change
@@ -1,22 +1,23 @@
using Lagrange.Core.Internal.Packets.Service.Oidb.Common;
using Lagrange.Core.Message.Entity;

namespace Lagrange.Core.Internal.Event.Action;

internal class GroupAiRecordEvent : ProtocolEvent
{
public uint GroupUin { get; set; }
public string Character { get; set; }= string.Empty;
public string Text { get; set; }= string.Empty;
public string Character { get; set; } = string.Empty;
public string Text { get; set; } = string.Empty;
public uint ChatType { get; set; }

public MsgInfo? RecordInfo { get; set; }
public string ErrorMessage { get; set; }= string.Empty;
public string ErrorMessage { get; set; } = string.Empty;

private GroupAiRecordEvent(uint groupUin, string character, string text) : base(0)
private GroupAiRecordEvent(uint groupUin, string character, string text, uint chatType) : base(0)
{
GroupUin = groupUin;
Character = character;
Text = text;
ChatType = chatType;
}

private GroupAiRecordEvent(int resultCode, MsgInfo? msgInfo) : base(resultCode)
Expand All @@ -29,8 +30,8 @@ private GroupAiRecordEvent(int resultCode, string errMsg) : base(resultCode)
ErrorMessage = errMsg;
}

public static GroupAiRecordEvent Create(uint groupUin, string character, string text) =>
new(groupUin, character, text);
public static GroupAiRecordEvent Create(uint groupUin, string character, string text, uint chatType) =>
new(groupUin, character, text, chatType);

public static GroupAiRecordEvent Result(int resultCode, MsgInfo? msgInfo) => new(resultCode, msgInfo);

Expand Down
10 changes: 7 additions & 3 deletions Lagrange.Core/Internal/Service/Action/GroupAiRecordService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,8 @@
using Lagrange.Core.Internal.Event;
using Lagrange.Core.Internal.Event.Action;
using Lagrange.Core.Internal.Packets.Service.Oidb;
using Lagrange.Core.Internal.Packets.Service.Oidb.Common;
using Lagrange.Core.Internal.Packets.Service.Oidb.Request;
using Lagrange.Core.Internal.Packets.Service.Oidb.Response;
using Lagrange.Core.Message.Entity;
using Lagrange.Core.Utility.Extension;
using ProtoBuf;

Expand All @@ -20,7 +18,13 @@ protected override bool Build(GroupAiRecordEvent input, BotKeystore keystore, Bo
out List<Memory<byte>>? extraPackets)
{
var packet = new OidbSvcTrpcTcpBase<OidbSvcTrpcTcp0x929B_0>(
new OidbSvcTrpcTcp0x929B_0 { GroupCode = input.GroupUin, VoiceId = input.Character, Text = input.Text }
new OidbSvcTrpcTcp0x929B_0
{
GroupCode = input.GroupUin,
VoiceId = input.Character,
Text = input.Text,
ChatType = input.ChatType
}
);
output = packet.Serialize();
extraPackets = null;
Expand Down
2 changes: 2 additions & 0 deletions Lagrange.OneBot/Core/Entity/Action/OneBotGetAiRecord.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,6 @@ public class OneBotGetAiRecord
[JsonPropertyName("group_id")] public uint GroupId { get; set; }

[JsonPropertyName("text")] public string Text { get; set; } = string.Empty;

[JsonPropertyName("chat_type")] public uint ChatType { get; set; } = 1;
}
7 changes: 6 additions & 1 deletion Lagrange.OneBot/Core/Operation/Group/GetAiRecordOperation.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,12 @@ public async Task<OneBotResult> HandleOperation(BotContext context, JsonNode? pa
var message = payload.Deserialize<OneBotGetAiRecord>(SerializerOptions.DefaultOptions);
if (message != null)
{
var (code, errMsg, url) = await context.GetGroupGenerateAiRecordUrl(message.GroupId, message.Character, message.Text);
var (code, errMsg, url) = await context.GetGroupGenerateAiRecordUrl(
message.GroupId,
message.Character,
message.Text,
message.ChatType
);
return code != 0 ? new OneBotResult(errMsg, code, "failed") : new OneBotResult(url, 0, "ok");
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,12 @@ public async Task<OneBotResult> HandleOperation(BotContext context, JsonNode? pa
var message = payload.Deserialize<OneBotGetAiRecord>(SerializerOptions.DefaultOptions);
if (message != null)
{
(int code, string errMsg, var recordEntity) = await context.GetGroupGenerateAiRecord(message.GroupId, message.Character, message.Text);
(int code, string _, var recordEntity) = await context.GetGroupGenerateAiRecord(
message.GroupId,
message.Character,
message.Text,
message.ChatType
);
if (code != 0 || recordEntity == null) return new OneBotResult(null, code, "failed");


Expand Down