TDLightTelegramBots/telegrambots-abilities/src/main/java/org/telegram/abilitybots/api/objects/Flag.java

55 lines
1.8 KiB
Java
Raw Normal View History

2017-06-30 18:29:10 +02:00
package org.telegram.abilitybots.api.objects;
import org.telegram.abilitybots.api.objects.Ability.AbilityBuilder;
2018-07-08 01:41:21 +02:00
import org.telegram.telegrambots.meta.api.objects.Update;
2017-06-30 18:29:10 +02:00
2023-05-30 03:33:18 +02:00
import java.util.function.BiConsumer;
2017-06-30 18:29:10 +02:00
import java.util.function.Predicate;
import static java.util.Objects.nonNull;
/**
* Flags are an conditions that are applied on an {@link Update}.
* <p>
2023-05-30 03:33:18 +02:00
* They can be used on {@link AbilityBuilder#flag(Predicate[])} and on the post conditions in {@link AbilityBuilder#reply(BiConsumer, Predicate[])}.
2017-06-30 18:29:10 +02:00
*
* @author Abbas Abou Daya
*/
public enum Flag implements Predicate<Update> {
// Update Flags
NONE(update -> true),
MESSAGE(Update::hasMessage),
CALLBACK_QUERY(Update::hasCallbackQuery),
CHANNEL_POST(Update::hasChannelPost),
EDITED_CHANNEL_POST(Update::hasEditedChannelPost),
EDITED_MESSAGE(Update::hasEditedMessage),
INLINE_QUERY(Update::hasInlineQuery),
CHOSEN_INLINE_QUERY(Update::hasChosenInlineQuery),
SHIPPING_QUERY(Update::hasShippingQuery),
PRECHECKOUT_QUERY(Update::hasPreCheckoutQuery),
POLL(Update::hasPoll),
POLL_ANSWER(Update::hasPollAnswer),
2021-03-09 11:59:28 +01:00
MY_CHAT_MEMBER(Update::hasMyChatMember),
CHAT_MEMBER(Update::hasChatMember),
2021-11-06 16:37:30 +01:00
CHAT_JOIN_REQUEST(Update::hasChatJoinRequest),
2021-03-09 11:59:28 +01:00
2017-06-30 18:29:10 +02:00
// Message Flags
2019-09-17 09:51:14 +02:00
REPLY(upd -> MESSAGE.test(upd) && upd.getMessage().isReply()),
DOCUMENT(upd -> MESSAGE.test(upd) && upd.getMessage().hasDocument()),
TEXT(upd -> MESSAGE.test(upd) && upd.getMessage().hasText()),
PHOTO(upd -> MESSAGE.test(upd) && upd.getMessage().hasPhoto()),
LOCATION(upd -> MESSAGE.test(upd) && upd.getMessage().hasLocation()),
CAPTION(upd -> MESSAGE.test(upd) && nonNull(upd.getMessage().getCaption()));
2017-06-30 18:29:10 +02:00
private final Predicate<Update> predicate;
Flag(Predicate<Update> predicate) {
this.predicate = predicate;
}
public boolean test(Update update) {
return nonNull(update) && predicate.test(update);
}
}