public async Task <IEnumerable <long> > SendMessage(long chatId, OutMessage message) { var attachments = new List <MediaAttachment>(message.Attachments.Count); foreach (var attachment in message.Attachments) { MediaAttachment vkAttachment = attachment.Type switch { AttachmentType.Audio => await UploadAudio(chatId, attachment).ConfigureAwait(false), AttachmentType.Voice => await UploadAudio(chatId, attachment).ConfigureAwait(false), AttachmentType.Photo => await UploadPhoto(chatId, attachment).ConfigureAwait(false), _ => await UploadDocument(chatId, attachment).ConfigureAwait(false) }; attachments.Add(vkAttachment); } var result = new List <long> { await _api.Messages.SendAsync(new MessagesSendParams { PeerId = chatId, RandomId = DateTime.Now.Millisecond, Message = message.Text, Keyboard = message.Keyboard switch { InlineKeyboard inlineKeyboard => VkConverter.ToVkKeyboard(inlineKeyboard), ReplyKeyboard replyKeyboard => VkConverter.ToVkKeyboard(replyKeyboard), _ => message.RemoveReplyKeyboard ? new MessageKeyboard { Buttons = new IEnumerable <MessageKeyboardButton> [0] } : null },
private async Task <UpdateContext?> CreateUpdateContext(Update update) { switch (update.Type) { case "message_new": var originalMessage = VkMessage.FromJson(new VkResponse(update.Object)); var message = VkConverter.ToInMessage(originalMessage); var chat = await _messenger.GetChat(originalMessage.PeerId !.Value).ConfigureAwait(false); var sender = await _messenger.GetUser(originalMessage.FromId !.Value).ConfigureAwait(false); return(new UpdateContext(_messenger, chat, sender, message)); default: return(null); } }