Добавление getOrCreateDuplicatedContext
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2024-11-29 16:12:25 +03:00
parent 01db9e5201
commit bf4bc3328c

View File

@@ -3,8 +3,11 @@ package dev.struchkov.godfather.telegram.quarkus.core;
import dev.struchkov.godfather.telegram.domain.config.TelegramBotConfig; import dev.struchkov.godfather.telegram.domain.config.TelegramBotConfig;
import dev.struchkov.godfather.telegram.quarkus.context.service.EventDistributor; import dev.struchkov.godfather.telegram.quarkus.context.service.EventDistributor;
import dev.struchkov.godfather.telegram.quarkus.context.service.TelegramBot; import dev.struchkov.godfather.telegram.quarkus.context.service.TelegramBot;
import io.smallrye.mutiny.Uni;
import io.smallrye.mutiny.infrastructure.Infrastructure; import io.smallrye.mutiny.infrastructure.Infrastructure;
import io.vertx.core.Vertx; import io.vertx.core.Vertx;
import io.vertx.core.impl.ContextInternal;
import io.vertx.mutiny.core.Context;
import lombok.SneakyThrows; import lombok.SneakyThrows;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.telegram.telegrambots.bots.DefaultBotOptions; import org.telegram.telegrambots.bots.DefaultBotOptions;
@@ -13,7 +16,6 @@ import org.telegram.telegrambots.meta.api.objects.Update;
import org.telegram.telegrambots.meta.bots.AbsSender; import org.telegram.telegrambots.meta.bots.AbsSender;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.util.concurrent.Executors;
/** /**
* TODO: Добавить описание класса. * TODO: Добавить описание класса.
@@ -53,11 +55,22 @@ public class TelegramPollingBot extends TelegramLongPollingBot implements Telegr
private void handleUpdate(Update update) { private void handleUpdate(Update update) {
if (update != null && eventDistributor != null) { if (update != null && eventDistributor != null) {
eventDistributor.processing(update) Uni.createFrom().voidItem()
.emitOn(command -> Context.newInstance(getOrCreateDuplicatedContext(vertx)).runOnContext(command))
.replaceWith(() -> eventDistributor.processing(update))
.subscribe().asCompletionStage(); .subscribe().asCompletionStage();
} }
} }
public static io.vertx.core.Context getOrCreateDuplicatedContext(Vertx vertx) {
io.vertx.core.Context context = vertx.getOrCreateContext();
if (((ContextInternal) context).isDuplicate()) {
return context;
} else {
return ((ContextInternal) context).duplicate();
}
}
@Override @Override
public String getBotUsername() { public String getBotUsername() {
return telegramBotConfig.getUsername(); return telegramBotConfig.getUsername();