This commit is contained in:
kislovdm
2024-02-12 20:15:59 +03:00
commit 6055fcede4
15 changed files with 553 additions and 0 deletions
+58
View File
@@ -0,0 +1,58 @@
using NLog;
using Telegram.Bot;
using Telegram.Bot.Polling;
using Telegram.Bot.Types;
using Telegram.Bot.Types.Enums;
using Telegram.Bot.Types.ReplyMarkups;
namespace Sibur.BuggyBot.Messaging
{
public sealed class Telegram: ITelegram
{
private readonly TelegramBotClient _telegram;
private readonly ILogger _logger;
public Func<Message, Task>? MessageHook { get; set; } = null;
public string? NickName { get; set; } = null;
public Telegram(TelegramBotClient telegram, ILogger logger)
{
_telegram = telegram;
_logger = logger;
}
public async Task Start()
{
var cts = new CancellationTokenSource();
_telegram.StartReceiving(updateHandler: HandleUpdateAsync,
pollingErrorHandler: PollingErrorHandler,
receiverOptions: new ReceiverOptions(),
cancellationToken: cts.Token);
NickName = (await _telegram.GetMeAsync(cancellationToken: cts.Token)).Username;
}
private void PollingErrorHandler(ITelegramBotClient arg1, Exception arg2, CancellationToken arg3)
{
}
private void HandleUpdateAsync(ITelegramBotClient arg1, Update update, CancellationToken arg3)
{
if (update.Message != null)
{
_logger.Info($"{update.Message.Chat.Id}: {update.Message.Text}");
MessageHook?.Invoke(update.Message);
}
}
public Task SendMessageAsync(ChatId chatId, string text, int? messageThreadId = default, ParseMode? parseMode = default,
IEnumerable<MessageEntity>? entities = default, bool? disableWebPagePreview = default, bool? disableNotification = default,
bool? protectContent = default, int? replyToMessageId = default, bool? allowSendingWithoutReply = default,
IReplyMarkup? replyMarkup = default, CancellationToken cancellationToken = default)
{
return _telegram.SendTextMessageAsync(chatId, text, messageThreadId, parseMode, entities, disableWebPagePreview,
disableNotification, protectContent, replyToMessageId, allowSendingWithoutReply, replyMarkup, cancellationToken);
}
}
}