public async Task Respond(Message message) { _logger.LogInformation("Received message: {@message}", message); ITrigger responder = null; if (message.Sender.Type == PersonType.Bot) { _logger.LogDebug("Message was sent by a bot, ignoring"); return; } if (message.RoomType == RoomType.Group) { responder = _triggers.FirstOrDefault(x => _triggerResponseTester.ShouldTriggerInRoom(message, x)); } else if (message.RoomType == RoomType.Direct) { responder = _triggers.FirstOrDefault(x => _triggerResponseTester.ShouldTriggerInDirectMessage(message, x)); } Message response = null; if (responder != null) { _logger.LogInformation("Responding to message with responder {responderName}", responder.GetType().Name); response = await responder.Respond(message).ConfigureAwait(false); } else { _logger.LogInformation("No responder found"); } if (response != null) { _logger.LogInformation("Sending response message {@response}", response); if (response.RoomId == null) { response.RoomId = message.RoomId; response.ParentId = message.Id; } await _chatHelper.Messages.SendMessageAsync(response).ConfigureAwait(false); } }