public void AddItem(ISendedItem sendedItem)
 {
     if (sendedItem != null)
     {
         sendedItems.Enqueue(sendedItem);
     }
 }
Beispiel #2
0
 public async Task ProcessUpdate <TBot>(Update update, Bot.FSM <TBot> fsm) where TBot : IConfig, new()
 {
     if (Constants.Cancells.Contains(update.Message.Text.ToLower()))
     {
         ISendedItem reply = fsm.readyProcessor.Stop(update);
         messagesSender.AddItem(reply);
         fsm.config.BotState = PrivateChatState.Ready;
     }
     else
     {
         messagesSender.AddItem(Bot.Common.CreateImBusy(update));
     }
 }
        public async Task <bool> ProcessUpdate(Update update, SearchBot parentFSM, CancellationToken token)
        {
            switch (state)
            {
            case ConfiguringSubstates.Started:
            {
                TextMessage mess = new TextMessage(null, update.Message.Chat.Id, "Выберите глубину поиска", Channel.CreateBounded <int>(1), keyboard: Constants.Keyboards.settingKeyboard);
                messagesSender.AddItem(mess);
                state = ConfiguringSubstates.ConfiguringDepth;
                return(false);
            }

            case ConfiguringSubstates.ConfiguringDepth:
            {
                parentFSM.RequestDepth = ParseDepth(update);
                ISendedItem mess = Bot.Common.CreateOk(update, Constants.Keyboards.yesNoKeyboard, " Искать в группах?");
                messagesSender.AddItem(mess);
                state = ConfiguringSubstates.ConfiguringGroups;
                return(false);
            }

            case ConfiguringSubstates.ConfiguringGroups:
            {
                parentFSM.SearchInGroups = update.Message.Text.ToLower() == "да";
                ISendedItem mess = Bot.Common.CreateOk(update, Constants.Keyboards.yesNoKeyboard, " Искать в каналах?");
                messagesSender.AddItem(mess);
                state = ConfiguringSubstates.ConfiguringChannel;
                return(false);
            }

            case ConfiguringSubstates.ConfiguringChannel:
            {
                parentFSM.SearchInChannels = update.Message.Text.ToLower() == "да";
                ISendedItem mess = Bot.Common.CreateOk(update, new ReplyKeyboardRemove(), " Настройки завершены. Для поиска просто отправьте слово/словосочетание боту.");
                parentFSM.BotState = PrivateChatState.Ready;
                messagesSender.AddItem(mess);
                if (TextMessage.defaultClient != null && TextMessage.defaultClient.BotId.HasValue)
                {
                    await dataStorage.SaveChat(parentFSM, token, TextMessage.defaultClient.BotId.Value);
                }
                //current.Finished = true;
                state = ConfiguringSubstates.Started;
                return(true);
            }

            default:
            {
                return(true);
            }
            }
        }