public void EnqueueMessage(TelegramOutboundMessage message) { if (message == null) throw new ArgumentNullException(nameof(message)); if (!Settings.IsEnabled) { return; } _pendingMessages.Add(message); }
private async Task SendMessageAsync(TelegramOutboundMessage message) { if (message == null) throw new ArgumentNullException(nameof(message)); using (var httpClient = new HttpClient()) { string uri = $"{BaseUri}{Settings.AuthenticationToken}/sendMessage"; StringContent body = ConvertOutboundMessageToJsonMessage(message); HttpResponseMessage response = await httpClient.PostAsync(uri, body); if (!response.IsSuccessStatusCode) { Log.Warning( $"Sending Telegram message failed (Message='${message.Text}' StatusCode={response.StatusCode})."); } else { Log.Info($"Sent Telegram message '{message.Text}' to chat {message.ChatId}."); } } }
private StringContent ConvertOutboundMessageToJsonMessage(TelegramOutboundMessage message) { if (message.Text.Length > 4096) { throw new InvalidOperationException("The Telegram outbound message is too long."); } var json = new JObject { ["chat_id"] = message.ChatId, ["text"] = message.Text }; if (message.Format == TelegramMessageFormat.HTML) { json["parse_mode"] = "HTML"; } return new StringContent(json.ToString(), Encoding.UTF8, "application/json"); }