public async void Send(SentMessage message, ReceivedMessage receivedMessage, User user) { const int maxSize = 4095; if (message.Text.Length > maxSize) { // Message too long, so split it to small part and all other. Send(new SentMessage { Buttons = message.Buttons, ChatId = message.ChatId, Formatted = message.Formatted, Text = message.Text.Substring(0, maxSize), PreferToUpdate = false }, receivedMessage, user); Send(new SentMessage { Buttons = message.Buttons, ChatId = message.ChatId, Formatted = message.Formatted, Text = message.Text.Substring(maxSize), PreferToUpdate = false }, receivedMessage, user); return; } await _messenger.Send(message, receivedMessage); }
public async void Send(SentMessage message, RecivedMessage recievedMessage, User user) { const int maxSize = 4095; if (message.Text.Length > maxSize) { // Message too long, so split it to small part and all other. Send(new SentMessage { Buttons = message.Buttons, ChatId = message.ChatId, Formatted = message.Formatted, Text = message.Text.Substring(0, maxSize) }, recievedMessage, user); Send(new SentMessage { Buttons = message.Buttons, ChatId = message.ChatId, Formatted = message.Formatted, Text = message.Text.Substring(maxSize) }, recievedMessage, user); return; } var availableMessengers = DefaultMessengers(user.VariableManager.PersistentVariables, user.MessageManager.ChatId); var availableIds = availableMessengers.Keys() .Select(int.Parse) .ToImmutableHashSet(); var messengers = _messengers.Where(m => availableIds.Contains(m.Id)).ToList(); if (messengers.Count == 0) { foreach (var availableId in availableIds) { RemoveBot(availableId, null, user); } NewBot(_defaultMessenger.Id, null, user); await _defaultMessenger.Send(message, recievedMessage); } else { var bestMessenger = messengers.Aggregate((l, r) => l.LastMessageSent < r.LastMessageSent ? l : r); await bestMessenger.Send(message, recievedMessage); } }