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),
|
2020-04-26 02:32:38 +02:00
|
|
|
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);
|
|
|
|
}
|
|
|
|
}
|