public void AddItem(ISendedItem sendedItem) { if (sendedItem != null) { sendedItems.Enqueue(sendedItem); } }
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); } } }