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); }
/// <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); }
/// <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); }