Skip to content

Commit

Permalink
Added sticker support for telegram bridge and downloading files suppo…
Browse files Browse the repository at this point in the history
…rt for telegram bridge
  • Loading branch information
fembina committed Oct 10, 2024
1 parent d518e00 commit b532698
Show file tree
Hide file tree
Showing 16 changed files with 133 additions and 22 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,7 @@ internal Task SendAsync<TRequest>(string methodName, TRequest request,

internal Task SendAsync(string methodName,
CancellationToken cancellationToken = default);

internal Task<Stream> DownloadAsync(string fileIdentifier,
CancellationToken cancellationToken = default);
}
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,26 @@ Task ITelegramBotApiClient.SendAsync(string methodName,
return SendRepeatableRequestAsync<object, object>(methodName, null, scopedCancellationTokenSource.Token);
}

public async Task<Stream> DownloadAsync(string fileIdentifier, CancellationToken cancellationToken = default)
{
ArgumentException.ThrowIfNullOrWhiteSpace(fileIdentifier);

try
{
return await _client.GetStreamAsync(fileIdentifier, cancellationToken);
}
catch (OperationCanceledException)
{
throw;
}
catch (Exception exception)
{
throw new TelegramBotApiRequestException(this, "download",
description: "Unknown error occurred while downloading file",
innerException: exception);
}
}

