// Обработка приходящих сообщений private void Vk_MessageReceived(object sender, MessageEventArgs e) { // Добавление в Users, если отсутствует if (!Users.Contains(e.Message.Id)) { Task.Delay(300).Wait(); var name = vk.GetUsername(e.Message.Id); if (name != null) { Users.AddUser(e.Message.Id, name, null); } } // Вызов события о новом сообщении MessageReceived?.Invoke(this, e); // Пинаем каждый модуль чтоб он обработал сообщения for (int i = 0; i < Extensions.Length; i++) { var extension = Extensions[i]; // Скипаем выключенные модули if (!extension.Enabled) { continue; } // Передаём модулям сообщения для обработки MessageProcessing?.Invoke(this, new MessageProcessedEventArgs(extension)); var res = extension.ProcessMessage(e.Message.Id, e.Message.Text); // Логирование и остановка обработки if (res == ProcessResult.Processed) { MessageProcessed?.Invoke(this, new MessageProcessedEventArgs(extension)); if (extension.StopAfterProcessed) { ExtensionStopProcessing?.Invoke(this, new MessageProcessedEventArgs(extension)); return; } } else if (res == ProcessResult.Skipped) { MessageSkipped?.Invoke(this, new MessageProcessedEventArgs(extension)); } } }