some refactoring

This commit is contained in:
hdvtdev
2025-04-24 20:59:49 +03:00
parent ab43f9cb52
commit 5fe53b2539
15 changed files with 122 additions and 79 deletions

View File

@@ -5,6 +5,7 @@ plugins {
group = 'com.github.hdvtdev'
version = '1.0.0'
repositories {
mavenCentral()
}
@@ -13,7 +14,3 @@ dependencies {
implementation 'com.fasterxml.jackson.core:jackson-databind:2.18.3'
}
jar {
from { configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } }
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
}

View File

@@ -1,11 +1,32 @@
package hdvtdev.telegram.core;
import hdvtdev.telegram.core.objects.ChosenInlineResult;
import hdvtdev.telegram.core.objects.InlineQuery;
import hdvtdev.telegram.core.objects.Update;
import hdvtdev.telegram.core.objects.business.BusinessConnection;
import hdvtdev.telegram.core.objects.business.BusinessMessagesDeleted;
import hdvtdev.telegram.core.objects.callback.CallbackQuery;
import hdvtdev.telegram.core.objects.chat.ChatJoinRequest;
import hdvtdev.telegram.core.objects.chat.ChatMemberUpdated;
import hdvtdev.telegram.core.objects.chatboost.ChatBoostRemoved;
import hdvtdev.telegram.core.objects.chatboost.ChatBoostUpdated;
import hdvtdev.telegram.core.objects.media.paidmedia.PaidMediaPurchased;
import hdvtdev.telegram.core.objects.message.Message;
import hdvtdev.telegram.core.objects.message.MessageReactionCountUpdated;
import hdvtdev.telegram.core.objects.message.MessageReactionUpdated;
import hdvtdev.telegram.core.objects.payment.PreCheckoutQuery;
import hdvtdev.telegram.core.objects.payment.ShippingQuery;
import hdvtdev.telegram.core.objects.poll.Poll;
import hdvtdev.telegram.core.objects.poll.PollAnswer;
import java.util.List;
public interface UpdateConsumer {
void getUpdates(List<Update> updates);
void onUpdates(List<Update> updates);
}

View File

