Добавил два eventproviders для подписки и отписки
This commit is contained in:
parent
3e8989b64e
commit
1c43f1d797
4
pom.xml
4
pom.xml
@ -5,7 +5,7 @@
|
||||
|
||||
<groupId>dev.struchkov.godfather</groupId>
|
||||
<artifactId>telegram-bot</artifactId>
|
||||
<version>0.0.13</version>
|
||||
<version>0.0.14</version>
|
||||
<packaging>pom</packaging>
|
||||
|
||||
<modules>
|
||||
@ -33,7 +33,7 @@
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
||||
|
||||
<godfather.core.ver>0.0.11</godfather.core.ver>
|
||||
<godfather.core.ver>0.0.12</godfather.core.ver>
|
||||
<telegrambots.ver>6.1.0</telegrambots.ver>
|
||||
|
||||
<plugin.maven.compiler.ver>3.10.1</plugin.maven.compiler.ver>
|
||||
|
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<groupId>dev.struchkov.godfather</groupId>
|
||||
<artifactId>telegram-bot</artifactId>
|
||||
<version>0.0.13</version>
|
||||
<version>0.0.14</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>telegram-core</artifactId>
|
||||
|
@ -0,0 +1,28 @@
|
||||
package dev.struchkov.godfather.telegram.convert;
|
||||
|
||||
import dev.struchkov.godfather.telegram.domain.event.Subscribe;
|
||||
import org.telegram.telegrambots.meta.api.objects.Chat;
|
||||
import org.telegram.telegrambots.meta.api.objects.ChatMemberUpdated;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
import static dev.struchkov.haiti.utils.Exceptions.utilityClass;
|
||||
|
||||
public final class SubscribeConvert {
|
||||
|
||||
private SubscribeConvert() {
|
||||
utilityClass();
|
||||
}
|
||||
|
||||
public static Subscribe apply(ChatMemberUpdated updated) {
|
||||
final Chat chat = updated.getChat();
|
||||
|
||||
final Subscribe subscribe = new Subscribe();
|
||||
subscribe.setTelegramId(chat.getId());
|
||||
subscribe.setLastName(chat.getLastName());
|
||||
subscribe.setFirstName(chat.getFirstName());
|
||||
subscribe.setSubscriptionDate(LocalDateTime.now());
|
||||
return subscribe;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,28 @@
|
||||
package dev.struchkov.godfather.telegram.convert;
|
||||
|
||||
import dev.struchkov.godfather.telegram.domain.event.Unsubscribe;
|
||||
import org.telegram.telegrambots.meta.api.objects.Chat;
|
||||
import org.telegram.telegrambots.meta.api.objects.ChatMemberUpdated;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
import static dev.struchkov.haiti.utils.Exceptions.utilityClass;
|
||||
|
||||
public final class UnsubscribeConvert {
|
||||
|
||||
private UnsubscribeConvert() {
|
||||
utilityClass();
|
||||
}
|
||||
|
||||
public static Unsubscribe apply(ChatMemberUpdated updated) {
|
||||
final Chat chat = updated.getChat();
|
||||
|
||||
final Unsubscribe unsubscribe = new Unsubscribe();
|
||||
unsubscribe.setTelegramId(chat.getId());
|
||||
unsubscribe.setLastName(chat.getLastName());
|
||||
unsubscribe.setFirstName(chat.getFirstName());
|
||||
unsubscribe.setSubscriptionDate(LocalDateTime.now());
|
||||
return unsubscribe;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,14 @@
|
||||
package dev.struchkov.godfather.telegram.domain.event;
|
||||
|
||||
import dev.struchkov.godfather.context.domain.event.Event;
|
||||
|
||||
public class Command implements Event {
|
||||
|
||||
public static final String TYPE = "CMD";
|
||||
|
||||
@Override
|
||||
public String getType() {
|
||||
return TYPE;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,53 @@
|
||||
package dev.struchkov.godfather.telegram.domain.event;
|
||||
|
||||
import dev.struchkov.godfather.context.domain.event.Event;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
public class Subscribe implements Event {
|
||||
|
||||
public static final String TYPE = "SUBSCRIBE";
|
||||
|
||||
private Long telegramId;
|
||||
private String firstName;
|
||||
private String lastName;
|
||||
private LocalDateTime subscriptionDate;
|
||||
|
||||
public Long getTelegramId() {
|
||||
return telegramId;
|
||||
}
|
||||
|
||||
public void setTelegramId(Long telegramId) {
|
||||
this.telegramId = telegramId;
|
||||
}
|
||||
|
||||
public String getFirstName() {
|
||||
return firstName;
|
||||
}
|
||||
|
||||
public void setFirstName(String firstName) {
|
||||
this.firstName = firstName;
|
||||
}
|
||||
|
||||
public String getLastName() {
|
||||
return lastName;
|
||||
}
|
||||
|
||||
public void setLastName(String lastName) {
|
||||
this.lastName = lastName;
|
||||
}
|
||||
|
||||
public LocalDateTime getSubscriptionDate() {
|
||||
return subscriptionDate;
|
||||
}
|
||||
|
||||
public void setSubscriptionDate(LocalDateTime subscriptionDate) {
|
||||
this.subscriptionDate = subscriptionDate;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getType() {
|
||||
return TYPE;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,53 @@
|
||||
package dev.struchkov.godfather.telegram.domain.event;
|
||||
|
||||
import dev.struchkov.godfather.context.domain.event.Event;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
public class Unsubscribe implements Event {
|
||||
|
||||
public static final String TYPE = "UNSUBSCRIBE";
|
||||
|
||||
private Long telegramId;
|
||||
private String firstName;
|
||||
private String lastName;
|
||||
private LocalDateTime subscriptionDate;
|
||||
|
||||
public Long getTelegramId() {
|
||||
return telegramId;
|
||||
}
|
||||
|
||||
public void setTelegramId(Long telegramId) {
|
||||
this.telegramId = telegramId;
|
||||
}
|
||||
|
||||
public String getFirstName() {
|
||||
return firstName;
|
||||
}
|
||||
|
||||
public void setFirstName(String firstName) {
|
||||
this.firstName = firstName;
|
||||
}
|
||||
|
||||
public String getLastName() {
|
||||
return lastName;
|
||||
}
|
||||
|
||||
public void setLastName(String lastName) {
|
||||
this.lastName = lastName;
|
||||
}
|
||||
|
||||
public LocalDateTime getSubscriptionDate() {
|
||||
return subscriptionDate;
|
||||
}
|
||||
|
||||
public void setSubscriptionDate(LocalDateTime subscriptionDate) {
|
||||
this.subscriptionDate = subscriptionDate;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getType() {
|
||||
return TYPE;
|
||||
}
|
||||
|
||||
}
|
@ -5,12 +5,20 @@ import dev.struchkov.godfather.context.service.EventProvider;
|
||||
import dev.struchkov.godfather.telegram.TelegramConnect;
|
||||
import dev.struchkov.godfather.telegram.convert.CallbackQueryConvert;
|
||||
import dev.struchkov.godfather.telegram.convert.MessageMailConvert;
|
||||
import dev.struchkov.godfather.telegram.convert.SubscribeConvert;
|
||||
import dev.struchkov.godfather.telegram.convert.UnsubscribeConvert;
|
||||
import dev.struchkov.godfather.telegram.domain.event.Subscribe;
|
||||
import dev.struchkov.godfather.telegram.domain.event.Unsubscribe;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.telegram.telegrambots.meta.api.objects.CallbackQuery;
|
||||
import org.telegram.telegrambots.meta.api.objects.ChatMemberUpdated;
|
||||
import org.telegram.telegrambots.meta.api.objects.Message;
|
||||
import org.telegram.telegrambots.meta.api.objects.Update;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* TODO: Добавить описание класса.
|
||||
@ -19,23 +27,40 @@ import java.util.List;
|
||||
*/
|
||||
public class EventDistributorService implements EventDistributor {
|
||||
|
||||
private final List<EventProvider<Mail>> eventProviders;
|
||||
private final Map<String, List<EventProvider>> eventProviderMap;
|
||||
|
||||
public EventDistributorService(TelegramConnect telegramConnect, List<EventProvider<Mail>> eventProviders) {
|
||||
this.eventProviders = eventProviders;
|
||||
public EventDistributorService(TelegramConnect telegramConnect, List<EventProvider> eventProviders) {
|
||||
this.eventProviderMap = eventProviders.stream().collect(Collectors.groupingBy(EventProvider::getEventType));
|
||||
telegramConnect.initEventDistributor(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void processing(@NotNull Update update) {
|
||||
if (update.getMessage() != null) {
|
||||
final Message message = update.getMessage();
|
||||
final CallbackQuery callbackQuery = update.getCallbackQuery();
|
||||
if (message != null) {
|
||||
eventProviders.forEach(provider -> provider.sendEvent(MessageMailConvert.apply(message)));
|
||||
getEventProvider(Mail.TYPE)
|
||||
.ifPresent(eventProviders -> eventProviders.forEach(eventProvider -> eventProvider.sendEvent(MessageMailConvert.apply(message))));
|
||||
}
|
||||
if (update.getCallbackQuery() != null) {
|
||||
final CallbackQuery callbackQuery = update.getCallbackQuery();
|
||||
getEventProvider(Mail.TYPE)
|
||||
.ifPresent(eventProviders -> eventProviders.forEach(eventProvider -> eventProvider.sendEvent(CallbackQueryConvert.apply(callbackQuery))));
|
||||
}
|
||||
if (update.getMyChatMember() != null) {
|
||||
final ChatMemberUpdated chatMember = update.getMyChatMember();
|
||||
if ("kicked".equals(chatMember.getNewChatMember().getStatus())) {
|
||||
getEventProvider(Unsubscribe.TYPE)
|
||||
.ifPresent(providers -> providers.forEach(provider -> provider.sendEvent(UnsubscribeConvert.apply(chatMember))));
|
||||
}
|
||||
if ("member".equals(chatMember.getNewChatMember().getStatus())) {
|
||||
getEventProvider(Subscribe.TYPE)
|
||||
.ifPresent(eventProviders -> eventProviders.forEach(eventProvider -> eventProvider.sendEvent(SubscribeConvert.apply(chatMember))));
|
||||
}
|
||||
if (callbackQuery != null) {
|
||||
eventProviders.forEach(provider -> provider.sendEvent(CallbackQueryConvert.apply(callbackQuery)));
|
||||
}
|
||||
}
|
||||
|
||||
private Optional<List<EventProvider>> getEventProvider(String type) {
|
||||
return Optional.ofNullable(eventProviderMap.get(type));
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -0,0 +1,18 @@
|
||||
package dev.struchkov.godfather.telegram.service.provider;
|
||||
|
||||
import dev.struchkov.godfather.context.service.EventProvider;
|
||||
import dev.struchkov.godfather.telegram.domain.event.Command;
|
||||
|
||||
public class CommandProvider implements EventProvider<Command> {
|
||||
|
||||
@Override
|
||||
public void sendEvent(Command event) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getEventType() {
|
||||
return Command.TYPE;
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user