internal static MessageButton Create <T>(string title, string command, string eventName, T payload, bool isSilent) where T : Payload
        {
            MessageButton res = new MessageButton()
            {
                Title           = title,
                Data            = new Data(),
                IsSilent        = isSilent,
                InternalCommand = string.IsNullOrEmpty(command) ? title : command
            };

            if (!string.IsNullOrEmpty(eventName))
            {
                if (!ActionExecutor.actionEvents.ContainsKey(eventName.ToLower()))
                {
                    throw new Exception($"Button event with key:{eventName.ToLower()} not found.");
                }

                res.Data.EventType = eventName.ToLower();
                res.Data.Payload   = JsonConvert.SerializeObject(payload, new JsonSerializerSettings()
                {
                    TypeNameHandling         = TypeNameHandling.All,
                    MetadataPropertyHandling = MetadataPropertyHandling.ReadAhead
                });
            }
            return(res);
        }
Example #2
0
        /// <summary>
        /// Создает кнопку, нажатие на которую не генирирует сообщение в чат
        /// </summary>
        /// <param name="title">Текст на кнопке</param>
        /// <param name="eventName">Имя события, которое будет вызванно при нажатии на кнопку</param>
        /// <param name="payload">Дополнительные аргументы, которые будут переданны в метод-обработчик</param>
        /// <returns></returns>
        public MessageButton AddSilentButton <T>(string title, string eventName, T payload) where T : Payload
        {
            var btn = MessageButton.Create(
                title: title,
                command: null,
                eventName: eventName,
                payload: payload,
                isSilent: true);

            Buttons.Add(btn);
            return(btn);
        }
Example #3
0
        /// <summary>
        /// Создаёт кнопку внутри данной строки
        /// </summary>
        /// <param name="title">Текст на кнопке</param>
        /// <param name="eventName">Имя события, которое будет вызванно при нажатии на кнопку</param>
        /// <returns></returns>
        public MessageButton AddButton(string title, string eventName)
        {
            var btn = MessageButton.Create <Payload>(
                title: title,
                command: null,
                eventName: eventName,
                payload: null,
                isSilent: false);

            Buttons.Add(btn);
            return(btn);
        }