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>())); }
public Task SendAsync(Address address, string text, CancellationToken cancellationToken) { return SendAsync(TenantMessage.To(address, text), cancellationToken); }