package com.mavlushechka.animarfo.telegram.bot; import com.mavlushechka.animarfo.App; import com.mavlushechka.animarfo.anime.Anime; import com.mavlushechka.animarfo.parser.Parser; import com.mavlushechka.animarfo.telegram.user.TelegramUser; import com.mavlushechka.animarfo.telegram.user.callbackquery.UsersCallbackQuery; import com.mavlushechka.animarfo.telegram.user.keyboard.UserKeyboard; import com.mavlushechka.animarfo.telegram.user.message.UserMessage; import com.pengrad.telegrambot.TelegramBot; import com.pengrad.telegrambot.UpdatesListener; import com.pengrad.telegrambot.model.User; import com.pengrad.telegrambot.model.request.ParseMode; import com.pengrad.telegrambot.request.SendMessage; import com.pengrad.telegrambot.request.SendPhoto; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.TimeZone; import java.util.logging.Level; import java.util.logging.Logger; public class Bot { public final static TelegramBot TELEGRAM_BOT = new TelegramBot(App.PROPERTIES.getProperty("BOT_TOKEN")); public static TelegramUser telegramUser = new TelegramUser(); private static final Logger LOGGER = Logger.getLogger(Bot.class.getName()); static { LOGGER.setLevel(Level.ALL); } public static void start() { LOGGER.fine("Bot is started"); TELEGRAM_BOT.setUpdatesListener(updates -> { updates.forEach(update -> { if (update.callbackQuery() != null) { try { UsersCallbackQuery usersCallbackQuery = new UsersCallbackQuery(update.callbackQuery()); usersCallbackQuery.execute(); } catch (IOException ioException) { ioException.printStackTrace(); } } if (update.message() != null) { User user = update.message().from(); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss z"); simpleDateFormat.setTimeZone(TimeZone.getTimeZone("GMT+5")); String formattedDate = simpleDateFormat.format(new Date(update.message().date() * 1000L)); telegramUser = new TelegramUser(user.id(), user.isBot(), user.firstName(), user.lastName(), user.username(), formattedDate); try { UserMessage.execute(update.message()); } catch (IOException ioException) { ioException.printStackTrace(); } } }); return UpdatesListener.CONFIRMED_UPDATES_ALL; }); } public static void sendAnime() throws IOException { String searchedAnime = Anime.searched; byte index = Anime.index; byte animeAtSearchSize = Parser.getSizeOfSearchedAnime("https://anime.anidub.life/?do=search&mode=advanced&subaction=search&titleonly=3&story=" + searchedAnime); if (animeAtSearchSize > 0) { Anime[] anime = new Anime[animeAtSearchSize]; try { anime = Parser.getAnime("https://anime.anidub.life/?do=search&mode=advanced&subaction=search&titleonly=3&story=" + searchedAnime); } catch (IOException ioException) { ioException.printStackTrace(); } Anime.size = animeAtSearchSize; Anime.setList(anime); TELEGRAM_BOT.execute(new SendPhoto(UserMessage.chatId, anime[index].getImage()).caption(anime[index].showInfo()).parseMode(ParseMode.HTML).replyMarkup(UserKeyboard.getCarousel())); } else { TELEGRAM_BOT.execute(new SendMessage(UserMessage.chatId, "Прости, но я не смог найти аниме с таким названием...\nДавай поищем другое аниме!")); Anime.isSearching = true; } } public static void sendAnime(String url) { Anime[] anime = new Anime[28]; byte index = Anime.index; try { anime = Parser.getAnime(url); } catch (IOException ioException) { ioException.printStackTrace(); } Anime.setList(anime); TELEGRAM_BOT.execute(new SendPhoto(UserMessage.chatId, anime[index].getImage()).caption(anime[index].showInfo()).parseMode(ParseMode.HTML).replyMarkup(UserKeyboard.getCarousel())); } public static void sendAnime(UsersCallbackQuery usersCallbackQuery) { Anime[] anime = Anime.list; byte index = Anime.index; TELEGRAM_BOT.execute(new SendPhoto(usersCallbackQuery.chatId, anime[index].getImage()).caption(anime[index].showInfo()).parseMode(ParseMode.HTML).replyMarkup(UserKeyboard.getCarousel())); } }