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