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.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import javax.inject.Inject; 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) public void processUpdate(@RequestBody String updateData) { Update update = BotUtils.parseUpdate(updateData); Message message = update.message(); if (update.message() == null) { message = update.editedMessage(); if (message == null) { logger.error("error parsing telegram update: " + update.toString()); return; } } logger.info(String.format("got telegram msg %s", message.toString())); User user_from = usersService.getUserByUID(telegramService.getUser(message.chat().id())).orElse(new User()); logger.info(String.format("Found juick user %d", 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); }*/ } } } } }