private async Task<TResult?> SendRepeatableRequestAsync<TResult, TRequest>(string method, TRequest? request,
CancellationToken cancellationToken)
{
Expand Down
6 changes: 4 additions & 2 deletions Sources/Falko.Talkie.Bridges.Telegram/Models/Chat.cs
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
namespace Talkie.Bridges.Telegram.Models;

public sealed class Chat(
public sealed class Chat
(
long id,
ChatType type,
string? title = null,
string? firstName = null,
string? lastName = null,
string? username = null,
bool? isForum = null)
bool? isForum = null
)
{
public readonly long Id = id;

Expand Down
6 changes: 4 additions & 2 deletions Sources/Falko.Talkie.Bridges.Telegram/Models/DeleteMessage.cs
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
namespace Talkie.Bridges.Telegram.Models;

public sealed class DeleteMessage(
public sealed class DeleteMessage
(
long messageId,
long chatId)
long chatId
)
{
public readonly long MessageId = messageId;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
namespace Talkie.Bridges.Telegram.Models;

public sealed class EditMessageText(
public sealed class EditMessageText
(
string text,
long? chatId = null,
long? messageId = null,
string? businessConnectionId = null,
IReadOnlyCollection<MessageEntity>? entities = null)
IReadOnlyCollection<MessageEntity>? entities = null
)
{
public readonly string Text = text;

Expand Down
6 changes: 4 additions & 2 deletions Sources/Falko.Talkie.Bridges.Telegram/Models/GetUpdates.cs
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
namespace Talkie.Bridges.Telegram.Models;

public sealed class GetUpdates(
public sealed class GetUpdates
(
int? offset = null,
int? limit = null,
long? timeout = null,
IReadOnlyList<string>? allowedUpdates = null)
IReadOnlyList<string>? allowedUpdates = null
)
{
public readonly long? Offset = offset;

Expand Down
9 changes: 7 additions & 2 deletions Sources/Falko.Talkie.Bridges.Telegram/Models/Message.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
namespace Talkie.Bridges.Telegram.Models;

public sealed class Message(
public sealed class Message
(
long messageId,
long? messageThreadId = null,
User? from = null,
Expand All @@ -14,7 +15,9 @@ public sealed class Message(
bool? isAutomaticForward = null,
Message? replyToMessage = null,
string? text = null,
IReadOnlyCollection<MessageEntity>? entities = null)
IReadOnlyCollection<MessageEntity>? entities = null,
Sticker? sticker = null
)
{
public readonly long MessageId = messageId;

Expand Down Expand Up @@ -43,4 +46,6 @@ public sealed class Message(
public readonly string? Text = text;

public readonly IReadOnlyCollection<MessageEntity>? Entities = entities;

public readonly Sticker? Sticker = sticker;
}
6 changes: 4 additions & 2 deletions Sources/Falko.Talkie.Bridges.Telegram/Models/MessageEntity.cs
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
namespace Talkie.Bridges.Telegram.Models;

public sealed class MessageEntity(
public sealed class MessageEntity
(
string type,
int offset,
int length)
int length
)
{
public readonly string Type = type;

Expand Down
20 changes: 20 additions & 0 deletions Sources/Falko.Talkie.Bridges.Telegram/Models/PhotoSize.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
namespace Talkie.Bridges.Telegram.Models;

public class PhotoSize(
string fileId,
string fileUniqueId,
int width,
int height,
long? fileSize = null
)
{
public readonly string FileId = fileId;

public readonly string FileUniqueId = fileUniqueId;

public readonly int Width = width;

public readonly int Height = height;

public readonly long? FileSize = fileSize;
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
namespace Talkie.Bridges.Telegram.Models;

public sealed class ReplyParameters(
public sealed class ReplyParameters
(
long messageId,
long? chatId = null)
long? chatId = null
)
{
public readonly long MessageId = messageId;

Expand Down
6 changes: 4 additions & 2 deletions Sources/Falko.Talkie.Bridges.Telegram/Models/Response.cs
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
namespace Talkie.Bridges.Telegram.Models;

public sealed class Response<T>(
public sealed class Response<T>
(
bool ok,
T? result = default,
int? errorCode = null,
string? description = null,
IReadOnlyDictionary<string, TextOrNumber>? parameters = null)
IReadOnlyDictionary<string, TextOrNumber>? parameters = null
)
{
public readonly bool Ok = ok;

Expand Down
6 changes: 4 additions & 2 deletions Sources/Falko.Talkie.Bridges.Telegram/Models/SendMessage.cs
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
namespace Talkie.Bridges.Telegram.Models;

public sealed class SendMessage(
public sealed class SendMessage
(
long chatId,
string text,
IReadOnlyCollection<MessageEntity>? entities = null,
bool? disableNotification = null,
ReplyParameters? replyParameters = null)
ReplyParameters? replyParameters = null
)
{

public readonly long ChatId = chatId;
Expand Down
35 changes: 35 additions & 0 deletions Sources/Falko.Talkie.Bridges.Telegram/Models/Sticker.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
namespace Talkie.Bridges.Telegram.Models;

public sealed class Sticker
(
string fileId,
string fileUniqueId,
StickerType type,
int width,
int height,
bool isAnimated,
bool isVideo,
PhotoSize? thumbnail = null,
string? emoji = null,
string? setName = null,
string? customEmojiId = null,
bool? needsRepainting = null,
long? fileSize = null
) : PhotoSize(fileId, fileUniqueId, width, height, fileSize)
{
public readonly StickerType Type = type;

public readonly bool IsAnimated = isAnimated;

public readonly bool IsVideo = isVideo;

public readonly PhotoSize? Thumbnail = thumbnail;

public readonly string? Emoji = emoji;

public readonly string? SetName = setName;

public readonly string? CustomEmojiId = customEmojiId;

public readonly bool? NeedsRepainting = needsRepainting;
}
8 changes: 8 additions & 0 deletions Sources/Falko.Talkie.Bridges.Telegram/Models/StickerType.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
namespace Talkie.Bridges.Telegram.Models;

public enum StickerType
{
Regular,
Mask,
CustomEmoji
}
6 changes: 4 additions & 2 deletions Sources/Falko.Talkie.Bridges.Telegram/Models/Update.cs
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
namespace Talkie.Bridges.Telegram.Models;

public sealed class Update(
public sealed class Update
(
int updateId,
Message? message = null,
Message? editedMessage = null,
Message? channelPost = null,
Message? editedChannelPost = null,
Message? businessMessage = null,
Message? editedBusinessMessage = null)
Message? editedBusinessMessage = null
)
{
public readonly int UpdateId = updateId;

Expand Down
6 changes: 4 additions & 2 deletions Sources/Falko.Talkie.Bridges.Telegram/Models/User.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
namespace Talkie.Bridges.Telegram.Models;

public sealed class User(
public sealed class User
(
long id,
bool isBot,
string firstName,
Expand All @@ -12,7 +13,8 @@ public sealed class User(
bool? canJoinGroups = null,
bool? canReadAllGroupMessages = null,
bool? supportsInlineQueries = null,
bool? canConnectToBusiness = null)
bool? canConnectToBusiness = null
)
{
public readonly long Id = id;

Expand Down

0 comments on commit b532698

Please sign in to comment.