some refactoring
This commit is contained in:
3
.idea/gradle.xml
generated
3
.idea/gradle.xml
generated
@@ -9,10 +9,7 @@
|
|||||||
<set>
|
<set>
|
||||||
<option value="$PROJECT_DIR$" />
|
<option value="$PROJECT_DIR$" />
|
||||||
<option value="$PROJECT_DIR$/core" />
|
<option value="$PROJECT_DIR$/core" />
|
||||||
<option value="$PROJECT_DIR$/longpolling" />
|
|
||||||
<option value="$PROJECT_DIR$/longpolling-okhttp" />
|
<option value="$PROJECT_DIR$/longpolling-okhttp" />
|
||||||
<option value="$PROJECT_DIR$/longpolling/longpolling-okhttp" />
|
|
||||||
<option value="$PROJECT_DIR$/test" />
|
|
||||||
</set>
|
</set>
|
||||||
</option>
|
</option>
|
||||||
</GradleProjectSettings>
|
</GradleProjectSettings>
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ repositories {
|
|||||||
dependencies {
|
dependencies {
|
||||||
implementation(project(":core"))
|
implementation(project(":core"))
|
||||||
implementation(project(":longpolling-okhttp"))
|
implementation(project(":longpolling-okhttp"))
|
||||||
implementation(project(":test"))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
tasks.register('fat', Jar) {
|
tasks.register('fat', Jar) {
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ plugins {
|
|||||||
group = 'com.github.hdvtdev'
|
group = 'com.github.hdvtdev'
|
||||||
version = '1.0.0'
|
version = '1.0.0'
|
||||||
|
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
}
|
}
|
||||||
@@ -13,7 +14,3 @@ dependencies {
|
|||||||
implementation 'com.fasterxml.jackson.core:jackson-databind:2.18.3'
|
implementation 'com.fasterxml.jackson.core:jackson-databind:2.18.3'
|
||||||
}
|
}
|
||||||
|
|
||||||
jar {
|
|
||||||
from { configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } }
|
|
||||||
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,11 +1,32 @@
|
|||||||
package hdvtdev.telegram.core;
|
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.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;
|
import java.util.List;
|
||||||
|
|
||||||
public interface UpdateConsumer {
|
public interface UpdateConsumer {
|
||||||
|
|
||||||
void getUpdates(List<Update> updates);
|
|
||||||
|
|
||||||
|
void onUpdates(List<Update> updates);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
80
core/src/main/java/hdvtdev/telegram/core/UpdateHandler.java
Normal file
80
core/src/main/java/hdvtdev/telegram/core/UpdateHandler.java
Normal 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) {}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,9 +1,19 @@
|
|||||||
package hdvtdev.telegram.core.objects.message;
|
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;
|
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 {
|
public interface MaybeInaccessibleMessage {
|
||||||
long chatId();
|
long chatId();
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -3,6 +3,7 @@ package hdvtdev.telegram.core.objects.message;
|
|||||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
|
|
||||||
import hdvtdev.telegram.core.objects.*;
|
import hdvtdev.telegram.core.objects.*;
|
||||||
import hdvtdev.telegram.core.objects.chat.Chat;
|
import hdvtdev.telegram.core.objects.chat.Chat;
|
||||||
import hdvtdev.telegram.core.objects.chat.ChatBackground;
|
import hdvtdev.telegram.core.objects.chat.ChatBackground;
|
||||||
@@ -290,4 +291,5 @@ public record Message(
|
|||||||
public long chatId() {
|
public long chatId() {
|
||||||
return this.chat.id();
|
return this.chat.id();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,6 +9,8 @@ module core {
|
|||||||
exports hdvtdev.telegram.core.objects.callback;
|
exports hdvtdev.telegram.core.objects.callback;
|
||||||
exports hdvtdev.telegram.core.objects.message;
|
exports hdvtdev.telegram.core.objects.message;
|
||||||
exports hdvtdev.telegram.core.objects.media;
|
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.background;
|
||||||
exports hdvtdev.telegram.core.objects.business;
|
exports hdvtdev.telegram.core.objects.business;
|
||||||
exports hdvtdev.telegram.core.objects.chat;
|
exports hdvtdev.telegram.core.objects.chat;
|
||||||
|
|||||||
@@ -117,7 +117,6 @@ public class OkHttpTelegramBot implements TelegramBot {
|
|||||||
enableHandlers = builder.enableHandlers;
|
enableHandlers = builder.enableHandlers;
|
||||||
userStateStorage = builder.userStateStorage;
|
userStateStorage = builder.userStateStorage;
|
||||||
userState = builder.userState;
|
userState = builder.userState;
|
||||||
if (builder.updateConsumer != null) setUpdateConsumer(builder.updateConsumer);
|
|
||||||
/*
|
/*
|
||||||
if (false) {
|
if (false) {
|
||||||
Class<? extends UpdateConsumer> updateConsumerClass = builder.updateConsumer == null ? UpdateConsumer.class : builder.updateConsumer.getClass();
|
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_API_URL = "https://api.telegram.org/bot" + builder.token + "/";
|
||||||
this.TELEGRAM_FILE_API_URL = "https://api.telegram.org/file/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 {
|
} finally {
|
||||||
lastUpdateId.set(updates.getLast().updateId());
|
lastUpdateId.set(updates.getLast().updateId());
|
||||||
if (!thread.isShutdown()) getUpdates();
|
if (!thread.isShutdown()) getUpdates();
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
module longpolling.okhttp {
|
module longpolling.okhttp {
|
||||||
exports hdvtdev.telegram.longpolling.okhttp;
|
exports hdvtdev.telegram.longpolling.okhttp;
|
||||||
requires com.fasterxml.jackson.databind;
|
|
||||||
requires com.fasterxml.jackson.core;
|
|
||||||
requires core;
|
requires core;
|
||||||
requires okhttp3;
|
requires okhttp3;
|
||||||
|
requires com.fasterxml.jackson.databind;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,4 @@
|
|||||||
rootProject.name = 'TeleJ'
|
rootProject.name = 'TeleJ'
|
||||||
include 'longpolling'
|
|
||||||
include 'core'
|
include 'core'
|
||||||
include 'longpolling:longpolling-okhttp'
|
|
||||||
findProject(':longpolling:longpolling-okhttp')?.name = 'longpolling-okhttp'
|
|
||||||
include 'test'
|
|
||||||
include 'longpolling-okhttp'
|
include 'longpolling-okhttp'
|
||||||
|
|
||||||
|
|||||||
@@ -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"))
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@@ -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<Update> updates) {
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user