package com.juick.api.controllers; import com.juick.User; import com.juick.api.TGBot; import com.juick.service.TelegramService; import com.juick.service.UserService; import com.pengrad.telegrambot.BotUtils; import com.pengrad.telegrambot.model.Message; import com.pengrad.telegrambot.model.Update; import org.apache.commons.io.IOUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseStatus; import javax.inject.Inject; import javax.servlet.http.HttpServletRequest; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.util.List; /** * Created by vt on 24/11/2016. */ @Controller public class TelegramWebhook { private static Logger logger = LoggerFactory.getLogger(TelegramWebhook.class); @Inject UserService usersService; @Inject TelegramService telegramService; @Inject TGBot tgBot; @RequestMapping(value = "/tlgmbtwbhk", method = RequestMethod.POST) @ResponseStatus(value = HttpStatus.OK) public void processUpdate(HttpServletRequest request) throws IOException { Update update = BotUtils.parseUpdate(IOUtils.toString(request.getInputStream(), StandardCharsets.UTF_8)); Message message = update.message(); if (update.message() == null) { message = update.editedMessage(); if (message == null) { logger.error("error parsing telegram update: {}", update); return; } } logger.info("got telegram msg {}", message); User user_from = usersService.getUserByUID(telegramService.getUser(message.chat().id())).orElse(new User()); logger.info("Found juick user {}", user_from.getUid()); List chats = telegramService.getChats(); String username = message.from().username(); if (username == null) { username = message.from().firstName(); } if (!chats.contains(message.chat().id())) { telegramService.addChat(message.chat().id()); logger.info("added chat with {}", username); telegramService.createTelegramUser(message.from().id(), username); tgBot.telegramSignupNotify(message.from().id().longValue(), usersService.getSignUpHashByTelegramID(message.from().id().longValue(), username)); } else { if (user_from.getUid() == 0) { tgBot.telegramSignupNotify(message.from().id().longValue(), usersService.getSignUpHashByTelegramID(message.from().id().longValue(), username)); } else { String text = message.text(); if (text != null) { if (text.equalsIgnoreCase("/login")) { String msg = String.format("Hi, %s!\nTap to log in", user_from.getName()); String msgUrl = "http://juick.com/login?" + usersService.getHashByUID(user_from.getUid()); tgBot.telegramNotify(message.from().id().longValue(), msg, msgUrl); } /* else { ProtocolReply reply = protocol.getReply(user_from, text); telegramNotify(message.from().id().longValue(), reply.getDescription(), null); }*/ } } } } }