Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
            }
        }