From c480234145861629b83c23530e5d98f3885b0bb4 Mon Sep 17 00:00:00 2001 From: ms Date: Sat, 31 Aug 2024 22:43:28 +0400 Subject: [PATCH 1/2] update to VKNet 1.78 --- .../Abstractions/IFluentGroupBotCommands.cs | 1 - .../Abstractions/MessageToProcess.cs | 2 +- .../FluentGroupBotCommands.cs | 16 ++++++---------- .../Handlers/StickerCommandHandler.cs | 2 +- .../Storage/AudioEventStore.cs | 2 +- .../Storage/BotExceptionEventStore.cs | 2 +- .../Storage/ChatInviteUserByLinkEventStore.cs | 2 +- .../Storage/ChatInviteUserEventStore.cs | 2 +- .../Storage/ChatKickUserEventStore.cs | 2 +- .../Storage/ChatPhotoRemoveEventStore.cs | 2 +- .../Storage/ChatPhotoUpdateEventStore.cs | 2 +- .../Storage/ChatPinMessageEventStore.cs | 2 +- .../Storage/ChatTitleUpdateEventStore.cs | 2 +- .../Storage/ChatUnpinMessageEventStore.cs | 2 +- .../Storage/DocumentEventStore.cs | 2 +- .../Storage/ForwardCommandsStore.cs | 2 +- .../Storage/GeoEventStore.cs | 2 +- .../Storage/PhotoEventStore.cs | 2 +- .../Storage/PollEventStore.cs | 2 +- .../Storage/ReplyCommandsStore.cs | 2 +- .../Storage/StickerCommandsStore.cs | 2 +- .../Storage/TextCommandsStore.cs | 2 +- .../Storage/VideoEventStore.cs | 2 +- .../Storage/VoiceEventStore.cs | 2 +- .../VkNet.FluentCommands.GroupBot.csproj | 2 +- 25 files changed, 29 insertions(+), 34 deletions(-) diff --git a/src/VkNet.FluentCommands.GroupBot/Abstractions/IFluentGroupBotCommands.cs b/src/VkNet.FluentCommands.GroupBot/Abstractions/IFluentGroupBotCommands.cs index 872b387..bc70e37 100644 --- a/src/VkNet.FluentCommands.GroupBot/Abstractions/IFluentGroupBotCommands.cs +++ b/src/VkNet.FluentCommands.GroupBot/Abstractions/IFluentGroupBotCommands.cs @@ -4,7 +4,6 @@ using System.Threading.Tasks; using VkNet.Abstractions; using VkNet.Model; -using VkNet.Model.GroupUpdate; namespace VkNet.FluentCommands.GroupBot.Abstractions { diff --git a/src/VkNet.FluentCommands.GroupBot/Abstractions/MessageToProcess.cs b/src/VkNet.FluentCommands.GroupBot/Abstractions/MessageToProcess.cs index fc0cf15..cb2eb1f 100644 --- a/src/VkNet.FluentCommands.GroupBot/Abstractions/MessageToProcess.cs +++ b/src/VkNet.FluentCommands.GroupBot/Abstractions/MessageToProcess.cs @@ -1,5 +1,5 @@ using VkNet.Abstractions; -using VkNet.Model.GroupUpdate; +using VkNet.Model; namespace VkNet.FluentCommands.GroupBot.Abstractions { diff --git a/src/VkNet.FluentCommands.GroupBot/FluentGroupBotCommands.cs b/src/VkNet.FluentCommands.GroupBot/FluentGroupBotCommands.cs index 1f6245c..607248e 100644 --- a/src/VkNet.FluentCommands.GroupBot/FluentGroupBotCommands.cs +++ b/src/VkNet.FluentCommands.GroupBot/FluentGroupBotCommands.cs @@ -7,15 +7,12 @@ using System.Threading; using System.Threading.Tasks; using VkNet.Abstractions; -using VkNet.Enums.SafetyEnums; +using VkNet.Enums.StringEnums; using VkNet.Exception; using VkNet.FluentCommands.GroupBot.Abstractions; using VkNet.FluentCommands.GroupBot.Handlers; using VkNet.FluentCommands.GroupBot.Storage; using VkNet.Model; -using VkNet.Model.Attachments; -using VkNet.Model.GroupUpdate; -using VkNet.Model.RequestParams; // ReSharper disable MemberCanBeProtected.Global // ReSharper disable MemberCanBePrivate.Global @@ -906,9 +903,9 @@ public async Task ReceiveMessageAsync(CancellationToken cancellationToken = defa { try { - if (update?.Type != GroupUpdateType.MessageNew) continue; - if (update?.MessageNew == null) continue; - var messageNew = update.MessageNew; + if (update?.Type.Value != GroupUpdateType.MessageNew) continue; + if (update?.Instance == null) continue; + var messageNew = update.Instance as MessageNew; var message = messageNew.Message; if (!message.PeerId.HasValue) throw new System.Exception("No PeerId"); if (!message.FromId.HasValue) throw new System.Exception("No FromId"); @@ -979,9 +976,8 @@ public async Task ReceiveMessageAsync(CancellationToken cancellationToken = defa } catch (System.Exception e) { - var messageToProcess = new MessageToProcess(_botClient, update.MessageNew); + var messageToProcess = new MessageToProcess(_botClient, (MessageNew)update.Instance); await _botExceptionEvent.TriggerHandler(messageToProcess, e, cancellationToken).ConfigureAwait(false); - continue; } } @@ -1078,7 +1074,7 @@ private async Task GetLongPollServerAsync(CancellationTo private async Task GetBotsLongPollHistoryAsync( string key, string server, - string ts, + ulong ts, CancellationToken cancellationToken = default) { cancellationToken.ThrowIfCancellationRequested(); diff --git a/src/VkNet.FluentCommands.GroupBot/Handlers/StickerCommandHandler.cs b/src/VkNet.FluentCommands.GroupBot/Handlers/StickerCommandHandler.cs index a6d8eb7..0a7a7e0 100644 --- a/src/VkNet.FluentCommands.GroupBot/Handlers/StickerCommandHandler.cs +++ b/src/VkNet.FluentCommands.GroupBot/Handlers/StickerCommandHandler.cs @@ -4,7 +4,7 @@ using System.Threading.Tasks; using VkNet.FluentCommands.GroupBot.Abstractions; using VkNet.FluentCommands.GroupBot.Storage; -using VkNet.Model.Attachments; +using VkNet.Model; namespace VkNet.FluentCommands.GroupBot.Handlers { diff --git a/src/VkNet.FluentCommands.GroupBot/Storage/AudioEventStore.cs b/src/VkNet.FluentCommands.GroupBot/Storage/AudioEventStore.cs index f1bd464..3e86208 100644 --- a/src/VkNet.FluentCommands.GroupBot/Storage/AudioEventStore.cs +++ b/src/VkNet.FluentCommands.GroupBot/Storage/AudioEventStore.cs @@ -3,7 +3,7 @@ using System.Threading.Tasks; using VkNet.Abstractions; using VkNet.FluentCommands.GroupBot.Abstractions; -using VkNet.Model.GroupUpdate; +using VkNet.Model; namespace VkNet.FluentCommands.GroupBot.Storage { diff --git a/src/VkNet.FluentCommands.GroupBot/Storage/BotExceptionEventStore.cs b/src/VkNet.FluentCommands.GroupBot/Storage/BotExceptionEventStore.cs index 3e84906..bb041ed 100644 --- a/src/VkNet.FluentCommands.GroupBot/Storage/BotExceptionEventStore.cs +++ b/src/VkNet.FluentCommands.GroupBot/Storage/BotExceptionEventStore.cs @@ -3,7 +3,7 @@ using System.Threading.Tasks; using VkNet.Abstractions; using VkNet.FluentCommands.GroupBot.Abstractions; -using VkNet.Model.GroupUpdate; +using VkNet.Model; namespace VkNet.FluentCommands.GroupBot.Storage { diff --git a/src/VkNet.FluentCommands.GroupBot/Storage/ChatInviteUserByLinkEventStore.cs b/src/VkNet.FluentCommands.GroupBot/Storage/ChatInviteUserByLinkEventStore.cs index 5872f1a..818933e 100644 --- a/src/VkNet.FluentCommands.GroupBot/Storage/ChatInviteUserByLinkEventStore.cs +++ b/src/VkNet.FluentCommands.GroupBot/Storage/ChatInviteUserByLinkEventStore.cs @@ -3,7 +3,7 @@ using System.Threading.Tasks; using VkNet.Abstractions; using VkNet.FluentCommands.GroupBot.Abstractions; -using VkNet.Model.GroupUpdate; +using VkNet.Model; namespace VkNet.FluentCommands.GroupBot.Storage { diff --git a/src/VkNet.FluentCommands.GroupBot/Storage/ChatInviteUserEventStore.cs b/src/VkNet.FluentCommands.GroupBot/Storage/ChatInviteUserEventStore.cs index d7ec32d..41f5082 100644 --- a/src/VkNet.FluentCommands.GroupBot/Storage/ChatInviteUserEventStore.cs +++ b/src/VkNet.FluentCommands.GroupBot/Storage/ChatInviteUserEventStore.cs @@ -3,7 +3,7 @@ using System.Threading.Tasks; using VkNet.Abstractions; using VkNet.FluentCommands.GroupBot.Abstractions; -using VkNet.Model.GroupUpdate; +using VkNet.Model; namespace VkNet.FluentCommands.GroupBot.Storage { diff --git a/src/VkNet.FluentCommands.GroupBot/Storage/ChatKickUserEventStore.cs b/src/VkNet.FluentCommands.GroupBot/Storage/ChatKickUserEventStore.cs index 109c074..cb399b8 100644 --- a/src/VkNet.FluentCommands.GroupBot/Storage/ChatKickUserEventStore.cs +++ b/src/VkNet.FluentCommands.GroupBot/Storage/ChatKickUserEventStore.cs @@ -3,7 +3,7 @@ using System.Threading.Tasks; using VkNet.Abstractions; using VkNet.FluentCommands.GroupBot.Abstractions; -using VkNet.Model.GroupUpdate; +using VkNet.Model; namespace VkNet.FluentCommands.GroupBot.Storage { diff --git a/src/VkNet.FluentCommands.GroupBot/Storage/ChatPhotoRemoveEventStore.cs b/src/VkNet.FluentCommands.GroupBot/Storage/ChatPhotoRemoveEventStore.cs index 36e4a45..3583dd1 100644 --- a/src/VkNet.FluentCommands.GroupBot/Storage/ChatPhotoRemoveEventStore.cs +++ b/src/VkNet.FluentCommands.GroupBot/Storage/ChatPhotoRemoveEventStore.cs @@ -3,7 +3,7 @@ using System.Threading.Tasks; using VkNet.Abstractions; using VkNet.FluentCommands.GroupBot.Abstractions; -using VkNet.Model.GroupUpdate; +using VkNet.Model; namespace VkNet.FluentCommands.GroupBot.Storage { diff --git a/src/VkNet.FluentCommands.GroupBot/Storage/ChatPhotoUpdateEventStore.cs b/src/VkNet.FluentCommands.GroupBot/Storage/ChatPhotoUpdateEventStore.cs index bc443bc..77a8b91 100644 --- a/src/VkNet.FluentCommands.GroupBot/Storage/ChatPhotoUpdateEventStore.cs +++ b/src/VkNet.FluentCommands.GroupBot/Storage/ChatPhotoUpdateEventStore.cs @@ -3,7 +3,7 @@ using System.Threading.Tasks; using VkNet.Abstractions; using VkNet.FluentCommands.GroupBot.Abstractions; -using VkNet.Model.GroupUpdate; +using VkNet.Model; namespace VkNet.FluentCommands.GroupBot.Storage { diff --git a/src/VkNet.FluentCommands.GroupBot/Storage/ChatPinMessageEventStore.cs b/src/VkNet.FluentCommands.GroupBot/Storage/ChatPinMessageEventStore.cs index 2932b2e..735a267 100644 --- a/src/VkNet.FluentCommands.GroupBot/Storage/ChatPinMessageEventStore.cs +++ b/src/VkNet.FluentCommands.GroupBot/Storage/ChatPinMessageEventStore.cs @@ -3,7 +3,7 @@ using System.Threading.Tasks; using VkNet.Abstractions; using VkNet.FluentCommands.GroupBot.Abstractions; -using VkNet.Model.GroupUpdate; +using VkNet.Model; namespace VkNet.FluentCommands.GroupBot.Storage { diff --git a/src/VkNet.FluentCommands.GroupBot/Storage/ChatTitleUpdateEventStore.cs b/src/VkNet.FluentCommands.GroupBot/Storage/ChatTitleUpdateEventStore.cs index 74e6e67..fbc5795 100644 --- a/src/VkNet.FluentCommands.GroupBot/Storage/ChatTitleUpdateEventStore.cs +++ b/src/VkNet.FluentCommands.GroupBot/Storage/ChatTitleUpdateEventStore.cs @@ -3,7 +3,7 @@ using System.Threading.Tasks; using VkNet.Abstractions; using VkNet.FluentCommands.GroupBot.Abstractions; -using VkNet.Model.GroupUpdate; +using VkNet.Model; namespace VkNet.FluentCommands.GroupBot.Storage { diff --git a/src/VkNet.FluentCommands.GroupBot/Storage/ChatUnpinMessageEventStore.cs b/src/VkNet.FluentCommands.GroupBot/Storage/ChatUnpinMessageEventStore.cs index 868f785..935ee6d 100644 --- a/src/VkNet.FluentCommands.GroupBot/Storage/ChatUnpinMessageEventStore.cs +++ b/src/VkNet.FluentCommands.GroupBot/Storage/ChatUnpinMessageEventStore.cs @@ -3,7 +3,7 @@ using System.Threading.Tasks; using VkNet.Abstractions; using VkNet.FluentCommands.GroupBot.Abstractions; -using VkNet.Model.GroupUpdate; +using VkNet.Model; namespace VkNet.FluentCommands.GroupBot.Storage { diff --git a/src/VkNet.FluentCommands.GroupBot/Storage/DocumentEventStore.cs b/src/VkNet.FluentCommands.GroupBot/Storage/DocumentEventStore.cs index 74c87d1..a50d99d 100644 --- a/src/VkNet.FluentCommands.GroupBot/Storage/DocumentEventStore.cs +++ b/src/VkNet.FluentCommands.GroupBot/Storage/DocumentEventStore.cs @@ -3,7 +3,7 @@ using System.Threading.Tasks; using VkNet.Abstractions; using VkNet.FluentCommands.GroupBot.Abstractions; -using VkNet.Model.GroupUpdate; +using VkNet.Model; namespace VkNet.FluentCommands.GroupBot.Storage { diff --git a/src/VkNet.FluentCommands.GroupBot/Storage/ForwardCommandsStore.cs b/src/VkNet.FluentCommands.GroupBot/Storage/ForwardCommandsStore.cs index b7b2ffa..5e8ce24 100644 --- a/src/VkNet.FluentCommands.GroupBot/Storage/ForwardCommandsStore.cs +++ b/src/VkNet.FluentCommands.GroupBot/Storage/ForwardCommandsStore.cs @@ -5,7 +5,7 @@ using System.Threading; using System.Threading.Tasks; using VkNet.Abstractions; -using VkNet.Model.GroupUpdate; +using VkNet.Model; namespace VkNet.FluentCommands.GroupBot.Storage { diff --git a/src/VkNet.FluentCommands.GroupBot/Storage/GeoEventStore.cs b/src/VkNet.FluentCommands.GroupBot/Storage/GeoEventStore.cs index 2cd8fbb..67c066a 100644 --- a/src/VkNet.FluentCommands.GroupBot/Storage/GeoEventStore.cs +++ b/src/VkNet.FluentCommands.GroupBot/Storage/GeoEventStore.cs @@ -3,7 +3,7 @@ using System.Threading.Tasks; using VkNet.Abstractions; using VkNet.FluentCommands.GroupBot.Abstractions; -using VkNet.Model.GroupUpdate; +using VkNet.Model; namespace VkNet.FluentCommands.GroupBot.Storage { diff --git a/src/VkNet.FluentCommands.GroupBot/Storage/PhotoEventStore.cs b/src/VkNet.FluentCommands.GroupBot/Storage/PhotoEventStore.cs index 3efd006..43370d2 100644 --- a/src/VkNet.FluentCommands.GroupBot/Storage/PhotoEventStore.cs +++ b/src/VkNet.FluentCommands.GroupBot/Storage/PhotoEventStore.cs @@ -3,7 +3,7 @@ using System.Threading.Tasks; using VkNet.Abstractions; using VkNet.FluentCommands.GroupBot.Abstractions; -using VkNet.Model.GroupUpdate; +using VkNet.Model; namespace VkNet.FluentCommands.GroupBot.Storage { diff --git a/src/VkNet.FluentCommands.GroupBot/Storage/PollEventStore.cs b/src/VkNet.FluentCommands.GroupBot/Storage/PollEventStore.cs index 0577934..bdb769d 100644 --- a/src/VkNet.FluentCommands.GroupBot/Storage/PollEventStore.cs +++ b/src/VkNet.FluentCommands.GroupBot/Storage/PollEventStore.cs @@ -3,7 +3,7 @@ using System.Threading.Tasks; using VkNet.Abstractions; using VkNet.FluentCommands.GroupBot.Abstractions; -using VkNet.Model.GroupUpdate; +using VkNet.Model; namespace VkNet.FluentCommands.GroupBot.Storage { diff --git a/src/VkNet.FluentCommands.GroupBot/Storage/ReplyCommandsStore.cs b/src/VkNet.FluentCommands.GroupBot/Storage/ReplyCommandsStore.cs index 3be305f..807a5e5 100644 --- a/src/VkNet.FluentCommands.GroupBot/Storage/ReplyCommandsStore.cs +++ b/src/VkNet.FluentCommands.GroupBot/Storage/ReplyCommandsStore.cs @@ -5,7 +5,7 @@ using System.Threading; using System.Threading.Tasks; using VkNet.Abstractions; -using VkNet.Model.GroupUpdate; +using VkNet.Model; namespace VkNet.FluentCommands.GroupBot.Storage { diff --git a/src/VkNet.FluentCommands.GroupBot/Storage/StickerCommandsStore.cs b/src/VkNet.FluentCommands.GroupBot/Storage/StickerCommandsStore.cs index d4c632b..002c83c 100644 --- a/src/VkNet.FluentCommands.GroupBot/Storage/StickerCommandsStore.cs +++ b/src/VkNet.FluentCommands.GroupBot/Storage/StickerCommandsStore.cs @@ -3,7 +3,7 @@ using System.Threading; using System.Threading.Tasks; using VkNet.Abstractions; -using VkNet.Model.GroupUpdate; +using VkNet.Model; namespace VkNet.FluentCommands.GroupBot.Storage { diff --git a/src/VkNet.FluentCommands.GroupBot/Storage/TextCommandsStore.cs b/src/VkNet.FluentCommands.GroupBot/Storage/TextCommandsStore.cs index 5aba542..b4f7bdb 100644 --- a/src/VkNet.FluentCommands.GroupBot/Storage/TextCommandsStore.cs +++ b/src/VkNet.FluentCommands.GroupBot/Storage/TextCommandsStore.cs @@ -5,7 +5,7 @@ using System.Threading; using System.Threading.Tasks; using VkNet.Abstractions; -using VkNet.Model.GroupUpdate; +using VkNet.Model; namespace VkNet.FluentCommands.GroupBot.Storage { diff --git a/src/VkNet.FluentCommands.GroupBot/Storage/VideoEventStore.cs b/src/VkNet.FluentCommands.GroupBot/Storage/VideoEventStore.cs index 29f5aaf..e81d28b 100644 --- a/src/VkNet.FluentCommands.GroupBot/Storage/VideoEventStore.cs +++ b/src/VkNet.FluentCommands.GroupBot/Storage/VideoEventStore.cs @@ -3,7 +3,7 @@ using System.Threading.Tasks; using VkNet.Abstractions; using VkNet.FluentCommands.GroupBot.Abstractions; -using VkNet.Model.GroupUpdate; +using VkNet.Model; namespace VkNet.FluentCommands.GroupBot.Storage { diff --git a/src/VkNet.FluentCommands.GroupBot/Storage/VoiceEventStore.cs b/src/VkNet.FluentCommands.GroupBot/Storage/VoiceEventStore.cs index 23982fb..3b945f7 100644 --- a/src/VkNet.FluentCommands.GroupBot/Storage/VoiceEventStore.cs +++ b/src/VkNet.FluentCommands.GroupBot/Storage/VoiceEventStore.cs @@ -3,7 +3,7 @@ using System.Threading.Tasks; using VkNet.Abstractions; using VkNet.FluentCommands.GroupBot.Abstractions; -using VkNet.Model.GroupUpdate; +using VkNet.Model; namespace VkNet.FluentCommands.GroupBot.Storage { diff --git a/src/VkNet.FluentCommands.GroupBot/VkNet.FluentCommands.GroupBot.csproj b/src/VkNet.FluentCommands.GroupBot/VkNet.FluentCommands.GroupBot.csproj index 2a2001f..e4d65cc 100644 --- a/src/VkNet.FluentCommands.GroupBot/VkNet.FluentCommands.GroupBot.csproj +++ b/src/VkNet.FluentCommands.GroupBot/VkNet.FluentCommands.GroupBot.csproj @@ -14,6 +14,6 @@ - + From 3fcb9451616ab1b7bfb70c8dfe080d43daca789c Mon Sep 17 00:00:00 2001 From: ms Date: Sun, 8 Sep 2024 12:25:24 +0400 Subject: [PATCH 2/2] fixed ifelse with casting --- .../FluentGroupBotCommands.cs | 134 +++++++++--------- 1 file changed, 68 insertions(+), 66 deletions(-) diff --git a/src/VkNet.FluentCommands.GroupBot/FluentGroupBotCommands.cs b/src/VkNet.FluentCommands.GroupBot/FluentGroupBotCommands.cs index 607248e..c071254 100644 --- a/src/VkNet.FluentCommands.GroupBot/FluentGroupBotCommands.cs +++ b/src/VkNet.FluentCommands.GroupBot/FluentGroupBotCommands.cs @@ -905,73 +905,75 @@ public async Task ReceiveMessageAsync(CancellationToken cancellationToken = defa { if (update?.Type.Value != GroupUpdateType.MessageNew) continue; if (update?.Instance == null) continue; - var messageNew = update.Instance as MessageNew; - var message = messageNew.Message; - if (!message.PeerId.HasValue) throw new System.Exception("No PeerId"); - if (!message.FromId.HasValue) throw new System.Exception("No FromId"); - - var forwardedMessages = message.ForwardedMessages?.ToArray() ?? new Message[] { }; - var attachments = message.Attachments?.ToArray() ?? new Attachment[] { }; - var replyMessage = message.ReplyMessage; - var actionObject = message.Action; - var geo = message.Geo; - var type = DetectMessageType(forwardedMessages, attachments, actionObject, geo, replyMessage); - var messageToProcess = new MessageToProcess(_botClient, messageNew); - switch (type) + if (update.Instance is MessageNew messageNew) { - case VkMessageType.Message: - case VkMessageType.Reply: - case VkMessageType.Sticker: - case VkMessageType.Forward: - await CreateCommandHandler(type).Handle(messageToProcess, cancellationToken).ConfigureAwait(false); - continue; - case VkMessageType.Photo: - await _photoEvent.TriggerHandler(messageToProcess, cancellationToken).ConfigureAwait(false); - continue; - case VkMessageType.Voice: - await _voiceEvent.TriggerHandler(messageToProcess, cancellationToken).ConfigureAwait(false); - continue; - case VkMessageType.Video: - await _videoEvent.TriggerHandler(messageToProcess, cancellationToken).ConfigureAwait(false); - continue; - case VkMessageType.Audio: - await _audioEvent.TriggerHandler(messageToProcess, cancellationToken).ConfigureAwait(false); - continue; - case VkMessageType.Document: - await _documentEvent.TriggerHandler(messageToProcess, cancellationToken).ConfigureAwait(false); - continue; - case VkMessageType.Poll: - await _pollEvent.TriggerHandler(messageToProcess, cancellationToken).ConfigureAwait(false); - continue; - case VkMessageType.Geo: - await _geoEvent.TriggerHandler(messageToProcess, cancellationToken).ConfigureAwait(false); - continue; - case VkMessageType.ChatInviteUser: - await _chatInviteUserEvent.TriggerHandler(messageToProcess, cancellationToken).ConfigureAwait(false); - continue; - case VkMessageType.ChatKickUser: - await _chatKickUserEvent.TriggerHandler(messageToProcess, cancellationToken).ConfigureAwait(false); - continue; - case VkMessageType.ChatPhotoRemove: - await _chatPhotoRemoveEvent.TriggerHandler(messageToProcess, cancellationToken).ConfigureAwait(false); - continue; - case VkMessageType.ChatPhotoUpdate: - await _chatPhotoUpdateEvent.TriggerHandler(messageToProcess, cancellationToken).ConfigureAwait(false); - continue; - case VkMessageType.ChatPinMessage: - await _chatPinMessageEvent.TriggerHandler(messageToProcess, cancellationToken).ConfigureAwait(false); - continue; - case VkMessageType.ChatTitleUpdate: - await _chatTitleUpdateEvent.TriggerHandler(messageToProcess, cancellationToken).ConfigureAwait(false); - continue; - case VkMessageType.ChatUnpinMessage: - await _chatUnpinMessageEvent.TriggerHandler(messageToProcess, cancellationToken).ConfigureAwait(false); - continue; - case VkMessageType.ChatInviteUserByLink: - await _chatInviteUserByLinkEvent.TriggerHandler(messageToProcess, cancellationToken).ConfigureAwait(false); - continue; - default: - throw new ArgumentOutOfRangeException(); + var message = messageNew.Message; + if (!message.PeerId.HasValue) throw new System.Exception("No PeerId"); + if (!message.FromId.HasValue) throw new System.Exception("No FromId"); + + var forwardedMessages = message.ForwardedMessages?.ToArray() ?? new Message[] { }; + var attachments = message.Attachments?.ToArray() ?? new Attachment[] { }; + var replyMessage = message.ReplyMessage; + var actionObject = message.Action; + var geo = message.Geo; + var type = DetectMessageType(forwardedMessages, attachments, actionObject, geo, replyMessage); + var messageToProcess = new MessageToProcess(_botClient, messageNew); + switch (type) + { + case VkMessageType.Message: + case VkMessageType.Reply: + case VkMessageType.Sticker: + case VkMessageType.Forward: + await CreateCommandHandler(type).Handle(messageToProcess, cancellationToken).ConfigureAwait(false); + continue; + case VkMessageType.Photo: + await _photoEvent.TriggerHandler(messageToProcess, cancellationToken).ConfigureAwait(false); + continue; + case VkMessageType.Voice: + await _voiceEvent.TriggerHandler(messageToProcess, cancellationToken).ConfigureAwait(false); + continue; + case VkMessageType.Video: + await _videoEvent.TriggerHandler(messageToProcess, cancellationToken).ConfigureAwait(false); + continue; + case VkMessageType.Audio: + await _audioEvent.TriggerHandler(messageToProcess, cancellationToken).ConfigureAwait(false); + continue; + case VkMessageType.Document: + await _documentEvent.TriggerHandler(messageToProcess, cancellationToken).ConfigureAwait(false); + continue; + case VkMessageType.Poll: + await _pollEvent.TriggerHandler(messageToProcess, cancellationToken).ConfigureAwait(false); + continue; + case VkMessageType.Geo: + await _geoEvent.TriggerHandler(messageToProcess, cancellationToken).ConfigureAwait(false); + continue; + case VkMessageType.ChatInviteUser: + await _chatInviteUserEvent.TriggerHandler(messageToProcess, cancellationToken).ConfigureAwait(false); + continue; + case VkMessageType.ChatKickUser: + await _chatKickUserEvent.TriggerHandler(messageToProcess, cancellationToken).ConfigureAwait(false); + continue; + case VkMessageType.ChatPhotoRemove: + await _chatPhotoRemoveEvent.TriggerHandler(messageToProcess, cancellationToken).ConfigureAwait(false); + continue; + case VkMessageType.ChatPhotoUpdate: + await _chatPhotoUpdateEvent.TriggerHandler(messageToProcess, cancellationToken).ConfigureAwait(false); + continue; + case VkMessageType.ChatPinMessage: + await _chatPinMessageEvent.TriggerHandler(messageToProcess, cancellationToken).ConfigureAwait(false); + continue; + case VkMessageType.ChatTitleUpdate: + await _chatTitleUpdateEvent.TriggerHandler(messageToProcess, cancellationToken).ConfigureAwait(false); + continue; + case VkMessageType.ChatUnpinMessage: + await _chatUnpinMessageEvent.TriggerHandler(messageToProcess, cancellationToken).ConfigureAwait(false); + continue; + case VkMessageType.ChatInviteUserByLink: + await _chatInviteUserByLinkEvent.TriggerHandler(messageToProcess, cancellationToken).ConfigureAwait(false); + continue; + default: + throw new ArgumentOutOfRangeException(); + } } } catch (System.Exception e)