using System.Net.Http.Json; using Volo.Abp.Settings; namespace Sozsoft.Sender.Telegram; public interface ITelegramHttpClient { Task SendMessageAsync(string ChatId, string Message); } public sealed class TelegramHttpClient : ITelegramHttpClient, IDisposable { private readonly HttpClient httpClient; private readonly ISettingProvider settingProvider; public TelegramHttpClient( HttpClient httpClient, ISettingProvider settingProvider) { this.httpClient = httpClient; this.settingProvider = settingProvider; } public async Task SendMessageAsync(string ChatId, string Message) { var url = await settingProvider.GetOrNullAsync(TelegramSettingNames.Url); var botToken = await settingProvider.GetOrNullAsync(TelegramSettingNames.BotToken); var parseMode = await settingProvider.GetOrNullAsync(TelegramSettingNames.ParseMode); var response = await httpClient.PostAsJsonAsync($"{url.TrimEnd('/')}/bot{botToken}/sendMessage", new TelegramPostMessageInput { chat_id = ChatId, text = Message, parse_mode = parseMode.IsNullOrWhiteSpace() ? null : parseMode, disable_web_page_preview = true }); // Bot API hatayı 4xx gövdesinde açıklar; durum kodunu fırlatmak açıklamayı kaybettirir. return await response.Content.ReadFromJsonAsync(); } public void Dispose() => httpClient?.Dispose(); }