Exemple #1
0
        private async Task ReceivedMessage(MessageRtmResponse messageRtmResponse)
        {
            if (messageRtmResponse.User == _self.Id)
            {
                _logger.Verbose($"Skipping message from myself: {messageRtmResponse.Text}");
                return;
            }
            if (!string.IsNullOrEmpty(messageRtmResponse.Subtype))
            {
                _logger.Verbose($"Skipping message with subtype '{messageRtmResponse.Subtype}': {messageRtmResponse.Text}");
                return;
            }
            if (messageRtmResponse.IsEdit)
            {
                _logger.Verbose($"Skipping message edit: {messageRtmResponse.Text}");
                return;
            }

            var toMe = $"{_self.Id}: ";
            var text = SanitiseText(messageRtmResponse.Text);
            if (!text.StartsWith(toMe) && messageRtmResponse.Channel[0] != 'D')
            {
                _logger.Verbose($"Skipping message as its not for me: {messageRtmResponse.Text}");
                return;
            }

            text = text.Replace(toMe, string.Empty).Trim();
            _logger.Debug($"Slack message - {messageRtmResponse.User}@{messageRtmResponse.Channel}: {messageRtmResponse.Text}");

            var user = await _slackService.GetUserAsync(messageRtmResponse.User, CancellationToken.None).ConfigureAwait(false);
            var sender = new Address(
                user,
                new TenantChannel(messageRtmResponse.Channel),
                TenantKey);

            _messages.OnNext(new TenantMessage(
                text,
                sender,
                Enumerable.Empty<TenantMessageAttachment>()));
        }
Exemple #2
0
 public Task SendAsync(Address address, string text, CancellationToken cancellationToken)
 {
     return SendAsync(TenantMessage.To(address, text), cancellationToken);
 }