monithor/Monithor.api/Alerting/TelegramTarget.cs

34 lines
1.1 KiB
C#

using System;
using Telegram.Bot;
using Telegram.Bot.Types.Enums;
using Telegram.Bot.Types.ReplyMarkups;
namespace Monithor.api.Alerting {
public class TelegramTarget : ITarget {
public TelegramTarget(TelegramBotClient client, string chatId, IMonitor monitor, string statusPageRoute, string displayName) {
_client = client;
_chatId = chatId;
Monitor = monitor;
_statusPageRoute = statusPageRoute;
_displayName = displayName;
}
public IMonitor Monitor { get; set; }
private readonly TelegramBotClient _client;
private readonly string _chatId;
private readonly string _statusPageRoute;
private readonly string _displayName;
public async void SendMessage() {
var statusPageBtn = new InlineKeyboardMarkup(InlineKeyboardButton.WithUrl("Open status page", $"https://{_statusPageRoute}"));
var message = General.GetMessage(Monitor, _displayName);
try {
await _client.SendTextMessageAsync(_chatId, message, ParseMode.Default, replyMarkup: statusPageBtn);
}
catch (Exception e) {
Console.WriteLine(e);
}
}
}
}