2024-01-28 18:51:18 +03:00
|
|
|
#nullable enable
|
|
|
|
|
|
|
|
|
|
using BotFramework.Abstractions.UpdateProvider;
|
|
|
|
|
using BotFramework.Config;
|
|
|
|
|
using Microsoft.Extensions.Options;
|
|
|
|
|
using System.Threading;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
using Telegram.Bot;
|
|
|
|
|
|
|
|
|
|
namespace Kruzya.TelegramBot.Core
|
|
|
|
|
{
|
|
|
|
|
public class WebhookAspNetProvider : IWebhookProvider
|
|
|
|
|
{
|
|
|
|
|
private readonly ITelegramBotClient _client;
|
|
|
|
|
private readonly BotConfig _config;
|
|
|
|
|
private readonly string? _secretToken;
|
|
|
|
|
|
|
|
|
|
public WebhookAspNetProvider(ITelegramBotClient client, IOptions<BotConfig> config)
|
|
|
|
|
{
|
|
|
|
|
_client = client;
|
|
|
|
|
_config = config.Value;
|
|
|
|
|
|
|
|
|
|
_secretToken = _config.Webhook.SecretToken;
|
|
|
|
|
if (string.IsNullOrWhiteSpace(_secretToken))
|
|
|
|
|
{
|
|
|
|
|
_secretToken = null;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public async Task StartAsync(CancellationToken token)
|
|
|
|
|
{
|
2025-02-09 17:50:46 +02:00
|
|
|
await _client.SetWebhook(_config.Webhook.Url, secretToken: _secretToken, cancellationToken: token);
|
2024-01-28 18:51:18 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public async Task StopAsync(CancellationToken token)
|
|
|
|
|
{
|
2025-02-09 17:50:46 +02:00
|
|
|
await _client.DeleteWebhook(cancellationToken: token);
|
2024-01-28 18:51:18 +03:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|