@@ -0,0 +1,80 @@
package hdvtdev.telegram.core;
import hdvtdev.telegram.core.objects.ChosenInlineResult;
import hdvtdev.telegram.core.objects.InlineQuery;
import hdvtdev.telegram.core.objects.Update;
import hdvtdev.telegram.core.objects.business.BusinessConnection;
import hdvtdev.telegram.core.objects.business.BusinessMessagesDeleted;
import hdvtdev.telegram.core.objects.callback.CallbackQuery;
import hdvtdev.telegram.core.objects.chat.ChatJoinRequest;
import hdvtdev.telegram.core.objects.chat.ChatMemberUpdated;
import hdvtdev.telegram.core.objects.chatboost.ChatBoostRemoved;
import hdvtdev.telegram.core.objects.chatboost.ChatBoostUpdated;
import hdvtdev.telegram.core.objects.media.paidmedia.PaidMediaPurchased;
import hdvtdev.telegram.core.objects.message.Message;
import hdvtdev.telegram.core.objects.message.MessageReactionCountUpdated;
import hdvtdev.telegram.core.objects.message.MessageReactionUpdated;
import hdvtdev.telegram.core.objects.payment.PreCheckoutQuery;
import hdvtdev.telegram.core.objects.payment.ShippingQuery;
import hdvtdev.telegram.core.objects.poll.Poll;
import hdvtdev.telegram.core.objects.poll.PollAnswer;
import java.util.List;
public interface UpdateHandler extends UpdateConsumer {
@Override
default void onUpdates(List<Update> updates) {
for (Update update : updates) {
if (update.hasMessage()) onMessage(update.message());
if (update.hasEditedMessage()) onEditedMessage(update.editedMessage());
if (update.hasChannelPost()) onChannelPost(update.channelPost());
if (update.hasEditedChannelPost()) onEditedChannelPost(update.editedChannelPost());
if (update.hasBusinessConnection()) onBusinessConnection(update.businessConnection());
if (update.hasBusinessMessage()) onBusinessMessage(update.businessMessage());
if (update.hasEditedBusinessMessage()) onEditedBusinessMessage(update.editedBusinessMessage());
if (update.hasDeletedBusinessMessages()) onDeletedBusinessMessages(update.businessMessagesDeleted());
if (update.hasMessageReaction()) onMessageReaction(update.messageReaction());
if (update.hasMessageReactionCount()) onMessageReactionCount(update.messageReactionCount());
if (update.hasInlineQuery()) onInlineQuery(update.inlineQuery());
if (update.hasChosenInlineResult()) onChosenInlineResult(update.chosenInlineResult());
if (update.hasCallbackQuery()) onCallbackQuery(update.callbackQuery());
if (update.hasShippingQuery()) onShippingQuery(update.shippingQuery());
if (update.hasPreCheckoutQuery()) onPreCheckoutQuery(update.preCheckoutQuery());
if (update.hasPurchasedPaidMedia()) onPaidMediaPurchased(update.paidMediaPurchased());
if (update.hasPoll()) onPoll(update.poll());
if (update.hasPollAnswer()) onPollAnswer(update.pollAnswer());
if (update.hasMyChatMember()) onMyChatMember(update.myChatMember());
if (update.hasChatMember()) onChatMember(update.chatMember());
if (update.hasChatJoinRequest()) onChatJoinRequest(update.chatJoinRequest());
if (update.hasChatBoost()) onChatBoost(update.chatBoost());
if (update.hasRemovedChatBoost()) onChatBoostRemoved(update.chatBoostRemoved());
}
}
default void onMessage(Message message) {}
default void onEditedMessage(Message message) {}
default void onChannelPost(Message message) {}
default void onEditedChannelPost(Message message) {}
default void onBusinessConnection(BusinessConnection connection) {}
default void onBusinessMessage(Message message) {}
default void onEditedBusinessMessage(Message message) {}
default void onDeletedBusinessMessages(BusinessMessagesDeleted deleted) {}
default void onMessageReaction(MessageReactionUpdated reaction) {}
default void onMessageReactionCount(MessageReactionCountUpdated count) {}
default void onInlineQuery(InlineQuery query) {}
default void onChosenInlineResult(ChosenInlineResult result) {}
default void onCallbackQuery(CallbackQuery callbackQuery) {}
default void onShippingQuery(ShippingQuery query) {}
default void onPreCheckoutQuery(PreCheckoutQuery query) {}
default void onPaidMediaPurchased(PaidMediaPurchased paidMedia) {}
default void onPoll(Poll poll) {}
default void onPollAnswer(PollAnswer answer) {}
default void onMyChatMember(ChatMemberUpdated member) {}
default void onChatMember(ChatMemberUpdated member) {}
default void onChatJoinRequest(ChatJoinRequest request) {}
default void onChatBoost(ChatBoostUpdated boost) {}
default void onChatBoostRemoved(ChatBoostRemoved removedBoost) {}
}

View File

@@ -1,9 +1,19 @@
package hdvtdev.telegram.core.objects.message;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import hdvtdev.telegram.core.objects.chat.Chat;
@JsonDeserialize(using = MaybeInaccessibleMessageDeserializer.class)
@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.EXISTING_PROPERTY,
property = "date",
defaultImpl = Message.class
)
@JsonSubTypes({
@JsonSubTypes.Type(value = InaccessibleMessage.class, name = "0")
})
public interface MaybeInaccessibleMessage {
long chatId();

View File

@@ -1,16 +0,0 @@
package hdvtdev.telegram.core.objects.message;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import java.io.IOException;
public class MaybeInaccessibleMessageDeserializer extends JsonDeserializer<MaybeInaccessibleMessage> {
@Override
public MaybeInaccessibleMessage deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
Message msg = p.getCodec().readValue(p, Message.class);
return msg.date() == 0 ? new InaccessibleMessage(msg.chat(), msg.messageId(), 0) : msg;
}
}

View File

@@ -3,6 +3,7 @@ package hdvtdev.telegram.core.objects.message;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import hdvtdev.telegram.core.objects.*;
import hdvtdev.telegram.core.objects.chat.Chat;
import hdvtdev.telegram.core.objects.chat.ChatBackground;
@@ -290,4 +291,5 @@ public record Message(
public long chatId() {
return this.chat.id();
}
}

View File

@@ -9,6 +9,8 @@ module core {
exports hdvtdev.telegram.core.objects.callback;
exports hdvtdev.telegram.core.objects.message;
exports hdvtdev.telegram.core.objects.media;
exports hdvtdev.telegram.core.objects.media.paidmedia;
exports hdvtdev.telegram.core.objects.media.video;
exports hdvtdev.telegram.core.objects.background;
exports hdvtdev.telegram.core.objects.business;
exports hdvtdev.telegram.core.objects.chat;