45 lines
1.4 KiB
C#
45 lines
1.4 KiB
C#
|
|
using Microsoft.Extensions.Logging;
|
||
|
|
using Volo.Abp.DependencyInjection;
|
||
|
|
|
||
|
|
namespace Sozsoft.Sender.Telegram;
|
||
|
|
|
||
|
|
public interface ISozsoftTelegramSender : ITransientDependency
|
||
|
|
{
|
||
|
|
Task<TelegramSendResult> SendAsync(string ChatId, string Message);
|
||
|
|
}
|
||
|
|
|
||
|
|
public class SozsoftTelegramSender : ISozsoftTelegramSender
|
||
|
|
{
|
||
|
|
private readonly ITelegramHttpClient httpClient;
|
||
|
|
private readonly ILogger<SozsoftTelegramSender> logger;
|
||
|
|
|
||
|
|
public SozsoftTelegramSender(
|
||
|
|
ITelegramHttpClient httpClient,
|
||
|
|
ILogger<SozsoftTelegramSender> logger)
|
||
|
|
{
|
||
|
|
this.httpClient = httpClient;
|
||
|
|
this.logger = logger;
|
||
|
|
}
|
||
|
|
|
||
|
|
public async Task<TelegramSendResult> SendAsync(string ChatId, string Message)
|
||
|
|
{
|
||
|
|
logger.LogInformation("Sending Telegram message. {ChatId}, {Message}", ChatId, Message);
|
||
|
|
var result = await httpClient.SendMessageAsync(ChatId, Message);
|
||
|
|
var success = result?.ok == true;
|
||
|
|
if (success)
|
||
|
|
{
|
||
|
|
logger.LogInformation("Telegram sent successfully. {ChatId}, {Message}", ChatId, Message);
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
logger.LogWarning("Failed to send Telegram message. {ChatId}, {Message}, {ErrorCode}, {Description}",
|
||
|
|
ChatId, Message, result?.error_code, result?.description);
|
||
|
|
}
|
||
|
|
|
||
|
|
return new TelegramSendResult
|
||
|
|
{
|
||
|
|
Success = success,
|
||
|
|
};
|
||
|
|
}
|
||
|
|
}
|