From d233943fc29508dc37714852b11b96b0b46b55d9 Mon Sep 17 00:00:00 2001 From: Vitaly Takmazov Date: Thu, 24 Nov 2016 21:38:52 +0300 Subject: juick-api: now on spring-webmvc --- .../com/juick/api/controllers/TelegramWebhook.java | 77 ++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 juick-api/src/main/java/com/juick/api/controllers/TelegramWebhook.java (limited to 'juick-api/src/main/java/com/juick/api/controllers/TelegramWebhook.java') diff --git a/juick-api/src/main/java/com/juick/api/controllers/TelegramWebhook.java b/juick-api/src/main/java/com/juick/api/controllers/TelegramWebhook.java new file mode 100644 index 00000000..8b491167 --- /dev/null +++ b/juick-api/src/main/java/com/juick/api/controllers/TelegramWebhook.java @@ -0,0 +1,77 @@ +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); + }*/ + } + } + } + } +} -- cgit v1.2.3