Skip to content

Commit

Permalink
Support callback query
Browse files Browse the repository at this point in the history
  • Loading branch information
EgorBochkarev committed Jun 8, 2018
1 parent 80d4a65 commit 5f64fb9
Showing 1 changed file with 25 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,43 +6,56 @@
import org.apache.shiro.session.mgt.DefaultSessionManager;
import org.apache.shiro.session.mgt.SessionContext;
import org.apache.shiro.session.mgt.eis.AbstractSessionDAO;
import org.telegram.telegrambots.api.objects.Message;
import org.telegram.telegrambots.api.objects.Update;
import org.telegram.telegrambots.bots.TelegramLongPollingBot;

import java.util.Optional;

public abstract class TelegramLongPollingSessionBot extends TelegramLongPollingBot {
DefaultSessionManager sessionManager = new DefaultSessionManager();
@Setter
DefaultSessionManager sessionManager;

@Setter
ChatIdConverter chatIdConverter = new DefaultChatIdConverter();
ChatIdConverter chatIdConverter;

public TelegramLongPollingSessionBot(){
this.setChatIdConverter(new DefaultChatIdConverter());
this(new DefaultChatIdConverter());
}

public TelegramLongPollingSessionBot(ChatIdConverter chatIdConverter){
this.setSessionManager(new DefaultSessionManager());
this.setChatIdConverter(chatIdConverter);
AbstractSessionDAO sessionDAO = (AbstractSessionDAO) sessionManager.getSessionDAO();
sessionDAO.setSessionIdGenerator(chatIdConverter);
}

@Override
public void onUpdateReceived(Update update) {
Optional<Session> chatSession;
Message message;
if (update.hasMessage()) {
chatIdConverter.setSessionId(update.getMessage().getChatId());
AbstractSessionDAO sessionDAO = (AbstractSessionDAO) sessionManager.getSessionDAO();
sessionDAO.setSessionIdGenerator(chatIdConverter);
try {
chatSession = Optional.of(sessionManager.getSession(chatIdConverter));
} catch (UnknownSessionException e) {
SessionContext botSession = new DefaultChatSessionContext(update.getMessage().getChatId(), update.getMessage().getFrom().getUserName());
chatSession = Optional.of(sessionManager.start(botSession));
}
message = update.getMessage();
} else if (update.hasCallbackQuery()) {
message = update.getCallbackQuery().getMessage();
} else {
chatSession = Optional.empty();
onUpdateReceived(update, chatSession);
return;
}
chatIdConverter.setSessionId(message.getChatId());
chatSession = this.getSession(message);
onUpdateReceived(update, chatSession);
}

public Optional<Session> getSession(Message message){
try {
return Optional.of(sessionManager.getSession(chatIdConverter));
} catch (UnknownSessionException e) {
SessionContext botSession = new DefaultChatSessionContext(message.getChatId(), message.getFrom().getUserName());
return Optional.of(sessionManager.start(botSession));
}
}

public abstract void onUpdateReceived(Update update, Optional<Session> botSession);
}

0 comments on commit 5f64fb9

Please sign in to comment.