public async Task UpdateNewMailMessage(string chatId, SendKeyboardState state, NmStoreModel model, string draftId = "", string errorMessage = "Unidentified error") { var keyboard = _sendKeyboardFactory.CreateKeyboard(state, model, draftId); string message = null; switch (state) { case SendKeyboardState.Drafted: message = _restoreFromDraftMessageText; break; case SendKeyboardState.SentSuccessful: message = BuildNewMailMessage(model, state); break; case SendKeyboardState.SentWithError: message = $"<b>Error while sending a message:</b>{Environment.NewLine}{errorMessage}"; break; default: message = BuildNewMailMessage(model, state); break; } await _telegramMethods.EditMessageText(message, chatId, model.MessageId.ToString(), null, ParseMode.Html, true, keyboard); }
public async Task <TextMessage> SpecifyNewMailMessage(string chatId, SendKeyboardState state, NmStoreModel model = null) { var keyboard = _sendKeyboardFactory.CreateKeyboard(state, model); var message = BuildNewMailMessage(model, state); return(await _telegramMethods.SendMessage(chatId, message, ParseMode.Html, true, false, null, keyboard)); }
public SendKeyboard CreateKeyboard(SendKeyboardState state, NmStoreModel model = null, string draftId = "") { SendKeyboard keyboard; switch (state) { case SendKeyboardState.Init: keyboard = new InitKeyboard(null); break; case SendKeyboardState.Store: keyboard = new StoreKeyboard(model); break; case SendKeyboardState.Continue: keyboard = new InitKeyboard(model); break; case SendKeyboardState.Drafted: case SendKeyboardState.SentWithError: keyboard = new DraftedKeyboard(model, draftId); break; case SendKeyboardState.SentSuccessful: keyboard = null; break; default: return(null); } if (keyboard == null) { return(null); } keyboard.CreateInlineKeyboard(); return(keyboard); }
private string BuildNewMailMessage(NmStoreModel model, SendKeyboardState state) { string headerText; switch (state) { case SendKeyboardState.Init: case SendKeyboardState.Continue: headerText = _newMessageMainText; break; case SendKeyboardState.SentSuccessful: headerText = _newMessageSuccessfulSentText; break; default: headerText = ""; break; } var message = new StringBuilder(headerText); if (model == null) { message.AppendLine(_newMessageTipText); return(message.ToString()); } var iterFunc = new Action <StringBuilder, List <string>, string>((builder, collection, label) => { if (collection == null || !collection.Any()) { return; } builder.Append($"<b>{label}:</b> "); collection.IndexEach((item, i) => { builder.Append($"<code>{Path.GetFileName(item)}</code>"); //! GetFileName if (i < collection.Count - 1) { builder.Append(", "); } }); }); message.AppendLine(); iterFunc(message, model.To.Select(a => a.Email).ToList(), "To"); message.AppendLine(); iterFunc(message, model.Cc.Select(a => a.Email).ToList(), "Cc"); message.AppendLine(); iterFunc(message, model.Bcc.Select(a => a.Email).ToList(), "Bcc"); message.AppendLine(); if (model.Subject != null) { message.AppendLine($"<b>Subject:</b> {model.Subject}"); } if (model.Message != null) { message.AppendLine("<b>Message:</b>"); message.AppendLine(model.Message); } message.AppendLine(); iterFunc(message, model.File.Select(f => f.OriginalName).ToList(), $"{Emoji.PAPER_CLIP}Attachments"); //Emoji probable cause of error, because it will be send inside <b> tag return(message.ToString()); }
public async Task SaveAsDraftQuestionMessage(string chatId, SendKeyboardState state) { var keyboard = _sendKeyboardFactory.CreateKeyboard(state); await _telegramMethods.SendMessage(chatId, _storeDraftMessageText, ParseMode.Html, false, false, null, keyboard); }