package org.telegram.telegrambots.api.objects.replykeyboard.buttons;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.telegram.telegrambots.api.interfaces.InputBotApiObject;
import org.telegram.telegrambots.api.interfaces.Validable;
import org.telegram.telegrambots.exceptions.TelegramApiValidationException;
/**
* @author Ruben Bermudez
* @version 1.0
* @brief This object represents one button of the reply keyboard. For simple text buttons String
* can be used instead of this object to specify text of the button.
* @note Optional fields are mutually exclusive.
* @note request_contact and request_location options will only work in Telegram versions released
* after 9 April, 2016. Older clients will ignore them.
* @date 10 of April of 2016
*/
public class KeyboardButton implements InputBotApiObject, Validable {
private static final String TEXT_FIELD = "text";
private static final String REQUEST_CONTACT_FIELD = "request_contact";
private static final String REQUEST_LOCATION_FIELD = "request_location";
/**
* Text of the button.
* If none of the optional fields are used, it will be sent to the bot as a message when the button is pressed
*/
@JsonProperty(TEXT_FIELD)
private String text;
/**
* Optional.
* If True, the user's phone number will be sent as a contact when the button is pressed.
* Available in private chats only
*/
@JsonProperty(REQUEST_CONTACT_FIELD)
private Boolean requestContact;
/**
* Optional.
* If True, the user's current location will be sent when the button is pressed.
* Available in private chats only
*/
@JsonProperty(REQUEST_LOCATION_FIELD)
private Boolean requestLocation;
public KeyboardButton() {
super();
}
public KeyboardButton(String text) {
super();
this.text = text;
}
public String getText() {
return text;
}
public KeyboardButton setText(String text) {
this.text = text;
return this;
}
public Boolean getRequestContact() {
return requestContact;
}
public KeyboardButton setRequestContact(Boolean requestContact) {
this.requestContact = requestContact;
return this;
}
public Boolean getRequestLocation() {
return requestLocation;
}
public KeyboardButton setRequestLocation(Boolean requestLocation) {
this.requestLocation = requestLocation;
return this;
}
@Override
public void validate() throws TelegramApiValidationException {
if (text == null || text.isEmpty()) {
throw new TelegramApiValidationException("Text parameter can't be empty", this);
}
if (requestContact != null && requestLocation != null && requestContact && requestLocation) {
throw new TelegramApiValidationException("Cant request contact and location at the same time", this);
}
}
@Override
public String toString() {
return "KeyboardButton{" +
"text=" + text +
", requestContact=" + requestContact +
", requestLocation=" + requestLocation +
'}';
}
}