Fix voice message forwarding and playback

This commit is contained in:
Курнат Андрей
2026-07-14 14:53:18 +03:00
parent edf108f621
commit 8e9a4c1151
13 changed files with 618 additions and 37 deletions
@@ -32,6 +32,14 @@ public interface IMaxBridgeClient
Task<MaxActionResult> DeleteChatAsync(string externalChatId, string? chatUrl, CancellationToken cancellationToken);
Task<MaxSendResult> SendTextAsync(string externalChatId, string? chatUrl, string text, CancellationToken cancellationToken);
Task<MaxSendResult> SendAttachmentAsync(string externalChatId, string? chatUrl, string path, string caption, CancellationToken cancellationToken);
Task<MaxSendResult> ForwardMessageAsync(
string externalChatId,
string sourceExternalChatId,
string sourceExternalMessageId,
CancellationToken cancellationToken)
{
return Task.FromResult(new MaxSendResult(false, null, "Native forwarding is not supported."));
}
Task<MaxActionResult> EditMessageAsync(string externalChatId, string externalMessageId, string? currentText, string text, CancellationToken cancellationToken);
Task<MaxActionResult> DeleteMessageAsync(string externalChatId, string externalMessageId, string? currentText, CancellationToken cancellationToken);
Task<MaxActionResult> SetReactionAsync(string externalChatId, string externalMessageId, string? currentText, string emoji, CancellationToken cancellationToken);
@@ -106,6 +106,15 @@ public sealed class MockMaxBridgeClient : IMaxBridgeClient
return Task.FromResult(new MaxSendResult(true, $"mock-file-{Guid.NewGuid():N}", null, MockChatUrl(externalChatId)));
}
public Task<MaxSendResult> ForwardMessageAsync(
string externalChatId,
string sourceExternalChatId,
string sourceExternalMessageId,
CancellationToken cancellationToken)
{
return Task.FromResult(new MaxSendResult(true, $"mock-forward-{Guid.NewGuid():N}", null, MockChatUrl(externalChatId)));
}
public Task<MaxActionResult> EditMessageAsync(string externalChatId, string externalMessageId, string? currentText, string text, CancellationToken cancellationToken)
{
return Task.FromResult(new MaxActionResult(true, null));
@@ -132,6 +132,20 @@ public sealed class WorkerMaxBridgeClient(
?? new MaxSendResult(false, null, "Worker returned an empty attachment result.");
}
public async Task<MaxSendResult> ForwardMessageAsync(
string externalChatId,
string sourceExternalChatId,
string sourceExternalMessageId,
CancellationToken cancellationToken)
{
return await SendAsync<MaxSendResult>(
HttpMethod.Post,
"/message/forward",
new { externalChatId, sourceExternalChatId, sourceExternalMessageId },
cancellationToken)
?? new MaxSendResult(false, null, "Worker returned an empty forward result.");
}
public async Task<MaxActionResult> EditMessageAsync(string externalChatId, string externalMessageId, string? currentText, string text, CancellationToken cancellationToken)
{
return await SendAsync<MaxActionResult>(