public ChildrenFlipperNode(string name, IMetaMessage <MetaInlineKeyboardMarkup> metaMessage = null, byte pageSize = 6, bool needBack = true, FlipperArrowsType flipperArrows = FlipperArrowsType.Double, bool useGlobalCallbacks = true) : base(name, null, (session, child) => session.Translate(child.Name), (child) => ButtonIdManager.GetInlineButtonId(child), metaMessage ?? new MetaDoubleKeyboardedMessage(name), pageSize, needBack, flipperArrows, useGlobalCallbacks) { Children = collection; }
protected bool TryShowPrevious(ISession session, CallbackQuery callbackQuerry) { if (KeyboardActionsManager.CheckNeeding(NeedPreviousButton, message.HaveInlineKeyboard, session, callbackQuerry, DefaultStrings.Previous, () => ButtonIdManager.GetIDFromCallbackData(callbackQuerry.Data) == Id)) { SendPrevious(session, callbackQuerry.Message); return(true); } else { return(false); } }
public GlobalFilter() { messageFuncs = new Dictionary <string, Func <ISession, Message, Task> >() { { "/start", async(session, message) => { await session.BotClient.SendTextMessageAsync( message.Chat.Id, session.Translate(DefaultStrings.Hello)); session.GoToNode(session.MarkupTree.Root); } }, { "/show", async(session, message) => { string command = message.Text.Trim(); if (command.Length <= 6) { await session.BotClient.SendTextMessageAsync(message.Chat.Id, session.Translate(DefaultStrings.UnknownCommand)); return; } string containerName = command.Substring(6); if (session.Vars.TryGetVar(containerName, out MetaValuedContainer <decimal> container)) { await container.SendMessage(session); } else { await session.BotClient.SendTextMessageAsync(message.Chat.Id, session.Translate(DefaultStrings.UnknownCommand)); } } } }; callbackFuncs = new Dictionary <string, Func <ISession, CallbackQuery, Task> >() { //Переход к узлу { DefaultStrings.GoTo, async(session, callbackQuerry) => { int nodeId = ButtonIdManager.GetIDFromCallbackData(callbackQuerry.Data); var node = session.MarkupTree.GetNodeById(nodeId); session.GoToNode(node, out var task); await task; } },
public static bool CheckNeeding(bool haveButton, bool haveInlineKeyboard, ISession session, CallbackQuery callbackQuerry, string neededAction, Func <bool> func = null) { if (haveButton && haveInlineKeyboard) { string actionName = ButtonIdManager.GetActionNameFromCallbackData(callbackQuerry.Data); if (actionName == neededAction) { return(func == null || func.Invoke()); } else { return(false); } } else { return(false); } }