diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index 7244181..f63ed0f 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -9,10 +9,7 @@
-
-
-
diff --git a/build.gradle b/build.gradle
index a662c31..36534f4 100644
--- a/build.gradle
+++ b/build.gradle
@@ -12,7 +12,6 @@ repositories {
dependencies {
implementation(project(":core"))
implementation(project(":longpolling-okhttp"))
- implementation(project(":test"))
}
tasks.register('fat', Jar) {
diff --git a/core/build.gradle b/core/build.gradle
index e472613..c816d58 100644
--- a/core/build.gradle
+++ b/core/build.gradle
@@ -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
-}
diff --git a/core/src/main/java/hdvtdev/telegram/core/Main.java b/core/src/main/java/hdvtdev/telegram/core/Main.java
deleted file mode 100644
index e69de29..0000000
diff --git a/core/src/main/java/hdvtdev/telegram/core/UpdateConsumer.java b/core/src/main/java/hdvtdev/telegram/core/UpdateConsumer.java
index 4bba6a6..6b96543 100644
--- a/core/src/main/java/hdvtdev/telegram/core/UpdateConsumer.java
+++ b/core/src/main/java/hdvtdev/telegram/core/UpdateConsumer.java
@@ -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 updates);
+
+
+ void onUpdates(List updates);
+
+
}
diff --git a/core/src/main/java/hdvtdev/telegram/core/UpdateHandler.java b/core/src/main/java/hdvtdev/telegram/core/UpdateHandler.java
new file mode 100644
index 0000000..00cf08c
--- /dev/null
+++ b/core/src/main/java/hdvtdev/telegram/core/UpdateHandler.java
@@ -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 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) {}
+
+
+}
diff --git a/core/src/main/java/hdvtdev/telegram/core/objects/message/MaybeInaccessibleMessage.java b/core/src/main/java/hdvtdev/telegram/core/objects/message/MaybeInaccessibleMessage.java
index 33e8733..6820944 100644
--- a/core/src/main/java/hdvtdev/telegram/core/objects/message/MaybeInaccessibleMessage.java
+++ b/core/src/main/java/hdvtdev/telegram/core/objects/message/MaybeInaccessibleMessage.java
@@ -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();
diff --git a/core/src/main/java/hdvtdev/telegram/core/objects/message/MaybeInaccessibleMessageDeserializer.java b/core/src/main/java/hdvtdev/telegram/core/objects/message/MaybeInaccessibleMessageDeserializer.java
deleted file mode 100644
index f02036c..0000000
--- a/core/src/main/java/hdvtdev/telegram/core/objects/message/MaybeInaccessibleMessageDeserializer.java
+++ /dev/null
@@ -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 {
-
- @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;
- }
-}
\ No newline at end of file
diff --git a/core/src/main/java/hdvtdev/telegram/core/objects/message/Message.java b/core/src/main/java/hdvtdev/telegram/core/objects/message/Message.java
index 92e1e5a..476f236 100644
--- a/core/src/main/java/hdvtdev/telegram/core/objects/message/Message.java
+++ b/core/src/main/java/hdvtdev/telegram/core/objects/message/Message.java
@@ -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();
}
+
}
diff --git a/core/src/main/java/module-info.java b/core/src/main/java/module-info.java
index 1b984fe..ef0e284 100644
--- a/core/src/main/java/module-info.java
+++ b/core/src/main/java/module-info.java
@@ -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;
diff --git a/longpolling-okhttp/src/main/java/hdvtdev/telegram/longpolling/okhttp/OkHttpTelegramBot.java b/longpolling-okhttp/src/main/java/hdvtdev/telegram/longpolling/okhttp/OkHttpTelegramBot.java
index 5c97f82..61b7507 100644
--- a/longpolling-okhttp/src/main/java/hdvtdev/telegram/longpolling/okhttp/OkHttpTelegramBot.java
+++ b/longpolling-okhttp/src/main/java/hdvtdev/telegram/longpolling/okhttp/OkHttpTelegramBot.java
@@ -117,7 +117,6 @@ public class OkHttpTelegramBot implements TelegramBot {
enableHandlers = builder.enableHandlers;
userStateStorage = builder.userStateStorage;
userState = builder.userState;
- if (builder.updateConsumer != null) setUpdateConsumer(builder.updateConsumer);
/*
if (false) {
Class extends UpdateConsumer> updateConsumerClass = builder.updateConsumer == null ? UpdateConsumer.class : builder.updateConsumer.getClass();
@@ -129,6 +128,7 @@ public class OkHttpTelegramBot implements TelegramBot {
*/
this.TELEGRAM_API_URL = "https://api.telegram.org/bot" + builder.token + "/";
this.TELEGRAM_FILE_API_URL = "https://api.telegram.org/file/bot" + builder.token + "/";
+ if (builder.updateConsumer != null) setUpdateConsumer(builder.updateConsumer);
}
/**
@@ -195,7 +195,7 @@ public class OkHttpTelegramBot implements TelegramBot {
});
}
}
- if (updateConsumer != null) CompletableFuture.runAsync(() -> updateConsumer.getUpdates(updates));
+ if (updateConsumer != null) CompletableFuture.runAsync(() -> updateConsumer.onUpdates(updates));
} finally {
lastUpdateId.set(updates.getLast().updateId());
if (!thread.isShutdown()) getUpdates();
diff --git a/longpolling-okhttp/src/main/java/module-info.java b/longpolling-okhttp/src/main/java/module-info.java
index 8834810..e7df579 100644
--- a/longpolling-okhttp/src/main/java/module-info.java
+++ b/longpolling-okhttp/src/main/java/module-info.java
@@ -1,7 +1,6 @@
module longpolling.okhttp {
exports hdvtdev.telegram.longpolling.okhttp;
- requires com.fasterxml.jackson.databind;
- requires com.fasterxml.jackson.core;
requires core;
requires okhttp3;
+ requires com.fasterxml.jackson.databind;
}
diff --git a/settings.gradle b/settings.gradle
index 8c3e3e0..8dac7dc 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1,8 +1,4 @@
rootProject.name = 'TeleJ'
-include 'longpolling'
include 'core'
-include 'longpolling:longpolling-okhttp'
-findProject(':longpolling:longpolling-okhttp')?.name = 'longpolling-okhttp'
-include 'test'
include 'longpolling-okhttp'
diff --git a/test/build.gradle b/test/build.gradle
deleted file mode 100644
index d4eb6b4..0000000
--- a/test/build.gradle
+++ /dev/null
@@ -1,17 +0,0 @@
-plugins {
- id 'java'
-}
-
-group = 'com.github.hdvtdev'
-version = '1.0.0'
-
-repositories {
- mavenCentral()
-}
-
-dependencies {
- implementation(project(":core"))
- implementation(project(":longpolling-okhttp"))
-}
-
-
diff --git a/test/src/main/java/Main.java b/test/src/main/java/Main.java
deleted file mode 100644
index c3a4d31..0000000
--- a/test/src/main/java/Main.java
+++ /dev/null
@@ -1,27 +0,0 @@
-import hdvtdev.telegram.core.TelegramBot;
-import hdvtdev.telegram.core.UpdateConsumer;
-import hdvtdev.telegram.core.objects.Update;
-import hdvtdev.telegram.longpolling.okhttp.OkHttpTelegramBot;
-
-
-import java.util.List;
-
-public class Main {
-
- public static void main(String... a) {
-
- TelegramBot bot = new OkHttpTelegramBot.Builder(a[0]).enableHandlers(true).updateConsumer(new Upd()).build();
-
- }
-
- public static final class Upd implements UpdateConsumer {
-
- @Override
- public void getUpdates(List updates) {
-
- }
- }
-
-
-
-}