示例#1
0
 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;
                  } },
示例#4
0
 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);
     }
 }