コード例 #1
0
        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
                    },
コード例 #2
0
        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);
            }
        }